Quartus® Prime Pro Edition User Guide: Third-party Simulation
ID
683870
Date
3/31/2025
Public
Answers to Top FAQs
1. FPGA Simulation Basics
2. Siemens EDA QuestaSim* Simulator Support
3. Synopsys VCS* Support
4. Aldec Active-HDL and Riviera-PRO Support
5. Cadence Xcelium* Parallel Simulator Support
6. Quartus® Prime Pro Edition User Guide Third-party Simulation Archive
A. Quartus® Prime Pro Edition User Guides
1.1. FPGA Simulation Essential Elements
1.2. Overview of Simulation Tool Flow
1.3. Simulation Tool Flow
1.4. Supported Simulation Flows
1.5. Supported Hardware Description Languages
1.6. Supported Simulation Types
1.7. Supported Simulators
1.8. Post-Fit Simulation Support by FPGA Family
1.9. Automating Simulation with the Run Simulation Feature
1.10. Using Precompiled Simulation Libraries
1.11. FPGA Simulation Basics Revision History
1.9.3.1. Specifying Required Simulation Settings for Run Simulation (Batch Mode)
1.9.3.2. Optional Simulation Settings for Run Simulation (Batch Mode)
1.9.3.3. Launching Simulation with the Run Simulation Feature
1.9.3.4. Running RTL Simulation using Run Simulation
1.9.3.5. Output Directories and Files for Run Simulation
1.3.4.1. Elaboration Binding Phase
Elaboration works in a top-down manner to bind module instances in the following order:
- 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.
- Elaboration reads the module definition, and identifies all the module instances in the top-level testbench module.
- 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.
- 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.
- 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.
- 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.