Gate-elim
Convert gate instances into instances of VL primitives.
This transformation eliminates any instances of basic gates (buf,
not, and, or, xor, nand, nor, and xnor), and replaces them with instances of
the VL's primitive modules like *vl-1-bit-and*.
Note that this transform does not preserve delays.
Ordering notes. This transform should typically be run after gatesplit, and also after other transforms like blankargs, expression-sizing, and replicate-insts.
We only try to deal with non-array instances of gates, with the usual
arities (i.e., 2 arguments to a NOT or BUF, and 3 arguments to AND, OR,
...).
Subtopics
- Vl-gateinst-gate-elim
- Try to convert a single gate into one of VL's primitive modules.
- Vl-gateinstlist-gate-elim
- Extends vl-gateinst-gate-elim to a list of gate instances.
- Vl-modulelist-gate-elim-aux
- Extends vl-module-gate-elim across a module list.
- Vl-module-gate-elim
- Convert gates throughout a module.
- Vl-add-portnames-to-plainargs
- Goofy operation to name the arguments as we convert gate instances.
- Vl-modulelist-gate-elim
- Convert gates throughout a list of modules and add any new primitives
into the module list.
- Vl-design-gate-elim
- Top-level gate-elim transform.
- Vl-primalist
- An alist mapping gate primitive names to primitive modules.