From b29fb17a11127f044df489c3e636df942361683b Mon Sep 17 00:00:00 2001 From: thejayman77 Date: Mon, 20 Jul 2026 22:04:00 -0400 Subject: [PATCH] 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) --- .../de25_nano_psmct32_raster_demo_top.qsf | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/synth/de25_nano/top_psmct32_raster_demo/de25_nano_psmct32_raster_demo_top.qsf b/synth/de25_nano/top_psmct32_raster_demo/de25_nano_psmct32_raster_demo_top.qsf index 9726f78..9ad62dc 100644 --- a/synth/de25_nano/top_psmct32_raster_demo/de25_nano_psmct32_raster_demo_top.qsf +++ b/synth/de25_nano/top_psmct32_raster_demo/de25_nano_psmct32_raster_demo_top.qsf @@ -984,7 +984,13 @@ 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. -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 # 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.