SiliconPath Tools Digital Implementation Ortus EDA Suite
Digital Implementation System

A complete RTL-to-GDS flow, validated against the reference tools.

Ortus is an open, from-scratch EDA suite for Linux — RTL synthesis, place & route, and static timing in native C++. Each stage is checked against an independent tool, so the results can be reproduced, not taken on faith.

agni — synthesis sutra — place & route kala — static timing
ortus — rtl-to-gds flow
# synthesis $ agni -f synth.tcl [agni] mapped 127 cells · Fmax 1.09 GHz # place & route $ sutra -f pnr.tcl [sutra] placement legal · 0 overlaps · 312 nets routed # static timing $ kala -f sta.tcl WNS +219 ps TNS 0 ps timing MET
Overview

One flow, from register-transfer logic to routed layout.

Ortus takes Verilog RTL to a placed, routed, timing-analyzed layout using three cooperating engines that share Liberty libraries and hand off through standard netlist and DEF formats — the same separation of concerns a professional flow uses.

agni synthesizes RTL to a gate-level netlist with real NPN truth-table technology mapping. sutra floorplans, places, and routes it on a real metal stack with well-tap and filler insertion and clock-tree synthesis. kala analyzes timing with a slew-aware, pin-specific delay model and reports worst and total negative slack.

It runs entirely on commodity Linux — no license server, no dongle, no annual renewal — and every capability ships with the script that proves it against an independent reference tool.

Target platformLinux x86-64
ImplementationC++17, native
Input / outputVerilog → DEF / GDS
Included PDKssky130 · gf180 · 130nm
InterfacesCLI · TCL · Qt5 GUI
Current releasev0.30.18
Key benefits

Built for engineers, not for procurement.

A complete physical-design flow you can download, install, and audit — with results you can verify yourself.

Complete implementation flow

Synthesis, place & route, and static timing in one coherent suite — not a stitched-together collection of scripts.

Validated, not asserted

Each stage is checked against an independent reference tool. The proof scripts ship in the box.

Scriptable and interactive

Batch TCL scripts for CI, or drop into an interactive shell by typing the tool name. JSON reports for pipelines.

Any Liberty PDK

Ships with sky130, gf180, and a 130 nm kit. Plug in your foundry's Liberty, LEF, and GDS — the flow is PDK-agnostic.

Fast native engine

Everything is native C++17. Most designs complete in seconds, not hours — no cloud round-trip.

Free and open

No floating licenses, no call-home, no renewal. Run it on as many machines as you need.

Validation

Checked against the tools engineers already trust.

Every stage carries an independent reference — the same discipline a signoff flow uses. These numbers are measured on the open sky130 PDK and reproducible from the source tree.

Synthesis · agniProven
125 / 126
Designs whose synthesized netlist is logically equivalent to the RTL, checked by simulating both over identical stimulus.
golden: iverilog
Static timing · kalaValidated
7 / 7 correlate
Designs where kala's worst-slack tracks OpenSTA; per-stage cell delays match within about 10 ps on the critical path.
reference: OpenSTA 3.1.0
Placement · sutraVerified
0 violations
Every placement passes an independent legality gate — no overlaps, on-grid, in-die, legal row orientation.
check: legality gate
Signoff · routingIn development
DEF + GDS
The router emits DEF and GDS that Magic reads for DRC and Netgen for LVS. Intra-cell pin-access closure is the active frontier.
signoff: Magic · Netgen

Reproduce the whole scorecard with one command — bash scripts/prove_all.sh — given iverilog, OpenSTA, and Magic on your PATH.

Capabilities

Three engines. Two GUI viewers.

Each tool is a standalone binary with an interactive shell and a scriptable batch mode.

agni
≈ Genus / Design Compiler

RTL synthesis

Reads Verilog, runs technology-independent optimization, and maps to your standard-cell library with real NPN truth-table matching — not naive operator substitution. Produces a gate-level netlist with timing, area, and power reports, plus a native Qt5 schematic viewer (agni-gui).

agni -f synth.tcl · agni auto read_verilog rtl.v · elaborate · compile_ultra report_timing · report_area · write_verilog net.v
sutra
≈ Innovus / IC Compiler

Place & route

Floorplanning, simulated-annealing placement with timing-driven net weights, well-tap and filler insertion, H-tree clock-tree synthesis, and congestion-aware routing on a real metal stack. Writes DEF and GDS, with a native Qt5 layout viewer (sutra-gui) offering per-layer visibility.

read_verilog net.v · set_pdk sky130 · init_floorplan place_design · insert_tap_cells · clock_tree_synthesis route_design · write_gds · signoff -dir signoff_out
kala
≈ Tempus / PrimeTime

Static timing analysis

Builds a timing graph from the netlist and propagates slew-aware NLDM delays with pin-specific arcs, reporting worst and total negative slack, Fmax, and the critical path. Supports SPEF back-annotation, clock uncertainty, false and multicycle paths, and multi-corner PVT analysis.

create_clock -period 2000 clk · read_spef design.spef update_timing · report_timing -nworst 10 -hold report_global_timing · set_false_path -from a -to b
Documentation

Everything needed to run the flow.

Install, run the full RTL-to-GDS flow, and reference every command — verified against the shipping binaries.

1 Install

Pre-built binaries for x86-64 Linux (Ubuntu 20.04+, Debian 11+, RHEL 8+). GUI viewers need the Qt5 runtime. No compilation required.

# download and unpack wget https://ortus.siliconpath.in/download/ortus-linux-x64.tar.gz tar -xzf ortus-linux-x64.tar.gz && cd ortus-*-linux-x64 # install to /opt/ortus (symlinks into /usr/local/bin) sudo bash install.sh # or: bash install.sh --user sudo apt-get install -y libqt5widgets5 # optional: GUI viewers # verify agni --help sutra --help kala --help
2 The full flow — RTL to signed-off GDS

Each stage is a short script that reads the previous stage's output. The uart_tx example runs end to end, and every command shown is the real vocabulary the binaries dispatch — run agni -f synth.tcl, kala -f sta.tcl, sutra -f pnr.tcl from the example directory.

cd examples/uart_tx # 1 · synthesis — RTL -> gate netlist + SDC agni -f synth.tcl # read_verilog -> compile_ultra -> write_verilog / write_sdc # 2 · static timing (pre-layout, optional) — WNS / TNS / Fmax kala -f sta.tcl # read_verilog -> read_sdc -> update_timing -> report_timing # 3 · place & route — netlist -> DEF + GDS + SPEF sutra -f pnr.tcl # floorplan -> place -> CTS -> route -> native DRC -> write_gds # 4 · signoff — REAL Magic DRC + Netgen LVS (needs a PDK + those tools) # append to pnr.tcl, or run after P&R in the sutra shell: ortus% write_spice uart_tx.spice ortus% signoff -dir signoff_out # -> signoff_out/signoff.json (honest PASS / FAIL)
3 PDK access

Ortus reads standard Liberty .lib for timing and LEF for geometry, so any PDK works. For sky130 the open files are one command away; full foundry signoff decks come from volare.

# open-source sky130 cell + tech LEF (DRC-grade geometry) bash scripts/fetch_sky130_ref.sh # -> pdks/sky130_ref/*.lef (GF180: fetch_gf180.sh) # point the flow at the PDK (inside a script or the interactive shell) set_pdk sky130 # power rails, metal stack, DRC deck read_lef pdks/sky130_ref/sky130_fd_sc_hd.tlef read_lef pdks/sky130_ref/sky130_fd_sc_hd.lef read_liberty my_corner.lib # or: read_builtin_lib sky130 # full signoff PDK (Magic / Netgen decks + GDS) via volare, then: export PDK_ROOT=/path/containing/sky130A
4 Command reference

The three shells share one dispatch, so a command works in whichever tool the stage belongs to. These are the actual command names — run any script with -f, or type them at the interactive prompt. Select a tool.

Run
agni -f synth.tclRun a synthesis script (the shipped flow).
agni autoAutonomous closed loop — RTL to layout, choosing each next move from measured results.
Synthesis shell
set_pdk / read_builtin_libSelect the PDK and load its cell library.
read_verilog / elaborateRead RTL and elaborate the top module.
read_libertyLoad a Liberty timing library (a foundry corner).
read_sdc / create_clockLoad constraints, or define the clock (ps).
set_max_fanout / set_max_transitionDesign-rule limits for mapping.
compile_ultraTechnology-independent optimization, then map to cells.
report_area / report_timing / report_qor / report_powerPost-synthesis reports.
write_verilog / write_sdcWrite the mapped netlist and constraints.
Setup
read_verilog / set_top_moduleGate-level netlist from agni, and the top cell.
set_pdk / read_libertyPDK rules and Liberty library (or read_builtin_lib).
read_lefTech + cell LEF — real pin and via geometry.
read_sdc / create_clockConstraints, or the clock (ps).
Floorplan · place · route
init_floorplanAuto-size the die: -utilization or -die_width -die_height.
create_power_planPower rings, stripes, and follow-pin rails.
place_designAnalytical + legalized placement (-effort).
insert_tap_cellsStamp well-taps on the latch-up pitch.
clock_tree_synthesisBuild the balanced clock H-tree.
route_designGlobal + detailed grid routing.
optimize_viasRedundant vias where DRC-legal (off by default).
insert_fillersFill row gaps with filler / decap cells.
Signoff · output
run_drc / report_drcNative DRC predictor — fast, not signoff.
write_def / write_spef / write_gdsLayout, parasitics, and mask geometry.
write_spiceSchematic netlist for LVS.
signoff -dirDrive Magic DRC + Netgen LVS → signoff.json.
Setup
read_verilog / set_top_moduleGate-level netlist and top cell.
set_pdk / read_libertyPDK and Liberty timing library (or read_builtin_lib).
read_spefBack-annotate wire RC from SPEF.
Constraints
read_sdc / create_clockLoad an SDC, or define the clock (ps).
set_clock_uncertaintySetup jitter / uncertainty.
set_false_pathExclude a path. -from -to
set_multicycle_pathN-cycle path. -setup N -from -to
set_input_delay / set_output_delayIO timing budgets.
Analysis
update_timingPropagate arrivals / required times.
report_timingCritical paths. -nworst N -hold -max_paths N
report_global_timing / report_clock_timingWNS / TNS summary and clock report.
check_timingUnconstrained / unclocked checks.
5 Reproduce the validation

The proof scripts check each stage against its reference tool and print one scorecard. Requires iverilog, OpenSTA, and — for physical signoff — Magic + Netgen with a PDK on PATH.

bash scripts/verify_equiv.sh # synthesis vs iverilog golden bash scripts/verify_place.sh # placement legality gate bash scripts/signoff/sta_correlate.sh # kala vs OpenSTA bash scripts/prove_all.sh # all stages, one scorecard # physical signoff: DEF -> Magic DRC + Netgen LVS (needs PDK_ROOT) bash scripts/signoff/run_signoff.sh uart_tx.def uart_tx uart_tx.spice
Comparison

The same workflow. Zero licensing cost.

Ortus is younger and smaller than the incumbents — and honest about it. Here is the map.

CapabilitySynopsysCadenceOrtus
RTL synthesisDesign CompilerGenusagni
Place & routeIC Compiler 2Innovussutra
Static timingPrimeTimeTempuskala
Schematic + layout GUIYesYesYes — Qt5
TCL script flowYesYesYes
Reference-checked claimsinternalinternalpublic scripts
Signoff flow (Magic DRC + Netgen LVS)built-inbuilt-inintegrated
DRC / LVS signoff-clean at scaleYes — matureYes — maturein progress
Annual license$1M+/yr$1M+/yrFree
Open sourceNoNoYes
Resources

Go deeper.

Download

Get Ortus EDA

Pre-built binaries for Linux x86-64. No compilation required.

Ortus EDA Suite v0.30.18 — Linux x86-64

All tools, sky130_hd + ortus_130nm + gf180mcu PDKs, examples, and the install script.

Ubuntu 20.04+Debian 11+RHEL 8+x86-64Qt5 GUI
One-liner install
wget https://ortus.siliconpath.in/download/ortus-linux-x64.tar.gz && tar -xzf ortus-linux-x64.tar.gz && cd ortus-*-linux-x64 && sudo bash install.sh