• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
        • Warnings
          • Vl-warninglist->types
          • Vl-warning
          • Propagating-errors
            • Vl-blamealist
            • Vl-design-propagate-errors
              • Vl-design-filter-zombies
            • Vl-blame-alist-to-reportcard
            • Vl-blame-alist
            • Vl-design-zombies
            • Vl-blamealist-count
          • Vl-reportcard
          • Vl-warning-sort
          • Lint-warning-suppression
          • Clean-warnings
          • Warn
          • Vl-some-warning-fatalp
          • Vl-print-warnings-with-header
          • Vl-print-warnings-with-named-header
          • Flat-warnings
          • Vl-keep-warnings
          • Vl-remove-warnings
          • Vl-print-warnings
          • Vl-some-warning-of-type-p
          • Vl-clean-warnings
          • Vl-warnings-to-string
          • Vl-warninglist
          • Vl-print-warning
          • Ok
          • Vl-trace-warnings
          • Fatal
        • Primitives
        • Use-set
        • Syntax
        • Getting-started
        • Utilities
        • Loader
        • Transforms
        • Lint
        • Mlib
        • Server
        • Kit
        • Printer
        • Esim-vl
        • Well-formedness
      • Sv
      • Vwsim
      • Fgl
      • Vl
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Testing-utilities
    • Math
  • Propagating-errors

Vl-design-propagate-errors

Top-level function for propagating-errors. We identify any faulty design elements in a good design and move them into a bad design.

Signature
(vl-design-propagate-errors good bad) → (mv good-- bad++)
Arguments
good — The good design, which has presumably just been transformed in some way. This design may have some "zombies" — design elements with fatal warnings. We will remove these zombies and anything that depends on them.
    Guard (vl-design-p good).
bad — The bad design which holds any faulty design elements. We will move the zombies into this design.
    Guard (vl-design-p bad).
Returns
good-- — Cut down version of the good design, with any faulty elements and their dependents eliminated.
    Type (vl-design-p good--).
bad++ — Extended version of the bad design, with any faulty elements from good moved over into it.
    Type (vl-design-p bad++).

Definitions and Theorems

Function: vl-design-propagate-errors

(defun
 vl-design-propagate-errors (good bad)
 (declare (xargs :guard (and (vl-design-p good)
                             (vl-design-p bad))))
 (let
    ((__function__ 'vl-design-propagate-errors))
    (declare (ignorable __function__))
    (b* ((zombies (vl-design-zombies good))
         ((unless zombies)
          (mv (vl-design-fix good)
              (vl-design-fix bad)))
         (blame-alist (vl-blame-alist zombies good))
         (reportcard (vl-blame-alist-to-reportcard blame-alist nil))
         (good (vl-apply-reportcard good reportcard)))
        (vl-hierarchy-free)
        (vl-design-filter-zombies good bad))))

Theorem: vl-design-p-of-vl-design-propagate-errors.good--

(defthm vl-design-p-of-vl-design-propagate-errors.good--
        (b* (((mv ?good-- ?bad++)
              (vl-design-propagate-errors good bad)))
            (vl-design-p good--))
        :rule-classes :rewrite)

Theorem: vl-design-p-of-vl-design-propagate-errors.bad++

(defthm vl-design-p-of-vl-design-propagate-errors.bad++
        (b* (((mv ?good-- ?bad++)
              (vl-design-propagate-errors good bad)))
            (vl-design-p bad++))
        :rule-classes :rewrite)

Theorem: vl-design-propagate-errors-of-vl-design-fix-good

(defthm vl-design-propagate-errors-of-vl-design-fix-good
        (equal (vl-design-propagate-errors (vl-design-fix good)
                                           bad)
               (vl-design-propagate-errors good bad)))

Theorem: vl-design-propagate-errors-vl-design-equiv-congruence-on-good

(defthm
     vl-design-propagate-errors-vl-design-equiv-congruence-on-good
     (implies (vl-design-equiv good good-equiv)
              (equal (vl-design-propagate-errors good bad)
                     (vl-design-propagate-errors good-equiv bad)))
     :rule-classes :congruence)

Theorem: vl-design-propagate-errors-of-vl-design-fix-bad

(defthm vl-design-propagate-errors-of-vl-design-fix-bad
        (equal (vl-design-propagate-errors good (vl-design-fix bad))
               (vl-design-propagate-errors good bad)))

Theorem: vl-design-propagate-errors-vl-design-equiv-congruence-on-bad

(defthm
     vl-design-propagate-errors-vl-design-equiv-congruence-on-bad
     (implies (vl-design-equiv bad bad-equiv)
              (equal (vl-design-propagate-errors good bad)
                     (vl-design-propagate-errors good bad-equiv)))
     :rule-classes :congruence)

Subtopics

Vl-design-filter-zombies
Move modules and other design elements that have fatal warnings from the good design into the bad design.