← All examples

Minimal synchronous counter · Example, read-only. Explore every file, run, and layout.

A minimal synchronous counter taken all the way from RTL to a routed, DRC- and LVS-clean layout. The best place to start.

Make my own copyFree account · uses no trial credits
Custom ASIC / SoC · Minimal synchronous counterPersisted
Custom ASIC / SoC · Minimal synchronous counter
Project ID eabdddeb-35cd-41f8-b479-e297077f6ac8
Files
The HDL is the source of truth. AI suggestions are reviewable before they touch the project.
SiliconForge · flow mapReady to run

How your design is built

Each stage shows the files it used and produced, and who made them. Select a stage to open or protect its files, then rerun just that stage or everything after it. Whether your goals are met is in Evaluation.

6 steps with evidence2 skipped / unavailable17 expected outputs missing2 RTL files1 testbenches0 mapped artifactsLatest goal report22 passed
Manufacturing process

AI recommendation: SkyWater 130 nm · HS. You can change the platform and rerun; each platform uses its own libraries and physical-design setup.

Workflow run history

0 saved runs, newest first.

No saved workflow runs yet.

End-to-end development map

Follow the design, files, and evidence through every tool

Branches show retries and optional checks. Select a step to inspect its recorded inputs, outputs, and tool logs below. Pan and zoom to explore the map.

Run status · latest saved evidence
RunningPassedCompletedFailedBlockedStale evidenceReady to runSkippedNot run yetNot integrated / installedExpected file missing
Selected stage · 01

RTL simulation

Icarus Verilog

A testbench is present. Run it to establish behavioral evidence.

Inputs used
Who made it · lock = protected from AI repairs
  • You
  • You
  • You
Outputs and measurements

No output or measurement recorded yet.

Verification layer

Goals and test evidence

22 passed22 checked
synchronous_resetBehavior: Active-low reset clears the count on the next rising clock edge and does not change the count before that edge resultpassed

synchronous_reset = 1 result; goal passed.

Measured 1 result · RTL simulation
Icarus Verilog · passed
synchronous_reset = 1 result; met the goal target.
Used: rtl/counter.sv · tb/testbench.sv
reset_priority_over_enableBehavior: When reset is asserted together with enable, reset clears the count instead of incrementing it resultpassed

reset_priority_over_enable = 1 result; goal passed.

Measured 1 result · RTL simulation
Icarus Verilog · passed
reset_priority_over_enable = 1 result; met the goal target.
Used: rtl/counter.sv · tb/testbench.sv
enabled_incrementBehavior: With reset inactive and enable high, the count increments by exactly one on every rising clock edge resultpassed

enabled_increment = 1 result; goal passed.

Measured 1 result · RTL simulation
Icarus Verilog · passed
enabled_increment = 1 result; met the goal target.
Used: rtl/counter.sv · tb/testbench.sv
disabled_holdBehavior: With reset inactive and enable low, the count holds its previous value across rising clock edges resultpassed

disabled_hold = 1 result; goal passed.

Measured 1 result · RTL simulation
Icarus Verilog · passed
disabled_hold = 1 result; met the goal target.
Used: rtl/counter.sv · tb/testbench.sv
modulo_256_rolloverBehavior: With enable high, the count transitions from 255 to 0 on the next rising clock edge resultpassed

modulo_256_rollover = 1 result; goal passed.

Measured 1 result · RTL simulation
Icarus Verilog · passed
modulo_256_rollover = 1 result; met the goal target.
Used: rtl/counter.sv · tb/testbench.sv
testbench_pass= 1 resultpassed

testbench_pass = 1 result; goal passed.

Measured 1 result · RTL simulation
Icarus Verilog · passed
testbench_pass = 1 result; met the goal target.
Used: rtl/counter.sv · tb/testbench.sv
setup_slack_ns≥ 0 nspassed

setup_slack_ns = 9.10509 ns; goal passed.

Measured 9.10509 ns · OpenSTA
OpenSTA · passed
setup_slack_ns = 9.10509 ns; met the goal target.
Used: analysis/opensta_timing.tcl · constraints/counter.sdc · generated/netlists/synchronous_counter.mapped.v · generated/libraries/sky130hs/sky130_fd_sc_hs__tt_025C_1v80.lib · generated/layout/synchronous_counter.openroad.spef
global_route_overflow≤ 0 edgespassed

global_route_overflow = 0 edges; goal passed.

Measured 0 edges · OpenROAD
OpenROAD · passed
global_route_overflow = 0 edges; met the goal target.
Used: analysis/openroad_flow.tcl · constraints/counter.sdc · generated/netlists/synchronous_counter.mapped.v · generated/libraries/sky130hs/sky130_fd_sc_hs__tt_025C_1v80.lib
layout_export_complete= 1 resultpassed

layout_export_complete = 1 result; goal passed.

Measured 1 result · OpenROAD
OpenROAD · passed
layout_export_complete = 1 result; met the goal target.
Used: analysis/openroad_flow.tcl · generated/netlists/synchronous_counter.mapped.v · generated/libraries/sky130hs/sky130_fd_sc_hs__tt_025C_1v80.lib
parasitic_extraction_complete= 1 resultpassed

parasitic_extraction_complete = 1 result; goal passed.

Measured 1 result · OpenROAD
OpenROAD · passed
parasitic_extraction_complete = 1 result; met the goal target.
Used: analysis/openroad_flow.tcl · generated/netlists/synchronous_counter.mapped.v · generated/libraries/sky130hs/sky130_fd_sc_hs__tt_025C_1v80.lib
antenna_net_violation_count≤ 0 netspassed

antenna_net_violation_count = 0 nets; goal passed.

Measured 0 nets · OpenROAD
OpenROAD · passed
antenna_net_violation_count = 0 nets; met the goal target.
Used: analysis/openroad_flow.tcl · generated/netlists/synchronous_counter.mapped.v · generated/libraries/sky130hs/sky130_fd_sc_hs__tt_025C_1v80.lib
antenna_pin_violation_count≤ 0 pinspassed

antenna_pin_violation_count = 0 pins; goal passed.

Measured 0 pins · OpenROAD
OpenROAD · passed
antenna_pin_violation_count = 0 pins; met the goal target.
Used: analysis/openroad_flow.tcl · generated/netlists/synchronous_counter.mapped.v · generated/libraries/sky130hs/sky130_fd_sc_hs__tt_025C_1v80.lib
antenna_check_complete= 1 resultpassed

antenna_check_complete = 1 result; goal passed.

Measured 1 result · OpenROAD
OpenROAD · passed
antenna_check_complete = 1 result; met the goal target.
Used: analysis/openroad_flow.tcl · constraints/counter.sdc · generated/netlists/synchronous_counter.mapped.v · generated/libraries/sky130hs/sky130_fd_sc_hs__tt_025C_1v80.lib
drc_violation_count≤ 0 violationspassed

drc_violation_count = 0 violations; goal passed.

Measured 0 violations · KLayout DRC
KLayout · passed
drc_violation_count = 0 violations; met the goal target.
Used: generated/layout/synchronous_counter.openroad.gds
layout_extraction_complete= 1 resultpassed

layout_extraction_complete = 1 result; goal passed.

Measured 1 result · Magic layout extraction
Magic VLSI · passed
layout_extraction_complete = 1 result; met the goal target.
Used: generated/layout/synchronous_counter.openroad.gds
lvs_match= 1 resultpassed

lvs_match = 1 result; goal passed.

Measured 1 result · Netgen LVS
Netgen LVS · passed
lvs_match = 1 result; met the goal target.
Used: signoff/layout_extracted/synchronous_counter.spice · signoff/reference/synchronous_counter.post-route.v
power_grid_vdd_connected= 1 resultpassed

power_grid_vdd_connected = 1 result; goal passed.

Measured 1 result · OpenROAD
OpenROAD · passed
power_grid_vdd_connected = 1 result; met the goal target.
Used: generated/netlists/synchronous_counter.mapped.v · generated/libraries/sky130hs/sky130_fd_sc_hs__tt_025C_1v80.lib · constraints/counter.sdc · analysis/openroad_flow.tcl
power_grid_vdd_unconnected_instances≤ 0 instancespassed

power_grid_vdd_unconnected_instances = 0 instances; goal passed.

Measured 0 instances · OpenROAD
OpenROAD · passed
power_grid_vdd_unconnected_instances = 0 instances; met the goal target.
Used: generated/netlists/synchronous_counter.mapped.v · generated/libraries/sky130hs/sky130_fd_sc_hs__tt_025C_1v80.lib · constraints/counter.sdc · analysis/openroad_flow.tcl
power_grid_vss_connected= 1 resultpassed

power_grid_vss_connected = 1 result; goal passed.

Measured 1 result · OpenROAD
OpenROAD · passed
power_grid_vss_connected = 1 result; met the goal target.
Used: generated/netlists/synchronous_counter.mapped.v · generated/libraries/sky130hs/sky130_fd_sc_hs__tt_025C_1v80.lib · constraints/counter.sdc · analysis/openroad_flow.tcl
power_grid_vss_unconnected_instances≤ 0 instancespassed

power_grid_vss_unconnected_instances = 0 instances; goal passed.

Measured 0 instances · OpenROAD
OpenROAD · passed
power_grid_vss_unconnected_instances = 0 instances; met the goal target.
Used: generated/netlists/synchronous_counter.mapped.v · generated/libraries/sky130hs/sky130_fd_sc_hs__tt_025C_1v80.lib · constraints/counter.sdc · analysis/openroad_flow.tcl
erc_violation_count≤ 0 violationspassed

erc_violation_count = 0 violations; goal passed.

Measured 0 violations · CVC-RV
CVC-RV · passed
erc_violation_count = 0 violations; met the goal target.
Used: signoff/layout_extracted/synchronous_counter.spice
erc_check_complete= 1 resultpassed

erc_check_complete = 1 result; goal passed.

Measured 1 result · CVC-RV
CVC-RV · passed
erc_check_complete = 1 result; met the goal target.
Used: signoff/layout_extracted/synchronous_counter.spice
Loading tool and run history…Available stages run automatically when their inputs and enabled tools are ready. Physical implementation and fabrication signoff still require project-specific flows and tools.
Simulation
Run the testbench to compile and simulate the current HDL project.