QSF: OPTIMIZATION_MODE AGGRESSIVE AREA -> BALANCED (close -0.103ns EMIF path)

After the fog prune the design clock closed (+0.631ns) but a 310MHz EMIF path
missed by 103ps: the Z-req FIFO read-address register u_zc_emit|u_req|raddr_hi1_q[4]
fans out to 6 spread M20K blocks. Quartus flagged TMC-20551 (needs more register
duplication), which AGGRESSIVE AREA mode was suppressing. That mode is a leftover
from the resolved LAB-overflow era; utilization has headroom (ALM 85%, DSP 45%,
RAM unaffected by opt mode). BALANCED lets the fitter duplicate the address
register to close the path. QSF-only, no RTL change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-20 22:04:00 -04:00
parent a72aaded22
commit b29fb17a11
@@ -984,7 +984,13 @@ set_global_assignment -name HPS_INITIALIZATION "HPS FIRST"
# AUTO_RESOURCE_SHARING=OFF from fresh synthesis through route and produced an # AUTO_RESOURCE_SHARING=OFF from fresh synthesis through route and produced an
# identical netlist, resource count, placement, and timing path; sharing was # identical netlist, resource count, placement, and timing path; sharing was
# therefore not the source of the tap-to-texture-cache STA arc. # therefore not the source of the tap-to-texture-cache STA arc.
set_global_assignment -name OPTIMIZATION_MODE "AGGRESSIVE AREA" # Ch415: was "AGGRESSIVE AREA" (a leftover from the pre-useg-strip LAB-overflow era). That mode
# suppresses register duplication, which left the 8K Z-req FIFO's read-address register (u_zc_emit|
# u_req|raddr_hi1_q) fanning out to 6 spread M20K blocks and failing 310 MHz EMIF setup by ~103 ps
# (Quartus TMC-20551: "duplication candidate likely requires more duplication"). Utilization has ample
# headroom now (ALM 85%, DSP 45%, RAM unaffected by opt mode), so BALANCED lets the fitter duplicate
# that address register to close the path. Revert to AGGRESSIVE AREA only if a future build re-overflows ALMs.
set_global_assignment -name OPTIMIZATION_MODE "BALANCED"
set_global_assignment -name AUTO_RESOURCE_SHARING ON set_global_assignment -name AUTO_RESOURCE_SHARING ON
# Ch357 (Codex) — SEED left at default (1): seed 1 gave -0.019 (quasi-static EMIF-lock ONLY, all real datapaths met); # Ch357 (Codex) — SEED left at default (1): seed 1 gave -0.019 (quasi-static EMIF-lock ONLY, all real datapaths met);
# seed 2 was worse (-0.155, exposed a different marginal path). The last sliver is closed via the scoped false-path in the SDC. # seed 2 was worse (-0.155, exposed a different marginal path). The last sliver is closed via the scoped false-path in the SDC.