• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
        • Warnings
        • Primitives
        • Use-set
        • Syntax
        • Getting-started
        • Utilities
        • Loader
        • Transforms
          • Expression-sizing
          • Occform
          • Oprewrite
          • Expand-functions
          • Delayredux
          • Unparameterization
          • Caseelim
          • Split
          • Selresolve
          • Weirdint-elim
          • Vl-delta
          • Replicate-insts
          • Rangeresolve
          • Propagate
          • Clean-selects
          • Clean-params
          • Blankargs
          • Inline-mods
          • Expr-simp
          • Trunc
          • Always-top
          • Gatesplit
          • Gate-elim
            • Vl-gateinst-gate-elim
            • Vl-gateinstlist-gate-elim
            • Vl-modulelist-gate-elim-aux
            • Vl-module-gate-elim
            • Vl-add-portnames-to-plainargs
            • Vl-modulelist-gate-elim
            • Vl-design-gate-elim
            • Vl-primalist
          • Expression-optimization
          • Elim-supplies
          • Wildelim
          • Drop-blankports
          • Clean-warnings
          • Addinstnames
          • Custom-transform-hooks
          • Annotate
          • Latchcode
          • Elim-unused-vars
          • Problem-modules
        • Lint
        • Mlib
        • Server
        • Kit
        • Printer
        • Esim-vl
        • Well-formedness
      • Sv
      • Fgl
      • Vwsim
      • Vl
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Math
    • Testing-utilities
  • Transforms

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.