diff options
author | Clifford Wolf <clifford@clifford.at> | 2015-01-03 10:57:01 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2015-01-03 10:57:01 +0100 |
commit | a7e43ae3d97ef14c8d624d8fdfe938ae9f47ce84 (patch) | |
tree | 6d6e97eef96e519e273ee7fc34c53acff29f5061 /passes/memory/memory_bram.cc | |
parent | 146f769beef2f6affa9df8e8265e0ca6519d3554 (diff) | |
download | yosys-a7e43ae3d97ef14c8d624d8fdfe938ae9f47ce84.tar.gz yosys-a7e43ae3d97ef14c8d624d8fdfe938ae9f47ce84.tar.bz2 yosys-a7e43ae3d97ef14c8d624d8fdfe938ae9f47ce84.zip |
Progress in memory_bram
Diffstat (limited to 'passes/memory/memory_bram.cc')
-rw-r--r-- | passes/memory/memory_bram.cc | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/passes/memory/memory_bram.cc b/passes/memory/memory_bram.cc index 356663e03..0fb563bd0 100644 --- a/passes/memory/memory_bram.cc +++ b/passes/memory/memory_bram.cc @@ -465,8 +465,6 @@ grow_read_ports:; Cell *c = module->addCell(module->uniquify(stringf("%s.%d.%d.%d", cell->name.c_str(), grid_d, grid_a, dupidx)), bram.name); log(" Creating %s cell at grid position <%d %d %d>: %s\n", log_id(bram.name), grid_d, grid_a, dupidx, log_id(c)); - dict<int, SigBit> clocks; - for (auto &pi : portinfos) { if (pi.dupidx != dupidx) @@ -475,8 +473,11 @@ grow_read_ports:; string prefix = stringf("%c%d", pi.group + 'A', pi.index + 1); const char *pf = prefix.c_str(); - if (pi.clocks && (!clocks.count(pi.clocks) || pi.sig_clock.wire)) - clocks[pi.clocks] = pi.sig_clock; + if (pi.clocks && (!c->hasPort(stringf("\\CLK%d", (pi.clocks-1) % clocks_max + 1)) || pi.sig_clock.wire)) { + c->setPort(stringf("\\CLK%d", (pi.clocks-1) % clocks_max + 1), pi.sig_clock); + if (pi.clkpol > 1 && pi.sig_clock.wire) + c->setParam(stringf("\\CLKPOL%d", (pi.clkpol-1) % clkpol_max + 1), clock_polarities.at(pi.clkpol)); + } SigSpec addr_ok; if (GetSize(pi.sig_addr) > bram.abits) { @@ -527,13 +528,6 @@ grow_read_ports:; sig_addr.extend_u0(bram.abits); c->setPort(stringf("\\%sADDR", pf), sig_addr); } - - for (auto &it : clocks) - c->setPort(stringf("\\CLK%d", (it.first-1) % clocks_max + 1), it.second); - - for (auto &it : clock_polarities) - if (it.first > 1) - c->setParam(stringf("\\CLKPOL%d", (it.first-1) % clkpol_max + 1), it.second); } for (auto &it : dout_cache) |