This commit is contained in:
Eddie Hung 2019-09-11 14:20:49 -07:00
parent 817ac7c5e0
commit 3a49aa6b4a
1 changed files with 16 additions and 10 deletions

View File

@ -42,6 +42,12 @@ code
rst = port(rstmux, rstmuxBA).as_const();
int width = GetSize(D);
SigSpec &ceA = cemux->connections_.at(\A);
SigSpec &ceB = cemux->connections_.at(\B);
SigSpec &ceY = cemux->connections_.at(\Y);
SigSpec &dffD = dff->connections_.at(\D);
SigSpec &dffQ = dff->connections_.at(\Q);
if (D[width-1] == D[width-2]) {
did_something = true;
@ -61,12 +67,12 @@ code
}
}
cemux->connections_.at(\A).remove(i, width-i);
cemux->connections_.at(\B).remove(i, width-i);
cemux->connections_.at(\Y).remove(i, width-i);
ceA.remove(i, width-i);
ceB.remove(i, width-i);
ceY.remove(i, width-i);
cemux->fixup_parameters();
dff->connections_.at(\D).remove(i, width-i);
dff->connections_.at(\Q).remove(i, width-i);
dffD.remove(i, width-i);
dffQ.remove(i, width-i);
dff->fixup_parameters();
log("dffcemux pattern in %s: dff=%s, cemux=%s; removed top %d bits.\n", log_id(module), log_id(dff), log_id(cemux), width-i);
@ -88,11 +94,11 @@ code
if (init == State::Sx || init == D[i].data) {
count++;
module->connect(Q[i], D[i]);
cemux->connections_.at(\A).remove(i);
cemux->connections_.at(\B).remove(i);
cemux->connections_.at(\Y).remove(i);
dff->connections_.at(\D).remove(i);
dff->connections_.at(\Q).remove(i);
ceA.remove(i);
ceB.remove(i);
ceY.remove(i);
dffD.remove(i);
dffQ.remove(i);
}
}
if (count > 0) {