• 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-set-ios-logic

    Signature
    (svtv-debug-set-ios-logic &key (ins 'nil) 
                              (outs 'nil) 
                              (internals 'nil) 
                              (overrides 'nil) 
                              (moddb 'moddb) 
                              (aliases 'aliases) 
                              (debugdata 'debugdata) 
                              (rewrite 't)) 
     
      → 
    debugdata-out
    Arguments
    ins — Guard (true-list-listp ins).
    outs — Guard (true-list-listp outs).
    internals — Guard (true-list-listp internals).
    overrides — Guard (true-list-listp overrides).

    Definitions and Theorems

    Function: svtv-debug-set-ios-logic-fn

    (defun svtv-debug-set-ios-logic-fn
           (ins outs internals overrides
                moddb aliases debugdata rewrite)
     (declare (xargs :stobjs (moddb aliases debugdata)))
     (declare (xargs :guard (and (true-list-listp ins)
                                 (true-list-listp outs)
                                 (true-list-listp internals)
                                 (true-list-listp overrides))))
     (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-set-ios-logic))
      (declare (ignorable __function__))
      (b*
       (((debugdata debugdata))
        ((when (eq debugdata.status :empty))
         (raise
          "Error: Need to do SVTV-DEBUG-INIT before SVTV-DEBUG-SET-IOS~%")
         debugdata)
        (outs (append outs internals))
        ((mv err ins)
         (svtv-wires->lhses ins debugdata.modidx moddb aliases))
        ((when err)
         (raise "Error resolving inputs: ~@0" err)
         debugdata)
        ((mv err overrides)
         (svtv-wires->lhses overrides
                            debugdata.modidx moddb aliases))
        ((when err)
         (raise "Error resolving overrides: ~@0" err)
         debugdata)
        ((mv err outs)
         (svtv-wires->lhses outs debugdata.modidx moddb aliases))
        ((when err)
         (raise "Error resolving outputs: ~@0" err)
         debugdata)
        (nphases (max (svtv-max-length ins)
                      (max (svtv-max-length overrides)
                           (svtv-max-length outs))))
        (overrides (svtv-expand-lines overrides nphases))
        ((mv updates next-states override-assigns)
         (b*
          (((when (and (eq debugdata.status :composed)
                       (equal debugdata.overrides overrides)))
            (mv debugdata.updates
                debugdata.nextstates nil))
           ((mv ?ovlines ovs)
            (svtv-lines->overrides overrides 0))
           (overridden-assigns
             (svex-apply-overrides ovs
                                   (make-fast-alist debugdata.assigns)))
           (- (fast-alist-free overridden-assigns))
           ((mv updates next-states ?constraints)
            (svex-compose-assigns/delays
                 overridden-assigns debugdata.delays nil
                 :rewrite rewrite)))
          (mv updates
              next-states overridden-assigns)))
        (debugdata (set-debugdata->updates updates debugdata))
        (debugdata (set-debugdata->nextstates next-states debugdata))
        (debugdata (set-debugdata->nphases nphases debugdata))
        (debugdata (set-debugdata->ins ins debugdata))
        (debugdata (set-debugdata->outs outs debugdata))
        (debugdata (set-debugdata->overrides overrides debugdata))
        (debugdata
           (set-debugdata->override-assigns override-assigns debugdata))
        (debugdata (set-debugdata->status :composed debugdata)))
       debugdata)))

    Theorem: svtv-debug-set-ios-modidx-unchanged

    (defthm svtv-debug-set-ios-modidx-unchanged
     (b*
      ((?debugdata-out
         (svtv-debug-set-ios-logic-fn ins outs internals overrides
                                      moddb aliases debugdata rewrite)))
      (equal (nth *debugdata->modidx* debugdata-out)
             (nth *debugdata->modidx* debugdata))))

    Theorem: svtv-debug-set-ios-logic-fn-of-true-list-list-fix-ins

    (defthm svtv-debug-set-ios-logic-fn-of-true-list-list-fix-ins
     (equal
         (svtv-debug-set-ios-logic-fn (true-list-list-fix ins)
                                      outs internals overrides
                                      moddb aliases debugdata rewrite)
         (svtv-debug-set-ios-logic-fn ins outs internals overrides
                                      moddb aliases debugdata rewrite)))

    Theorem: svtv-debug-set-ios-logic-fn-true-list-list-equiv-congruence-on-ins

    (defthm
     svtv-debug-set-ios-logic-fn-true-list-list-equiv-congruence-on-ins
     (implies
      (true-list-list-equiv ins ins-equiv)
      (equal
         (svtv-debug-set-ios-logic-fn ins outs internals overrides
                                      moddb aliases debugdata rewrite)
         (svtv-debug-set-ios-logic-fn ins-equiv outs internals overrides
                                      moddb aliases debugdata rewrite)))
     :rule-classes :congruence)

    Theorem: svtv-debug-set-ios-logic-fn-of-true-list-list-fix-outs

    (defthm svtv-debug-set-ios-logic-fn-of-true-list-list-fix-outs
     (equal
         (svtv-debug-set-ios-logic-fn ins (true-list-list-fix outs)
                                      internals overrides
                                      moddb aliases debugdata rewrite)
         (svtv-debug-set-ios-logic-fn ins outs internals overrides
                                      moddb aliases debugdata rewrite)))

    Theorem: svtv-debug-set-ios-logic-fn-true-list-list-equiv-congruence-on-outs

    (defthm
     svtv-debug-set-ios-logic-fn-true-list-list-equiv-congruence-on-outs
     (implies
      (true-list-list-equiv outs outs-equiv)
      (equal
         (svtv-debug-set-ios-logic-fn ins outs internals overrides
                                      moddb aliases debugdata rewrite)
         (svtv-debug-set-ios-logic-fn ins outs-equiv internals overrides
                                      moddb aliases debugdata rewrite)))
     :rule-classes :congruence)

    Theorem: svtv-debug-set-ios-logic-fn-of-true-list-list-fix-internals

    (defthm svtv-debug-set-ios-logic-fn-of-true-list-list-fix-internals
     (equal
         (svtv-debug-set-ios-logic-fn
              ins outs (true-list-list-fix internals)
              overrides
              moddb aliases debugdata rewrite)
         (svtv-debug-set-ios-logic-fn ins outs internals overrides
                                      moddb aliases debugdata rewrite)))

    Theorem: svtv-debug-set-ios-logic-fn-true-list-list-equiv-congruence-on-internals

    (defthm
     svtv-debug-set-ios-logic-fn-true-list-list-equiv-congruence-on-internals
     (implies
      (true-list-list-equiv internals internals-equiv)
      (equal
         (svtv-debug-set-ios-logic-fn ins outs internals overrides
                                      moddb aliases debugdata rewrite)
         (svtv-debug-set-ios-logic-fn ins outs internals-equiv overrides
                                      moddb aliases debugdata rewrite)))
     :rule-classes :congruence)

    Theorem: svtv-debug-set-ios-logic-fn-of-true-list-list-fix-overrides

    (defthm svtv-debug-set-ios-logic-fn-of-true-list-list-fix-overrides
     (equal
         (svtv-debug-set-ios-logic-fn
              ins outs
              internals (true-list-list-fix overrides)
              moddb aliases debugdata rewrite)
         (svtv-debug-set-ios-logic-fn ins outs internals overrides
                                      moddb aliases debugdata rewrite)))

    Theorem: svtv-debug-set-ios-logic-fn-true-list-list-equiv-congruence-on-overrides

    (defthm
     svtv-debug-set-ios-logic-fn-true-list-list-equiv-congruence-on-overrides
     (implies
      (true-list-list-equiv overrides overrides-equiv)
      (equal
         (svtv-debug-set-ios-logic-fn ins outs internals overrides
                                      moddb aliases debugdata rewrite)
         (svtv-debug-set-ios-logic-fn ins outs internals overrides-equiv
                                      moddb aliases debugdata rewrite)))
     :rule-classes :congruence)

    Theorem: svtv-debug-set-ios-logic-fn-of-moddb-fix-moddb

    (defthm svtv-debug-set-ios-logic-fn-of-moddb-fix-moddb
     (equal
      (svtv-debug-set-ios-logic-fn ins outs
                                   internals overrides (moddb-fix moddb)
                                   aliases debugdata rewrite)
      (svtv-debug-set-ios-logic-fn ins outs internals overrides
                                   moddb aliases debugdata rewrite)))

    Theorem: svtv-debug-set-ios-logic-fn-moddb-equiv-congruence-on-moddb

    (defthm svtv-debug-set-ios-logic-fn-moddb-equiv-congruence-on-moddb
     (implies
      (moddb-equiv moddb moddb-equiv)
      (equal
           (svtv-debug-set-ios-logic-fn ins outs internals overrides
                                        moddb aliases debugdata rewrite)
           (svtv-debug-set-ios-logic-fn
                ins outs internals overrides
                moddb-equiv aliases debugdata rewrite)))
     :rule-classes :congruence)

    Theorem: svtv-debug-set-ios-logic-fn-of-lhslist-fix-aliases

    (defthm svtv-debug-set-ios-logic-fn-of-lhslist-fix-aliases
     (equal
      (svtv-debug-set-ios-logic-fn ins outs internals
                                   overrides moddb (lhslist-fix aliases)
                                   debugdata rewrite)
      (svtv-debug-set-ios-logic-fn ins outs internals overrides
                                   moddb aliases debugdata rewrite)))

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

    (defthm
        svtv-debug-set-ios-logic-fn-lhslist-equiv-congruence-on-aliases
     (implies
      (lhslist-equiv aliases aliases-equiv)
      (equal
           (svtv-debug-set-ios-logic-fn ins outs internals overrides
                                        moddb aliases debugdata rewrite)
           (svtv-debug-set-ios-logic-fn
                ins outs internals overrides
                moddb aliases-equiv debugdata rewrite)))
     :rule-classes :congruence)