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

    Signature
    (svtv-debug-fsm-writephases cycle nphases-per-cycle inalists 
                                ins ovlines prev-st updates next-states 
                                invars aliases vcd-wiremap vcd-vals p) 
     
      → 
    (mv vcd-vals1 p1)
    Arguments
    cycle — Guard (natp cycle).
    nphases-per-cycle — Guard (natp nphases-per-cycle).
    inalists — Guard (svex-envlist-p inalists).
    ins — Guard (svtv-lines-p ins).
    ovlines — Guard (svtv-overridelines-p ovlines).
    prev-st — Guard (svex-env-p prev-st).
    updates — Guard (svex-alist-p updates).
    next-states — Guard (svex-alist-p next-states).
    invars — Guard (svarlist-p invars).
    p — Guard (vl-printedlist-p p).
    Returns
    p1 — Type (vl-printedlist-p p1).

    Definitions and Theorems

    Function: svtv-debug-fsm-writephases

    (defun svtv-debug-fsm-writephases
           (cycle nphases-per-cycle inalists
                  ins ovlines prev-st updates next-states
                  invars aliases vcd-wiremap vcd-vals p)
      (declare (xargs :stobjs (aliases vcd-wiremap vcd-vals)))
      (declare (xargs :guard (and (natp cycle)
                                  (natp nphases-per-cycle)
                                  (svex-envlist-p inalists)
                                  (svtv-lines-p ins)
                                  (svtv-overridelines-p ovlines)
                                  (svex-env-p prev-st)
                                  (svex-alist-p updates)
                                  (svex-alist-p next-states)
                                  (svarlist-p invars)
                                  (vl-printedlist-p p))))
      (declare (xargs :guard (and (<= (aliass-length aliases)
                                      (vcdwires-length vcd-wiremap))
                                  (<= (vcdwires-length vcd-wiremap)
                                      (4vecs-length vcd-vals))
                                  (<= (aliass-length aliases)
                                      (4vecs-length vcd-vals)))))
      (let ((__function__ 'svtv-debug-fsm-writephases))
        (declare (ignorable __function__))
        (b* ((cycle (lnfix cycle))
             (nphases-per-cycle (lnfix nphases-per-cycle))
             (phase (* cycle nphases-per-cycle))
             ((when (atom inalists))
              (mv vcd-vals
                  (vcd-dump-delta (* 10 (lnfix phase))
                                  nil vcd-vals vcd-wiremap p)))
             (inalist (car inalists))
             ((with-fast inalist))
             ((mv vcd-vals p next-st)
              (svtv-debug-writephases
                   0 nphases-per-cycle phase inalist
                   ins ovlines prev-st updates next-states
                   invars aliases vcd-wiremap vcd-vals p)))
          (svtv-debug-fsm-writephases (1+ cycle)
                                      nphases-per-cycle (cdr inalists)
                                      ins ovlines
                                      next-st updates next-states invars
                                      aliases vcd-wiremap vcd-vals p))))

    Theorem: vl-printedlist-p-of-svtv-debug-fsm-writephases.p1

    (defthm vl-printedlist-p-of-svtv-debug-fsm-writephases.p1
      (b* (((mv ?vcd-vals1 ?p1)
            (svtv-debug-fsm-writephases
                 cycle nphases-per-cycle inalists
                 ins ovlines prev-st updates next-states
                 invars aliases vcd-wiremap vcd-vals p)))
        (vl-printedlist-p p1))
      :rule-classes :rewrite)

    Theorem: svtv-debug-fsm-writephases-of-nfix-cycle

    (defthm svtv-debug-fsm-writephases-of-nfix-cycle
      (equal (svtv-debug-fsm-writephases
                  (nfix cycle)
                  nphases-per-cycle inalists
                  ins ovlines prev-st updates next-states
                  invars aliases vcd-wiremap vcd-vals p)
             (svtv-debug-fsm-writephases
                  cycle nphases-per-cycle inalists
                  ins ovlines prev-st updates next-states
                  invars aliases vcd-wiremap vcd-vals p)))

    Theorem: svtv-debug-fsm-writephases-nat-equiv-congruence-on-cycle

    (defthm svtv-debug-fsm-writephases-nat-equiv-congruence-on-cycle
      (implies (nat-equiv cycle cycle-equiv)
               (equal (svtv-debug-fsm-writephases
                           cycle nphases-per-cycle inalists
                           ins ovlines prev-st updates next-states
                           invars aliases vcd-wiremap vcd-vals p)
                      (svtv-debug-fsm-writephases
                           cycle-equiv nphases-per-cycle inalists
                           ins ovlines prev-st updates next-states
                           invars aliases vcd-wiremap vcd-vals p)))
      :rule-classes :congruence)

    Theorem: svtv-debug-fsm-writephases-of-nfix-nphases-per-cycle

    (defthm svtv-debug-fsm-writephases-of-nfix-nphases-per-cycle
      (equal (svtv-debug-fsm-writephases
                  cycle (nfix nphases-per-cycle)
                  inalists
                  ins ovlines prev-st updates next-states
                  invars aliases vcd-wiremap vcd-vals p)
             (svtv-debug-fsm-writephases
                  cycle nphases-per-cycle inalists
                  ins ovlines prev-st updates next-states
                  invars aliases vcd-wiremap vcd-vals p)))

    Theorem: svtv-debug-fsm-writephases-nat-equiv-congruence-on-nphases-per-cycle

    (defthm
     svtv-debug-fsm-writephases-nat-equiv-congruence-on-nphases-per-cycle
     (implies (nat-equiv nphases-per-cycle
                         nphases-per-cycle-equiv)
              (equal (svtv-debug-fsm-writephases
                          cycle nphases-per-cycle inalists
                          ins ovlines prev-st updates next-states
                          invars aliases vcd-wiremap vcd-vals p)
                     (svtv-debug-fsm-writephases
                          cycle nphases-per-cycle-equiv inalists
                          ins ovlines prev-st updates next-states
                          invars aliases vcd-wiremap vcd-vals p)))
     :rule-classes :congruence)

    Theorem: svtv-debug-fsm-writephases-of-svex-envlist-fix-inalists

    (defthm svtv-debug-fsm-writephases-of-svex-envlist-fix-inalists
      (equal (svtv-debug-fsm-writephases
                  cycle nphases-per-cycle
                  (svex-envlist-fix inalists)
                  ins ovlines prev-st updates next-states
                  invars aliases vcd-wiremap vcd-vals p)
             (svtv-debug-fsm-writephases
                  cycle nphases-per-cycle inalists
                  ins ovlines prev-st updates next-states
                  invars aliases vcd-wiremap vcd-vals p)))

    Theorem: svtv-debug-fsm-writephases-svex-envlist-equiv-congruence-on-inalists

    (defthm
     svtv-debug-fsm-writephases-svex-envlist-equiv-congruence-on-inalists
     (implies (svex-envlist-equiv inalists inalists-equiv)
              (equal (svtv-debug-fsm-writephases
                          cycle nphases-per-cycle inalists
                          ins ovlines prev-st updates next-states
                          invars aliases vcd-wiremap vcd-vals p)
                     (svtv-debug-fsm-writephases
                          cycle nphases-per-cycle inalists-equiv
                          ins ovlines prev-st updates next-states
                          invars aliases vcd-wiremap vcd-vals p)))
     :rule-classes :congruence)

    Theorem: svtv-debug-fsm-writephases-of-svtv-lines-fix-ins

    (defthm svtv-debug-fsm-writephases-of-svtv-lines-fix-ins
     (equal
      (svtv-debug-fsm-writephases cycle nphases-per-cycle
                                  inalists (svtv-lines-fix ins)
                                  ovlines prev-st updates next-states
                                  invars aliases vcd-wiremap vcd-vals p)
      (svtv-debug-fsm-writephases
           cycle nphases-per-cycle inalists
           ins ovlines prev-st updates next-states
           invars aliases vcd-wiremap vcd-vals p)))

    Theorem: svtv-debug-fsm-writephases-svtv-lines-equiv-congruence-on-ins

    (defthm
          svtv-debug-fsm-writephases-svtv-lines-equiv-congruence-on-ins
      (implies (svtv-lines-equiv ins ins-equiv)
               (equal (svtv-debug-fsm-writephases
                           cycle nphases-per-cycle inalists
                           ins ovlines prev-st updates next-states
                           invars aliases vcd-wiremap vcd-vals p)
                      (svtv-debug-fsm-writephases
                           cycle
                           nphases-per-cycle inalists ins-equiv
                           ovlines prev-st updates next-states
                           invars aliases vcd-wiremap vcd-vals p)))
      :rule-classes :congruence)

    Theorem: svtv-debug-fsm-writephases-of-svtv-overridelines-fix-ovlines

    (defthm svtv-debug-fsm-writephases-of-svtv-overridelines-fix-ovlines
     (equal
      (svtv-debug-fsm-writephases cycle nphases-per-cycle inalists
                                  ins (svtv-overridelines-fix ovlines)
                                  prev-st updates next-states
                                  invars aliases vcd-wiremap vcd-vals p)
      (svtv-debug-fsm-writephases
           cycle nphases-per-cycle inalists
           ins ovlines prev-st updates next-states
           invars aliases vcd-wiremap vcd-vals p)))

    Theorem: svtv-debug-fsm-writephases-svtv-overridelines-equiv-congruence-on-ovlines

    (defthm
     svtv-debug-fsm-writephases-svtv-overridelines-equiv-congruence-on-ovlines
     (implies (svtv-overridelines-equiv ovlines ovlines-equiv)
              (equal (svtv-debug-fsm-writephases
                          cycle nphases-per-cycle inalists
                          ins ovlines prev-st updates next-states
                          invars aliases vcd-wiremap vcd-vals p)
                     (svtv-debug-fsm-writephases
                          cycle nphases-per-cycle
                          inalists ins ovlines-equiv
                          prev-st updates next-states
                          invars aliases vcd-wiremap vcd-vals p)))
     :rule-classes :congruence)

    Theorem: svtv-debug-fsm-writephases-of-svex-env-fix-prev-st

    (defthm svtv-debug-fsm-writephases-of-svex-env-fix-prev-st
     (equal
      (svtv-debug-fsm-writephases cycle nphases-per-cycle inalists
                                  ins ovlines (svex-env-fix prev-st)
                                  updates next-states
                                  invars aliases vcd-wiremap vcd-vals p)
      (svtv-debug-fsm-writephases
           cycle nphases-per-cycle inalists
           ins ovlines prev-st updates next-states
           invars aliases vcd-wiremap vcd-vals p)))

    Theorem: svtv-debug-fsm-writephases-svex-env-equiv-congruence-on-prev-st

    (defthm
        svtv-debug-fsm-writephases-svex-env-equiv-congruence-on-prev-st
      (implies (svex-env-equiv prev-st prev-st-equiv)
               (equal (svtv-debug-fsm-writephases
                           cycle nphases-per-cycle inalists
                           ins ovlines prev-st updates next-states
                           invars aliases vcd-wiremap vcd-vals p)
                      (svtv-debug-fsm-writephases
                           cycle
                           nphases-per-cycle inalists ins ovlines
                           prev-st-equiv updates next-states
                           invars aliases vcd-wiremap vcd-vals p)))
      :rule-classes :congruence)

    Theorem: svtv-debug-fsm-writephases-of-svex-alist-fix-updates

    (defthm svtv-debug-fsm-writephases-of-svex-alist-fix-updates
      (equal (svtv-debug-fsm-writephases
                  cycle nphases-per-cycle inalists ins
                  ovlines prev-st (svex-alist-fix updates)
                  next-states
                  invars aliases vcd-wiremap vcd-vals p)
             (svtv-debug-fsm-writephases
                  cycle nphases-per-cycle inalists
                  ins ovlines prev-st updates next-states
                  invars aliases vcd-wiremap vcd-vals p)))

    Theorem: svtv-debug-fsm-writephases-svex-alist-equiv-congruence-on-updates

    (defthm
      svtv-debug-fsm-writephases-svex-alist-equiv-congruence-on-updates
      (implies (svex-alist-equiv updates updates-equiv)
               (equal (svtv-debug-fsm-writephases
                           cycle nphases-per-cycle inalists
                           ins ovlines prev-st updates next-states
                           invars aliases vcd-wiremap vcd-vals p)
                      (svtv-debug-fsm-writephases
                           cycle
                           nphases-per-cycle inalists ins ovlines
                           prev-st updates-equiv next-states
                           invars aliases vcd-wiremap vcd-vals p)))
      :rule-classes :congruence)

    Theorem: svtv-debug-fsm-writephases-of-svex-alist-fix-next-states

    (defthm svtv-debug-fsm-writephases-of-svex-alist-fix-next-states
     (equal
      (svtv-debug-fsm-writephases cycle nphases-per-cycle
                                  inalists ins ovlines prev-st
                                  updates (svex-alist-fix next-states)
                                  invars aliases vcd-wiremap vcd-vals p)
      (svtv-debug-fsm-writephases
           cycle nphases-per-cycle inalists
           ins ovlines prev-st updates next-states
           invars aliases vcd-wiremap vcd-vals p)))

    Theorem: svtv-debug-fsm-writephases-svex-alist-equiv-congruence-on-next-states

    (defthm
     svtv-debug-fsm-writephases-svex-alist-equiv-congruence-on-next-states
     (implies (svex-alist-equiv next-states next-states-equiv)
              (equal (svtv-debug-fsm-writephases
                          cycle nphases-per-cycle inalists
                          ins ovlines prev-st updates next-states
                          invars aliases vcd-wiremap vcd-vals p)
                     (svtv-debug-fsm-writephases
                          cycle
                          nphases-per-cycle inalists ins ovlines
                          prev-st updates next-states-equiv
                          invars aliases vcd-wiremap vcd-vals p)))
     :rule-classes :congruence)

    Theorem: svtv-debug-fsm-writephases-of-svarlist-fix-invars

    (defthm svtv-debug-fsm-writephases-of-svarlist-fix-invars
     (equal
        (svtv-debug-fsm-writephases cycle nphases-per-cycle
                                    inalists ins ovlines prev-st updates
                                    next-states (svarlist-fix invars)
                                    aliases vcd-wiremap vcd-vals p)
        (svtv-debug-fsm-writephases
             cycle nphases-per-cycle inalists
             ins ovlines prev-st updates next-states
             invars aliases vcd-wiremap vcd-vals p)))

    Theorem: svtv-debug-fsm-writephases-svarlist-equiv-congruence-on-invars

    (defthm
         svtv-debug-fsm-writephases-svarlist-equiv-congruence-on-invars
      (implies (svarlist-equiv invars invars-equiv)
               (equal (svtv-debug-fsm-writephases
                           cycle nphases-per-cycle inalists
                           ins ovlines prev-st updates next-states
                           invars aliases vcd-wiremap vcd-vals p)
                      (svtv-debug-fsm-writephases
                           cycle
                           nphases-per-cycle inalists ins ovlines
                           prev-st updates next-states invars-equiv
                           aliases vcd-wiremap vcd-vals p)))
      :rule-classes :congruence)

    Theorem: svtv-debug-fsm-writephases-of-lhslist-fix-aliases

    (defthm svtv-debug-fsm-writephases-of-lhslist-fix-aliases
      (equal (svtv-debug-fsm-writephases
                  cycle nphases-per-cycle
                  inalists ins ovlines prev-st updates
                  next-states invars (lhslist-fix aliases)
                  vcd-wiremap vcd-vals p)
             (svtv-debug-fsm-writephases
                  cycle nphases-per-cycle inalists
                  ins ovlines prev-st updates next-states
                  invars aliases vcd-wiremap vcd-vals p)))

    Theorem: svtv-debug-fsm-writephases-lhslist-equiv-congruence-on-aliases

    (defthm
         svtv-debug-fsm-writephases-lhslist-equiv-congruence-on-aliases
      (implies (lhslist-equiv aliases aliases-equiv)
               (equal (svtv-debug-fsm-writephases
                           cycle nphases-per-cycle inalists
                           ins ovlines prev-st updates next-states
                           invars aliases vcd-wiremap vcd-vals p)
                      (svtv-debug-fsm-writephases
                           cycle
                           nphases-per-cycle inalists ins ovlines
                           prev-st updates next-states invars
                           aliases-equiv vcd-wiremap vcd-vals p)))
      :rule-classes :congruence)