You are on page 1of 45

Mentor Graphics Simulation Tools for ASIC Design

Victor P. Nelson

ASIC Design Flow


Simulation
Behavioral Model
VHDL/Verilog

Verify Behavior

Synthesis DFT/BIST & ATPG Test vectors Standard Cell IC & FPGA/CPLD DRC & LVS Verification Gate-Level Netlist Verify Function

Full-custom IC
Transistor-Level Netlist Verify Function & Timing

Physical Layout
Map/Place/Route

Verify Function & Timing

IC Mask Data

Digital, Analog, Mixed-Signal Simulation


VHDL,Verilog, VHDL-AMS, Verilog-A, SPICE Netlists Working Library Design_1 Design_2 VITAL SPICE models

ADVance MS

IEEE 1164 Resource Libraries

Simulation Setup

ADVance MS

Input Stimuli Mixed Signal (VHDL-AMS, Verilog-A)

Eldo, Eldo RF Analog Mach TA (SPICE) Mach PA

EZwave or Xelga View Results

ModelSim Digital (VHDL,Verilog)

Mentor Graphics Legacy Simulators

Originally designed for PCB design


Quicksim II : digital, gate-level simulation
Invoke : quicksim ASIC Design Kit : adk_quicksim Xilinx FPGA : pld_quicksim, Altera : max2_quicksim

Quicksim Pro : mixed schematic & HDL


Uses both Quicksim II and Modelsim EE Invoke: qspro

Accusim : analog simulation (SPICE)


Invoke : adk_accusim

Basic simulation environment


Design

-Behavioral description, -Circuit structure/netlist, -Timing information, etc.


Behavior/
Netlist Test vectors

-Generic, -Technologyspecific

Component models

Simulator

Logic verification

Timing analysis

-Digital values, -Analog voltages/ currents, -Waveforms

Results listings, graphical waveforms, Reports of measurements, result checks, constraint violations, etc.

Mentor Graphics ASIC Design Kit (ADK)

ASIC technology files & standard cell libraries


AMI: ami12, ami05 (1.2, 0.5 m) TSMC: tsmc035, tsmc025, tsmc018 (0.35, 0.25, 0.18 m)

IC flow & DFT tool support files:


Simulation
VHDL/Verilog/Mixed-Signal models (Modelsim/ADVance MS) Analog (SPICE) models (Eldo/Accusim) Post-layout verification (Mach TA) Digital schematic (Quicksim II, Quicksim Pro) (exc. tsmc025,tsmc018)

Synthesis library of std. cells (LeonardoSpectrum) Design for test & ATPG (DFT Advisor, Flextest/Fastscan) Schematic capture (Design Architect-IC) IC physical design (standard cell & custom)
Floorplan, place & route (IC Station) Design rule check, layout vs schematic, parameter extraction (Calibre)

HDLs in Digital System Design

Model and document digital systems


Hierarchical models
System, RTL (Register Transfer Level), gates

Different levels of abstraction


Behavior, structure

Verify circuit/system design via simulation


Modelsim EE (VHDL, Verilog, System C) ADVance MS (above + VHDL-AMS, Verilog-A)

Synthesize circuits from HDL models


Leonardo (Synopsis)

-- count4.vhd

LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.numeric_std.all;

4-bit parallel-load synchronous counter

ENTITY count4 IS PORT (clock,clear,enable,load_count : IN STD_LOGIC; D: IN unsigned(3 downto 0); Q: OUT unsigned(3 downto 0)); END count4; ARCHITECTURE rtl OF count4 IS SIGNAL int : unsigned(3 downto 0); BEGIN PROCESS(clear, clock, enable) BEGIN IF (clear = '1') THEN int <= "0000"; ELSIF (clock'EVENT AND clock='1') THEN IF (enable = '1') THEN IF (load_count = '1') THEN int <= D; ELSE int <= int + "01"; END IF; END IF; END IF; END PROCESS; Q <= int; END rtl;

Typical VHDL behavioral model

Modelsim do file: count4_rtl.do


add wave /clock /clear /enable /load_count /D /Q add list /clock /clear /enable /load_count /D /Q force /clock 0 0, 1 10 -repeat 20 force /clear 0 0, 1 5, 0 10 force /enable 0 0, 1 25 force /load_count 0 0, 1 20, 0 35, 1 330, 0 350 force /D 10#5 0, 10#9 300 run 400

Test stimulus:

Testbench: count4_bench.vhd
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.numeric_std.all; ENTITY count4_bench is end count4_bench; ARCHITECTURE test of count4_bench is component count4 PORT (clock,clear,enable,load_count : IN STD_LOGIC; D: IN unsigned(3 downto 0); Q: OUT unsigned(3 downto 0)); end component; for all: count4 use entity work.count4(behavior); signal clk : STD_LOGIC := '0'; signal clr, en, ld: STD_LOGIC; signal din, qout: unsigned(3 downto 0); begin C4: count4 port map(clk,clr,en,ld,din,qout); clk <= not clk after 10 ns; P1: process begin din <= "0101"; clr <= '1'; en <= '1'; ld <= '1'; wait for 10 ns; clr <= '0'; wait for 20 ns; ld <= '0'; wait for 200 ns; end process; end;

Alternative to do file

Could check results & assert error messages

Count4 Simulation waveform

Clear Counting Parallel Load

ADVance MS : mixed-signal simulation


A/D converter digital analog
VHDL-AMS

VHDL-AMS models
D/A converter Comparator

ADVance MS: mixed Verilog-SPICE


Verilog top (test bench)

SPICE subcircuit

Leonardo synthesis procedure


1.

2.
3.

Invoke leonardo Select & load a technology library (ASIC or FPGA)

ASIC > ADK > TSMC 0.35 micron

4.
5. 6.

Read input VHDL/Verilog file(s): count4.vhd Enter any constraints (clock freq, delays, etc.) Optimize for area/delay/effort level Write output file(s)

count4_0.vhd - VHDL netlist (for simulation) count4.v - Verilog netlist (for IC layout) count4.sdf - Standard delay format file (for timing) count4.edf - EDIF netlist (for Xilinx/Altera FPGA)

Leonardo-synthesized netlist count4_0.vhd

library IEEE; use IEEE.STD_LOGIC_1164.all; library adk; use adk.adk_components.all; -- ADDED BY VPN entity count4 is port ( clock : IN std_logic ; clear : IN std_logic ; enable : IN std_logic ; load_count : IN std_logic ; D : IN std_logic_vector (3 DOWNTO 0) ; Q : OUT std_logic_vector (3 DOWNTO 0)) ; end count4 ; architecture netlist of count4 is signal Q_3_EXMPLR, Q_2_EXMPLR, Q_1_EXMPLR, Q_0_EXMPLR, nx8, nx14, nx22, nx28, nx48, nx54, nx62, nx126, nx136, nx146, nx156, nx169, nx181, nx183, nx185, nx187, nx189: std_logic ; begin Q(3) <= Q_3_EXMPLR ; Q(2) <= Q_2_EXMPLR ; Q(1) <= Q_1_EXMPLR ; Q(0) <= Q_0_EXMPLR ; Q_0_EXMPLR_EXMPLR : dffr port map ( Q=>Q_0_EXMPLR, QB=>OPEN, D=>nx126, CLK=>clock, R=>clear); ix127 : mux21_ni port map ( Y=>nx126, A0=>Q_0_EXMPLR, A1=>nx8, S0=>enable ); ix9 : oai21 port map ( Y=>nx8, A0=>load_count, A1=>Q_0_EXMPLR, B0=>nx169 ); ix170 : nand02 port map ( Y=>nx169, A0=>D(0), A1=>load_count); Q_1_EXMPLR_EXMPLR : dffr port map ( Q=>Q_1_EXMPLR, QB=>OPEN, D=>nx136, CLK=>clock, R=>clear); ix137 : mux21_ni port map ( Y=>nx136, A0=>Q_1_EXMPLR, A1=>nx28, S0=> enable); ix29 : ao22 port map ( Y=>nx28, A0=>D(1), A1=>load_count, B0=>nx14, B1=> nx22); ix15 : or02 port map ( Y=>nx14, A0=>Q_0_EXMPLR, A1=>Q_1_EXMPLR); ix23 : aoi21 port map ( Y=>nx22, A0=>Q_1_EXMPLR, A1=>Q_0_EXMPLR, B0=> load_count); Q_2_EXMPLR_EXMPLR : dffr port map ( Q=>Q_2_EXMPLR, QB=>OPEN, D=>nx146, CLK=>clock, R=>clear); ix147 : mux21_ni port map ( Y=>nx146, A0=>Q_2_EXMPLR, A1=>nx48, S0=> enable); ix49 : oai21 port map ( Y=>nx48, A0=>nx181, A1=>nx183, B0=>nx189); ix182 : aoi21 port map ( Y=>nx181, A0=>Q_1_EXMPLR, A1=>Q_0_EXMPLR, B0=> Q_2_EXMPLR); ix184 : nand02 port map ( Y=>nx183, A0=>nx185, A1=>nx187); ix186 : inv01 port map ( Y=>nx185, A=>load_count); ix188 : nand03 port map ( Y=>nx187, A0=>Q_2_EXMPLR, A1=>Q_1_EXMPLR, A2=> Q_0_EXMPLR); ix190 : nand02 port map ( Y=>nx189, A0=>D(2), A1=>load_count); Q_3_EXMPLR_EXMPLR : dffr port map ( Q=>Q_3_EXMPLR, QB=>OPEN, D=>nx156, CLK=>clock, R=>clear); ix157 : mux21_ni port map ( Y=>nx156, A0=>Q_3_EXMPLR, A1=>nx62, S0=> enable); ix63 : mux21_ni port map ( Y=>nx62, A0=>nx54, A1=>D(3), S0=>load_count); ix55 : xnor2 port map ( Y=>nx54, A0=>Q_3_EXMPLR, A1=>nx187); end netlist ;

Post-synthesis simulation
(Leonardo-generated netlist)
Verify synthesized netlist matches behavioral model Create simulation primitives library for std cells:

>vlib adk >vcom $ADK/technology/adk.vhd >vcom $ADK/technology/adk_comp.vhd library adk; use adk.adk_components.all;

models of all ADK std cells

Insert library/package declaration into netlist

Simulate in Modelsim, using do file or test bench from original behavioral simulation results should match

Preparation for Layout


1.

Convert Verilog netlist to Mentor Graphics EDDM schematic/netlist format


Invoke Design Architect-IC (adk_daic) On menu bar, select File > Import Verilog
Netlist file: count4.v (the Verilog netlist) Output directory: count4 (for the EDDM netlist) Mapping file $ADK/technology/adk_map.vmp

2.


3.

Open the schematic for viewing

Create design viewpoints for ICstation tools


adk_dve count4 t tsmc035

Click Schematic in DA-IC palette Select schematic in directory named above (see next slide) Click Update LVS in the schematic palette to create a netlist to be used later by Calibre (V.Ps: layout, lvs, sdl, tsmc035)

Can also draw gate/transistor schematics directly in DAIC using components from the ADK library

(from Leonardo-generated netlist)

count4 schematic

Simulating the schematic model

Quicksim II (legacy Falcon Framework)


EDDM netlist models
create in Design Architect/Design Architect-IC component models

Stimulus in do file, similar to Modelsim

Eldo analog/SPICE simulator


Accusim legacy analog/SPICE simulator

Export VHDL/Verilog netlist for HDL simulator

Mentor Graphics Falcon Framework Tools

Preparation for using Quicksim II


Create netlist & design viewpoints

Design viewpoint provides downstream tools with tool-specific information


primitives, properties, parameters technology-specific simulation models

Create viewpoints one time for each schematic


adk_dve design technology tsmc035
design = schematic netlist component name tsmc035 = ASIC technology to be used ASIC technologies available in ADK: tsmc018**, tsmc025**, tsmc035, ami05, ami12 (** no Quicksim models)

Design viewpoints for component bob


Logic symbol ICgraph Layout viewpoint Layout vs. schematic check viewpoint Back annotation file for layout parameter extraction

Accusim viewpoint

Schematic
Schematic-driven layout viewpoint (ICgraph) Transistor-level

Quicksim II viewpoint

Mentor Graphics Design Manager

Quicksim II operation

Invoke Quicksim II: adk_quicksim bob/tsmc035


bob = design component tsmc035 = quicksim viewpoint

Quicksim II kernel has three modes:


Unit (default): all components have 1 unit of delay Delay: delays specified as triplets
(min-delay typ-delay max-delay) from technology files

Constraint: same as Delay, but with detection of glitches, contraint violations, etc.

Quicksim II multi-valued simulation

Each signal has a state and a drive strength


Logic state Zero One Unknown Value s r z i Drive strength Strong Resistive Float (no drive) Indeterminate

Value 0 1 X

Example: 1s = strongly driven to 1 1r = resistively pulled up to 1

Example force file for circuit bob


(similar to Modelsim EE) force a 0 0 force a 1 25 force a 0 55 force r 1 0 force r 0 7 force r 1 12 set clock period 20 force c 0 0 -repeat force c 1 10 -repeat

Value State

Clock definition

Quicksim II simulation of bob

Eldo simulation from DA-IC


Run simulations from within DA-IC


Eldo, ADVance MS, Mach TA

DA-IC invokes a netlister to create a circuit model from the schematic


SPICE model for Eldo & Mach TA

Eldo analyses, forces, probes, etc. same as SPICE View results in EZwave or Xelga

Eldo input and output files


-Netlist -Simulation cmds -Stimulus

SPICE circuit file generated by DA-IC

SPICE netlist for modulo7 counter

From ADK library

Force values (created interactively)

Eldo simulation of modulo7 counter


(transient analysis)

Post-layout simulation with MachTA

MachTA is an accelerated Spice simulator


Digital & mixed-signal circuits Analyze timing effects pre- and post-layout
SPICE netlists with parasitic R/C

Execute test vector file to verify functionality

Algorithms support large designs


Partition design, simulate only partitions with changes Combine time-driven & event-driven operation Solves linearized models using a proprietary highperformance, graph-theory based, matrix solution algorithm

Mach TA flow diagram


SPICE netlist

$ADK/technology/mta/tsmc035

Post-layout simulation with Mach TA


(netlist extracted by Calibre PEX)

Prepare netlist (remove subcircuits for Mach TA)


Extracted netlist = count4.pex.netlist Command: $ADK/bin/mta_prep count4 Creates SPICE file: count4.sp

Invoke Mach TA:

ana - command file to initialize Anacad SW mta ezw t $ADK/technology/mta/tsmc035 count4.sp

Mach PA (mpa) does current & power analysis

Mach TA main window

Mach TA simulation commands

Sample Mach TA dofile


(transient analysis)
plot v(clk) v(q[2]) v(q[1]) v(q[0]) measure rising TRIG v(clk) VAL=2.5v RISE=1 TARG v(q[0]) VAL=2.5v l load l reset h count Measure time from rising edge of clk (TRIGger) l clk to 1st rising edge of q[0] (TARGet) - voltages run 5 ns h reset h clk Drive signals low/high (Lsim format) run 5 ns l clk Simulate for 5 ns run 5 ns h clk run 5 ns
Signals to observe in EZwave

Command to execute: dofile file.do

EZwave waveform viewer


(results for previous dofile)

Double-click signal name to display.

Alternative Mach TA dofile


(same result as previous example)
plot v(clk) v(q[2]) v(q[1]) v(q[0]) measure rising TRIG v(clk) VAL=2.5v RISE=1 TARG v(q[0]) VAL=2.5v vpulse Vclk clk 0 pulse(0 3.3 10n .05n .05n 10n 20n) v-levels delay rise fall width period l load l reset Nodes to which source connected h count Periodic pulses run 5 ns Voltage source name h reset run 200 ns

Mach TA test vector file

Verify design functionality/behavior


apply test vectors capture outputs compare outputs to expected result vectors/outputs from behavioral simulation

Command to execute a test vector file:


run tvend tvfile.tv
test vector file (next slide)

Test vector file format


# Test vector file for modulo7 counter CODEFILE UNITS ps RISE_TIME 50 signal order within vectors Header FALL_TIME 50 INPUTS clk,reset,load,count,i[2],i[1],i[0]; OUTPUTS q[2] (to=max),q[1] (to=max),q[0] (to=max); CODING(ROM) Vector format RADIX <11113>3; @0 <01105>X; Sample 5 fs before next vector @2000 <00105>0; @7000 <01105>0; @10000 <11105>5; @20000 <01015>5; Vectors: @time <input_vector>expected_output @30000 <11015>6; @40000 <01015>6; @50000 <11015>0; @60000 <01015>0; .. END

Test vectors derived from behavioral simulation results

Behavioral simulation listing

Corresponding Mach TA test vector file

(clock generated separately by voltage source)

Alternate test vector file

vpulse vclk clk 0 pulse(0 3.3 10n .5n .5n 10n 20n)

Can mix other simulation commands with test vector application.

Mach TA structure & schematic viewer

Summary

Simulation at each stage of ASIC design


behavioral model synthesized netlist pre-layout schematic/netlist post-layout netlist

ADVance MS combines 3 technologies to cover


the above
digital (VHDL, Verilog) analog/mixed-signal (VHDL-AMS, Verilog-A) transistor level (Eldo, Mach TA)

ASIC Design Kit (ADK) supports all tools in the


design flow, including simulation

You might also like