diff options
author | Clifford Wolf <clifford@clifford.at> | 2015-10-24 15:01:32 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2015-10-24 15:01:32 +0200 |
commit | f4b7aca5208010ee7131c710e946d8cb56f97648 (patch) | |
tree | 1626aea713ae6de7bd6f7232de58bc15a65b7ffc /icetime/icetime.cc | |
parent | 6d2087c9a1aeb3706cee605720a486c86f8940ae (diff) | |
download | icestorm-f4b7aca5208010ee7131c710e946d8cb56f97648.tar.gz icestorm-f4b7aca5208010ee7131c710e946d8cb56f97648.tar.bz2 icestorm-f4b7aca5208010ee7131c710e946d8cb56f97648.zip |
icetime progress
Diffstat (limited to 'icetime/icetime.cc')
-rw-r--r-- | icetime/icetime.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/icetime/icetime.cc b/icetime/icetime.cc index 271110a..f2d54cc 100644 --- a/icetime/icetime.cc +++ b/icetime/icetime.cc @@ -507,7 +507,15 @@ void make_seg_cell(int net, const net_segment_t &seg) if (sscanf(seg.name.c_str(), "lutff_%d/in_%d", &a, &b) == 2) { auto cell = make_lc40(seg.x, seg.y, a); - netlist_cells[cell][stringf("in%d", b)] = net_name(net); + if (b == 2) { + // Lattice tools always put a CascadeMux on in2 + extra_wires.insert(net_name(net) + "_cascademuxed"); + extra_vlog.push_back(stringf(" CascadeMux conn_%d (.I(%s), .O(%s));\n", + iconn_cell_cnt++, net_name(net).c_str(), (net_name(net) + "_cascademuxed").c_str())); + netlist_cells[cell][stringf("in%d", b)] = net_name(net) + "_cascademuxed"; + } else { + netlist_cells[cell][stringf("in%d", b)] = net_name(net); + } make_inmux(seg.x, seg.y, net); return; } @@ -681,6 +689,8 @@ struct make_interconn_worker_t goto continue_at_cursor; } + // Span12Mux + if (trg.name.substr(0, 7) == "span12_" || trg.name.substr(0, 5) == "sp12_") { bool horiz = trg.name.substr(0, 7) == "sp12_h_"; |