Visible to Intel only — GUID: mwh1409960071855
Ixiasoft
1.1. About Synplify Support
1.2. Design Flow
1.3. Hardware Description Language Support
1.4. Intel Device Family Support
1.5. Tool Setup
1.6. Synplify Software Generated Files
1.7. Design Constraints Support
1.8. Simulation and Formal Verification
1.9. Synplify Optimization Strategies
1.10. Guidelines for Intel FPGA IP Cores and Architecture-Specific Features
1.11. Incremental Compilation and Block-Based Design
1.12. Synopsys Synplify* Support Revision History
1.10.1.1. Instantiating Intel FPGA IP Cores with IP Catalog Generated Verilog HDL Files
1.10.1.2. Instantiating Intel FPGA IP Cores with IP Catalog Generated VHDL Files
1.10.1.3. Changing Synplify’s Default Behavior for Instantiated Intel FPGA IP Cores
1.10.1.4. Instantiating Intellectual Property with the IP Catalog and Parameter Editor
1.10.1.5. Instantiating Black Box IP Cores with Generated Verilog HDL Files
1.10.1.6. Instantiating Black Box IP Cores with Generated VHDL Files
1.10.1.7. Other Synplify Software Attributes for Creating Black Boxes
1.11.1. Design Flow for Incremental Compilation
1.11.2. Creating a Design with Separate Netlist Files for Incremental Compilation
1.11.3. Using MultiPoint Synthesis with Incremental Compilation
1.11.4. Creating Multiple .vqm Files for a Incremental Compilation Flow With Separate Synplify Projects
1.11.5. Performing Incremental Compilation in the Intel® Quartus® Prime Software
2.1. About Precision RTL Synthesis Support
2.2. Design Flow
2.3. Intel Device Family Support
2.4. Precision Synthesis Generated Files
2.5. Creating and Compiling a Project in the Precision Synthesis Software
2.6. Mapping the Precision Synthesis Design
2.7. Synthesizing the Design and Evaluating the Results
2.8. Exporting Designs to the Intel® Quartus® Prime Software Using NativeLink Integration
2.9. Guidelines for Intel FPGA IP Cores and Architecture-Specific Features
2.10. Incremental Compilation and Block-Based Design
2.11. Mentor Graphics Precision* Synthesis Support Revision History
2.8.1. Running the Intel® Quartus® Prime Software from within the Precision Synthesis Software
2.8.2. Running the Intel® Quartus® Prime Software Manually Using the Precision Synthesis‑Generated Tcl Script
2.8.3. Using the Intel® Quartus® Prime Software to Run the Precision Synthesis Software
2.8.4. Passing Constraints to the Intel® Quartus® Prime Software
2.9.1. Instantiating IP Cores With IP Catalog-Generated Verilog HDL Files
2.9.2. Instantiating IP Cores With IP Catalog-Generated VHDL Files
2.9.3. Instantiating Intellectual Property With the IP Catalog and Parameter Editor
2.9.4. Instantiating Black Box IP Functions With Generated Verilog HDL Files
2.9.5. Instantiating Black Box IP Functions With Generated VHDL Files
2.9.6. Inferring Intel FPGA IP Cores from HDL Code
2.9.6.1. Multipliers
2.9.6.2. Setting the Use Dedicated Multiplier Option
2.9.6.3. Setting the dedicated_mult Attribute
Setting the dedicated_mult Attribute in Verilog HDL
Setting the dedicated_mult Attribute in VHDL
Setting the preserve_signal Attribute in Verilog HDL
Setting the preserve_signal Attribute in VHDL
Verilog HDL Multiplier Implemented in Logic
VHDL Multiplier Implemented in Logic
2.9.6.4. Multiplier-Accumulators and Multiplier-Adders
2.9.6.5. Controlling DSP Block Inference
2.9.6.6. RAM and ROM
2.10.1. Creating a Design with Precision RTL Plus Incremental Synthesis
2.10.2. Creating Multiple Mapped Netlist Files With Separate Precision Projects or Implementations
2.10.3. Creating Black Boxes to Create Netlists
2.10.4. Creating Intel® Quartus® Prime Projects for Multiple Netlist Files
2.10.5. Hierarchy and Design Considerations
Visible to Intel only — GUID: mwh1409960071855
Ixiasoft
2.9.6.3. Setting the dedicated_mult Attribute
To control the implementation of a multiplier in your HDL code, use the dedicated_mult attribute with the appropriate value as shown in the examples below.
Setting the dedicated_mult Attribute in Verilog HDL
//synthesis attribute <signal name> dedicated_mult <value>
Setting the dedicated_mult Attribute in VHDL
ATTRIBUTE dedicated_mult: STRING; ATTRIBUTE dedicated_mult OF <signal name>: SIGNAL IS <value>;
The dedicated_mult attribute can be applied to signals and wires; it does not work when applied to a register. This attribute can be applied only to simple multiplier code, such as a = b * c.
Some signals for which the dedicated_mult attribute is set can be removed during synthesis by the Precision Synthesis software for design optimization. In such cases, if you want to force the implementation, you should preserve the signal by setting the preserve_signal attribute to TRUE.
Setting the preserve_signal Attribute in Verilog HDL
//synthesis attribute <signal name> preserve_signal TRUE
Setting the preserve_signal Attribute in VHDL
ATTRIBUTE preserve_signal: BOOLEAN; ATTRIBUTE preserve_signal OF <signal name>: SIGNAL IS TRUE;
Verilog HDL Multiplier Implemented in Logic
module unsigned_mult (result, a, b); output [15:0] result; input [7:0] a; input [7:0} b; assign result = a * b; //synthesis attribute result dedicated_mult OFF endmodule
VHDL Multiplier Implemented in Logic
LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_arith.ALL; USE ieee.std_logic_unsigned.ALL; ENTITY unsigned_mult IS PORT( a: IN std_logic_vector (7 DOWNTO 0); b: IN std_logic_vector (7 DOWNTO 0); result: OUT std_logic_vector (15 DOWNTO 0)); ATTRIBUTE dedicated_mult: STRING; END unsigned_mult; ARCHITECTURE rtl OF unsigned_mult IS SIGNAL a_int, b_int: UNSIGNED (7 downto 0); SIGNAL pdt_int: UNSIGNED (15 downto 0); ATTRIBUTE dedicated_mult OF pdt_int: SIGNAL IS "OFF; BEGIN a_int <= UNSIGNED (a); b_int <= UNSIGNED (b); pdt_int <= a_int * b_int; result <= std_logic_vector(pdt_int); END rtl;