• 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
            • Vl-modinst-plainarglist-blankargs
            • Vl-modulelist-blankargs
            • Vl-modinst-blankargs
            • Vl-gateinst-plainarglist-blankargs
            • Vl-modinstlist-blankargs
            • Vl-gateinstlist-blankargs
            • Vl-gateinst-blankargs
            • Vl-module-blankargs
            • Vl-design-blankargs
          • Inline-mods
          • Expr-simp
          • Trunc
          • Always-top
          • Gatesplit
          • Gate-elim
          • 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

Blankargs

A transformation which "fills in" blank arguments.

Verilog permits the use of "blank" expressions as arguments to module and gate instances. See vl-port-p and vl-plainarg-p for some additional discussion.

This transformation "fills in" any blank arguments that are connected to non-blank ports with new, fresh wires. A related (but separate) transformation is drop-blankports which eliminates any blank ports and their corresponding arguments.

If a blank argument is given to a submodule's non-blank input port, it is the equivalent of passing in a Z value. If a blank argument is given to a submodule's non-blank output port, the value being emitted on that port is simply inaccessible in the superior module.

In either case, we simply replace the blank argument with a new, fresh, otherwise undriven wire of the appropriate size. This approach works equally well for inputs and outputs. We give these wires names such as blank_27.

Unlike drop-blankports which can be applied at any time after argresolve, the blankargs transformation requires that expression sizes have been computed (see expression-sizing) since the new wires need to have the appropriate size. We also expect that the replicate-insts transform has been run to ensure that no instances have ranges.

Subtopics

Vl-modinst-plainarglist-blankargs
Fill in any blank arguments in a module instance's argument list.
Vl-modulelist-blankargs
(vl-modulelist-blankargs x ss) maps vl-module-blankargs across a list.
Vl-modinst-blankargs
Apply the blankargs transform to a module instance.
Vl-gateinst-plainarglist-blankargs
Replace any blank arguments in a gate instance with fresh wires.
Vl-modinstlist-blankargs
Extends vl-modinst-blankargs across a vl-modinstlist-p.
Vl-gateinstlist-blankargs
Extends vl-gateinst-blankargs across a vl-gateinstlist-p.
Vl-gateinst-blankargs
Apply the blankargs transform to a gate instance.
Vl-module-blankargs
Fill in blank arguments throughout a vl-module-p.
Vl-design-blankargs
Top-level blankargs transformation.