QSF: revert to AGGRESSIVE AREA + surgical MAX_FANOUT on Z-req raddr (close EMIF, keep design clk)
Fit data: AGGRESSIVE AREA gives design clk +0.631 / EMIF -0.103; global BALANCED flipped it to EMIF +0.084 / design clk -6.119 (vert_count->texcache swung 6.7ns). AGGRESSIVE AREA is far closer to closing, so keep it and fix the one 310MHz EMIF miss surgically: MAX_FANOUT 3 on u_zc_emit|u_req|raddr_hi1_q forces the register duplication Quartus asked for (TMC-20551) without the global placement disruption. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -984,13 +984,16 @@ set_global_assignment -name HPS_INITIALIZATION "HPS FIRST"
|
||||
# AUTO_RESOURCE_SHARING=OFF from fresh synthesis through route and produced an
|
||||
# identical netlist, resource count, placement, and timing path; sharing was
|
||||
# therefore not the source of the tap-to-texture-cache STA arc.
|
||||
# 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"
|
||||
# AGGRESSIVE AREA keeps the long texture-address combinational paths (e.g. vert_count -> u_texcache RAM)
|
||||
# placed compactly enough to meet the 25 MHz design clock (+0.631 ns). A global switch to BALANCED closed
|
||||
# the EMIF path but blew that design-clock path to -6.119 ns (a 6.7 ns placement swing), so DON'T change the
|
||||
# global mode. Instead close the one 310 MHz EMIF miss surgically via the MAX_FANOUT below.
|
||||
set_global_assignment -name OPTIMIZATION_MODE "AGGRESSIVE AREA"
|
||||
# Ch415: the 8K Z-req FIFO read-address register u_zc_emit|u_req|raddr_hi1_q fans out to ~6 spread M20K blocks
|
||||
# and missed 310 MHz EMIF setup by 103 ps (Quartus TMC-20551 asked for more register duplication, which the
|
||||
# AGGRESSIVE AREA global mode suppresses). Force duplication of JUST this register so each copy drives a nearby
|
||||
# block cluster -> shorter routing. Surgical (no global area/placement disruption); ~a few ALMs.
|
||||
set_instance_assignment -name MAX_FANOUT 3 -to "u_zc_emit|u_req|raddr_hi1_q*"
|
||||
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);
|
||||
# seed 2 was worse (-0.155, exposed a different marginal path). The last sliver is closed via the scoped false-path in the SDC.
|
||||
|
||||
Reference in New Issue
Block a user