Timing: Fix combinational paths through all ports (#1175)
Fixes https://github.com/YosysHQ/nextpnr/issues/1174
This commit is contained in:
parent
5b958c4d80
commit
0f947ee693
@ -113,8 +113,11 @@ void TimingAnalyser::get_cell_delays()
|
|||||||
info.edge);
|
info.edge);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// asynchronous endpoint
|
||||||
|
else if (cls == TMG_ENDPOINT) {
|
||||||
|
pd.cell_arcs.emplace_back(CellArc::ENDPOINT, async_clk_key.key.clock, DelayQuad {});
|
||||||
|
}
|
||||||
// Combinational delays through cell
|
// Combinational delays through cell
|
||||||
else if (cls == TMG_COMB_INPUT) {
|
|
||||||
for (auto &other_port : ci->ports) {
|
for (auto &other_port : ci->ports) {
|
||||||
auto &op = other_port.second;
|
auto &op = other_port.second;
|
||||||
// ignore dangling ports and non-outputs
|
// ignore dangling ports and non-outputs
|
||||||
@ -125,11 +128,6 @@ void TimingAnalyser::get_cell_delays()
|
|||||||
if (is_path)
|
if (is_path)
|
||||||
pd.cell_arcs.emplace_back(CellArc::COMBINATIONAL, other_port.first, delay);
|
pd.cell_arcs.emplace_back(CellArc::COMBINATIONAL, other_port.first, delay);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// asynchronous endpoint
|
|
||||||
else if (cls == TMG_ENDPOINT) {
|
|
||||||
pd.cell_arcs.emplace_back(CellArc::ENDPOINT, async_clk_key.key.clock, DelayQuad {});
|
|
||||||
}
|
|
||||||
} else if (pi.type == PORT_OUT) {
|
} else if (pi.type == PORT_OUT) {
|
||||||
// Output ports might have clk-to-q relationships
|
// Output ports might have clk-to-q relationships
|
||||||
if (cls == TMG_REGISTER_OUTPUT) {
|
if (cls == TMG_REGISTER_OUTPUT) {
|
||||||
@ -140,8 +138,11 @@ void TimingAnalyser::get_cell_delays()
|
|||||||
pd.cell_arcs.emplace_back(CellArc::CLK_TO_Q, info.clock_port, info.clockToQ, info.edge);
|
pd.cell_arcs.emplace_back(CellArc::CLK_TO_Q, info.clock_port, info.clockToQ, info.edge);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Asynchronous startpoint
|
||||||
|
else if (cls == TMG_STARTPOINT) {
|
||||||
|
pd.cell_arcs.emplace_back(CellArc::STARTPOINT, async_clk_key.key.clock, DelayQuad {});
|
||||||
|
}
|
||||||
// Combinational delays through cell
|
// Combinational delays through cell
|
||||||
else if (cls == TMG_COMB_OUTPUT) {
|
|
||||||
for (auto &other_port : ci->ports) {
|
for (auto &other_port : ci->ports) {
|
||||||
auto &op = other_port.second;
|
auto &op = other_port.second;
|
||||||
// ignore dangling ports and non-inputs
|
// ignore dangling ports and non-inputs
|
||||||
@ -153,11 +154,6 @@ void TimingAnalyser::get_cell_delays()
|
|||||||
pd.cell_arcs.emplace_back(CellArc::COMBINATIONAL, other_port.first, delay);
|
pd.cell_arcs.emplace_back(CellArc::COMBINATIONAL, other_port.first, delay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Asynchronous startpoint
|
|
||||||
else if (cls == TMG_STARTPOINT) {
|
|
||||||
pd.cell_arcs.emplace_back(CellArc::STARTPOINT, async_clk_key.key.clock, DelayQuad {});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user