Testchip Tool-Flow Tutorial
Current version: | |
Installed by: | Seongmoo Heo |
The testchip tool-flow of Assam group for 0.18um TSMC process was originally
developed by Albert Ma. This tutorial is based on his "Design Flow"
presentation slides. In this example, I build a testchip called
HEOMOO3. HEOMOO3 has two datapaths: one is connected to VDDdut supply and the
other to VDDdut2. The one connected to VDDdut2 can be deactived through sleep
transistors and an external sleep signal.
HEOMOO3 uses the same pad-ring structure as ATC0 and has a
custom-made datapaths and synthesized control logic gates. HEOMOO3 has 5
external input pins, 8 external output pins, 1 clock pin, and the rest of pins
are power (2 special DUT power poins) and ground pins. The tutorial can be
found at /home/bits6/heomoo/heomoo3chip/ which we assume as the home
directory for this tutorial. It has subdirectories such as abstract,
cds, design, mentor, pks, pm,
se, and simulation.
abstract generates geometry/antenna libraries for custom-cells.
cds includes Cadence custom-cell schematics and layouts,
design has non-Cadence custom-cell source files CDL, floorplan, GDS,
custom-made libraries, and verilog files), extracted netlists, and simulator
binary files.
mentor is used for DRC and LVS verification and RC extraction.
pks does synthesis and placement.
pm generates timing libraries.
se does routing.
simulation runs circuit-level simulation.
*NOTE: if OS is not mentioned separately, use Linux.
RTL Design Stage
Function: RTL design
Directory: ./design/verilog/
Output: verilog files (chip_nopads.v, inv_reg.v)
Function: RTL simulation and vector generation
Tool: vtoc, g++
Setup: setup vcs, setup vtoc
Directory: ./design/bin/
Input: all verilog files except for the top-level (chip.v) including pads, c++
wrapper file (chip_testbed.cc)
Output: executable simulator
(atc2chip_csim) and VCD output (atc2chip_nopads_vtoc.vcd)
Viewer: gtkwave
Note: First, vtoc converts verilog files to c++. The converted c++ RTL
files are wrapped with the c++ wrapper file and compiled to generate a
simulator. The simulator generates inputs and outputs to the chip in VCD
format.
Floorplanning Stage
Function: pad-ring generation
Tool: padgen.rb
Setup:
Directory: ./design/floor/
Input: pad description file (pads)
Output: pad-ring DEF file (padring.def) and pad-ring verilog file (atc2chip.v)
Note: The pad description file describes the number of pins and the size of
the whole chip. atc2chip.v includes pads and
atc2chip_nopad.v which has the actual design.
Function: floorplanning
Tool:
Setup:
Directory: ./design/floor/atc2chip/
Input:
Output: initial floorplan DEF file (padring.def)
Note: floorplan.def is the initial floorplan including power/ground
rings and fixed (not placed) components.
There is no floorplanning tool yet and
the initial floorplanning should be done by directly typing in the locations
of components, power/ground rings and stripes.
Custom-Cell Design Stage
Function: custom-cell schematic design
Tool: Cadence schematic editor (icfb)
Setup: setup ic
Example: ./cds
Input:
Output: Cadence custom-cell schematics
Note: Custom-cell schematics are located under heomoo3chip library.
VSS is used for a ground pin. Make sure that the bottom-left point of prBound
is located to the zero point.
Function: custom-cell layout design
Tool: Cadence virtuoso (icfb)
Setup: setup ic
Directory: ./cds/
Input:
Output: Cadence custom-cell layout files (invheomoo)
Note: Custom-cell layouts are located under heomoo3chip library.
Function: custom-cell DRC verification
Tool: Mentor Graphics Calibre DRC
Setup: setup mentic
Directory: ./cds/mentor/drc/
Input: Cadence custom-cell layouts
Output: DRC results
Note: runset - ./cds/mentor/drc/runset, calibre setup for layout export - ./cds/streamout
Function: custom-cell LVS verification
Tool: Mentor Graphics Calibre LVS
Setup: setup mentic
Directory: ./cds/mentor/lvs/
Input: Cadence custom-cell layouts and schematics
Output: LVS results
Note: runset - ./cds/mentor/lvs/runset, calibre setup for layout export -
./cds/streamout, calibre setup for netlist export - ./cds/cdlout
Function: custom-cell stream library generation
Tool: Cadence pipo
Setup: setup ic
Directory: ./cds
Input: Cadence cell layout files
Output: custom-cell library GDS file (./design/gds/chiplib.gds)
Note: All custom-cell GDS files are wrapped inside a custom-cell library GDS
file. Blocks only include top-level units
Modify: Makefile , streamout.il
Function: custom-cell CDL generation
Tool: Cadence pipo
Setup: setup ic
Directory: ./cds
Input: Cadence cell schematic files
Output: custom-cell CDL files (./cds/simulation/cds/*.cdl)
Modify: Makefile
Custom-Cell Library Generation Stage
Function: geometry/antenna library generation
Tool: Cadence abstract
Setup: setup soc
Directory: ./abstract/
Input: custom-cell library GDS file (./design/gds/chiplib.gds), technology
file (tech.dpux)
Output: custom-cell geometry LEF file (chip.lef) and custom-cell antenna
LEF file (chip-antenna.lef)
OS: Solaris
Note: LEF stands for Library Exchange Format for placement and route. Geometry
LEF file has information on the cell size and pins.
Modify: Makefile, tech.dpux, gds.li, cellname.li
Function: custom-cell layout extraction
Tool: Mentor Graphics Calibre xRC
Setup: setup mentic
Directory: ./design/spice/
Input: custom-cell library GDS file (./design/gds/chiplib.gds)
Output: RC extracted custom-cell netlists
Note: Each cell in the chip lib GDS file is extracted separately.
Modify: Makefile
Function: path delay measurement
Tool: Synopsys pathmill
Setup: setup pm
Directory: ./pm/
Input: RC extracted custom-cell netlists (./design/spice/*.sp, *.sp.pex,
*.sp.*.pxi), pathmill control files (cfg, char), netlists (./pm/*/netlist.sp)
Output: SLIBS (./pm/*/*.lut.slib)
Note: Make separate directories for each custom-made cells and link
netlists. Libheader includes pathmilll information on pgram and laram.
Modify: Makefile, cfg, char, netlist.sp, libheader
Function: timing library generation
Tool: Cadence syn2tlf, libcompile
Setup: setup ic, setup spr
Directory: ./pm/
Input: SLIBS (./pm/*/*.lut.slib)
Output: custom-cell TLF file (chip.tlf) and custom-cell ALF file
(chip.alf)
OS: Solaris
Note: TLF stands for Timing Library Format for placement and route and ALF is
a binary version of TLF. Each RC extracted cell is run with pathmill and each
result (.lut.slib) is combined into a timing library file (.lib)
which is translated into two other chip timing library files (.tlf and
.alf)
Modify: Makefile, libheader
SPR (Synthesis,Placement,Routing) Stage
Function: synthesis and placement
Tool: Cadence PKS
Setup: setup spr
Directory: ./pks/floorplan/
Input: pad-ring verilog file (./verilog/chip.v), custom-cell geometry LEF
file (./design/lib/chip.lef), custom-cell ALF file
(./design/lib/chip.alf), pad-ring DEF file (./design/floor/padring.def),
floorplan DEF file (./design/floor/floorplan.def), standard-cell verilog
files (./verilog/chip_nopads.v, inv_reg.v), standard-cell
geometry/timing library files (LEF,TLF,ALF), pad geometry/timing library files
(LEF,TLF,ALF)
Output: synthesized chip verilog (chip.v), placed chip DEF file (chip.def)
OS: Solaris
Note: Timing constraints are met and a balanced clock tree is generated at
this stage. The synthesized chip verilog is not used at all in this tool flow
Modify: run.tcl, design.tcl
Function: routing
Tool: makespecial2.rb, Cadence SE/wroute
Setup: setup dsmse
Directory: ./se/
Input: SE init file (se.ini), placed chip DEF file
(./pks/floorplan/chip.def), custom-cell geometry/antenna LEF files
(./design/lib/chip.lef, ./design/lib/chip_antenna.lef),
standard-cell geometry/antenna LEF files, pad geometry/antenna LEF file, GDS
map file (gds2.map)
Output: top-level chip GDS file (./design/gds/chip.gds), placed and routed
chip DEF file (./se/output/chip_routed.def)
OS: Solaris
Note: Before routing, makespecial2.rb changes supply and ground nets to
special nets. Sroute adds filler cells, creates power/ground grids (metal 6
for vertical wires and metal 5 for horizontal wires), and connect power/ground
pins to the power/ground rings. Metal 5 power/ground wires should go over the
datapath cells. After sroute, wroute routes all the signals starting with
clock signals. To connect DUTs with special DUT Vdds, makespecial.rb should be
modified
Modify: run.mac, makespecial.rb
Merging Stage
Function: stream merging
Tool: gdsMerge
Setup:
Directory: ./design/gds/
Input: top-level chip GDS file (chip.gds), custom-cell library GDS file
(chiplib.gds), standard-cell library GDS file, pad library GDS file
Output: chip GDS file (top.gds)
GDS Viewer: calibredrv (/home/bits6/heomoo/design/gds/layers.txt)
Note: This chip GDS file is the golden GDS file submitted to a foundry.
Function: CDL merging
Tool: def2cdl, mergecdl
Setup:
Directory: ./design/cdl/
Input: placed and routed chip DEF file (./se/output/chip_routed.def),
custom-cell CDL files (./cds/simulation/cdl/*.cdl), standard-cell
library CDL file, pad library CDL file
Output: chip CDL file (top.cdl)
OS: Solaris (def2cdl)
Note: Before merging, the placed and routed chip DEF file should be translated
into a CDL file by def2cdl. The chip CDL file is the golden CDL and used for
LVS.
Modify: head
Chip-level Verification Stage
Function: DRC/ANT verification
Tool: Mentor calibre DRC/ANT
Setup: setup mentic
Directory: ./mentor/drc/
Input: chip GDS file (./design/gds/top.gds), rule file (drc.svrf)
Output: DRC/ANT reports (DRC.rpt, ANT.rpt)
Viewer: calibre -rve drc_res.db
Function: LVS verification
Tool: Mentor calibre LVS
Setup: setup mentic
Directory: ./mentor/lvs/
Input: chip GDS file (./design/gds/top.gds), chip CDL file
(./design/cdl/top.cdl), header cells (hcells), rule file (lvs.svrf)
Output: LVS report (lvs.rep)
Modify: hcells, lvs.svrf, head
Simulation Stage
Function: chip layout extraction
Tool: Mentor calibre xRC
Setup: setup mentic
Directory: ./mentor/rcx/
Input: chip GDS file (./design/gds/top.gds), rule file (rcx.svrf)
Output: RC extracted chip spice netlist (chip.sp)
Function: circuit simulation
Tool: Synopsys nanosim, vtran
Setup: setup ns
Directory: ./simulation/
Input: RC extracted chip spice netlist (./mentor/rcx/chip.sp), input vector
(chip_nopads_vtoc.vcd), nanosim files (cfg, chip.cmd, chip.vec), vtran file (chip.vtran)
Output: nanosim output (nanosim.out)
Viewer: signalscan (setup ldv, only on Solaris)
Note: First, VCD format is translated to EPIC format using vtran. nanosim
simulates the chip netlist and compares its own outputs with the
simulator-generated outputs. Nanosim spice model:
/home/cad/tsmc/18/spice_model_lo/log018.l, Hspice spice model: /home/cad/tsmc/18/spice_model/fp1/hspice/log018.l
Please report any problems/errors to
cagvlsi@cag.lcs.mit.edu.