diff --git a/kernel/rtlil_bufnorm.cc b/kernel/rtlil_bufnorm.cc index 63e9c7c46..5de08a329 100644 --- a/kernel/rtlil_bufnorm.cc +++ b/kernel/rtlil_bufnorm.cc @@ -1054,10 +1054,15 @@ void RTLIL::Cell::unsetPort(const RTLIL::IdString& portname) } } +static bool ignored_cell(const RTLIL::IdString& type) +{ + return type == ID($specify2) || type == ID($specify3) || type == ID($specrule); +} + void RTLIL::Cell::setPort(const RTLIL::IdString& portname, RTLIL::SigSpec signal) { bool is_input_port = false; - if (module->sig_norm_index != nullptr && type != ID($specify2) && type != ID($specify3) && type != ID($specrule)) { + if (module->sig_norm_index != nullptr && !ignored_cell(type)) { module->sig_norm_index->sigmap.apply(signal); auto dir = port_dir(portname); @@ -1093,7 +1098,7 @@ void RTLIL::Cell::setPort(const RTLIL::IdString& portname, RTLIL::SigSpec signal } - if (module->sig_norm_index != nullptr) { + if (module->sig_norm_index != nullptr && !ignored_cell(type)) { module->sig_norm_index->dirty.insert(this); if (!r.second) { if (is_input_port) {