[timing] More robust timing.dot
This commit is contained in:
parent
b01f012e86
commit
0c891bf90c
@ -696,8 +696,11 @@ struct Timing
|
|||||||
if (usr.cell != cell.second.get() || usr.port != port.first)
|
if (usr.cell != cell.second.get() || usr.port != port.first)
|
||||||
continue;
|
continue;
|
||||||
// And for each clock event, label node with event as well as max arrival time
|
// And for each clock event, label node with event as well as max arrival time
|
||||||
for (const auto &i : net_data.at(port.second.net))
|
auto it = net_data.find(port.second.net);
|
||||||
f << "\\n" << (i.first.edge == RISING_EDGE ? "posedge" : "negedge") << " " << i.first.clock.str(ctx) << " @ " << i.second.max_arrival + ctx->getNetinfoRouteDelay(port.second.net, usr);
|
if (it != net_data.end()) {
|
||||||
|
for (const auto &i : it->second)
|
||||||
|
f << "\\n" << (i.first.edge == RISING_EDGE ? "posedge" : "negedge") << " " << i.first.clock.str(ctx) << " @ " << i.second.max_arrival + ctx->getNetinfoRouteDelay(port.second.net, usr);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
f << "\"]" << std::endl;
|
f << "\"]" << std::endl;
|
||||||
@ -706,9 +709,12 @@ struct Timing
|
|||||||
output_ports.push_back(port.first);
|
output_ports.push_back(port.first);
|
||||||
// Label port
|
// Label port
|
||||||
f << "\t\t" << "\"" << cell.second->name.str(ctx) << "." << port.first.str(ctx) << "\" [label = \"" << port.first.str(ctx);
|
f << "\t\t" << "\"" << cell.second->name.str(ctx) << "." << port.first.str(ctx) << "\" [label = \"" << port.first.str(ctx);
|
||||||
// A:d for each clock event, label node with event as well as max arrival time
|
// And for each clock event, label node with event as well as max arrival time
|
||||||
for (const auto &i : net_data.at(port.second.net))
|
auto it = net_data.find(port.second.net);
|
||||||
f << "\\n" << (i.first.edge == RISING_EDGE ? "posedge" : "negedge") << " " << i.first.clock.str(ctx) << " @ " << i.second.max_arrival;
|
if (it != net_data.end()) {
|
||||||
|
for (const auto &i : it->second)
|
||||||
|
f << "\\n" << (i.first.edge == RISING_EDGE ? "posedge" : "negedge") << " " << i.first.clock.str(ctx) << " @ " << i.second.max_arrival;
|
||||||
|
}
|
||||||
f << "\"";
|
f << "\"";
|
||||||
// IOB outputs are startpoints
|
// IOB outputs are startpoints
|
||||||
if (ctx->getBelIOB(cell.second->bel))
|
if (ctx->getBelIOB(cell.second->bel))
|
||||||
|
Loading…
Reference in New Issue
Block a user