This FAQ covers reset distribution and reset release methodology. Guidance differs by device family and software release. Part A applies to Diamond-based devices; Part B applies to Nexus-based devices. Where this document differs from earlier material, follow the guidance applicable to your device family, software release, and design requirement.
In designs above approximately 90 percent utilisation, moving reset from GSR or primary routing onto general routing has been observed to risk a routing shortage and failure to place and route. Evaluate the mitigations in item 3 before accepting a general-routing implementation.
When a reset is placed on GSR, Diamond does not check recovery and removal timing for that path. Nets attached to GSR carry no timing-arc information, so violations on those paths go unreported. Where this timing must be analysed, use LSR.
LSR reset paths are analysed because the following arcs are documented in TRACE:
Yes. Assign the reset to a primary clock line using the USE PRIMARY NET preference in Spreadsheet View. The primary clock line then carries reset distribution in place of local routing, which can relieve congestion in constrained designs.
For high-utilisation designs:
On some architectures, HDL signal initialisation uses the same start-up mechanism as GSR and may share these characteristics. Verify device-specific behaviour in the applicable user guide.
- module reset_sync (
- input wire clk_i,
- input wire rst_n_i, // asynchronous source, active low
- output wire rst_o // synchronised, active high
- );
- reg [1:0] sync_q;
- always @(posedge clk_i or negedge rst_n_i) begin
- if (!rst_n_i)
- sync_q <= 2'b00; // asynchronous assertion
- else
- sync_q <= {sync_q[0], 1'b1}; // synchronous release
- end
- assign rst_o = ~sync_q[1];
- endmodule
How it works: When rst_n_i goes low, both flip-flops clear immediately and rst_o asserts, independent of the clock. When rst_n_i returns high, a constant 1 shifts through the two stages, so rst_o deasserts two clock edges later — aligned to clk_i. The two stages allow any metastability on the release edge to resolve before the reset reaches the fabric.
Design considerations:
Where a hybrid or local reset is intended, review the tool options so the reset is not remapped onto GSR against the HDL intent.
Behaviour can change across releases. Validate against the specific tool version and device family, and confirm the result in the post-synthesis netlist rather than relying on the setting alone.
Only with a synchronised release. GSR de-assertion is not synchronised to the user clock, and GSR pulses during the configuration wake-up sequence, so the exit-from-reset cycle is non-deterministic relative to the system clock. A synchronised release, as in item 6, provides a deterministic transition that can be constrained in the timing-closure flow.
General design practice (not case-specific). As a standard STA step, constrain the asynchronous assertion path into the first synchroniser stage as a false path for setup, and confirm the synchroniser output is analysed on the destination clock.
| Requirement | Approach | Timing analysed | Routing cost |
|---|---|---|---|
| Lowest routing usage | GSR | No | Lowest |
| Recovery and removal coverage | LSR | Yes | Higher |
| Congestion relief above ~90% utilisation | Primary clock net, or synchronised release only on low-skew resources | Verify after change | Moderate |
| Deterministic reset release | Hybrid, synchronised release | Yes | Moderate |