3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-04-24 01:25:33 +00:00

Merge pull request #824 from litghost/fix_reduce_on_ff

Fix WREDUCE on FF not fixing ARST_VALUE parameter.
This commit is contained in:
Clifford Wolf 2019-02-24 11:29:14 -08:00 committed by GitHub
commit da14bc8524
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 37 additions and 0 deletions

View file

@ -195,6 +195,19 @@ struct WreduceWorker
for (auto bit : sig_q)
work_queue_bits.insert(bit);
// Narrow ARST_VALUE parameter to new size.
//
// Note: This works because earlier loop only removes signals from
// the upper bits of the DFF.
if(cell->parameters.count("\\ARST_VALUE") > 0) {
RTLIL::Const old_arst_value = cell->parameters.at("\\ARST_VALUE");
std::vector<RTLIL::State> new_arst_value(GetSize(sig_q));
for(int i = 0; i < GetSize(sig_q); ++i) {
new_arst_value[i] = old_arst_value[i];
}
cell->parameters["\\ARST_VALUE"] = RTLIL::Const(new_arst_value);
}
cell->setPort("\\D", sig_d);
cell->setPort("\\Q", sig_q);
cell->fixup_parameters();