ASIC CAD Seminar 2011
ASIC CAD Seminar 2011
Concept to Silicon
Victor P. Nelson
VLSI Design & Test Seminar
11/05/2011
IC Design Flow
Digital ASIC Design Flow
Behavioral
Verify
Model
Function
VHDL/Verilog
Front-End
Synthesis
Design
DFT/BIST Gate-Level Verify
& ATPG Netlist Function
Simulation Input
Questa ADMS
Setup Stimuli
Mixed Signal
Eldo, EZwave (VHDL-AMS,
Eldo RF Modelsim Verilog-AMS)
Analog View Results
ADiT Digital
(SPICE)
(VHDL,Verilog)
Questa ADMS : mixed-signal simulation
A/D converter
digital
analog
VHDL-AMS
digital nets
analog nets
Questa ADMS: mixed Verilog-SPICE
Verilog top
(test bench)
SPICE
subcircuit
Automated Synthesis with
LeonardoSpectrum/Synopsys Design Compiler
VHDL/Verilog
Technology Behavioral/RTL Models
Synthesis
Libraries
Read &
check HDL Write netlist,
SDF, reports
Sample LeonardoSpectrum synthesis script
load_library /linux_apps/ADK3.1/technology/leonardo/tsmc025_typ
analyze "../src/mux.vhd" "../src/shiftreg.vhd" "../src/alu.vhd"
"../src/dcontrol.vhd" "../src/divider.vhd“
elaborate
clock_cycle 2 CLOCK
optimize -hierarchy preserve
optimize_timing -through C/reg_State(2)/Q
write divider_0.vhd
write divider_0.v
write_divider_0.sdf
report_area div_area.rpt -cell_usage –hierarchy
report_delay div_delay.rpt
report_delay -longest_path -to Q* mod6_outdelay.rpt
report_delay -longest_path -from [list I* L_Cbar] mod6_indelay.rpt
Post-synthesis simulation of
synthesized netlist
Verify that synthesized netlist matches behavioral model
Create library of std cell simulation primitives:
>vlib adk VITAL models
>vcom $ADK/technology/adk.vhd of ADK std cells
>vcom $ADK/technology/adk_comp.vhd
Insert library/package declaration into netlist
library adk;
use adk.adk_components.all;
Simulate in Modelsim, using “do file” or test bench from
behavioral simulation
results should match
Simulate netlist with synthesize-produced SDF file to study
timing (delays, constraints, etc.)
Post-synthesis timing analysis
Synthesis tools generate SDF (std. delay format) file with technology-
specific, VITAL-compliant timing parameters (from cell library)
(CELLTYPE "dffr")
(INSTANCE Q_0_EXMPLR_EXMPLR)
(DELAY
(ABSOLUTE
(PORT D (::0.00) (::0.00))
(PORT CLK (::0.00) (::0.00)) Delays lumped at pins
(PORT R (::0.00) (::0.00))
(IOPATH CLK Q (::0.40) (::0.47))
(IOPATH R Q (::0.00) (::0.55)) Path delays
(IOPATH CLK QB (::0.45) (::0.36)) (min:typ:max)
(IOPATH R QB (::0.53) (::0.00))))
(TIMINGCHECK
(SETUP D (posedge CLK) (0.47))
(HOLD D (posedge CLK) (-0.06)))) Clock constraints
VITAL Std. Cell Model (1)
library IEEE; use IEEE.STD_LOGIC_1164.all;
use IEEE.VITAL_Primitives.all; use IEEE.VITAL_Timing.all;
entity and02 is
generic (
tipd_A0 : VitalDelayType01Z := VitalZeroDelay01Z;
tipd_A1 : VitalDelayType01Z := VitalZeroDelay01Z; Delays from
tpd_A0_Y : VitalDelayType01Z := VitalZeroDelay01Z; SDF file
tpd_A1_Y : VitalDelayType01Z := VitalZeroDelay01Z
);
port (
A0 : in STD_LOGIC;
A1 : in STD_LOGIC;
Y : out STD_LOGIC
);
attribute VITAL_LEVEL0 of and02 : entity is TRUE;
end and02;
VITAL Std. Cell Model (2)
architecture and02_arch of and02 is
attribute VITAL_LEVEL1 of and02_arch : architecture is TRUE;
signal A0_ipd : STD_LOGIC := 'X';
signal A1_ipd : STD_LOGIC := 'X';
begin
WireDelay : Block
begin
VitalWireDelay (A0_ipd, A0, tipd_A0); Determine input
VitalWireDelay (A1_ipd, A1, tipd_A1); pin delays (if any)
end Block;
Tessent SoCScan
& DFTAdvisor
Mentor Graphics “Tessent” Products
Tessent Fastscan – ATPG and Fault Simulation
Fault models supported: stuck-at, IDDQ, transition, path delay and
bridge.
Tessent SoC Scan (insert hierarchical scan)
Absorbs functionality of older DFTAdvisor
Tessent DFTAdvisor – insert full/partial scan and test ckts
Also:
Tessent TestKompress (ATPG for scan tests)
Tessent Boundary Scan (IEEE 1149.1)
Tessent LogicBIST
Tessent MemoryBIST
Tessent Diagnosis (failure diagnosis)
Tessent YieldInsight (statistical analysis of diagnosis data to find
systematic yield limiters)
ASIC DFT Flow
Synthesized VHDL/Verilog Netlist
ATPG Library
Tessent Insert Internal
DFTAdvisor Scan Circuitry
adk.atpg
VHDL/Verilog
Netlist With
Scan Elements
Tessent Generate/Verify
Fastscan Test Vectors
Memory
& Logic
BIST Boundary
Scan
Internal
Scan Design
ATPG
DFTadvisor/FastScan Design Flow
count4.vhd
Leonardo
count4_0.vhd
count4.v
DFT/ATPG count4_scan.v
Library:
adk.atpg
Scan Control
Scan FF
Scan In
ATPG with FastScan (full-scan circuit)
Invoke:
fastscan –verilog count4.v –lib $ADK/technology/adk.atpg
Generate test pattern file in FastScan:
dofile count4_scan.dofile (defines scan path & procedure) **
set system mode atpg
create patterns –auto (generate test patterns)
save patterns
Layout vs.
Generate Design Rule Backannotate
Schematic
Mask Data Check Schematic
Check
Calibre Calibre Calibre
IC Mask Data Mach TA/Eldo Simulation Model
Cell-Based IC
I/O pads
Cell-Based Block
Basic standard
Cell layout
From ADK
library
Use schematic
to drive layout
Auto-”floorplan” the block
place & route > autofp
Auto-place the std cells
Autoplc > StdCel
Auto-place ports (signal connections on cell boundaries)
Autoplc > Ports
AutoRoute all nets
(hand-route any unrouted “overflows”)
Then: Add > Port Text to copy port names from schematic – for Calibre
Layout design rule check (DRC)
Technology-specific design rules specify minimum sizes,
spacing, etc. of features to ensure reliable fabrication
Design rules file specified at startup
Ex. tsmc035.rules
From main palette, select ICrules
Click Check and then OK in prompt box
(optionally select a specific area to check)
Rules checked in numeric order
Common errors detected by DRC
To fix, click on First in palette to highlight first error
Error is highlighted in the layout
Click View to zoom in to the error (see next)
Example: DRC9_2: Metal2 spacing = 3L
Fix by drawing a rectangle of metal2 to fill in the gap between
contacts that should be connected
Click Next to go to next error, until all are fixed
Draw
rectangle
of metal2
to fill gap
• Fast-SPICE simulator
• Analog & mixed-signal
• 10X to 100X faster than
other SPICE simulators
• Integrated with Questa
•Examples: $MGC_AMS_HOME/examples/adit/
Top level layout design flow**
Create a symbol for each core block (adk_daic)
Create a chip-level schematic from core blocks and pads
(adk_daic)
Generate design viewpoints (adk_dve)
Create a layout cell for the chip (adk_ic)
Place core logic blocks from the schematic
Generate a pad frame
Move/alter core blocks to simplify routing
Route pads to core blocks
Design rule check & fix problems
Generate mask data
Layout
cell is
“mod7b”
for logic
schematic
“modulo7”
Chip-level schematic (2)
In DA-IC, create a schematic for the chip
Instantiate core blocks
Menu pallete: Add > Instance
Select and place generated symbol
Add pads from ADK Library>Std. Cells>Pads >tsmc035 : In, Out,
BiDir, VDD, GND
Wire pads to logic blocks and connectors
Assign pin numbers, if known
Change pad instance name to PINdd (dd = 2-digit pin #)
Check & save
Create design viewpoints with adk_dve
VDD/GND
Pads
Instance
name =
PINxx
(chip pin #) Wire block I/O pins
to pad signal pins
Assigning PAD pin numbers
Change instance name property on pads to PINxx
xx = 2-digit pin number (01 – 40 for Tiny Chip package)
Place pad on
chip pin 01
Default
instance
names
Top-level chip layout
Start IC Station (adk_ic) & create a new layout cell
enter cell name
logic source is “layout” viewpoint of chip schematic
same library, process file, rules file, and options as standard cell layout
Open the schematic
ADK Edit menu: Logic Source > Open
In the schematic, select all core cells (but not pads)
Place the cells: Place > Inst
Generate the pad frame
Top menu bar: ADK > Generate Padframe > tsmc035
(Only: AMI 1.2um, AMI 0.5um,TSMC 0.35um)
Chip layout (2)
Move, rotate, flip core logic cells as desired to make routing
easier
DO NOT EDIT OR MOVE PAD CELLS
Autoroute all connections
Select autoroute all on P&R menu
Click “options” on prompt bar, and unselect “Expand Channels”
(prevents pads from being moved)
Add missing VDD/GND wires, if necessary
Autorouter might only create 1 VDD/GND wire, even if multiple
VDD/GND pads
Manually add others: Objects>Add>Path
VDD/GND net width = 50
VDD/GND net vias = 6x6 (copy an existing via)
Modulo-7 counter in pad frame