write_verilog fails for missing pins

This commit is contained in:
James Cherry 2019-06-27 18:04:57 -07:00
parent 5d7ad0a1ef
commit d108a15c56
1 changed files with 20 additions and 16 deletions

View File

@ -205,12 +205,14 @@ VerilogWriter::writeChild(Instance *child)
while (member_iter->hasNext()) { while (member_iter->hasNext()) {
Port *member = member_iter->next(); Port *member = member_iter->next();
Pin *pin = network_->findPin(child, member); Pin *pin = network_->findPin(child, member);
const char *net_name = nullptr;
if (pin) {
Net *net = network_->net(pin); Net *net = network_->net(pin);
const char *net_name;
if (net) if (net)
net_name = network_->name(net); net_name = network_->name(net);
else }
// I can't see the verilog syntax to "skip" a bit in the concatentation. if (net_name == nullptr)
// There is no verilog syntax to "skip" a bit in the concatentation.
net_name = stringPrintTmp("_NC%d", unconnected_net_index_++); net_name = stringPrintTmp("_NC%d", unconnected_net_index_++);
const char *net_vname = netVerilogName(net_name, network_->pathEscape()); const char *net_vname = netVerilogName(net_name, network_->pathEscape());
if (!first_member) if (!first_member)
@ -223,6 +225,7 @@ VerilogWriter::writeChild(Instance *child)
} }
else { else {
Pin *pin = network_->findPin(child, port); Pin *pin = network_->findPin(child, port);
if (pin) {
Net *net = network_->net(pin); Net *net = network_->net(pin);
if (net) { if (net) {
const char *net_name = network_->name(net); const char *net_name = network_->name(net);
@ -236,6 +239,7 @@ VerilogWriter::writeChild(Instance *child)
} }
} }
} }
}
delete port_iter; delete port_iter;
fprintf(stream_, ");\n"); fprintf(stream_, ");\n");
} }