Cleanups in ARST handling in wreduce

Signed-off-by: Clifford Wolf <clifford@clifford.at>
This commit is contained in:
Clifford Wolf 2019-02-24 20:34:23 +01:00
parent da14bc8524
commit cd722f26a5
1 changed files with 4 additions and 10 deletions

View File

@ -196,16 +196,10 @@ struct WreduceWorker
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);
if (cell->parameters.count("\\ARST_VALUE")) {
Const arst_value = cell->getParam("\\ARST_VALUE");
arst_value.bits.resize(GetSize(sig_q));
cell->setParam("\\ARST_VALUE", arst_value);
}
cell->setPort("\\D", sig_d);