• 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
        • Mlib
        • Transforms
          • Unparameterization
          • Elaborate
          • Addnames
          • Annotate
            • Increment-elim
            • Make-implicit-wires
              • Shadowcheck
              • Implicit-wires-minutia
              • Implicit-wires-generate-scoping
                • Vl-modulelist-make-implicit-wires
                • Vl-interfacelist-make-implicit-wires
                • Vl-genelementlist-flatten
                  • Vl-genelement-flatten
                  • Vl-gencaselist-flatten
                  • Vl-genblock-flatten
                • Vl-interface-make-implicit-wires
                • Vl-module-make-implicit-wires
                • Vl-design-make-implicit-wires-aux
                • Vl-design-make-implicit-wires
              • Vl-genbase-make-implicit-wires
              • Vl-expr-names-for-implicit
              • Vl-make-implicit-wires-main
              • Vl-implicitst
              • Vl-make-port-implicit-wires
              • Vl-import-update-implicit
              • Vl-blockitemlist-update-implicit
              • Vl-blockitem-update-implicit
              • Vl-make-ordinary-implicit-wires
              • Vl-remove-declared-wires
              • Vl-implicitsts-restore-fast-alists
              • Vl-genblock-under-cond-make-implicit-wires
              • Vl-collect-exprs-for-implicit-wires-from-namedargs
              • Vl-genblock-make-implicit-wires
              • Vl-collect-exprs-for-implicit-wires-from-portargs
              • Vl-collect-exprs-for-implicit-wires-from-namedarg
              • Vl-gateinst-exprs-for-implicit-wires
              • Vl-modinst-exprs-for-implicit-wires
              • Vl-genelementlist-make-implicit-wires
              • Vl-packagemap-find-name
            • Basic-bind-elim
            • Argresolve
            • Basicsanity
            • Portdecl-sign
            • Enum-names
            • Port-resolve
            • Udp-elim
            • Vl-annotate-design
            • Vl-annotate-module
          • Clean-warnings
          • Eliminitial
          • Custom-transform-hooks
          • Problem-modules
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Math
    • Testing-utilities
  • Implicit-wires-generate-scoping

Vl-genelementlist-flatten

Special flattening of unnamed begin/end blocks.

Signature
(vl-genelementlist-flatten x genp newitems warnings) 
  → 
(mv warnings newitems)
Arguments
x — Guard (vl-genelementlist-p x).
genp — Guard (booleanp genp).
newitems — Guard (vl-genelementlist-p newitems).
warnings — Guard (vl-warninglist-p warnings).
Returns
warnings — Type (vl-warninglist-p warnings).
newitems — Type (vl-genelementlist-p newitems).

See implicit-wires-generate-scoping. Here we flatten the unnamed begin/end blocks and take care of weird special cases like checking that generates have no ports, converting parameters to localparams within generates, etc.

Theorem: return-type-of-vl-genblock-flatten.warnings

(defthm return-type-of-vl-genblock-flatten.warnings
  (b* (((mv ?warnings ?new-x)
        (vl-genblock-flatten x warnings)))
    (vl-warninglist-p warnings))
  :rule-classes :rewrite)

Theorem: return-type-of-vl-genblock-flatten.new-x

(defthm return-type-of-vl-genblock-flatten.new-x
  (b* (((mv ?warnings ?new-x)
        (vl-genblock-flatten x warnings)))
    (vl-genblock-p new-x))
  :rule-classes :rewrite)

Theorem: return-type-of-vl-genelementlist-flatten.warnings

(defthm return-type-of-vl-genelementlist-flatten.warnings
  (b* (((mv ?warnings ?newitems)
        (vl-genelementlist-flatten x genp newitems warnings)))
    (vl-warninglist-p warnings))
  :rule-classes :rewrite)

Theorem: return-type-of-vl-genelementlist-flatten.newitems

(defthm return-type-of-vl-genelementlist-flatten.newitems
  (b* (((mv ?warnings ?newitems)
        (vl-genelementlist-flatten x genp newitems warnings)))
    (vl-genelementlist-p newitems))
  :rule-classes :rewrite)

Theorem: return-type-of-vl-genelement-flatten.warnings

(defthm return-type-of-vl-genelement-flatten.warnings
  (b* (((mv ?warnings ?newitems)
        (vl-genelement-flatten x genp newitems warnings)))
    (vl-warninglist-p warnings))
  :rule-classes :rewrite)

Theorem: return-type-of-vl-genelement-flatten.newitems

(defthm return-type-of-vl-genelement-flatten.newitems
  (b* (((mv ?warnings ?newitems)
        (vl-genelement-flatten x genp newitems warnings)))
    (vl-genelementlist-p newitems))
  :rule-classes :rewrite)

Theorem: return-type-of-vl-gencaselist-flatten.warnings

(defthm return-type-of-vl-gencaselist-flatten.warnings
  (b* (((mv ?warnings ?new-cases)
        (vl-gencaselist-flatten cases warnings)))
    (vl-warninglist-p warnings))
  :rule-classes :rewrite)

Theorem: return-type-of-vl-gencaselist-flatten.new-cases

(defthm return-type-of-vl-gencaselist-flatten.new-cases
  (b* (((mv ?warnings ?new-cases)
        (vl-gencaselist-flatten cases warnings)))
    (vl-gencaselist-p new-cases))
  :rule-classes :rewrite)

Subtopics

Vl-genelement-flatten
Vl-gencaselist-flatten
Vl-genblock-flatten