Summary
Files: metrics.json 16.9 kB · history.json 3.6 kB
Tests: 5/5 on RTL, 5/5 on gates
The same cocotb tests, on the RTL and on the synthesized netlist with the PDK cell models.
Seeds: RTL 1791688714 · gates 1791688855. Each seed reruns its run exactly.
| test | RTL | gates |
|---|---|---|
reset_ | PASS | PASS |
led_ | PASS | PASS |
led_ | PASS | PASS |
reset_ | PASS | PASS |
random_ | PASS | PASS |
History (7 commits)
- passed
- total
- passed
- total
Files: cocotb-results.xml 1.3 kB · cocotb-gl-results.xml 1.3 kB
Regression: 6/6 runs passed
Each row is a module of the test list, run once for each of its seeds. Under it are the tests it holds.
Base seed 1780737999. make regress SEED=1780737999 reruns the list with the same seeds.
| module and its tests | seeds | runs passed |
|---|---|---|
test_
| 5 | 5/5 |
test_
| 1 | 1/1 |
History (7 commits)
- passed
- total
Files: regress-summary.json 682 B
Coverage
Code coverage of the RTL, from the 6 runs of Regression, run again under Verilator and merged.
| kind | covered | share | |
|---|---|---|---|
| Block | 1 / 1 | 100.0% | |
| Branch | 2 / 2 | 100.0% | |
| Toggle | 19 / 19 | 100.0% |
Not measured: expression and FSM coverage. The Verilator in the image does not support them.
Coverage by module (1)
| module | block | branch | toggle |
|---|---|---|---|
blinky | 100.0% | 100.0% | 100.0% |
History (7 commits)
- Block
- Branch
- Toggle
Files: coverage-summary.json 781 B
Timing
Timing is met: no setup or hold slack is negative.
Worst slack after routing, over every corner the flow analysed.
| check | worst slack | violations | reg-to-reg |
|---|---|---|---|
| setup | +5.96 ns | 0 | +6.38 ns |
| hold | +0.11 ns | 0 | +0.11 ns |
Slew, capacitance and fanout limits
Design rule violations after routing, against the limits in the run's constraints. They are warnings: the flow does not stop on them, and the timing verdict above leaves them out.
| limit | violations | corners |
|---|---|---|
| max slew | 0 | none |
| max capacitance | 0 | none |
| max fanout | 0 | none |
Constraints the run used (5)
From the post-route timing step. The slack above holds only for these values.
| constraint | value | source |
|---|---|---|
| clock period | 10 ns (100 MHz) | set in config.yaml |
| clock uncertainty | 0.25 ns | flow default |
| clock transition | 0.15 ns | flow default |
| timing derate | 5% | flow default |
| input and output delay | 20% of the clock period (2 ns) | flow default |
History (7 commits)
Files: blinky.sdc 1.6 kB
Area and Instances
Standard cell library sky130_fd_sc_hd, single threshold voltage.
Synthesis produced 822.0 µm² of instances. Place and route grew it by 23% to 1,014.7 µm².
- flip-flops 420.4 µm²
- combinational logic 401.6 µm²
- added or resized by place and route 192.7 µm²
Instances: 65 after synthesis, 116 after routing
Placed instances, by LibreLane class. Fill is not counted.
- from synthesis 65 (32 logic, 17 inverters, 16 sequential)
- added by the flow 51 (27 well taps, 21 timing-repair buffers, 17 of them for hold, 3 clock buffers)
Drive strength of the instances (3 sizes)
Well taps, decap, fill and antenna diodes have no drive strength and are not counted.
| drive strength | after synthesis | after routing |
|---|---|---|
| X1 | 0 | 17 |
| X2 | 65 | 69 |
| X16 | 0 | 3 |
| Total | 65 | 89 |
Place and route added 17 X1, 4 X2 and 3 X16 instances.
History (7 commits)
- flip-flops
- combinational logic
- added by place and route
- from synthesis
- added by the flow
Files: blinky.nl.v 17.9 kB
Power
0.143 mW in total at corner nom_tt_025C_1v80 (typical wire RC, typical transistors, 25 °C, 1.80 V), clock 100 MHz. The table is in µW.
Switching activity is OpenSTA's default, 0.1 toggles per clock on data nets. It is not taken from simulation, so this estimates where power goes. It does not measure a workload.
| group | internal | switching | leakage | total | share | |
|---|---|---|---|---|---|---|
| Sequential | 64.9 | 0.0 | <0.1 | 64.9 | 45.5% | |
| Combinational | 1.0 | 2.7 | <0.1 | 3.8 | 2.6% | |
| Clock | 52.1 | 21.9 | <0.1 | 73.9 | 51.9% | |
| Total | 118.0 | 24.6 | <0.1 | 142.6 | 100.0% |
Static IR drop, worst: 0.18 mV, 0.0098% of 1.80 V, from OpenROAD (ir__drop__worst).
History (7 commits)
Signoff checks
The DRC row adds the errors of both tools.
| check | errors | result |
|---|---|---|
| DRC Magic and KLayout | 0 | PASS |
| LVS | 0 | PASS |
| antenna checked by OpenROAD, not by DRC | 0 | PASS |
| XOR Magic GDS against KLayout GDS | 0 | PASS |
Not analysed: electromigration, crosstalk and dynamic IR drop.
How it was built
One picture per stage of the real run, which took 1 min 7 s.

- Synthesisno picture3.0 s
RTL becomes gates; lint and a first timing check
Your Verilog is checked, then turned into logic gates from the Sky130 cell library. There is no layout yet, so this stage has no picture. pick the die size, power grid and tap cells
The die is the outline of the chip. The empty rows are where gates will sit, and the stripes are the metal rails that bring power to them.give every gate a place on the die
Every gate now has a place on the die. The small colored blocks are the cells, packed into the rows.build the clock distribution and fix its timing
Extra buffers now carry the clock to every flip-flop at nearly the same moment. They are small cells added among the others.draw the wires; repair antenna violations
Metal wires now connect the gates. The colored lines drawn over the cells are wires on different metal layers.fill, extract parasitics, final timing, write the GDS
Filler cells close the gaps between the gates, and timing is measured again from the real wires. The picture is the layout that is written to the GDS file.DRC, LVS, antenna, XOR: can it be made?
The checks a fab would run on the finished layout. This is the picture of that layout, the one that is handed over.
Files: floorplan.png 46.6 kB · placement.png 120.7 kB · clock-tree.png 130.6 kB · routing.png 162.3 kB · finish-gds.png 169.5 kB




