mirror of
https://github.com/YosysHQ/yosys
synced 2025-07-24 05:08:56 +00:00
Address SigBit
/SigSpec
confusion issues under c++20
This commit is contained in:
parent
0cdd4273b4
commit
af1a5cfeb9
9 changed files with 19 additions and 14 deletions
|
@ -353,7 +353,7 @@ struct OptDffWorker
|
|||
// Try a more complex conversion to plain async reset.
|
||||
State val_neutral = ff.pol_set ? State::S0 : State::S1;
|
||||
Const val_arst;
|
||||
SigSpec sig_arst;
|
||||
SigBit sig_arst;
|
||||
if (ff.sig_clr[0] == val_neutral)
|
||||
sig_arst = ff.sig_set[0];
|
||||
else
|
||||
|
|
|
@ -38,6 +38,7 @@ struct OptFfInvWorker
|
|||
// - ... which has no other users
|
||||
// - all users of FF are LUTs
|
||||
bool push_d_inv(FfData &ff) {
|
||||
log_assert(ff.width == 1);
|
||||
if (index.query_is_input(ff.sig_d))
|
||||
return false;
|
||||
if (index.query_is_output(ff.sig_d))
|
||||
|
@ -90,7 +91,7 @@ struct OptFfInvWorker
|
|||
int flip_mask = 0;
|
||||
SigSpec sig_a = lut->getPort(ID::A);
|
||||
for (int i = 0; i < GetSize(sig_a); i++) {
|
||||
if (index.sigmap(sig_a[i]) == index.sigmap(ff.sig_q)) {
|
||||
if (index.sigmap(sig_a[i]) == index.sigmap(ff.sig_q[0])) {
|
||||
flip_mask |= 1 << i;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -167,7 +167,11 @@ struct OptLutWorker
|
|||
legal = false;
|
||||
break;
|
||||
}
|
||||
if (sigmap(lut_input[dlogic_conn.first]) != sigmap(lut_dlogic.second->getPort(dlogic_conn.second)))
|
||||
|
||||
if (lut_dlogic.second->getPort(dlogic_conn.second).size() != 1)
|
||||
continue;
|
||||
|
||||
if (sigmap(lut_input[dlogic_conn.first]) != sigmap(lut_dlogic.second->getPort(dlogic_conn.second)[0]))
|
||||
{
|
||||
log_debug(" LUT has illegal connection to %s cell %s.%s.\n", lut_dlogic.second->type.c_str(), log_id(module), log_id(lut_dlogic.second));
|
||||
log_debug(" LUT input A[%d] (wire %s) not connected to %s port %s (wire %s).\n", dlogic_conn.first, log_signal(lut_input[dlogic_conn.first]), lut_dlogic.second->type.c_str(), dlogic_conn.second.c_str(), log_signal(lut_dlogic.second->getPort(dlogic_conn.second)));
|
||||
|
@ -314,7 +318,7 @@ struct OptLutWorker
|
|||
|
||||
auto lutA = worklist.pop();
|
||||
SigSpec lutA_input = sigmap(lutA->getPort(ID::A));
|
||||
SigSpec lutA_output = sigmap(lutA->getPort(ID::Y)[0]);
|
||||
SigBit lutA_output = sigmap(lutA->getPort(ID::Y)[0]);
|
||||
int lutA_width = lutA->getParam(ID::WIDTH).as_int();
|
||||
int lutA_arity = luts_arity[lutA];
|
||||
pool<int> &lutA_dlogic_inputs = luts_dlogic_inputs[lutA];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue