• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
        • Warnings
        • Primitives
        • Use-set
        • Syntax
        • Getting-started
        • Utilities
        • Loader
        • Transforms
          • Expression-sizing
          • Occform
            • Vl-mux-occform
            • Vl-basic-binary-op-occform
            • Vl-occform-mkports
            • Vl-unary-reduction-op-occform
            • Vl-make-n-bit-mux
            • Vl-bitselect-occform
            • Vl-assign-occform
            • Vl-plusminus-occform
            • Vl-shift-occform
            • Vl-gte-occform
            • Vl-plain-occform
            • Vl-unary-not-occform
            • Vl-rem-occform
            • Vl-div-occform
            • Vl-ceq-occform
            • Vl-mult-occform
            • Vl-make-n-bit-dynamic-bitselect-m
            • Vl-simple-instantiate
              • Vl-simple-instantiate-list
              • Vl-simple-instantiate-args-main
                • Vl-simple-inst
              • Vl-occform-mkwires
              • Vl-assignlist-occform
              • Vl-occform-argfix
              • Vl-make-n-bit-unsigned-gte
              • Vl-make-2^n-bit-dynamic-bitselect
              • Vl-make-n-bit-div-rem
              • Vl-make-n-bit-plusminus
              • Vl-make-n-bit-signed-gte
              • Vl-make-n-bit-shr-by-m-bits
              • Vl-make-n-bit-shl-by-m-bits
              • Vl-occform-mkport
              • Vl-make-n-bit-dynamic-bitselect
              • Vl-make-n-bit-reduction-op
              • Vl-make-n-bit-adder-core
              • Vl-make-n-bit-xdetect
              • Vl-make-n-bit-x-propagator
              • Vl-make-n-bit-shl-place-p
              • Vl-make-n-bit-shr-place-p
              • Vl-make-n-bit-mult
              • Vl-occform-mkwire
              • Vl-make-nedgeflop-vec
              • Vl-make-n-bit-binary-op
              • Vl-make-list-of-netdecls
              • Vl-make-n-bit-delay-1
              • Vl-make-n-bit-zmux
              • *vl-2-bit-dynamic-bitselect*
              • Vl-make-n-bit-unsigned-rem
              • Vl-make-n-bit-unsigned-div
              • Vl-make-n-bit-shr-place-ps
              • Vl-make-n-bit-shl-place-ps
              • Vl-make-n-bit-assign
              • Vl-make-n-bit-x
              • Vl-make-n-bit-ceq
              • Vl-make-n-bit-xor-each
              • Vl-make-n-bit-not
              • Vl-make-1-bit-delay-m
              • Vl-make-n-bit-delay-m
              • *vl-1-bit-signed-gte*
              • *vl-1-bit-div-rem*
              • *vl-1-bit-adder-core*
              • Vl-make-nedgeflop
              • *vl-1-bit-mult*
              • *vl-1-bit-dynamic-bitselect*
            • Oprewrite
            • Expand-functions
            • Delayredux
            • Unparameterization
            • Caseelim
            • Split
            • Selresolve
            • Weirdint-elim
            • Vl-delta
            • Replicate-insts
            • Rangeresolve
            • Propagate
            • Clean-selects
            • Clean-params
            • Blankargs
            • Inline-mods
            • Expr-simp
            • Trunc
            • Always-top
            • Gatesplit
            • Gate-elim
            • Expression-optimization
            • Elim-supplies
            • Wildelim
            • Drop-blankports
            • Clean-warnings
            • Addinstnames
            • Custom-transform-hooks
            • Annotate
            • Latchcode
            • Elim-unused-vars
            • Problem-modules
          • Lint
          • Mlib
          • Server
          • Kit
          • Printer
          • Esim-vl
          • Well-formedness
        • Sv
        • Fgl
        • Vwsim
        • Vl
        • X86isa
        • Svl
        • Rtl
      • Software-verification
      • Math
      • Testing-utilities
    • Vl-simple-instantiate

    Vl-simple-instantiate-args-main

    Create plainargs binding some actuals to their ports, filling in the portnames and directions.

    Signature
    (vl-simple-instantiate-args-main actuals ports portdecls) 
      → 
    args
    Arguments
    actuals — Guard (vl-exprlist-p actuals).
    ports — Guard (vl-regularportlist-p ports).
    portdecls — for figuring out directions.
        Guard (vl-portdecllist-p portdecls).
    Returns
    args — Type (vl-plainarglist-p args).

    Definitions and Theorems

    Function: vl-simple-instantiate-args-main

    (defun vl-simple-instantiate-args-main (actuals ports portdecls)
      (declare (xargs :guard (and (vl-exprlist-p actuals)
                                  (vl-regularportlist-p ports)
                                  (vl-portdecllist-p portdecls))))
      (declare (xargs :guard (same-lengthp actuals ports)))
      (let ((__function__ 'vl-simple-instantiate-args-main))
        (declare (ignorable __function__))
        (b* (((when (atom actuals)) nil)
             ((vl-regularport port) (car ports))
             ((unless (and port.name
                           port.expr (vl-idexpr-p port.expr)
                           (equal (vl-idexpr->name port.expr)
                                  port.name)))
              (raise "Port too complicated: ~x0.~%"
                     (car ports)))
             (decl (vl-find-portdecl port.name portdecls))
             ((unless decl)
              (raise "Port is not declared: ~x0.~%"
                     port.name))
             (actual (vl-expr-fix (car actuals)))
             (dir (vl-portdecl->dir decl))
             (arg (make-vl-plainarg :expr actual
                                    :dir dir
                                    :portname port.name)))
          (cons arg
                (vl-simple-instantiate-args-main (cdr actuals)
                                                 (cdr ports)
                                                 portdecls)))))

    Theorem: vl-plainarglist-p-of-vl-simple-instantiate-args-main

    (defthm vl-plainarglist-p-of-vl-simple-instantiate-args-main
     (b*
      ((args (vl-simple-instantiate-args-main actuals ports portdecls)))
      (vl-plainarglist-p args))
     :rule-classes :rewrite)

    Theorem: vl-simple-instantiate-args-main-of-vl-exprlist-fix-actuals

    (defthm vl-simple-instantiate-args-main-of-vl-exprlist-fix-actuals
      (equal (vl-simple-instantiate-args-main (vl-exprlist-fix actuals)
                                              ports portdecls)
             (vl-simple-instantiate-args-main actuals ports portdecls)))

    Theorem: vl-simple-instantiate-args-main-vl-exprlist-equiv-congruence-on-actuals

    (defthm
     vl-simple-instantiate-args-main-vl-exprlist-equiv-congruence-on-actuals
     (implies
      (vl-exprlist-equiv actuals actuals-equiv)
      (equal
       (vl-simple-instantiate-args-main actuals ports portdecls)
       (vl-simple-instantiate-args-main actuals-equiv ports portdecls)))
     :rule-classes :congruence)

    Theorem: vl-simple-instantiate-args-main-of-vl-regularportlist-fix-ports

    (defthm
        vl-simple-instantiate-args-main-of-vl-regularportlist-fix-ports
      (equal (vl-simple-instantiate-args-main
                  actuals (vl-regularportlist-fix ports)
                  portdecls)
             (vl-simple-instantiate-args-main actuals ports portdecls)))

    Theorem: vl-simple-instantiate-args-main-vl-regularportlist-equiv-congruence-on-ports

    (defthm
     vl-simple-instantiate-args-main-vl-regularportlist-equiv-congruence-on-ports
     (implies
      (vl-regularportlist-equiv ports ports-equiv)
      (equal
       (vl-simple-instantiate-args-main actuals ports portdecls)
       (vl-simple-instantiate-args-main actuals ports-equiv portdecls)))
     :rule-classes :congruence)

    Theorem: vl-simple-instantiate-args-main-of-vl-portdecllist-fix-portdecls

    (defthm
       vl-simple-instantiate-args-main-of-vl-portdecllist-fix-portdecls
      (equal (vl-simple-instantiate-args-main
                  actuals
                  ports (vl-portdecllist-fix portdecls))
             (vl-simple-instantiate-args-main actuals ports portdecls)))

    Theorem: vl-simple-instantiate-args-main-vl-portdecllist-equiv-congruence-on-portdecls

    (defthm
     vl-simple-instantiate-args-main-vl-portdecllist-equiv-congruence-on-portdecls
     (implies
      (vl-portdecllist-equiv portdecls portdecls-equiv)
      (equal
       (vl-simple-instantiate-args-main actuals ports portdecls)
       (vl-simple-instantiate-args-main actuals ports portdecls-equiv)))
     :rule-classes :congruence)