• 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
          • Oprewrite
          • Expand-functions
          • Delayredux
            • Vl-gatearg-delayredux
            • Vl-assign-delayredux
            • Vl-gatearglist-delayredux
            • Vl-gateinst-delayredux
            • Vl-module-delayredux
            • Vl-simpledelay-p
              • Vl-simpledelay->amount
            • Vl-modulelist-delayredux-aux
            • Vl-gateinstlist-delayredux
            • Vl-assignlist-delayredux
            • Vl-modulelist-delayredux
            • Vl-gateargs-ok-for-delayredux-p
            • Vl-first-bad-gatearg-for-delayredux
            • Vl-design-delayredux
            • Vl-why-is-gatearg-bad-for-delayredux
            • Vl-gatearg-ok-for-delayredux-p
          • 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
  • Delayredux
  • Vl-gatedelay-p

Vl-simpledelay-p

Recognize simple delays like #5.

Signature
(vl-simpledelay-p x) → *
Arguments
x — Guard (vl-gatedelay-p x).

Verilog lets you give much richer delay specifications, e.g., you can specify separate delays for transitions to 1, 0, and Z, and you can even provide different minimum, typical, and maximum delays for each kind of transition. See vl-gatedelay-p.

These complex delays are generally too complicated for us to handle. Instead, we just try to support simple delays for some fixed number of ticks.

Definitions and Theorems

Function: vl-simpledelay-p

(defun vl-simpledelay-p (x)
  (declare (xargs :guard (vl-gatedelay-p x)))
  (let ((__function__ 'vl-simpledelay-p))
    (declare (ignorable __function__))
    (b* (((vl-gatedelay x) x))
      (and (vl-expr-resolved-p x.rise)
           (vl-expr-resolved-p x.fall)
           (eql (vl-resolved->val x.rise)
                (vl-resolved->val x.fall))
           (or (not x.high)
               (and (vl-expr-resolved-p x.high)
                    (eql (vl-resolved->val x.rise)
                         (vl-resolved->val x.high))))))))

Subtopics

Vl-simpledelay->amount
Get the number of ticks for a simple delay.