• 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
          • Vl-module
          • Vl-vardecl
          • Expressions
          • Vl-fundecl
          • Vl-assign
          • Vl-gateinst
            • Vl-gateinst-p
            • Vl-gateinst-fix
            • Make-vl-gateinst
            • Vl-gateinst-equiv
            • Change-vl-gateinst
            • Vl-gateinst->type
            • Vl-gateinst->strength
            • Vl-gateinst->name
            • Vl-gateinst->range
            • Vl-gateinst->delay
            • Vl-gateinst->args
            • Vl-gateinst->loc
            • Vl-gateinst->atts
          • Vl-modinst
          • Vl-commentmap
          • Vl-portdecl
          • Vl-taskdecl
          • Vl-design
          • Vl-interface
          • Vl-plainarglist->exprs
          • Vl-taskdecllist->names
          • Vl-fundecllist->names
          • Vl-package
          • Vl-port
          • Vl-udp
          • Vl-paramdecl
          • Vl-genelement
          • Vl-cycledelayrange
          • Vl-namedarg
          • Vl-sort-blockitems-aux
          • Vl-distitem
          • Vl-gatedelay
          • Vl-repetition
          • Vl-typedef
          • Vl-range
          • Vl-gatestrength
          • Vl-program
          • Vl-config
          • Vl-always
          • Vl-datatype-update-dims
          • Vl-import
          • Vl-enumbasetype
          • Vl-repeateventcontrol
          • Vl-paramargs
          • Vl-initial
          • Vl-eventcontrol
          • Vl-udpsymbol-p
          • Vl-maybe-range
          • Vl-maybe-nettypename
          • Vl-maybe-gatestrength
          • Vl-maybe-gatedelay
          • Vl-maybe-delayoreventcontrol
          • Vl-alias
          • Maybe-string-fix
          • Vl-maybe-packeddimension
          • Vl-fwdtypedef
          • Vl-evatom
          • Vl-packeddimension-p
          • Vl-maybe-udpsymbol
          • Vl-maybe-module
          • Vl-maybe-direction
          • Vl-maybe-datatype
          • Vl-maybe-cstrength
          • Vl-direction-p
          • Vl-arguments
          • Vl-maybe-design
          • Vl-udpline
          • Vl-exprdist
          • Vl-context1
          • Vl-genvar
          • Vl-enumitem
          • Vl-datatype-update-udims
          • Vl-datatype-update-pdims
          • Vl-modelement
          • Vl-udpedge
          • Vl-delaycontrol
          • Vl-context
          • Vl-sort-blockitems
          • Vl-distweighttype-p
          • Vl-ctxelement->loc
          • Vl-blockitem
          • Vl-vardecllist
          • Vl-module->ifports
          • Vl-modelement->loc
          • Vl-ctxelement
          • Vl-coretypename-p
          • Vl-packeddimensionlist
          • Vl-modelementlist->genelements
          • Vl-gatetype-p
          • Vl-paramdecllist
          • Vl-lifetime-p
          • Vl-datatype->udims
          • Vl-datatype->pdims
          • Vl-timeunit-p
          • Vl-repetitiontype-p
          • Vl-port->name
          • Vl-importlist
          • Vl-genelement->loc
          • Vl-delayoreventcontrol
          • Vl-cstrength-p
          • Statements
          • Vl-udpentry-p
          • Vl-packeddimension-fix
          • Vl-nettypename-p
          • Vl-portdecllist
          • Vl-port->loc
          • Vl-enumbasekind-fix
          • Vl-arguments->args
          • Vl-taskdecllist
          • Vl-portlist
          • Vl-importpart-p
          • Vl-importpart-fix
          • Vl-fundecllist
          • Vl-blockstmt-p
          • Vl-assignlist
          • Vl-alwaystype-p
          • Vl-typedeflist
          • Vl-syntaxversion-p
          • Vl-randomqualifier-p
          • Vl-modinstlist
          • Vl-gateinstlist
          • Vl-blockitemlist
          • Vl-udptable
          • Vl-udplist
          • Vl-udpentrylist
          • Vl-programlist
          • Vl-paramvaluelist
          • Vl-packagelist
          • Vl-namedparamvaluelist
          • Vl-namedarglist
          • Vl-modulelist
          • Vl-modportlist
          • Vl-modport-portlist
          • Vl-interfacelist
          • Vl-initiallist
          • Vl-genvarlist
          • Vl-fwdtypedeflist
          • Vl-evatomlist
          • Vl-enumitemlist
          • Vl-distlist
          • Vl-configlist
          • Vl-alwayslist
          • Vl-aliaslist
          • Vl-regularportlist
          • Vl-rangelist-list
          • Vl-rangelist
          • Vl-paramdecllist-list
          • Vl-modelementlist
          • Vl-maybe-range-list
          • Vl-interfaceportlist
          • Vl-argumentlist
          • Data-types
        • Getting-started
        • Utilities
        • Loader
        • Transforms
        • Lint
        • Mlib
        • Server
        • Kit
        • Printer
        • Esim-vl
        • Well-formedness
      • Sv
      • Fgl
      • Vwsim
      • Vl
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Math
    • Testing-utilities
  • Syntax

Vl-gateinst

Representation of a single gate instantiation.

This is a product type introduced by defprod.

Fields
type — vl-gatetype-p
What kind of gate this is, e.g., and, xor, rnmos, etc.
name — maybe-string
The name of this gate instance, or nil if it has no name; see also the addinstnames transform.
range — vl-maybe-range
When present, indicates that this is an array of instances instead of a single instance.
strength — vl-maybe-gatestrength
The parser leaves this as nil unless it is explicitly provided. Note from Section 7.8 of the Verilog-2005 standard that pullup and pulldown gates are special in that the strength0 from a pullup source and the strength1 on a pulldown source are supposed to be ignored. Warning: in general we have not paid much attention to strengths, so we may not handle them correctly in our various transforms.
delay — vl-maybe-gatedelay
The parser leaves this as nil unless it is explicitly provided. Certain gates (tran, rtran, pullup, and pulldown) never have delays according to the Verilog grammar, but this is only enforced by the parser, and is not part of our vl-gateinst-p definition. Warning: as with strengths, we have not paid much attention to delays, and our transforms may not handle them correctly.
args — vl-plainarglist
Arguments to the gate instance. Note that this differs from module instances where vl-arguments-p structures are used, because gate arguments are never named. The grammar restricts how many arguments certain gates can have, but we do not enforce these restrictions in the definition of vl-gateinst-p.
atts — vl-atts
Any attributes associated with this gate instance.
loc — vl-location
Where the gate instance was found in the source code.

vl-gateinst-p is our representation for any single gate instance (or instance array).

The grammar for gate instantiations is quite elaborate, but the various cases are so regular that a unified representation is possible. Note that the Verilog grammar restricts the list of expressions in certain cases, e.g., for an and gate, the first expression must be an lvalue. Although our parser enforces these restrictions, we do not encode them into the definition of vl-gateinst-p.

Subtopics

Vl-gateinst-p
Recognizer for vl-gateinst structures.
Vl-gateinst-fix
Fixing function for vl-gateinst structures.
Make-vl-gateinst
Basic constructor macro for vl-gateinst structures.
Vl-gateinst-equiv
Basic equivalence relation for vl-gateinst structures.
Change-vl-gateinst
Modifying constructor for vl-gateinst structures.
Vl-gateinst->type
Get the type field from a vl-gateinst.
Vl-gateinst->strength
Get the strength field from a vl-gateinst.
Vl-gateinst->name
Get the name field from a vl-gateinst.
Vl-gateinst->range
Get the range field from a vl-gateinst.
Vl-gateinst->delay
Get the delay field from a vl-gateinst.
Vl-gateinst->args
Get the args field from a vl-gateinst.
Vl-gateinst->loc
Get the loc field from a vl-gateinst.
Vl-gateinst->atts
Get the atts field from a vl-gateinst.