Understanding every file type in the VLSI design flow — from writing Verilog to generating chip layout.
Each stage consumes inputs and produces outputs that feed the next stage
| Extension | Full Name | Written / Generated | Used By |
|---|---|---|---|
| .v | Verilog Source | ✍️ You write it | iverilog, Yosys |
| .sdc | Synopsys Design Constraints | ✍️ You write it | OpenROAD |
| .vcd | Value Change Dump | 🤖 iverilog generates | GTKWave, Covered |
| .lib | Liberty Timing Library | 📦 Comes with PDK | Yosys, OpenROAD |
| .lef | Library Exchange Format | 📦 Comes with PDK | OpenROAD |
| .def | Design Exchange Format | 🤖 OpenROAD generates | Layout viewer |
always blocks, assign
statements, and state machines.$dumpfile to create waveforms. Not synthesized.// Example: 4-bit counter RTL (counter_4bit.v)
module Mycounter (
input clk, rst,
output reg [3:0] count
);
always @(posedge clk or posedge rst)
if (rst) count <= 0;
else count <= count + 1;
endmodule
iverilog. The testbench instantiates your design and drives its ports.# Compile design + testbench
$ iverilog -o sim_output design.v testbench.v
# Run simulation (generates .vcd)
$ vvp sim_output
# View waveforms
$ gtkwave waveform.vcd
covered report to view results.# Score coverage
$ covered score -t top_module -v design.v -vcd waveform.vcd -o coverage.cdd
# View coverage report
$ covered report coverage.cdd
always blocks to gates and flip-flops.# Yosys synthesis commands
yosys> read_verilog design.v
yosys> synth -top module_name
yosys> dfflibmap -liberty Nangate45_typ.lib # Map flip-flops
yosys> abc -liberty Nangate45_typ.lib # Map combinational logic
yosys> write_verilog design_synth.v # Output netlist
yosys> stat -liberty Nangate45_typ.lib # Print cell count & area
# OpenROAD PDA flow
openroad> read_liberty Nangate45_typ.lib # Cell timing
openroad> read_lef Nangate45_tech.lef # Metal layers
openroad> read_lef Nangate45_stdcell.lef # Cell geometries
openroad> read_verilog design_synth.v # Gate netlist
openroad> read_sdc design.sdc # Timing goals
openroad> initialize_floorplan ... # Define chip area
openroad> global_placement -density 0.6 # Place cells
openroad> clock_tree_synthesis ... # Build clock tree
openroad> global_route # Route wires
openroad> detailed_route # Final routing
openroad> write_def design_final.def # Output layout!
design.v — Your RTL logictestbench.v — Simulation stimulusdesign.sdc — Timing constraintsyosys_run.tcl / openroad_run.tcl — Tool scripts
waveform.vcd — Signal dump from simcoverage.cdd — Coverage reportdesign_synth.v — Gate netlistdesign_final.def — Chip layout
Nangate45_typ.lib — Cell timing/powerNangate45_tech.lef — Metal layer rulesNangate45_stdcell.lef — Cell geometry