• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
        • Warnings
        • Primitives
        • Use-set
        • Syntax
        • Getting-started
        • Utilities
        • Loader
        • Transforms
        • Lint
          • Vl-lintconfig-p
          • Lucid
            • Vl-lucidstate
            • Vl-lucidstate-init
            • Vl-lucid-dissect-pair
            • Vl-hidslice-mark
            • Vl-lucid-dissect-var-main
            • Vl-lucid-multidrive-detect
            • Vl-lucid-filter-merges
            • Vl-hidsolo-mark
            • Vl-maybe-delayoreventcontrol-lucidcheck
            • Vl-maybe-packeddimension-lucidcheck
            • Vl-delayoreventcontrol-lucidcheck
            • Vl-repeateventcontrol-lucidcheck
            • Vl-packeddimensionlist-lucidcheck
            • Vl-namedparamvaluelist-lucidcheck
            • Vl-hidtrace-mark-interfaces
            • Vl-hidstep-mark-interfaces
            • Vl-maybe-paramvalue-lucidcheck
            • Vl-paramvaluelist-lucidcheck
            • Vl-packeddimension-lucidcheck
            • Vl-namedparamvalue-lucidcheck
            • Vl-maybe-gatedelay-lucidcheck
            • Vl-rhsatom-lucidcheck
            • Vl-plainarglist-lucidcheck
            • Vl-namedarglist-lucidcheck
            • Vl-lucidstate-mark
            • Vl-lucid-mark-simple
            • Vl-eventcontrol-lucidcheck
            • Vl-enumitemlist-lucidcheck
            • Vl-enumbasetype-lucidcheck
            • Vl-enumbasekind-lucidcheck
            • Vl-delaycontrol-lucidcheck
            • Vl-plainarg-lucidcheck
            • Vl-paramvalue-lucidcheck
            • Vl-paramargs-lucidcheck
            • Vl-maybe-rhsexpr-lucidcheck
            • Vl-maybe-range-lucidcheck
            • Vl-gatedelay-lucidcheck
            • Vl-evatomlist-lucidcheck
            • Vl-arguments-lucidcheck
            • Vl-rangelist-lucidcheck
            • Vl-namedarg-lucidcheck
            • Vl-enumitem-lucidcheck
            • Vl-custom-suppress-multidrive-p
              • Vl-evatom-lucidcheck
              • Vl-range-lucidcheck
              • Vl-pps-lucidstate
              • Vl-lucid-valid-bits-for-datatype
              • Vl-lucidocclist-drop-bad-modinsts
              • Vl-paramdecl-lucidcheck
              • Vl-lucid-dissect-database
              • Vl-interfaceportlist-lucidcheck
              • Vl-interfaceport-lucidcheck
              • Vl-taskdecllist-lucidcheck
              • Vl-taskdecl-lucidcheck
              • Vl-portdecllist-lucidcheck
              • Vl-paramdecllist-lucidcheck
              • Vl-interfacelist-lucidcheck
              • Vl-gateinstlist-lucidcheck
              • Vl-fundecl-lucidcheck
              • Vl-design-lucidcheck-main
              • Vl-vardecllist-lucidcheck
              • Vl-vardecl-lucidcheck
              • Vl-typedeflist-lucidcheck
              • Vl-portdecl-lucidcheck
              • Vl-packagelist-lucidcheck
              • Vl-package-lucidcheck
              • Vl-modulelist-lucidcheck
              • Vl-modinstlist-lucidcheck
              • Vl-modinst-lucidcheck
              • Vl-interface-lucidcheck
              • Vl-initiallist-lucidcheck
              • Vl-gateinst-lucidcheck
              • Vl-fundecllist-lucidcheck
              • Vl-assignlist-lucidcheck
              • Vl-alwayslist-lucidcheck
              • Vl-typedef-lucidcheck
              • Vl-initial-lucidcheck
              • Vl-design-lucid
              • Vl-assign-lucidcheck
              • Vl-module-lucidcheck
              • Vl-always-lucidcheck
              • Vl-lucidocclist-drop-foreign-writes
              • Vl-lucid-valid-bits-for-decl
              • Vl-custom-suppress-multidrive-p-default
              • Vl-lucidmergealist-count
              • Vl-lucid-scopestack-subscope-p
              • Vl-lucid-collect-solo-occs
              • Vl-lucid-collect-resolved-slices
              • Vl-lucid-pp-multibits
              • Vl-lucid-ctx
              • Vl-lucidocclist-drop-initials
              • Vl-lucidocclist-drop-generates
              • Vl-lucid-slices-append-bits
              • Vl-lucid-first-solo-occ
              • Vl-lucid-do-merges1
              • Vl-lucid-do-merges
              • Vl-lucidocclist-remove-tails
              • Vl-lucid-some-solo-occp
              • Vl-lucid-resolved-slices->bits
              • Vl-lucid-resolved-slice->bits
              • Vl-scopestack-top-level-name
              • Vl-normalize-scopestack
              • Vl-lucid-resolved-slice-p
              • Vl-lucid-all-slices-resolved-p
              • Vl-lucid-range->bits
              • Vl-lucid-plainarglist-nicely-resolved-p
              • Vl-lucid-multidrive-summary
              • Vl-pp-lucid-multidrive-summary
              • Vl-lucid-dissect
              • Vl-lucid-all-slices-p
              • Vl-lucidocclist-some-transistory-p
              • Vl-lucidocc-transistory-p
              • Vl-lucid-plainarg-nicely-resolved-p
              • Vl-inside-true-generate-p
              • Vl-lucid-z-gateinst-p
              • Vl-lucid-modinst-nicely-resolved-p
              • Vl-inside-interface-p
              • Vl-inside-blockscope-p
              • Vl-lucid-z-expr-p
              • Vl-lucid-z-assign-p
              • Vl-lucidmergealist
              • Vl-lucid-summarize-bits
              • Vl-pp-merged-index-list
              • Vl-pp-merged-index
              • Vl-lucid-pp-bits
              • Vl-fast-range-p
            • Skip-detection
            • Vl-lintresult-p
            • Lint-warning-suppression
            • Condcheck
            • Selfassigns
            • Leftright-check
            • Dupeinst-check
            • Oddexpr-check
            • Remove-toohard
            • Qmarksize-check
            • Portcheck
            • Duplicate-detect
            • Vl-print-certain-warnings
            • Duperhs-check
            • *vl-lint-help*
            • Lint-stmt-rewrite
            • Drop-missing-submodules
            • Check-case
            • Drop-user-submodules
            • Check-namespace
            • Vl-lint
          • Mlib
          • Server
          • Kit
          • Printer
          • Esim-vl
          • Well-formedness
        • Sv
        • Fgl
        • Vwsim
        • Vl
        • X86isa
        • Svl
        • Rtl
      • Software-verification
      • Math
      • Testing-utilities
    • Lucid

    Vl-custom-suppress-multidrive-p

    Mechanism for custom suppression of multidrive warnings.

    We use this at Centaur to suppress multidrive warnings within certain modules that we know are not RTL designs.

    This is an attachable function that should return t when you want to suppress warnings. It can inspect:

    • ss - the scopestack for the declaration.
    • item - the variable or parameter declaration itself.
    • set - the list of places where the variable was set.

    This suppression is done in addition to the default heuristics. That is, your function can focus just on the additional rules you want to add, and doesn't have to recreate the default heuristics.

    Definitions and Theorems

    Theorem: booleanp-of-vl-custom-suppress-multidrive-p

    (defthm booleanp-of-vl-custom-suppress-multidrive-p
      (booleanp (vl-custom-suppress-multidrive-p ss item set))
      :rule-classes :type-prescription)

    Function: vl-custom-suppress-multidrive-p-default

    (defun vl-custom-suppress-multidrive-p-default (ss item set)
      (declare (xargs :guard (and (vl-scopestack-p ss)
                                  (or (vl-paramdecl-p item)
                                      (vl-vardecl-p item))
                                  (vl-lucidocclist-p set))))
      (declare (ignorable ss item set))
      (let ((__function__ 'vl-custom-suppress-multidrive-p-default))
        (declare (ignorable __function__))
        nil))

    Theorem: vl-custom-suppress-multidrive-p-default-of-vl-scopestack-fix-ss

    (defthm
        vl-custom-suppress-multidrive-p-default-of-vl-scopestack-fix-ss
     (equal
         (vl-custom-suppress-multidrive-p-default (vl-scopestack-fix ss)
                                                  item set)
         (vl-custom-suppress-multidrive-p-default ss item set)))

    Theorem: vl-custom-suppress-multidrive-p-default-vl-scopestack-equiv-congruence-on-ss

    (defthm
     vl-custom-suppress-multidrive-p-default-vl-scopestack-equiv-congruence-on-ss
     (implies
      (vl-scopestack-equiv ss ss-equiv)
      (equal
           (vl-custom-suppress-multidrive-p-default ss item set)
           (vl-custom-suppress-multidrive-p-default ss-equiv item set)))
     :rule-classes :congruence)

    Theorem: vl-custom-suppress-multidrive-p-default-of-vl-lucidocclist-fix-set

    (defthm
     vl-custom-suppress-multidrive-p-default-of-vl-lucidocclist-fix-set
     (equal (vl-custom-suppress-multidrive-p-default
                 ss item (vl-lucidocclist-fix set))
            (vl-custom-suppress-multidrive-p-default ss item set)))

    Theorem: vl-custom-suppress-multidrive-p-default-vl-lucidocclist-equiv-congruence-on-set

    (defthm
     vl-custom-suppress-multidrive-p-default-vl-lucidocclist-equiv-congruence-on-set
     (implies
      (vl-lucidocclist-equiv set set-equiv)
      (equal
           (vl-custom-suppress-multidrive-p-default ss item set)
           (vl-custom-suppress-multidrive-p-default ss item set-equiv)))
     :rule-classes :congruence)