private void appendInterface(StringBuilder result)
{
+ result.append("input rst");
if (!sortedInterfacePinNames.isEmpty())
{
Map<String, Integer> logicWidthsPerInterfacePinName = Arrays.stream(componentJson.interfacePins)
.collect(Collectors.toMap(p -> p.name, p -> p.logicWidth));
- result.append('\n');
for (int i = 0; i < sortedInterfacePinNames.size(); i++)
{
+ result.append(",\n");
String interfacePinName = sortedInterfacePinNames.get(i);
int logicWidth = logicWidthsPerInterfacePinName.get(interfacePinName);
appendLogicWidth(result, logicWidth);
result.append(sanitizeVerilog(interfacePinName));
result.append("_res");
- if (i != sortedInterfacePinNames.size() - 1)
- result.append(',');
- result.append('\n');
}
+ result.append('\n');
}
}
result.append("assign ");
result.append(sanitizeVerilog(resultWireName));
- result.append(" = ");
+ result.append(" = rst ? ");
+ result.append(logicWidth * 2);
+ result.append("'b");
+ for (int i = 0; i < logicWidth; i++)
+ result.append("10");
+ result.append(" : ");
result.append(sanitizeVerilog(lastWireName));
result.append(";\n");
}
result.append(COMPONENT_PREFIX);
String paramsString = subcomponentParams.params == JsonNull.INSTANCE ? "" : subcomponentParams.params.toString();
result.append(sanitizeVerilog(subcomponentID + paramsString));
- result.append(" (");
+ result.append(' ');
+ // abuse the pinIdentifierGenerator for making these unique
+ result.append(pinIdentifierGenerator.getPinID("comp", subcomponentName));
+ result.append(" (rst");
for (int i = 0; i < subcomponentInterfacePinNames.size(); i++)
{
+ result.append(",\n ");
String innerPinID = pinIdentifierGenerator.getPinID(subcomponentName, subcomponentInterfacePinNames.get(i));
String lastWireName;
result.append(sanitizeVerilog(nextWireName));
result.append(", ");
result.append(sanitizeVerilog(resultWireName));
- if (i != subcomponentInterfacePinNames.size() - 1)
- result.append(", \n ");
}
result.append(");\n\n");
}