TMC-20216: Paths Failing Setup Analysis with Inferred-RAM Shift Register Endpoints
Description
Violations of this rule identify setup-failing paths that begin or end with shift registers implemented with inferred RAM blocks.
Implementing shift registers this way can save area, but can also be detrimental to timing.
Parameters
| Name | Description | Type | Default Value | Min Value | Max Value |
|---|---|---|---|---|---|
| maximum_setup_slack | Reports a violation for timing paths that have a setup slack below the value of this parameter. | double | 0.0 | ||
| to_clock_filter | Reports a violation for timing paths that end at a register in a clock domain that matches the value of this parameter. | string | * | ||
| minimum_number_of_adders | Reports a violation for timing endpoints that are preceded by a number of independent adder chains greater than or equal to this value. | integer | 3 | ||
| minimum_number_of_soft_mult_chains | Reports a violation for timing endpoints that are preceded by a number of independent adder chains that are implementing multiplier logic greater than or equal to this value. | integer | 2 |
Recommendation
In the Analysis & Synthesis settings, set "Auto Shift Register Replacement" to Off. Use an AUTO_SHIFT_REGISTER_RECOGNITION OFF assignment to disable shift register replacement for the replaced registers.
Severity
Medium
Tags
| Tag | Description |
|---|---|
| ram | Design rule checks related to M20k blocks inside the FPGA fabric. |
Device Family
- Stratix® 10
- Agilex®
- Agilex®
- Agilex®
- Arria® 10
- Cyclone® 10 GX