aboutsummaryrefslogtreecommitdiffstats
path: root/icetime/icetime.cc
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2015-10-24 15:01:32 +0200
committerClifford Wolf <clifford@clifford.at>2015-10-24 15:01:32 +0200
commitf4b7aca5208010ee7131c710e946d8cb56f97648 (patch)
tree1626aea713ae6de7bd6f7232de58bc15a65b7ffc /icetime/icetime.cc
parent6d2087c9a1aeb3706cee605720a486c86f8940ae (diff)
downloadicestorm-f4b7aca5208010ee7131c710e946d8cb56f97648.tar.gz
icestorm-f4b7aca5208010ee7131c710e946d8cb56f97648.tar.bz2
icestorm-f4b7aca5208010ee7131c710e946d8cb56f97648.zip
icetime progress
Diffstat (limited to 'icetime/icetime.cc')
-rw-r--r--icetime/icetime.cc12
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_";