Module 43 min

Essential Tools - What to Learn and How

OpenLane Quick Start - Full RTL-to-GDS in One Command

Pro Tip

Reality Check — Industry EDA tools (DC, Innovus, PrimeTime, Calibre) are expensive and require a license. As a student, use the free alternatives below to build hands-on experience. Hiring managers know you won't have industry tool access - they want to see that you understand the concepts and can demonstrate hands-on work with open-source equivalents.

DomainIndustry ToolFree/Open AlternativeHow to Practice
SynthesisSynopsys DC / Cadence GenusYosys (open source)Synthesize your Verilog designs with Yosys. Understand liberty files. Write SDC constraints manually. Compare area reports.
Place & RouteCadence Innovus / Synopsys ICC2OpenROAD via OpenLane2Use OpenLane with Sky130 PDK. Run full RTL-to-GDS on a small design (UART, I2C, simple CPU). Examine each output.
STASynopsys PrimeTime / Cadence TempusOpenSTA (inside OpenLane)Read timing reports from OpenSTA. Understand slack calculation. Introduce timing violations manually and fix them.
SimulationSynopsys VCS / Cadence QuestaVerilator / Icarus VerilogWrite testbenches. Simulate your RTL. View waveforms in GTKWave. Practice writing self-checking testbenches.
Physical VerificationCalibre DRC/LVSMagic VLSI / KLayoutOpen Sky130 GDS in KLayout. Inspect metal layers. Run built-in DRC checks. Understand what each layer represents.
Parasitic ExtractionCalibre xRC / Synopsys StarRCOpenRCX (inside OpenROAD)Run OpenRCX on a placed-and-routed design. Examine the SPEF output. Understand how RC values affect timing.
Waveform ViewingSynopsys DVE / Cadence SimVisionGTKWaveView VCD dumps from Verilator/Icarus simulation. Practice reading waveforms, adding cursors, measuring timing.
Layout EditingCadence Virtuoso / Synopsys L-EditMagic VLSI / KLayoutDraw simple standard cells in Magic. Understand how transistors form. See the connection between schematic and layout.

OpenLane Quick Start - Full RTL-to-GDS in One Command

SHELL - OpenLane2 with Sky130 PDK
# Install OpenLane2 (requires Docker or Nix)
pip install openlane

# Create a minimal design config
mkdir my_design && cd my_design
cat > config.json << 'EOF'
{
  "DESIGN_NAME": "my_alu",
  "VERILOG_FILES": "src/alu.v",
  "CLOCK_PORT": "clk",
  "CLOCK_PERIOD": 10,
  "FP_CORE_UTIL": 40,
  "PL_TARGET_DENSITY": 0.4
}
EOF

# Run complete RTL-to-GDS flow
openlane config.json

# Outputs you'll find in runs/RUN_*/:
# synthesis/    → gate-level netlist (.v)
# floorplan/    → DEF with core/IO defined
# placement/    → placed cells DEF
# cts/          → clock tree built DEF
# routing/      → fully routed DEF + GDS
# signoff/      → timing reports (OpenSTA)
# signoff/      → DRC results (KLayout/Magic)

# View final GDS in KLayout:
klayout runs/RUN_latest/final/gds/my_alu.gds