• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Community
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
        • Warnings
        • Primitives
        • Use-set
        • Syntax
        • Getting-started
        • Utilities
        • Loader
        • Transforms
        • Lint
        • Mlib
          • Scopestack
          • Filtering-by-name
          • Vl-namefactory
          • Substitution
          • Allexprs
          • Hid-tools
          • Vl-consteval
          • Range-tools
          • Lvalexprs
          • Hierarchy
            • Vl-remove-unnecessary-elements
            • Vl-necessary-elements-transitive
            • Vl-dependent-elements-transitive
            • Vl-necessary-elements-direct
            • Vl-modulelist-everinstanced
              • Vl-module->flatten-modinsts
              • Vl-modulelist-everinstanced-nrev
            • Vl-dependent-elements-direct
            • Vl-modulelist-toplevel
            • Vl-design-deporder-modules
            • Vl-design-check-complete
            • Vl-design-upgraph
            • Immdeps
            • Vl-design-downgraph
            • Vl-collect-dependencies
            • Vl-hierarchy-free
          • Finding-by-name
          • Expr-tools
          • Expr-slicing
          • Stripping-functions
          • Stmt-tools
          • Modnamespace
          • Vl-parse-expr-from-str
          • Welltyped
          • Reordering-by-name
          • Flat-warnings
          • Genblob
          • Expr-building
          • Datatype-tools
          • Syscalls
          • Relocate
          • Expr-cleaning
          • Namemangle
          • Caremask
          • Port-tools
          • Lvalues
        • Server
        • Kit
        • Printer
        • Esim-vl
        • Well-formedness
      • Sv
      • Fgl
      • Vwsim
      • Vl
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Math
    • Testing-utilities
  • Hierarchy

Vl-modulelist-everinstanced

Gather the names of every module and interface ever instanced in a module list or used in an interface port.

Signature
(vl-modulelist-everinstanced x) → names
Arguments
x — Guard (vl-modulelist-p x).
Returns
names — Type (string-listp names).

The returned list typically will contain a lot of duplicates. This is fairly expensive, requiring a cons for every single module instance. We optimize it to avoid the construction of intermediate lists and to use nrev.

Definitions and Theorems

Function: vl-modulelist-everinstanced

(defun vl-modulelist-everinstanced (x)
 (declare (xargs :guard (vl-modulelist-p x)))
 (let ((__function__ 'vl-modulelist-everinstanced))
  (declare (ignorable __function__))
  (mbe
      :logic
      (b* (((when (atom x)) nil)
           (modinsts1 (vl-module->flatten-modinsts (car x)))
           (ifports1 (vl-module->ifports (car x))))
        (append (vl-modinstlist->modnames modinsts1)
                (vl-interfaceportlist->ifnames ifports1)
                (vl-modulelist-everinstanced (cdr x))))
      :exec
      (with-local-nrev (vl-modulelist-everinstanced-nrev x nrev)))))

Theorem: string-listp-of-vl-modulelist-everinstanced

(defthm string-listp-of-vl-modulelist-everinstanced
  (b* ((names (vl-modulelist-everinstanced x)))
    (string-listp names))
  :rule-classes :rewrite)

Theorem: vl-modulelist-everinstanced-nrev-removal

(defthm vl-modulelist-everinstanced-nrev-removal
  (equal (vl-modulelist-everinstanced-nrev x nrev)
         (append nrev (vl-modulelist-everinstanced x))))

Theorem: vl-modulelist-everinstanced-of-vl-modulelist-fix-x

(defthm vl-modulelist-everinstanced-of-vl-modulelist-fix-x
  (equal (vl-modulelist-everinstanced (vl-modulelist-fix x))
         (vl-modulelist-everinstanced x)))

Theorem: vl-modulelist-everinstanced-vl-modulelist-equiv-congruence-on-x

(defthm
    vl-modulelist-everinstanced-vl-modulelist-equiv-congruence-on-x
  (implies (vl-modulelist-equiv x x-equiv)
           (equal (vl-modulelist-everinstanced x)
                  (vl-modulelist-everinstanced x-equiv)))
  :rule-classes :congruence)

Subtopics

Vl-module->flatten-modinsts
Gather modinsts from the module, including its generate blocks.
Vl-modulelist-everinstanced-nrev