Repository navigation
Conversation
yosys's own Verilog frontend is on its way out for SystemVerilog; aes-block now reads its sources with slang, the parent (config.mk) and its blocks (block.mk) alike. TL;DR the snags: - The aes sources write their registers with `<= #1`, which slang refuses as unsynthesizable timing control ("Compilation failed" at canonicalization); read_verilog ignored the delays silently. --ignore-timing does the same under slang, as asap7/aes-mbff has. The blocks need it too: a block runs from block.mk alone, while the parent blackboxes it, so a parent-only setting leaves aes_rcon failing on its own. - slang's netlist is 1.3 % smaller (5,592 vs 5,667 um^2), so CORE_UTILIZATION 47 gave a smaller core, and rtl_macro_placer found no valid tiling for its 21 macros (MPL-0003). The parent and each block now have DIE_AREA/CORE_AREA, today's result of their utilizations with read_verilog. Absolute sizes keep the macros fitting as yosys and OpenROAD improve: aes-block is the smoke test of BLOCKS plus macro placement, not of utilization. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
There was a problem hiding this comment.
Code Review
This pull request switches the synthesis HDL frontend to slang and configures absolute die and core areas for the aes-block design to ensure stable smoke tests. A review comment suggests explicitly checking for aes_sbox using else ifeq instead of a default else block in block.mk to prevent maintenance hazards if new blocks are added in the future.
A new block fell into the else arm and silently got aes_sbox's size. Each block is now named; one that is not has no size and stops at floorplan. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
|
@maliberty Switch to slang and lock down die/core area. Improved QoR from slang caused die area to shrink when using CORE_UTILIZATION, which caused a phantom MPL error. |
🔍 QoR checkMetrics reflect the PR merge build — i.e. what will land on the target branch. Commit 62 design(s) checked — 0 with regression(s), 0 without a comparable baseline. |
|
|
The parent gets smaller, but the macros dont. But fair point, it could do with some double checking. If it is broken, then it needs an issue and a fix which is in mpl maintainer court. If not, then it can merge as is. Either way: requires a maintainers eye to see if this is an mpl bug or not and this PR is a reproduction case. Please advise. |
|
@maliberty MPL-0003 here follows the core area, not the frontend: it is a change in die/core area, not a bug introduced by slang.
The tiling search giving up at 82 % is mpl's to judge separately; this PR is the reproducer, at any core between 11,875 and 11,922 um². Synthesis, read_verilog vs slang
Where slang differs:
Equivalence, kepler-formal LEC, read_verilog netlist as gold, slang as gate, the parent with its blocks' netlists:
No retiming, so both frontends name every flop alike and the netlists go in as synthesised. kepler-formal at Floorplans at this PR's sizes, both after macro placement (odb-debug, headless):
Arms
One run per point; built with bazel-orfs on ORFS |
|
@maliberty Good pushback, I did the yak-shave: The-OpenROAD-Project/bazel-orfs#1290. TL;DR Good to go. aes-block is the smoke test of BLOCKS, not of macro placement. At |
aes-block tests hierarchical synthesis, hardened blocks and their macros in the parent, not macro placement or utilization. Say so in config.mk, where the fixed die is set, and point block.mk at it. The old comment called the parent's die "today's result of CORE_UTILIZATION 47" with read_verilog; it is larger than that (12,028 vs 11,875 um^2 core), by design: headroom keeps the macros off the edge of what macro placement can pack. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>




Synthesize asap7/aes-block with slang, the better frontend: yosys's own Verilog frontend is on its way out.
--ignore-timingfor the aes sources'#1delays, asasap7/aes-mbffhas, inconfig.mkandblock.mk.DIE_AREA/CORE_AREAfor the parent and both blocks, with headroom: aes-block smoke-tests BLOCKS, and atCORE_UTILIZATIONits macros sit at the edge of what mpl packs, so a small change in synthesis (here slang's slightly smaller netlist) flips it into MPL-0003.config.mk.Tested: the parent and both blocks build to final with slang.
🤖 Generated with Claude Code