Added support for "keep" attributes on wires

This commit is contained in:
Clifford Wolf 2013-11-05 15:52:29 +01:00
parent 27fec4e77c
commit 1d34fd7608
2 changed files with 8 additions and 3 deletions

6
README
View File

@ -254,9 +254,9 @@ Verilog Attributes and non-standard features
passes to identify input and output ports of cells. The verilog backend
also does not output placeholder modules on default.
- The "keep" attribute on cells is used to mark cells that should never be
removed by the optimizer. This is used for example for cells that have
hidden connections that are not part of the netlist, such as IO pads.
- The "keep" attribute on cells and wires is used to mark objects that should
never be removed by the optimizer. This is used for example for cells that
have hidden connections that are not part of the netlist, such as IO pads.
- In addition to the (* ... *) attribute syntax, yosys supports
the non-standard {* ... *} attribute syntax to set default attributes

View File

@ -190,6 +190,11 @@ static void rmunused_module_signals(RTLIL::Module *module, bool purge_mode, bool
if (!wire->port_input)
used_signals_nodrivers.add(sig);
}
if (wire->get_bool_attribute("\\keep")) {
RTLIL::SigSpec sig = RTLIL::SigSpec(wire);
assign_map.apply(sig);
used_signals.add(sig);
}
}
std::vector<RTLIL::Wire*> del_wires;