ecp5: EBR clocking fix

Signed-off-by: David Shah <dave@ds0.me>
This commit is contained in:
David Shah 2018-11-04 15:11:01 +00:00
parent dab70466cd
commit 11579a1046

View File

@ -683,15 +683,18 @@ TimingClockingInfo Arch::getPortClockingInfo(const CellInfo *cell, IdString port
info.clockToQ.delay = 395; info.clockToQ.delay = 395;
} }
} else if (cell->type == id_DP16KD) { } else if (cell->type == id_DP16KD) {
for (auto c : boost::adaptors::reverse(port.str(this))) { std::string port_name = port.str(this);
for (auto c : boost::adaptors::reverse(port_name)) {
if (std::isdigit(c)) if (std::isdigit(c))
continue; continue;
if (c == 'A') if (c == 'A') {
info.clock_port = id_CLKA; info.clock_port = id_CLKA;
else if (c == 'B') break;
} else if (c == 'B') {
info.clock_port = id_CLKB; info.clock_port = id_CLKB;
else break;
NPNR_ASSERT_FALSE_STR("bad ram port"); } else
NPNR_ASSERT_FALSE_STR("bad ram port " + port.str(this));
} }
info.edge = (str_or_default(cell->params, info.clock_port == id_CLKB ? id("CLKBMUX") : id("CLKAMUX"), "CLK") == info.edge = (str_or_default(cell->params, info.clock_port == id_CLKB ? id("CLKBMUX") : id("CLKAMUX"), "CLK") ==
"INV") "INV")