Intel® Quartus® Prime Standard Edition User Guide: Third-party Simulation

ID 683080
Date 2/05/2024
Public
Document Table of Contents

1.3.4.1. Elaboration Binding Phase

Elaboration works in a top-down manner to bind module instances in the following order:

  1. Elaboration finds the top-level testbench module definition, given the module name and the library that contains the module definition as input. Typically, you compile the top-level testbench module into the work library. For example, specifying the top-level testbench module as foo with no library name, is equivalent to specifying the top-level testbench module as work.foo.
  2. Elaboration reads the module definition, and identifies all the module instances in the top-level testbench module.
  3. Elaboration attempts to find the module definitions for all instances in the top-level testbench, one instance at a time.

    For example, for an instance inst1 of module foo in the top-level testbench module tb, elaboration attempts to find the definition of module foo by searching for foo in the first library in the ordered list of library directories. If elaboration cannot find the module definition in the first library directory, it searches in the second library directory, and so on.

    Once elaboration finds the definition of foo in a library directory, it stops searching for the definition. Therefore, if foo is defined in multiple library directories, elaboration uses only the first instance, and ignores any other instances. In this way, elaboration binds inst1 to foo.

  4. Elaboration attempts to find all of the module instances within foo, and then to find the module definitions for those instances using the same process that elaboration followed for binding foo.
  5. Elaboration recursively attempts to bind all the module instances within the foo module's hierarchy before processing other instances in the top-level testbench tb.
  6. The elaboration stage ends in one of the following ways:
    • All instances in the top-level testbench hierarchy are bound to modules, and elaboration succeeds.
    • An error is generated because elaboration cannot bind one or more instances in the top-level testbench module hierarchy to modules.