• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
        • Symbolic-test-vectors
        • Esim-primitives
        • E-conversion
          • Vl-ealist-p
          • Modinsts-to-eoccs
          • Vl-module-make-esim
          • Exploding-vectors
          • Resolving-multiple-drivers
          • Vl-modulelist-make-esims
          • Vl-module-check-e-ok
          • Vl-collect-design-wires
          • Adding-z-drivers
            • Vl-add-zdrivers
            • Vl-make-z-occs
            • Vl-make-z-occ
          • Vl-design-to-e
          • Vl-design-to-e-check-ports
          • Vl-design-to-e-main
          • Port-bit-checking
        • Esim-steps
        • Patterns
        • Mod-internal-paths
        • Defmodules
        • Esim-simplify-update-fns
        • Esim-tutorial
        • Esim-vl
      • Vl2014
      • Sv
      • Fgl
      • Vwsim
      • Vl
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Math
    • Testing-utilities
  • E-conversion

Adding-z-drivers

How we ensure every wire is driven.

The good-esim-modulep well-formedness check requires that every wire of a module is driven by some occurrence (or is an input). But in Verilog there is no such requirement, e.g., one can legally write a module like this:

module does_nothing(out, a, b);
  output out;
  input a;
  input b;
  wire internal;
endmodule

Where there aren't any drivers on out or internal.

To correct for this, in our e-conversion we look for any output bits and also any internal wires that are used as inputs to a submodule but are never driven by the preliminary occurrences produced by modinsts-to-eoccs. For any such bit, we add an explicit ACL2::*esim-z* module to drive it.

Subtopics

Vl-add-zdrivers
Top-level function for adding drivers for undriven outputs.
Vl-make-z-occs
Generate instances of ACL2::*esim-z* to drive undriven output bits.
Vl-make-z-occ
Generate an instance of ACL2::*esim-z* to drive an otherwise-undriven output bit.