Golf scores on ASAP7, a predictive 7 nm library: never fabricated, and like sky130's score it counts no wires. sky130, a real 130 nm process, is the default. How ASAP7 is scored, and its quirks.

Tasks / aes_sbox / record

Record d2880a7160dd

on the Pareto frontieron the Pareto frontier scored at the one fixed size

Area

890.85µm²

890.8544 µm² exactly

vs par
−0.1% smallersbox_bp · 892.11 µm²
on this page
smallest of 5 designs
cells
122
flops
0
repair
0 buffers, 0 tie cells
GE
204.659 extra
A1′
1 078.53 µm² research

Performance · time

3 208ps

the delay: the latest output arrival, y[3] rising

vs par
−25.3% fastersbox_bp · 4 297 ps
on this page
3rd of 5 designs
Fmax-eq.
311.7 MHz derived
critical path
15 cells
unit depth
16 extra
A1′
3 522 ps research

Score · area × time

2858µm²·ns

890.8544 µm² × 3 208 ps

vs par
−25.4% bettersbox_bp · 3833 µm²·ns
on this page
best of 5 designs
board
layer 1, rank 1 of 1 by score
Pareto
on the front

No other player has a ranked record on aes_sbox yet: the beats and matches lines come with the first one.

how these numbers are measured and compared

Area: sky130 A0′, the repaired netlist. Time: NLDM, inputs driven by buf_8, 10 fF per output bit, no wires.

Area, time and score are ranked (the leaderboard orders by the score); a number tagged extra, derived or research is shown, never ranked. Fmax-equivalent = 10⁶ / time in ps, for comparison with sites that quote Fmax.

The field is the ranked records of aes_sbox's other players at this revision (0 players, 0 records), never the references, the baselines or a rejected design; advisory, recomputed at every build, never stored in a record and never used by the ranking.

“On this page” and “Pareto” compare with the 5 designs of the area-time plot (2 references, 1 submission and 2 baselines): not a ranking.

Area

13.414µm²

13.41360 µm² exactly

vs par
+0.4% largersbox_bp · 13.355 µm²
on this page
2nd of 5 designs
cells
133
flops
0
repair
0 buffers, 0 tie cells
GE
204.659 extra

Performance · time

556ps

the delay: the latest output arrival

vs par
−21.0% fastersbox_bp · 704 ps
on this page
3rd of 5 designs
Fmax-eq.
1798.6 MHz derived
unit depth
16 extra

Score · area × time

7.458µm²·ns

13.41360 µm² × 556 ps

vs par
−20.7% bettersbox_bp · 9.402 µm²·ns
on this page
best of 5 designs
board
layer 1, rank 1 of 1 by score
Pareto
on the front

No other player has a ranked record on aes_sbox yet: the beats and matches lines come with the first one.

how these numbers are measured and compared

Area: ASAP7 A0′ (asap7_a0_v1), the same scored netlist, each gate its least-area ASAP7 build, repaired by buffering. Time: NLDM, inputs driven by BUFx8, 2.5 fF per output bit, no wires; a table read below its grid is read at its floor. ASAP7: a predictive 7 nm library, never fabricated; no wires, like sky130's score (how ASAP7 is scored, and its quirks).

Area, time and score order this view's board (by the score); the records' ranked score is sky130's, the default view; a number tagged extra, derived or research is shown, never ranked. Fmax-equivalent = 10⁶ / time in ps, for comparison with sites that quote Fmax.

The field is the ranked records of aes_sbox's other players at this revision (0 players, 0 records), never the references, the baselines or a rejected design; advisory, recomputed at every build, never stored in a record and never used by the ranking.

“On this page” and “Pareto” compare with the 5 designs of the area-time plot (2 references, 1 submission and 2 baselines): not a ranking.

The sources

solution.svdownload
// k0_934.6464_3348.sv re-optimized: strash;&get -n;&deepsyn -T 10 -S 483;&put;dch -f;map
module aes_sbox (input logic [7:0] x, output logic [7:0] y);
  logic g73, g109, g46, g9, g4, g67, g50, g86, g15, g37, g69, g59, g10, g48, g83, g43;
  logic g72, g32, g124, g58, g75, g35, g95, g2, g97, g49, g16, g14, g11, g88, g29, g54;
  logic g89, g45, g61, g6, g38, g39, g22, g53, g64, g111, g25, g70, g30, g23, g3, g68;
  logic g118, g66, g120, g76, g44, g7, g103, g51, g100, g18, g81, g8, g12, g19, g31, g102;
  logic g1, g17, g20, g79, g52, g34, g105, g91, g77, g0;
  assign y[5] = ((g105 ^ g95) ^ g76);
  assign g2 = ~(x[6] ^ x[1]);
  assign g30 = g29 ^ g15;
  assign g20 = g19 ^ g17;
  assign g29 = ((g23 & ~(g25 & ~g2)) ^ x[0]) ^ (g20 | ~g16);
  assign g75 = (g8 & ~g73) ^ g68;
  assign g22 = ~x[7];
  assign g111 = ~((~(g109 | g39)) ^ g83);
  assign g12 = g11 ^ x[4];
  assign g10 = ~(x[2] ^ x[0]);
  assign g19 = g18 ^ g2;
  assign y[3] = ((g124 ^ g120) ^ g86);
  assign g52 = g51 ^ g6;
  assign g45 = g44 | g30;
  assign g23 = g18 | g22;
  assign g51 = g2 ^ g22;
  assign g39 = g34 ^ g10;
  assign g88 = g69 & ~(g49 & ~g79);
  assign g3 = g2 ^ g1;
  assign g61 = ~((g50 & ~g59) ^ g45);
  assign g32 = g17 ^ g8;
  assign g105 = ~((g102 & ~g103) | g53);
  assign y[0] = (((g19 & ~g89) ^ g105) ^ g86);
  assign g31 = ~(x[5] ^ x[0]);
  assign g48 = (g18 & ~g46) ^ g35;
  assign g53 = x[3] & ~g52;
  assign g120 = g34 & ~g109;
  assign g34 = g0 ^ g9;
  assign g6 = ~x[4];
  assign g66 = (g49 | ~g44) & ~(g64 & g45);
  assign y[6] = ((g120 ^ (~(g118 ^ g103))) ^ ((g38 & ~g72) ^ g75));
  assign g124 = (~(g81 | g32)) ^ g102;
  assign g95 = (((~(g11 ^ x[5])) | g72) ^ g91) ^ (g51 & ~g89);
  assign g73 = g72 ^ g66;
  assign g49 = g48 ^ g15;
  assign g100 = ((g4 & ~g61) ^ g91) ^ g77;
  assign g64 = g58 ^ g43;
  assign g38 = g17 ^ g9;
  assign g44 = g43 ^ g37;
  assign g16 = g3 ^ g6;
  assign g0 = ~(x[7] ^ x[5]);
  assign g4 = g3 ^ x[5];
  assign g37 = (~(g35 ^ x[6])) ^ (g32 | g31);
  assign g50 = g44 | ~g49;
  assign y[4] = (g95 ^ g86);
  assign g17 = ~(x[3] ^ x[2]);
  assign y[1] = ((~(g105 ^ g100)) ^ g111);
  assign g76 = g75 ^ (g61 | g0);
  assign g54 = g25 & g23;
  assign g77 = g67 | g16;
  assign g102 = g88 | g1;
  assign g7 = ~(x[6] ^ x[7]);
  assign g69 = g64 | ~g30;
  assign g89 = ~(g88 ^ g61);
  assign g83 = ~((~(g32 ^ g31)) | g81);
  assign g91 = g12 & ~g73;
  assign g15 = g14 ^ (~(g4 | g0));
  assign g11 = g10 ^ g9;
  assign y[7] = (((g97 ^ g68) ^ (g124 ^ g118)) ^ g111);
  assign g14 = (g8 & ~g12) ^ x[3];
  assign g86 = ((g83 ^ (g66 & ~g18)) ^ g77) ^ g76;
  assign g18 = ~(x[4] ^ x[5]);
  assign g43 = ~(((g22 & ~g38) | (g38 & ~g39)) ^ g14);
  assign g72 = g50 & ~(g69 & ~g70);
  assign y[2] = (~(g100 ^ g97));
  assign g81 = ~((g50 & g30) | g79);
  assign g103 = ~(g88 | g52);
  assign g1 = ~x[3];
  assign g9 = ~x[1];
  assign g8 = g7 ^ g6;
  assign g109 = ~(g81 ^ g67);
  assign g68 = g67 | g20;
  assign g79 = g59 & ~g70;
  assign g97 = g54 & ~g89;
  assign g35 = g10 | ~g34;
  assign g59 = g58 ^ g37;
  assign g118 = ~(g66 & g46);
  assign g25 = (x[4] ^ x[5]) | x[7];
  assign g70 = ~(g48 ^ g29);
  assign g58 = ((g54 & ~x[1]) | (g7 & ~g54)) ^ g53;
  assign g46 = g38 ^ g8;
  assign g67 = g66 ^ g61;
endmodule
Solution.lean (7 code lines)
import Submission.Design
import SvGolf.Comb
import LeanModels.Sv.CombExhaustiveTactic

/-!
# aes_sbox: a tower-field (composite-field GF(((2^2)^2)^2)) netlist, proved by exhaustive kernel evaluation

`sv_exhaustive` (LeanModels/Sv/CombExhaustiveTactic.lean) compiles the flat netlist once into a packed gate
program, checks the compilation, and decides `y = sbox x` on all 256 inputs by kernel evaluation.
-/

namespace Submission

set_option maxHeartbeats 0 in
theorem solution : Goal := by sv_exhaustive

end Submission

The netlist

The netlist card shows the sky130 weighing (its cells, its critical path): the ASAP7 view changes the overview above, not this card.

Schematic

The repaired A0′ netlist that the score weighs: 122 cells. aes_sbox has one fixed size, so there is no smaller instance to draw.

_322_ · sky130_fd_sc_hd__xor2_1 xor2_1 _323_ · sky130_fd_sc_hd__xnor2_1 xnor2_1 _324_ · sky130_fd_sc_hd__xnor2_1 xnor2_1 _325_ · sky130_fd_sc_hd__nor2_1 nor2_1 _326_ · sky130_fd_sc_hd__xnor2_1 xnor2_1 _327_ · sky130_fd_sc_hd__xnor2_1 xnor2_1 _328_ · sky130_fd_sc_hd__xnor2_1 xnor2_1 _357_ · sky130_fd_sc_hd__nand2b_1 nand2b_1 _360_ · sky130_fd_sc_hd__xnor2_1 xnor2_1 _366_ · sky130_fd_sc_hd__xnor2_1 xnor2_1 _387_ · sky130_fd_sc_hd__and2_1 and2_1 _399_ · sky130_fd_sc_hd__xnor2_1 xnor2_1 _400_ · sky130_fd_sc_hd__xnor2_1 xnor2_1 _404_ · sky130_fd_sc_hd__xnor2_1 xnor2_1 _421_ · sky130_fd_sc_hd__xor2_1 xor2_1 _161_ _190_ _198_ _199_ _200_ _201_ _204_ _205_ _218_ _226_ _235_ _237_ _239_ _240_ _241_ _242_ _244_ _245_ _246_ _274_ _275_ _277_ _278_ _283_ _284_ x[0] x[1] x[2] x[3] x[4]

The drawing is its critical path (15 cells, ending at y[3] rising, 3 208 ps), every cell of it, and each net that enters or leaves the path drawn as a port named after the net: the whole netlist at this size is a tangle of wires. The path's own nets are in the accent colour. Drawn by netlistsvg with svGolf's sky130 skin (derived from netlistsvg's default skin, as the drawing is: MIT licence, Copyright (c) 2016 Neil Turley, the notice): one symbol per cell function, the cell above it, the instance on hover; nor2b and nand2b are drawn with the bubble on their inverted input. The cells of the path are listed under Critical path, each a link to the cell here.

The netlist at its one fixed size: 122 cells, 53 xnor2_1, 22 nand2_1, 20 xor2_1, 7 and2_1, 5 nand2b_1, 5 or2_1, 4 nor2_1, 4 nor2b_1, 2 mux2_1; 15 drawn. Open the drawing on its own (SVG, 14.9 KB) to pan and zoom it with the browser's own controls.

Critical path

at the one fixed size · scored

The path the ranked delay ends on, at the task's one size: 16 nets, 15 cells, to y[3] rising at 3 208 ps. Each row is a net of the repaired netlist with the arrival and the transition the STA computed there (NLDM tables, the larger transition carried; no wires). The first row is an input: its arrival is the input driver's own delay (buf_8 fed by a 50 ps ramp). From ppa.py --path (critical_path_timing); the instance names are the schematic's (the same netlist), each a link to its cell there.

#netedgedriven bycellarrival (ps)transition (ps)stage (ps)
0x[2]fallinput port–116.624.0
1_240_rise_322_xor2_1356.6260.9240.0
2_241_rise_323_xnor2_1557.9247.8201.3
3_242_rise_324_xnor2_1716.7142.7158.8
4_243_fall_325_nor2_1782.583.565.8
5_244_rise_326_xnor2_11 022.7251.2240.2
6_245_rise_327_xnor2_11 222.5248.2199.8
7_246_fall_328_xnor2_11 344.584.3122.0
8_275_fall_357_nand2b_11 521.076.4176.5
9_278_rise_360_xnor2_11 847.1346.4326.1
10_284_fall_366_xnor2_12 005.0104.8157.9
11_190_fall_387_and2_12 210.661.6205.6
12_200_rise_399_xnor2_12 460.3250.9249.7
13_201_fall_400_xnor2_12 601.995.4141.6
14_205_rise_404_xnor2_12 933.6343.5331.7
15_161_rise_421_xor2_13 208.4247.4274.8

Cells

at the one fixed size · scored

the cells of the repaired netlist, by area9 bars; the table beside the chart lists the same numbers.xnor2_1: 464.2 µm² (µm² · 53 cells)xnor2_1464.2 µm² · 53 cellsxor2_1: 175.17 µm² (µm² · 20 cells)xor2_1175.17 µm² · 20 cellsnand2_1: 82.58 µm² (µm² · 22 cells)nand2_182.58 µm² · 22 cellsand2_1: 43.79 µm² (µm² · 7 cells)and2_143.79 µm² · 7 cellsnand2b_1: 31.28 µm² (µm² · 5 cells)nand2b_131.28 µm² · 5 cellsor2_1: 31.28 µm² (µm² · 5 cells)or2_131.28 µm² · 5 cellsnor2b_1: 25.02 µm² (µm² · 4 cells)nor2b_125.02 µm² · 4 cellsmux2_1: 22.52 µm² (µm² · 2 cells)mux2_122.52 µm² · 2 cellsnor2_1: 15.01 µm² (µm² · 4 cells)nor2_115.01 µm² · 4 cells
The area of each cell type in the repaired A0′ netlist, at the scoring point: the count times the cell's area in the pinned liberty. Their sum is the ranked area.
cellcountµm² eachµm² in allshare
xnor2_1538.7584464.195252.1%
xor2_1208.7584175.168019.7%
nand2_1223.753682.57929.3%
and2_176.256043.79204.9%
nand2b_156.256031.28003.5%
or2_156.256031.28003.5%
nor2b_146.256025.02402.8%
mux2_1211.260822.52162.5%
nor2_143.753615.01441.7%
total122890.8544

Repair (buffer_trees_v1): 0 buffers on 0 nets, 0 tie cells, 1 weighing round; nothing is resized.

Legality: worst load 0.222 × max_capacitance, worst transition 0.252 × max_transition; 0 timing-table reads outside the characterized grid.

the gate mix of the extra GE column (the pinned GE table, score/ge.json)
gate mix: cells of each type in the scored netlist9 bars; the table beside the chart lists the same numbers.XNOR: 53 cells (106.000 GE)XNOR53 106.000 GENAND: 22 cells (22.000 GE)NAND22 22.000 GEXOR: 20 cells (40.000 GE)XOR20 40.000 GEAND: 7 cells (9.331 GE)AND7 9.331 GEOR: 5 cells (6.665 GE)OR5 6.665 GEORNOT: 5 cells (6.665 GE)ORNOT5 6.665 GEANDNOT: 4 cells (5.332 GE)ANDNOT4 5.332 GENOR: 4 cells (4.000 GE)NOR4 4.000 GEMUX: 2 cells (4.666 GE)MUX2 4.666 GE
Cells by type; area is the count weighted by the pinned GE table.
cellcountGE eachGE total
XNOR532.000106.000
NAND221.00022.000
XOR202.00040.000
AND71.3339.331
OR51.3336.665
ORNOT51.3336.665
ANDNOT41.3335.332
NOR41.0004.000
MUX22.3334.666
total122204.659

The record

task
aes_sbox
player
tower-shuffle
assisted by
Claude Opus 5.5 (Anthropic)
submitted
2026-11-05
notes
Made by an AI agent (Claude Opus, Anthropic) in the maintainers' newcomer study on 2026-11-05, as a new design rather than a variation of a shipped one; the agent chose the player name. The design is a flat netlist of 82 continuous assigns over & | ^ ~ for a tower-field (composite-field GF(((2^2)^2)^2)) AES S-box. It was generated by the agent's own program (polynomial bases, the composite-field inverse formula of Satoh et al. and Canright, greedy common-subexpression XOR layers; all 128 basis choices checked against the S-box on the 256 inputs), then re-optimized with the pinned Yosys and ABC (&deepsyn with searched seeds, then dch, written back as & | ^ ~ assigns), its single-use nets inlined to cut the number of assigns, and its statement order searched; every step was scored with score/ppa.py. The proof is one line, `theorem solution : Goal := by sv_exhaustive`: the library tactic compiles the netlist to a gate program and decides the output on all 256 inputs by kernel evaluation. The comments in both files are the agent's; the first line of the .sv names an intermediate netlist of the search and the ABC commands of one step. Re-recorded by the maintainers for the 2026-11-07 statement-fingerprint change; design and proof unchanged.
scoring point
the one fixed size
design
solution.sv sha256 cb336371552e63d0cd9de9439e2faf7bc8fbee407cb19868f1ebb5e5c7fcd06d
proof
Solution.lean sha256 18a23b398e3187d950fc400fe381e0972e61809df6c7baebd33689a39782c353
canonical text
sha256 9c2fb349e833dbdf9fd2ef3638d31d9066b8729e9bccdec6609258358687e926
record hash
d2880a7160dd09519db7626bdd17a0bff9cc65b9f87de0a6b66857c9dfc1ecc6
downloads
d2880a7160dd.sv d2880a7160dd.lean d2880a7160dd.json
previous frontier
none: this is the task's first submission

The proof

code lines
7
build time
59.11 s
axioms
Classical.choice, Quot.sound, propext
tactics seen
none
imports
Submission.Design, SvGolf.Comb, LeanModels.Sv.CombExhaustiveTactic

Checker and flow

Checked under the pinned flow of this site's boards.

Yosys
Yosys 0.53 (git sha1 53c22ab7c0ced80861c7536c5dae682c30fb5834, clang++ 17.0.0 -fPIC -O3)
Verilator
Verilator 5.042 2025-11-02 rev UNKNOWN.REV
Lean toolchain
leanprover/lean4:v4.33.0-rc1
svGolf revision
000130d1b08c3462e30e22fefe48567ac1f0a8d5
lean-surfaces revision
000130d1b08c3462e30e22fefe48567ac1f0a8d5
canonicalization script
bbd11227d45dc1365f27597fd45c565fe721ba2648450588fc4fd983d00b367b
scoring script
ea58219d8ef14c3bad265218ee266ccdb709ac9d4dc5258edc34d51ee83a0445
GE table
6a29196a3f4b58241f4c9af650c9141e4632b737214d563a11ba142a725c4bea
extractor
4930696021c588c75dc890034c534c95560ad9a28a4955b87d1f8d68b5edbc0c
canonical RTLIL
9354e2ca48e233fd026217297eeae9160a330503adcc9f747cbc29bee4423cd0
the checker's files (sha256)
filesha256
check.pyceceeb055076dc2c59350f7778f09c600c8dfd96ff07485b9d6ba8d722ed69be
check/Comparator.lean3145eb578ca71e452eff05a398e8ad04673e6c72ca5343b234cb22e2cefe65a6
check/SvEval.leanfb51d72510b515460866c2798aad3c6f55295536e627b92854c3580af215bb91
check/clocked_rules.py73856a45905724544247ad29042bdc2f1778271ec07b15cdb3a5f214685165c1
check/envelope.py076db01a9791bcc25ee84e9b0033604a4b675f00b212eab0c864078e6a4748b7
check/postsynth.py4e1ee2110c63f24e033dd689c929ea686ddf10f4db23b9057c6fb711394c7558
lakefile.tomlf35a88404367d22906effc14d644aac9a9cad47dfd3b704ea8fec88acfaf9c4d
lean-toolchain62c2d9c0fc1ec4c67e151c11eff41ca004ef38e179cf9476c230406e6defedef
score/banlist.pyf18c14c23a14d55db63e202f42cc424dc84c1dd1c337f132ad60859dc9d5d33a
score/canon.ysbbd11227d45dc1365f27597fd45c565fe721ba2648450588fc4fd983d00b367b
score/fourstate.py95332451ae3754226fb87b46027385b46a91121e7eb9ae25b302bce756d90475
score/ge.json6a29196a3f4b58241f4c9af650c9141e4632b737214d563a11ba142a725c4bea
score/ge_seq.json54b93ca63888009d0671c8978e8ab7bf4fb8ce303bc78d3b4e1f83d946cc3201
score/ppa.py912031912c3e3f6790725161753e95415df34846bd8c27dde3eb707747ddbcbe
score/ppa_mapped.ys93547b343dbac135737e98516b1004a780e1cf2f579e1bd7fed82c908c6d4125
score/ppa_mapped_pins.json4b8688ba3f4d67681658e5944afe878592adf588cd416a8b47597ebe06deb045
score/ppa_pins.jsond66a6086a37a97f5985266057051979fb6a8a3c557d3ef9c42acc1b5e41502d8
score/score.py71d2e3b82f8813ec64a58f0a46909ca23dfab377db44eda6f294b713f45ae781
score/srcgate.py11952f61058051c9e8de91a801b672d07e66a29308e978156c04ffd9f0dbef45
score/svgolf.ysea58219d8ef14c3bad265218ee266ccdb709ac9d4dc5258edc34d51ee83a0445
score/svgolf_seq.ysc3874dbfc85921a87df6eacdfc6b2c9a0e2b34edd5738951e0d8bdb51f4558b2

Post-synthesis check

ls-sv's reading of the design and the scored netlist, simulated on the same vectors, agreed on every one. The vectors are a sample of the inputs: a guard against the two tools disagreeing, not a proof.

mode
full
vectors
256
full set
256
mismatches
0
point
default
seed
70d819c8f54fc93940d18d46d85cc02601d570a555a3a7c93f3a2d6371acfd3c
salted
no

Area against time

µm² × ps · lower left is better · ASAP7
aes_sbox: this design's sky130 area against time, among the task's designs5 designs by sky130 area (µm²) (x) and time (ps) (y), this one ringed; lower left is better. The table under the chart lists the same numbers.2500300035004000100015002000250030003500sky130 area (µm²)time (ps) · lower is betterpar's score: area × time = 3833 µm²·nsthe Pareto front of the entries2 designs at this point · sbox_table · sbox_tablesbox_bp_d16 · baseline, not proved · Score: 3494 µm²·ns · Area: 952.2 µm² · Delay: 3670 pssbox_bp · proved reference · par · 2026-10-30T22:46:45Z · Score: 3833 µm²·ns · Area: 892.1 µm² · Delay: 4297 ps2 designs at this point · sbox_table · sbox_tablethis design · tower-shuffle · submission · 2026-11-05 · Score: 2858 µm²·ns · Area: 890.9 µm² · Delay: 3208 psparthis design
aes_sbox: this design's sky130 area against time, among the task's designs5 designs by sky130 area (µm²) (x) and time (ps) (y), this one ringed; lower left is better. The table under the chart lists the same numbers.30004000100020003000sky130 area (µm²)time (ps) · lower is betterpar's score: area × time = 3833 µm²·nsthe Pareto front of the entries2 designs at this point · sbox_table · sbox_tablesbox_bp_d16 · baseline, not proved · Score: 3494 µm²·ns · Area: 952.2 µm² · Delay: 3670 pssbox_bp · proved reference · par · 2026-10-30T22:46:45Z · Score: 3833 µm²·ns · Area: 892.1 µm² · Delay: 4297 ps2 designs at this point · sbox_table · sbox_tablethis design · tower-shuffle · submission · 2026-11-05 · Score: 2858 µm²·ns · Area: 890.9 µm² · Delay: 3208 psparthis design
  • submission
  • proved reference
  • baseline (not proved)
  • the Pareto front of the entries
  • this design
  • par's score: area × time = 3833 µm²·ns
sky130 area (x) against the ranked time (y); lower left is better on both. The step line is the Pareto front of the entries (the proved references and the players' ranked records); a design under par's score curve has a better score than par. Baselines are drawn for scale: scored, never proved. Every design is in view.
the designs as numbers, by score
designkindarea (µm²)time (ps)score (µm²·ns)
tower-shuffle · this designsubmission890.853 2082858
sbox_bp_d16 baseline, not proved952.163 6703494
sbox_bp proved reference · par892.114 2973833
sbox_table proved reference3 445.802 2887884
sbox_table baseline, not proved3 445.802 2887884
aes_sbox: this design's ASAP7 area against time, among the task's designs5 designs by ASAP7 area (µm²) (x) and time (ps) (y), this one ringed; lower left is better. The table under the chart lists the same numbers.40050060070020304050ASAP7 area (µm²)time (ps) · lower is betterpar's score: area × time = 9.402 µm²·nsthe Pareto front of the entries2 designs at this point · sbox_table · sbox_tablesbox_bp_d16 · baseline, not proved · Score: 8.931 µm²·ns · Area: 14.245 µm² · Delay: 627 ps2 designs at this point · sbox_table · sbox_tablesbox_bp · proved reference · par · 2026-10-30T22:46:45Z · Score: 9.402 µm²·ns · Area: 13.355 µm² · Delay: 704 psthis design · tower-shuffle · submission · 2026-11-05 · Score: 7.458 µm²·ns · Area: 13.414 µm² · Delay: 556 psparthis design
aes_sbox: this design's ASAP7 area against time, among the task's designs5 designs by ASAP7 area (µm²) (x) and time (ps) (y), this one ringed; lower left is better. The table under the chart lists the same numbers.4005006007002040ASAP7 area (µm²)time (ps) · lower is betterpar's score: area × time = 9.402 µm²·nsthe Pareto front of the entries2 designs at this point · sbox_table · sbox_tablesbox_bp_d16 · baseline, not proved · Score: 8.931 µm²·ns · Area: 14.245 µm² · Delay: 627 ps2 designs at this point · sbox_table · sbox_tablesbox_bp · proved reference · par · 2026-10-30T22:46:45Z · Score: 9.402 µm²·ns · Area: 13.355 µm² · Delay: 704 psthis design · tower-shuffle · submission · 2026-11-05 · Score: 7.458 µm²·ns · Area: 13.414 µm² · Delay: 556 psparthis design
  • submission
  • proved reference
  • baseline (not proved)
  • the Pareto front of the entries
  • this design
  • par's score: area × time = 9.402 µm²·ns
ASAP7 area (x) against the ASAP7 time (y); lower left is better on both. The step line is the Pareto front of the entries (the proved references and the players' ranked records); a design under par's score curve has a better score than par. Baselines are drawn for scale: scored, never proved. Every design is in view.
the designs as numbers, by score
designkindarea (µm²)time (ps)score (µm²·ns)
tower-shuffle · this designsubmission13.4145567.458
sbox_bp_d16 baseline, not proved14.2456278.931
sbox_bp proved reference · par13.3557049.402
sbox_table proved reference51.81737319.33
sbox_table baseline, not proved51.81737319.33

Reproduce and verify

From svgolf/, with the pinned tools (reproduce a score lists them):

shell
# the ranked numbers, at the scoring point (from svgolf/, with the pinned Yosys and liberty)
python3.12 score/ppa.py d2880a7160dd09519db7626bdd17a0bff9cc65b9f87de0a6b66857c9dfc1ecc6.sv --task tasks/aes_sbox --path \
    --json out.json --netlist scored.v --repaired-netlist repaired.v

Expect, in out.json:

score.rtlil_sha256
9354e2ca48e233fd026217297eeae9160a330503adcc9f747cbc29bee4423cd0
ppa.netlist_sha256
17dab15a1dbbf2d016ae90e5bf85fc33136a09384a9ee9e1f560fd159f6b7511
ppa.repair.netlist_sha256
44c5b4c32e8f30fd21fb1e931e045d76a692a2b8113e73fb044c6c1ab61d7354
ppa.area_e4um2_sky130
8908544
ppa.delay_ps_sky130
3208

The schematic and the critical-path data are site/schematics/aes_sbox/cb336371552e63d0.json and its .svg, written by site/gen_schematics.py (the display instance is ppa.py ... --repaired-netlist, drawn by netlistsvg 1.0.2; repaired netlist sha256 44c5b4c32e8f30fd…).

From svgolf/, with the pinned tools (reproduce a score lists them):

shell
# the ASAP7 view's numbers, at the scoring point (from svgolf/, with the pinned Yosys; once:
# python3.12 score/ppa.py --pdk asap7 --fetch-liberty, the five pinned ASAP7 files into score/lib/asap7/)
python3.12 score/ppa.py d2880a7160dd09519db7626bdd17a0bff9cc65b9f87de0a6b66857c9dfc1ecc6.sv --task tasks/aes_sbox --pdk asap7 --no-mapped \
    --json out.json

Expect, in out.json:

ppa.netlist_sha256
17dab15a1dbbf2d016ae90e5bf85fc33136a09384a9ee9e1f560fd159f6b7511
ppa.repair.netlist_sha256
5f16602fa6382d8361e34c1d4c8a8a1a34fd14b61da01a9eeee56d98c1393adf
ppa.area_e5um2_asap7
1341360
ppa.delay_ps_asap7
556

leaderboard/asap7/aes_sbox.json keeps these numbers; python3.12 leaderboard/leaderboard.py asap7 --rescore --task aes_sbox weighs every design of the task again and compares, bit for bit.

Verify the record

Download the three files, then from svgolf/:

shell
# re-run the whole check on this record's files (the cost of the original check)
H=d2880a7160dd09519db7626bdd17a0bff9cc65b9f87de0a6b66857c9dfc1ecc6
mkdir -p rec/aes_sbox && cp "$H.json" "$H.sv" "$H.lean" rec/aes_sbox/
python3.12 leaderboard/leaderboard.py verify --data-dir rec --task aes_sbox --full

verify --offline checks only the hashes and the arithmetic; plain verify also rescores the design (no Lean; seconds for most designs, a minute or more for the largest), on sky130 and on ASAP7.