• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Community
    • Proof-automation
    • ACL2
    • Macro-libraries
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
      • Sv
        • Svex-stvs
          • Svtv-data
          • Defsvtv$
          • Svtv-run
          • Defsvtv-phasewise
          • Svtv
          • Svtv-spec
          • Defsvtv
          • Process.lisp
          • Svtv-doc
          • Svtv-chase$
          • Svtv-versus-stv
          • Svtv-debug-fsm
          • Structure.lisp
          • Svtv-debug
            • Vcd.lisp
            • Debug.lisp
              • Svtv-debug-writephases
              • Svtv-debug-fsm-writephases
              • Svtv-debug-set-ios-logic
              • Svtv-debug-run-fsm
              • Svtv-debug-fsm-core
              • Svtv-debug-run-logic
                • Svtv-debug-init
                • Svtv-debug-eval-aliases-track
                • Svtv-debug-core
                • Svtv-debug-set-svtv
                • Svtv-debug-lhs-eval
                • Svtv-debug-eval-aliases
                • Svtv-debug-set-ios
                • Svtv-debug-run
                • Debugdata-status-p
            • Def-pipeline-thm
            • Expand.lisp
            • Def-cycle-thm
            • Svtv-utilities
            • Svtv-debug$
            • Defsvtv$-phasewise
          • 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
        • Fgl
        • Vwsim
        • Vl
        • X86isa
        • Svl
        • Rtl
      • Software-verification
      • Math
      • Testing-utilities
    • Debug.lisp

    Svtv-debug-run-logic

    Signature
    (svtv-debug-run-logic inalist 
                          &key (filename '"svtv-debug.vcd") 
                          (moddb 'moddb) 
                          (aliases 'aliases) 
                          (debugdata 'debugdata) 
                          (vcd-wiremap 'vcd-wiremap) 
                          (vcd-vals 'vcd-vals) 
                          (state 'state)) 
     
      → 
    (mv vcd-wiremap vcd-vals state)
    Arguments
    inalist — Guard (svex-env-p inalist).
    filename — Guard (stringp filename).

    Definitions and Theorems

    Function: svtv-debug-run-logic-fn

    (defun svtv-debug-run-logic-fn
           (inalist filename moddb aliases
                    debugdata vcd-wiremap vcd-vals state)
     (declare
          (xargs :stobjs (moddb aliases
                                debugdata vcd-wiremap vcd-vals state)))
     (declare (xargs :guard (and (svex-env-p inalist)
                                 (stringp filename))))
     (declare
       (xargs
            :guard
            (and (moddb-ok moddb)
                 (< (debugdata->modidx debugdata)
                    (moddb->nmods moddb))
                 (<= (moddb-mod-totalwires (debugdata->modidx debugdata)
                                           moddb)
                     (aliass-length aliases)))))
     (let ((__function__ 'svtv-debug-run-logic))
       (declare (ignorable __function__))
       (b*
        (((debugdata debugdata))
         (states (svex-alist-keys debugdata.nextstates))
         (initst (pairlis$ states
                           (replicate (len states) (4vec-x))))
         (vcd-wiremap (resize-vcdwires (aliass-length aliases)
                                       vcd-wiremap))
         ((mv scope & vcd-wiremap)
          (vcd-moddb->scopes "top"
                             debugdata.modidx 0 0 moddb vcd-wiremap))
         ((mv date state) (oslib::date))
         (p (vcd-print-header date scope nil))
         (vcd-vals (resize-4vecs (vcdwires-length vcd-wiremap)
                                 vcd-vals))
         (in-vars
              (hons-set-diff
                   (svexlist-collect-vars
                        (append (svex-alist-vals debugdata.updates)
                                (svex-alist-vals debugdata.nextstates)))
                   (append (svex-alist-keys debugdata.updates)
                           states)))
         ((with-fast inalist))
         (ins (svtv-expand-lines debugdata.ins debugdata.nphases))
         ((mv ovlines ?ovs)
          (svtv-lines->overrides debugdata.overrides 0))
         ((mv vcd-vals p)
          (svtv-debug-fsm-writephases
               0 debugdata.nphases (list inalist)
               ins ovlines initst
               debugdata.updates debugdata.nextstates
               in-vars aliases vcd-wiremap vcd-vals p))
         ((mv channel state)
          (open-output-channel (mbe :logic (str-fix filename)
                                    :exec filename)
                               :character state))
         ((unless channel)
          (raise "Couldn't write vcd file ~s0~%"
                 filename)
          (mv vcd-wiremap vcd-vals state))
         (state (princ$ (vl-printedlist->string p)
                        channel state))
         (state (close-output-channel channel state)))
        (mv vcd-wiremap vcd-vals state))))

    Theorem: svtv-debug-run-logic-fn-of-svex-env-fix-inalist

    (defthm svtv-debug-run-logic-fn-of-svex-env-fix-inalist
     (equal
        (svtv-debug-run-logic-fn (svex-env-fix inalist)
                                 filename moddb aliases
                                 debugdata vcd-wiremap vcd-vals state)
        (svtv-debug-run-logic-fn inalist filename moddb aliases
                                 debugdata vcd-wiremap vcd-vals state)))

    Theorem: svtv-debug-run-logic-fn-svex-env-equiv-congruence-on-inalist

    (defthm svtv-debug-run-logic-fn-svex-env-equiv-congruence-on-inalist
     (implies
      (svex-env-equiv inalist inalist-equiv)
      (equal
        (svtv-debug-run-logic-fn inalist filename moddb aliases
                                 debugdata vcd-wiremap vcd-vals state)
        (svtv-debug-run-logic-fn inalist-equiv filename moddb aliases
                                 debugdata vcd-wiremap vcd-vals state)))
     :rule-classes :congruence)

    Theorem: svtv-debug-run-logic-fn-of-str-fix-filename

    (defthm svtv-debug-run-logic-fn-of-str-fix-filename
     (equal
        (svtv-debug-run-logic-fn inalist (str-fix filename)
                                 moddb aliases
                                 debugdata vcd-wiremap vcd-vals state)
        (svtv-debug-run-logic-fn inalist filename moddb aliases
                                 debugdata vcd-wiremap vcd-vals state)))

    Theorem: svtv-debug-run-logic-fn-streqv-congruence-on-filename

    (defthm svtv-debug-run-logic-fn-streqv-congruence-on-filename
     (implies
      (acl2::streqv filename filename-equiv)
      (equal
        (svtv-debug-run-logic-fn inalist filename moddb aliases
                                 debugdata vcd-wiremap vcd-vals state)
        (svtv-debug-run-logic-fn inalist filename-equiv moddb aliases
                                 debugdata vcd-wiremap vcd-vals state)))
     :rule-classes :congruence)

    Theorem: svtv-debug-run-logic-fn-of-moddb-fix-moddb

    (defthm svtv-debug-run-logic-fn-of-moddb-fix-moddb
     (equal
        (svtv-debug-run-logic-fn inalist filename (moddb-fix moddb)
                                 aliases
                                 debugdata vcd-wiremap vcd-vals state)
        (svtv-debug-run-logic-fn inalist filename moddb aliases
                                 debugdata vcd-wiremap vcd-vals state)))

    Theorem: svtv-debug-run-logic-fn-moddb-equiv-congruence-on-moddb

    (defthm svtv-debug-run-logic-fn-moddb-equiv-congruence-on-moddb
     (implies
      (moddb-equiv moddb moddb-equiv)
      (equal
        (svtv-debug-run-logic-fn inalist filename moddb aliases
                                 debugdata vcd-wiremap vcd-vals state)
        (svtv-debug-run-logic-fn inalist filename moddb-equiv aliases
                                 debugdata vcd-wiremap vcd-vals state)))
     :rule-classes :congruence)

    Theorem: svtv-debug-run-logic-fn-of-lhslist-fix-aliases

    (defthm svtv-debug-run-logic-fn-of-lhslist-fix-aliases
     (equal
        (svtv-debug-run-logic-fn inalist
                                 filename moddb (lhslist-fix aliases)
                                 debugdata vcd-wiremap vcd-vals state)
        (svtv-debug-run-logic-fn inalist filename moddb aliases
                                 debugdata vcd-wiremap vcd-vals state)))

    Theorem: svtv-debug-run-logic-fn-lhslist-equiv-congruence-on-aliases

    (defthm svtv-debug-run-logic-fn-lhslist-equiv-congruence-on-aliases
     (implies
      (lhslist-equiv aliases aliases-equiv)
      (equal
        (svtv-debug-run-logic-fn inalist filename moddb aliases
                                 debugdata vcd-wiremap vcd-vals state)
        (svtv-debug-run-logic-fn inalist filename moddb aliases-equiv
                                 debugdata vcd-wiremap vcd-vals state)))
     :rule-classes :congruence)