• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
      • Sv
        • Svex-stvs
        • Svex-decomposition-methodology
        • Sv-versus-esim
        • Svex-decomp
        • Svex-compose-dfs
        • Svex-compilation
        • Moddb
        • Svmods
        • Svstmt
        • Sv-tutorial
        • Expressions
        • Symbolic-test-vector
        • Vl-to-svex
          • Vl-to-sv
          • Vl-design->sv-design
          • Vl-to-sv-main
          • Vl-simplify-sv
            • Vl-user-paramsettings->unparam-names
            • Vl-user-paramsettings->modnames
        • Fgl
        • Vwsim
        • Vl
        • X86isa
        • Svl
        • Rtl
      • Software-verification
      • Math
      • Testing-utilities
    • Vl-to-svex

    Vl-simplify-sv

    Core transformation sequence for using VL to generate SVEX modules.

    Signature
    (vl-simplify-sv design config) → (mv good bad)
    Arguments
    design — Guard (vl-design-p design).
    config — Guard (vl-simpconfig-p config).
    Returns
    good — Type (vl-design-p good).
    bad — Type (vl-design-p bad).

    Definitions and Theorems

    Function: vl-simplify-sv

    (defun vl-simplify-sv (design config)
     (declare (xargs :guard (and (vl-design-p design)
                                 (vl-simpconfig-p config))))
     (let ((__function__ 'vl-simplify-sv))
      (declare (ignorable __function__))
      (b*
       (((vl-simpconfig config) config)
        (good (vl-design-fix design))
        (bad (make-vl-design))
        (- (cw "Simplifying ~x0 modules.~%"
               (len (vl-design->mods good))))
        (good
          (xf-cwtime (vl-design-problem-mods good config.problem-mods)))
        ((mv good bad)
         (xf-cwtime (vl-design-propagate-errors*
                         good bad
                         config.suppress-fatal-warning-types)))
        (good (xf-cwtime (vl-design-lvaluecheck good)))
        ((mv good bad)
         (xf-cwtime (vl-design-propagate-errors*
                         good bad
                         config.suppress-fatal-warning-types)))
        (good (xf-cwtime (vl-design-eliminitial good)))
        (good (xf-cwtime (vl-design-elaborate good config)))
        ((mv good bad)
         (xf-cwtime (vl-design-propagate-errors*
                         good bad
                         config.suppress-fatal-warning-types)))
        (good (xf-cwtime (vl-design-clean-warnings good)))
        (bad (xf-cwtime (vl-design-clean-warnings bad))))
       (mv good bad))))

    Theorem: vl-design-p-of-vl-simplify-sv.good

    (defthm vl-design-p-of-vl-simplify-sv.good
      (b* (((mv ?good ?bad)
            (vl-simplify-sv design config)))
        (vl-design-p good))
      :rule-classes :rewrite)

    Theorem: vl-design-p-of-vl-simplify-sv.bad

    (defthm vl-design-p-of-vl-simplify-sv.bad
      (b* (((mv ?good ?bad)
            (vl-simplify-sv design config)))
        (vl-design-p bad))
      :rule-classes :rewrite)