mirror of https://github.com/YosysHQ/icestorm.git
Bugfix in "icetime -i"
This commit is contained in:
parent
639624347c
commit
c13040cf84
|
|
@ -686,9 +686,6 @@ struct TimingAnalysis
|
||||||
if (*in_net == "" || *in_net == "vcc" || *in_net == "gnd")
|
if (*in_net == "" || *in_net == "vcc" || *in_net == "gnd")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (interior_timing && interior_nets.count(*in_net) == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
double this_cell_delay = get_delay(driver_type, inport, driver_port);
|
double this_cell_delay = get_delay(driver_type, inport, driver_port);
|
||||||
double this_path_delay = calc_net_max_path_delay(*in_net) + this_cell_delay;
|
double this_path_delay = calc_net_max_path_delay(*in_net) + this_cell_delay;
|
||||||
|
|
||||||
|
|
@ -704,28 +701,15 @@ struct TimingAnalysis
|
||||||
|
|
||||||
void mark_interior(std::string net)
|
void mark_interior(std::string net)
|
||||||
{
|
{
|
||||||
|
if (net.empty())
|
||||||
|
return;
|
||||||
|
|
||||||
while (net_assignments.count(net)) {
|
while (net_assignments.count(net)) {
|
||||||
interior_nets.insert(net);
|
interior_nets.insert(net);
|
||||||
net = net_assignments.at(net);
|
net = net_assignments.at(net);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (interior_nets.count(net))
|
|
||||||
return;
|
|
||||||
|
|
||||||
interior_nets.insert(net);
|
interior_nets.insert(net);
|
||||||
|
|
||||||
if (!net_driver.count(net))
|
|
||||||
return;
|
|
||||||
|
|
||||||
auto &driver_cell = net_driver.at(net).first;
|
|
||||||
auto &driver_port = net_driver.at(net).second;
|
|
||||||
auto &driver_type = netlist_cell_types.at(driver_cell);
|
|
||||||
|
|
||||||
if (is_primary(driver_cell, driver_port))
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (auto &inport : get_inports(driver_type))
|
|
||||||
mark_interior(netlist_cell_ports.at(driver_cell).at(inport));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TimingAnalysis(bool interior_timing) : interior_timing(interior_timing)
|
TimingAnalysis(bool interior_timing) : interior_timing(interior_timing)
|
||||||
|
|
@ -766,6 +750,8 @@ struct TimingAnalysis
|
||||||
global_max_path_delay = 0;
|
global_max_path_delay = 0;
|
||||||
|
|
||||||
for (auto &net : all_nets) {
|
for (auto &net : all_nets) {
|
||||||
|
if (interior_timing && interior_nets.count(net) == 0)
|
||||||
|
continue;
|
||||||
double d = calc_net_max_path_delay(net) + std::get<0>(net_max_setup[net]);
|
double d = calc_net_max_path_delay(net) + std::get<0>(net_max_setup[net]);
|
||||||
if (d > global_max_path_delay) {
|
if (d > global_max_path_delay) {
|
||||||
global_max_path_delay = d;
|
global_max_path_delay = d;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue