2.1. Using Provided HDL Templates 2.2. Instantiating IP Cores in HDL 2.3. Inferring Multipliers and DSP Functions 2.4. Inferring Memory Functions from HDL Code 2.5. Register and Latch Coding Guidelines 2.6. General Coding Guidelines 2.7. Designing with Low-Level Primitives 2.8. Recommended HDL Coding Styles Revision History
126.96.36.199. Use Synchronous Memory Blocks 188.8.131.52. Avoid Unsupported Reset and Control Conditions 184.108.40.206. Check Read-During-Write Behavior 220.127.116.11. Controlling RAM Inference and Implementation 18.104.22.168. Single-Clock Synchronous RAM with Old Data Read-During-Write Behavior 22.214.171.124. Single-Clock Synchronous RAM with New Data Read-During-Write Behavior 126.96.36.199. Simple Dual-Port, Dual-Clock Synchronous RAM 188.8.131.52. True Dual-Port Synchronous RAM 184.108.40.206. Mixed-Width Dual-Port RAM 220.127.116.11. RAM with Byte-Enable Signals 18.104.22.168. Specifying Initial Memory Contents at Power-Up
22.214.171.124. If Performance is Important, Optimize for Speed 126.96.36.199. Use Separate CRC Blocks Instead of Cascaded Stages 188.8.131.52. Use Separate CRC Blocks Instead of Allowing Blocks to Merge 184.108.40.206. Take Advantage of Latency if Available 220.127.116.11. Save Power by Disabling CRC Blocks When Not in Use 18.104.22.168. Initialize the Device with the Synchronous Load (sload) Signal
3.4.1. Apply Complete System-Centric Timing Constraints for the Timing Analyzer 3.4.2. Force the Identification of Synchronization Registers 3.4.3. Set the Synchronizer Data Toggle Rate 3.4.4. Optimize Metastability During Fitting 3.4.5. Increase the Length of Synchronizers to Protect and Optimize 3.4.6. Set Fitter Effort to Standard Fit instead of Auto Fit 3.4.7. Increase the Number of Stages Used in Synchronizers 3.4.8. Select a Faster Speed Grade Device
22.214.171.124. Use Separate CRC Blocks Instead of Cascaded Stages
Some designs optimize CRC to use cascaded stages (for example, four stages of 8 bits). In such designs, Intel® Quartus® Prime synthesis uses intermediate calculations (such as the calculations after 8, 24, or 32 bits) depending on the data width.
This design is not optimal for FPGA devices. The XOR cancellations that Intel® Quartus® Prime synthesis performs in CRC designs mean that the function does not require all the intermediate calculations to determine the final result. Therefore, forcing the use of intermediate calculations increases the area required to implement the function, as well as increasing the logic depth because of the cascading. It is typically better to create full separate CRC blocks for each data width that you require in the design, and then multiplex them together to choose the appropriate mode at a given time
Did you find the information on this page useful?