Quartus® Prime Pro Edition User Guide: Third-party Synthesis
ID
683122
Date
5/23/2025
Public
1.1. About Precision RTL Synthesis Support
1.2. Precision RTL Integration Flow
1.3. Altera Device Family Support
1.4. Precision RTL Generated Files
1.5. Creating and Compiling a Project in the Precision Synthesis Software
1.6. Mapping the Design with Precision RTL
1.7. Synthesizing the Design and Evaluating the Results
1.8. Guidelines for Altera IP Cores and Architecture-Specific Features
1.9. Siemens EDA Precision* RTL Synthesis Support Revision History
1.8.1. Instantiating IP Cores With IP Catalog-Generated Verilog HDL Files
1.8.2. Instantiating IP Cores With IP Catalog-Generated VHDL Files
1.8.3. Instantiating Intellectual Property With the IP Catalog and Parameter Editor
1.8.4. Instantiating Black Box IP Functions With Generated Verilog HDL Files
1.8.5. Instantiating Black Box IP Functions With Generated VHDL Files
1.8.6. Inferring Altera IP Cores from HDL Code
2.1. About Synplify Support
2.2. Synplify Software Integration Flow
2.3. Hardware Description Language Support
2.4. Altera Device Family Support
2.5. Tool Setup
2.6. Synplify Software Generated Files
2.7. Design Constraints Support
2.8. Simulation and Formal Verification
2.9. Synplify Optimization Strategies
2.10. Guidelines for Altera IP Cores and Architecture-Specific Features
2.11. Synopsys Synplify* Support Revision History
2.12. Quartus Prime Pro Edition User Guide: Third-Party Synthesis Archives
2.10.1.1. Instantiating Altera IP Cores with IP Catalog Generated Verilog HDL Files
2.10.1.2. Instantiating Altera IP Cores with IP Catalog Generated VHDL Files
2.10.1.3. Changing Synplify’s Default Behavior for Instantiated Altera IP Cores
2.10.1.4. Instantiating Intellectual Property with the IP Catalog and Parameter Editor
2.10.1.5. Instantiating Black Box IP Cores with Generated Verilog HDL Files
2.10.1.6. Instantiating Black Box IP Cores with Generated VHDL Files
2.10.1.7. Other Synplify Software Attributes for Creating Black Boxes
2.9.4. FSM Compiler
If the FSM Compiler is turned on, the compiler automatically detects state machines in a design, which are then extracted and optimized. The FSM Compiler analyzes state machines and implements sequential, gray, or one-hot encoding, based on the number of states. The compiler also performs unused-state analysis, optimization of unreachable states, and minimization of transition logic. Implementation is based on the number of states, regardless of the coding style in the HDL code.
If the FSM Compiler is turned off, the compiler does not optimize logic as state machines. The state machines are implemented as HDL code. Thus, if the coding style for a state machine is sequential, the implementation is also sequential.
Use the syn_state_machine compiler directive to specify or prevent a state machine from being extracted and optimized. To override the default encoding of the FSM Compiler, use the syn_encoding directive.
Value | Description |
---|---|
Sequential | Generates state machines with the fewest possible flipflops. Sequential, also called binary, state machines are useful for area-critical designs when timing is not the primary concern. |
Gray | Generates state machines where only one flipflop changes during each transition. Gray-encoded state machines tend to be glitches. |
One-hot | Generates state machines containing one flipflop for each state. One-hot state machines typically provide the best performance and shortest clock-to-output delays. However, one-hot implementations are usually larger than sequential implementations. |
Safe | Generates extra control logic to force the state machine to the reset state if an invalid state is reached. You can use the safe value in conjunction with any of the other three values, which results in the state machine being implemented with the requested encoding scheme and the generation of the reset logic. |
Sample VHDL Code for Applying syn_encoding Directive
SIGNAL current_state : STD_LOGIC_VECTOR (7 DOWNTO 0); ATTRIBUTE syn_encoding : STRING; ATTRIBUTE syn_encoding OF current_state : SIGNAL IS "sequential";
By default, the state machine logic is optimized for speed and area, which may be potentially undesirable for critical systems. The safe value generates extra control logic to force the state machine to the reset state if an invalid state is reached.