docs: real P&R directive tuning closes most of remaining N=16 timing gap (EXP-0094 cont.)

Same RTL, real Vivado strategy directives (Explore/ExtraNetDelay_high/
AggressiveExplore, zero RTL risk): WNS -0.646ns -> -0.338ns, TNS
-97.5ns -> -5.3ns, failing endpoints 771 -> 60. Remaining bottleneck
confirmed intrinsic (84% logic delay, DSP48E1->CARRY4 path inside
neural_processor_packed.v, recurring per-PE) -- unlikely to shrink
further via P&R strategy alone.

Cumulative: two safe fixes (hierarchical arbiter + directive tuning)
close ~89% of the original TNS gap and ~63% of WNS, neither touching
neural_processor_packed.v. Deliberate stop: closing the rest needs
that shared, load-bearing module touched -- a larger, more careful
step (verify against both N=2 and N=16) documented as next_action,
not attempted without further direction.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MUG92aM9m68TRc4rG55BcC
This commit is contained in:
2026-09-21 02:39:45 +02:00
co-authored by Claude Sonnet 5
parent 9e1f16db47
commit 67ccb420d6
2 changed files with 90 additions and 9 deletions
+31 -9
View File
@@ -659,7 +659,7 @@ specifically to document where/how it breaks rather than to succeed):
---
### 5.6 [Functionally DONE, TIMING SUBSTANTIALLY IMPROVED BUT NOT YET CLOSED — EXP-0089/0090/0091/0092/0093/0094] Hybrid systolic scaling: 4 groups × 4-PE weight-stationary chains
### 5.6 [Functionally DONE, WNS -0.913ns→-0.338ns via 2 safe fixes, small intrinsic gap remains — EXP-0089…0094] Hybrid systolic scaling: 4 groups × 4-PE weight-stationary chains
Captured from a 2026-09-20 brainstorming session as a purely exploratory
idea; the same day, per the user's own explicit reprioritization, the real
@@ -777,17 +777,39 @@ NOT fully closed timing result (EXP-0094)** — honestly not yet ready
for real hardware at the target clock. N=2 (EXP-0088) remains the
real, trustworthy, deployable signoff.
- **Real P&R strategy tuning (EXP-0094, continued)**: same RTL,
`opt_design -directive Explore` + `place_design -directive
ExtraNetDelay_high` + a new `phys_opt_design -directive
AggressiveExplore` step + `route_design -directive
AggressiveExplore` — zero RTL risk. **Real result: WNS improved
further to 0.338ns, TNS to 5.299ns, failing endpoints to 60** —
another real, substantial, measured improvement (recovered roughly
half of the remaining gap). Still not fully met. The new worst path
is the SAME structural class (a different PE instance, confirming a
recurring per-PE issue) but now measured at 84% logic delay (up from
79%) — real evidence the recoverable route-delay slack is largely
exhausted; what remains is dominated by the FPGA's own intrinsic
DSP48E1→CARRY4 interconnect delay, unlikely to shrink further via
more P&R strategy tuning alone.
**Real, cumulative progress**: two safe, real improvements (the
hierarchical arbiter + P&R directive tuning), neither touching
`neural_processor_packed.v`, together close ~89% of the original TNS
gap (690ns → 5.3ns) and ~63% of the original WNS gap (0.913ns →
0.338ns). **Deliberate stop here**: the remaining gap needs the
shared, load-bearing `neural_processor_packed.v` MAC datapath itself
touched to close via RTL — a meaningfully larger, more careful step
(must be verified against both N=2's own signoff and N=16) than
anything else this session, better started with explicit direction
than pushed further autonomously.
**Not yet done, real and disclosed, real options for closing the
remaining gap** (need a real decision on direction before committing
more RTL effort — `neural_processor_packed.v` is the compute core
shared by every real PE in this project): (1) real pipelining inside
remaining gap**: (1) real, careful pipelining inside
`neural_processor_packed.v`'s own MAC datapath at the specific
`GEN_MAC_PACKED`/`prodb1_reg` boundary (fork-before-promote, N=2's own
signoff must stay protected). (2) a real, measured lower target clock
for the N=16 variant specifically (unquantified throughput trade-off
against N=2). (3) real Vivado placement/timing directives (e.g. a
`PBLOCK` per group to reduce congestion) as a lower-RTL-risk first
attempt. See EXP-0094's own `next_action`.
signoff must stay protected, verify both). (2) a real, measured lower
target clock for the N=16 variant specifically (unquantified
throughput trade-off against N=2). See EXP-0094's own `next_action`.
**The problem it targets**: plain N=16 independent cores (§5.5's own
"documentary, expected to break" framing) means 16 independent DDR3