ecp5: Fix derivation of OSCG timing constraint
Signed-off-by: David Shah <dave@ds0.me>
This commit is contained in:
parent
32e655d0af
commit
c0901fb972
@ -2853,10 +2853,14 @@ class Ecp5Packer
|
|||||||
while (!changed_nets.empty() && iter < itermax) {
|
while (!changed_nets.empty() && iter < itermax) {
|
||||||
++iter;
|
++iter;
|
||||||
std::unordered_set<IdString> changed_cells;
|
std::unordered_set<IdString> changed_cells;
|
||||||
for (auto net : changed_nets)
|
for (auto net : changed_nets) {
|
||||||
for (auto &user : ctx->nets.at(net)->users)
|
for (auto &user : ctx->nets.at(net)->users)
|
||||||
if (user.port == id_CLKI || user.port == id_ECLKI || user.port == id_CLK0 || user.port == id_CLK1)
|
if (user.port == id_CLKI || user.port == id_ECLKI || user.port == id_CLK0 || user.port == id_CLK1)
|
||||||
changed_cells.insert(user.cell->name);
|
changed_cells.insert(user.cell->name);
|
||||||
|
auto &drv = ctx->nets.at(net)->driver;
|
||||||
|
if (iter == 1 && drv.cell != nullptr && drv.port == id_OSC)
|
||||||
|
changed_cells.insert(drv.cell->name);
|
||||||
|
}
|
||||||
changed_nets.clear();
|
changed_nets.clear();
|
||||||
for (auto cell : sorted(changed_cells)) {
|
for (auto cell : sorted(changed_cells)) {
|
||||||
CellInfo *ci = ctx->cells.at(cell).get();
|
CellInfo *ci = ctx->cells.at(cell).get();
|
||||||
|
Loading…
Reference in New Issue
Block a user