Add ConstEval defaultval feature
This commit is contained in:
@@ -36,8 +36,9 @@ struct ConstEval
|
||||
SigSet<RTLIL::Cell*> sig2driver;
|
||||
std::set<RTLIL::Cell*> busy;
|
||||
std::vector<SigMap> stack;
|
||||
RTLIL::State defaultval;
|
||||
|
||||
ConstEval(RTLIL::Module *module) : module(module), assign_map(module)
|
||||
ConstEval(RTLIL::Module *module, RTLIL::State defaultval = RTLIL::State::Sm) : module(module), assign_map(module), defaultval(defaultval)
|
||||
{
|
||||
CellTypes ct;
|
||||
ct.setup_internals();
|
||||
@@ -365,6 +366,12 @@ struct ConstEval
|
||||
if (sig.is_fully_const())
|
||||
return true;
|
||||
|
||||
if (defaultval != RTLIL::State::Sm) {
|
||||
for (auto &bit : sig)
|
||||
if (bit.wire) bit = defaultval;
|
||||
return true;
|
||||
}
|
||||
|
||||
for (auto &c : sig.chunks())
|
||||
if (c.wire != NULL)
|
||||
undef.append(c);
|
||||
|
||||
Reference in New Issue
Block a user