2.1. FPGA Simulation Essential Elements
2.2. Overview of Simulation Tool Flow
2.3. Simulation Tool Flow
2.4. Supported Hardware Description Languages
2.5. Supported Simulation Types
2.6. Supported Simulators
2.7. Automating Simulation with the Run Simulation Feature
2.8. Using Precompiled Simulation Libraries
2.7.3.1. Specifying Required Simulation Settings for Run Simulation (Batch Mode)
2.7.3.2. Optional Simulation Settings for Run Simulation (Batch Mode)
2.7.3.3. Launching Simulation with the Run Simulation Feature
2.7.3.4. Running RTL Simulation using Run Simulation
2.7.3.5. Output Directories and Files for Run Simulation
3.1. Types of Questa*-Intel® FPGA Edition Commands
3.2. Commands to Invoke Questa*-Intel® FPGA Edition
3.3. Commands to Compile, Elaborate, and Simulate
3.4. Why You Should Only Use Precompiled Questa Intel FPGA Edition Libraries
3.5. Generating a msim_setup.tcl Simulation Script for RTL Simulation
3.6. Using the Qrun Flow
3.7. Performing RTL Simulation with Questa*-Intel® FPGA Edition
3.8. Performing Gate-Level Simulation with Questa*-Intel® FPGA Edition
3.3.1.1. Compilation Example 1: Compile File foo.sv into a Logical Library
3.3.1.2. Compilation Example 2: Compile File design1.sv to Default Library (work)
3.3.1.3. Compilation Example 3: Compile All .sv Files into Logical Library foo
3.3.1.4. Compilation Example 4: Compile File foo.sv into Work with Verilog Macro FAST Set to 1
3.3.1.5. Compilation Example 5: File my_pkg.sv Defines SystemVerilog Package my_pkg and File foo.sv Imports my_pkg
3.3.1.6. Compilation Example 6: File my_pkg.sv Defines Systemverilog Package my_pkg and File foo.sv Imports my_pkg
3.3.4.1. Simulation Example 1: Run Simulation Until the End, while Capturing Waveforms of All Top-Level Signals in the Testbench
3.3.4.2. Simulation Example 2: Run Simulation for 30 Milliseconds, while Capturing Waveforms of All Top-Level Signals in the Hierarchy
3.3.4.3. Simulation Example 3: Run Simulation Until the End, while Capturing Waveforms of Top-Level Design Instance
3.8.1. Post-Synthesis and Post-Fit Netlists for Simulation
3.8.2. Files Required for Gate-Level Simulation
3.8.3. Step 1: Generate Gate-Level Netlists for Simulation
3.8.4. Step 2: Identify Simulation Files and Compilation Options for Gate-Level Simulation
3.8.5. Step 3: Determine Elaboration Options for Gate-Level Simulation
3.8.6. Step 4: Assemble and Run the Gate-Level Simulation Script
2.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.