• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Community
    • Proof-automation
    • ACL2
    • Macro-libraries
    • 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-to-sv-main

    Turn a VL design into an SVEX hierarchical design, with a list of top modules.

    Signature
    (vl-to-sv-main topmods 
                   x config &key (allow-bad-topmods 'nil) 
                   (post-filter 't)) 
     
      → 
    (mv err modalist good bad)
    Arguments
    topmods — Guard (string-listp topmods).
    x — Guard (vl-design-p x).
    config — Guard (vl-simpconfig-p config).
    allow-bad-topmods — Guard (booleanp allow-bad-topmods).
    post-filter — Guard (booleanp post-filter).
    Returns
    modalist — Type (sv::modalist-p modalist).
    good — Type (vl-design-p good).
    bad — Type (vl-design-p bad).

    Definitions and Theorems

    Function: vl-to-sv-main-fn

    (defun vl-to-sv-main-fn
           (topmods x config allow-bad-topmods post-filter)
     (declare (xargs :guard (and (string-listp topmods)
                                 (vl-design-p x)
                                 (vl-simpconfig-p config)
                                 (booleanp allow-bad-topmods)
                                 (booleanp post-filter))))
     (let ((__function__ 'vl-to-sv-main))
      (declare (ignorable __function__))
      (vl-to-sv
          x
          (change-vl-simpconfig config
                                :pre-elab-topmods topmods
                                :post-elab-topmods topmods
                                :post-elab-filter post-filter
                                :allow-bad-topmods allow-bad-topmods))))

    Theorem: modalist-p-of-vl-to-sv-main.modalist

    (defthm modalist-p-of-vl-to-sv-main.modalist
      (b* (((mv ?err ?modalist ?good ?bad)
            (vl-to-sv-main-fn topmods x
                              config allow-bad-topmods post-filter)))
        (sv::modalist-p modalist))
      :rule-classes :rewrite)

    Theorem: vl-design-p-of-vl-to-sv-main.good

    (defthm vl-design-p-of-vl-to-sv-main.good
      (b* (((mv ?err ?modalist ?good ?bad)
            (vl-to-sv-main-fn topmods x
                              config allow-bad-topmods post-filter)))
        (vl-design-p good))
      :rule-classes :rewrite)

    Theorem: vl-design-p-of-vl-to-sv-main.bad

    (defthm vl-design-p-of-vl-to-sv-main.bad
      (b* (((mv ?err ?modalist ?good ?bad)
            (vl-to-sv-main-fn topmods x
                              config allow-bad-topmods post-filter)))
        (vl-design-p bad))
      :rule-classes :rewrite)

    Theorem: modalist-addr-p-of-vl-to-sv-main

    (defthm modalist-addr-p-of-vl-to-sv-main
      (b* (((mv ?err ?modalist ?good ?bad)
            (vl-to-sv-main-fn topmods x
                              config allow-bad-topmods post-filter)))
        (sv::svarlist-addr-p (sv::modalist-vars modalist))))