• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Community
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
      • Sv
      • Fgl
      • Vwsim
      • Vl
        • Syntax
        • Loader
        • Warnings
        • Getting-started
        • Utilities
        • Printer
        • Kit
          • Vl-lint
            • Vl-lintconfig-p
            • Condcheck
            • Lint-warning-suppression
            • Lucid
            • Lvaluecheck
            • Vl-interfacelist-alwaysstyle
            • Truncation-warnings
            • Vl-modulelist-alwaysstyle
            • Skip-detection
            • Vl-lint-report
            • Vl-lintresult
            • Vl::vl-design-sv-use-set
            • Oddexpr-check
            • Leftright-check
            • Duplicate-detect
            • Selfassigns
            • *vl-lint-help*
            • Arith-compare-check
            • Dupeinst-check
              • Vl-dupeinst-alistp
              • Vl-modulelist-dupeinst-check
              • Vl-dupeinst-key-p
                • Vl-dupeinst-key
                • Make-vl-dupeinst-key
                • Change-vl-dupeinst-key
                • Make-honsed-vl-dupeinst-key
                • Honsed-vl-dupeinst-key
                • Vl-dupeinst-key->modname
                • Vl-dupeinst-key->inputs
              • Vl-maybe-warn-dupeinst
              • Vl-warnings-for-dupeinst-alist
              • Vl-make-dupeinst-alist
              • Vl-module-dupeinst-check
              • Vl-dupeinst-trivial-p
              • Vl-design-dupeinst-check
              • Vl-pp-dupeinst-key
              • Vl-pp-dupeinst-alist
            • Qmarksize-check
            • Lint-whole-file-suppression
            • Run-vl-lint-main
            • Logicassign
            • Run-vl-lint
            • Vl-print-certain-warnings
            • Duperhs-check
            • Vl-lint-top
            • Sd-filter-problems
            • Vl-modulelist-add-svbad-warnings
            • Vl-module-add-svbad-warnings
            • Check-case
            • Vl-lint-extra-actions
            • Drop-lint-stubs
            • Vl-lint-print-warnings
            • Drop-user-submodules
            • Check-namespace
            • Vl-lintconfig-loadconfig
            • Vl-lint-design->svex-modalist-wrapper
            • Vl-delete-sd-problems-for-modnames-aux
            • Vl-collect-new-names-from-orignames
            • Vl-lint-print-all-warnings
            • Vl-design-remove-unnecessary-modules
            • Vl-delete-sd-problems-for-modnames
            • Vl-always-check-style
            • Vl-vardecllist-svbad-warnings
            • Vl-vardecl-svbad-warnings
            • Vl-reportcard-remove-suppressed
            • Vl-reportcard-keep-suppressed
            • Vl-alwayslist-check-style
            • Vl-remove-nameless-descriptions
            • Vl-lint-apply-quiet
            • Vl-warninglist-remove-suppressed
            • Vl-warninglist-keep-suppressed
            • Vl-print-eliminated-descs
            • Vl-module-alwaysstyle
            • Vl-jp-reportcard-aux
            • Vl-interface-alwaysstyle
            • Vl-design-alwaysstyle
            • Vl-jp-description-locations
            • Vl-jp-reportcard
            • Vl-pp-stringlist-lines
            • Vl-jp-design-locations
            • Vl-datatype-svbad-p
            • Unpacked-range-check
            • Sd-problem-major-p
            • Vl-alwaysstyle
          • Vl-server
          • Vl-gather
          • Vl-zip
          • Vl-main
          • Split-plusargs
          • Vl-shell
          • Vl-json
        • Mlib
        • Transforms
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Math
    • Testing-utilities
  • Dupeinst-check

Vl-dupeinst-key-p

Keys used to determine if module instances have the same inputs.

(vl-dupeinst-key-p x) is a defaggregate of the following fields.

  • modname — Name of the submodule being instantiated. We need to know the name of each instance so that we don't get confused by things like
    mymod1 m1 (o1, a, b);
    mymod2 m2 (o2, a, b);
    which, despite having the same arguments, are presumably very different things.
        Invariant (stringp modname).
  • inputs — Inputs (not outputs or inouts) to the submodule instance. We expect instances to be argresolved so that these are already in some canonical order. We just keep the expressions because we don't care about port names, directions, etc. We also expect all of these expressions to be fixed so that attributes are ignored.
        Invariant (vl-exprlist-p inputs).

Source link: vl-dupeinst-key-p

We generate a key from each modinst. Modinsts with the same keys are regarded as having the same inputs. That is, the whole point of the dupeinst check is to find modinsts with the same key.

Our keys should arguably include the parameter arguments. But if the inputs are the same, then the parameters should probably be the same or, at any rate, seem basically compatible? Well, whatever. It probably doesn't matter much at all in practice.

We always hons keys because we're going to use them as fast alist keys.

Subtopics

Vl-dupeinst-key
Raw constructor for vl-dupeinst-key-p structures.
Make-vl-dupeinst-key
Constructor macro for vl-dupeinst-key-p structures.
Change-vl-dupeinst-key
A copying macro that lets you create new vl-dupeinst-key-p structures, based on existing structures.
Make-honsed-vl-dupeinst-key
Constructor macro for honsed vl-dupeinst-key-p structures.
Honsed-vl-dupeinst-key
Raw constructor for honsed vl-dupeinst-key-p structures.
Vl-dupeinst-key->modname
Access the modname field of a vl-dupeinst-key-p structure.
Vl-dupeinst-key->inputs
Access the inputs field of a vl-dupeinst-key-p structure.