1.1. Using Provided HDL Templates 1.2. Instantiating IP Cores in HDL 1.3. Inferring Multipliers and DSP Functions 1.4. Inferring Memory Functions from HDL Code 1.5. Register and Latch Coding Guidelines 1.6. General Coding Guidelines 1.7. Designing with Low-Level Primitives 1.8. Cross-Module Referencing (XMR) in HDL Code 1.9. Using force Statements in HDL Code 1.10. Recommended HDL Coding Styles Revision History
22.214.171.124. Use Synchronous Memory Blocks 126.96.36.199. Avoid Unsupported Reset and Control Conditions 188.8.131.52. Check Read-During-Write Behavior 184.108.40.206. Controlling RAM Inference and Implementation 220.127.116.11. Single-Clock Synchronous RAM with Old Data Read-During-Write Behavior 18.104.22.168. Single-Clock Synchronous RAM with New Data Read-During-Write Behavior 22.214.171.124. Simple Dual-Port, Dual-Clock Synchronous RAM 126.96.36.199. True Dual-Port Synchronous RAM 188.8.131.52. Mixed-Width Dual-Port RAM 184.108.40.206. RAM with Byte-Enable Signals 220.127.116.11. Specifying Initial Memory Contents at Power-Up
18.104.22.168. If Performance is Important, Optimize for Speed 22.214.171.124. Use Separate CRC Blocks Instead of Cascaded Stages 126.96.36.199. Use Separate CRC Blocks Instead of Allowing Blocks to Merge 188.8.131.52. Take Advantage of Latency if Available 184.108.40.206. Save Power by Disabling CRC Blocks When Not in Use 220.127.116.11. 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. Increase the Number of Stages Used in Synchronizers 3.4.7. Select a Faster Speed Grade Device
18.104.22.168. Optimizing Critical Timing Paths
To close timing in high speed designs, review paths with the largest timing failures. Correcting a single, large timing failure can result in a very significant timing improvement.
Review the register placement and routing paths by clicking Tools > Chip Planner. Large timing failures on high fan-out control signals can be caused by any of the following conditions:
- Sub-optimal use of global networks
- Signals that traverse the chip on local routing without pipelining
- Failure to correct high fan-out by register duplication
For high-speed and high-bandwidth designs, optimize speed by reducing bus width and wire usage. To reduce wire usage, move the data as little as possible. For example, if a block of logic functions on a few bits of a word, store inactive bits in a FIFO or memory. Memory is cheaper and denser than registers, and reduces wire usage.
Did you find the information on this page useful?