• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
    • Debugging
    • Projects
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
        • Warnings
        • Primitives
        • Use-set
        • Syntax
        • Getting-started
        • Utilities
        • Loader
        • Transforms
        • Lint
        • Mlib
        • Server
        • Kit
        • Printer
        • Esim-vl
        • Well-formedness
          • Defwellformed
          • Reasonable
            • Vl-modulelist-check-reasonable
            • Vl-vardecl-reasonable-p
            • Vl-portdecl-and-moduleitem-compatible-p
            • Vl-module-reasonable-p
            • Vl-overlap-compatible-p
            • Vl-portlist-reasonable-p
            • Vl-module-check-reasonable
            • Vl-vardecllist-reasonable-p
            • Vl-modulelist-reasonable-p
          • Lvaluecheck
      • Sv
      • Fgl
      • Vl
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Testing-utilities
    • Math
  • Well-formedness

Reasonable

Identify modules in our supported subset of Verilog.

We say a module is reasonable if it

  1. is semantically well-formed, and
  2. does not contain unsupported constructs.

Even though our parser essentially establishes that the files we have just read are syntactically well-formed, this does not necessarily mean the files are semantically well-formed. For instance, a module might illegally declare the same wire twice, or perhaps we have tried to declare two modules with the same name. So, our reasonableness check is important for ensuring the basic semantic correctness of the modules we are examining.

We also regard many perfectly valid Verilog constructs as unreasonable, for the simple pragmatic reason that we are only really interested in dealing with the small subset of Verilog that we actually encounter at Centaur. There is little motivation for us to support things like complicated port lists merely because they are in the Verilog-2005 standard.

Subtopics

Vl-modulelist-check-reasonable
(vl-modulelist-check-reasonable x) maps vl-module-check-reasonable across a list.
Vl-vardecl-reasonable-p
(vl-vardecl-reasonable-p x) determines if a vl-vardecl-p is reasonable.
Vl-portdecl-and-moduleitem-compatible-p
Main function for checking whether a port declaration, which overlaps with some module item declaration, is a reasonable overlap.
Vl-module-reasonable-p
Vl-overlap-compatible-p
Vl-portlist-reasonable-p
(vl-portlist-reasonable-p x) determines if a vl-portlist-p is reasonable.
Vl-module-check-reasonable
Annotate a module with any warnings concerning whether it is reasonable. Furthermore, if x is unreasonable, a fatal warning to it.
Vl-vardecllist-reasonable-p
Vl-modulelist-reasonable-p