Mentor Graphics
Mentor Graphics
Mentor Graphics
Victor P. Nelson
Mentor Graphics CAD Tool Suites
IC/SoC design flow1
DFT/BIST/ATPG design flow1
FPGA design flow2,3
PCB design flow2
Digital/analog/mixed-signal modeling & simulation1,2
ASIC/FPGA synthesis1,2
Vendor-provided (Xilinx,Altera,etc.) back end tools2
Physical
DRC & LVS Verify
Layout
Verification Timing
Map/Place/Route
VHDL VHDL-AMS
Verilog Create Behavioral/RTL
HDL Model(s) Verilog-A
SystemC
Simulation Input
ADVance MS
Setup Stimuli
Mixed Signal
Eldo, EZwave (VHDL-AMS,
Eldo RF or Xelga ModelSim Verilog-A)
Analog Mach TA View Results
(SPICE) Mach PA Digital
(VHDL,Verilog)
Example: 4-bit binary counter
VHDL model (count4.vhd)
– Create working library: vlib work
vmap work work
– Compile: vcom count4.vhd
– Simulate: vsim count4(rtl)
ModelSim simulation-control inputs
– ModelSim “Macro” (count4_rtl.do)
– OR, VHDL testbench
ModelSim results
– listing or waveform
-- count4.vhd 4-bit parallel-load synchronous counter
LIBRARY ieee;
USE ieee.std_logic_1164.all; USE ieee.numeric_std.all;
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;
Clear
Counting
Parallel
Load
ADVance MS : mixed-signal simulation
A/D converter
digital
analog
VHDL-AMS
ADVance MS: mixed Verilog-SPICE
Verilog top
(test bench)
SPICE
subcircuit
Automated Synthesis with
Leonardo Spectrum
VHDL/Verilog
Technology Behavioral/RTL Models
Synthesis
Libraries
wire nx8, nx14, nx22, nx28, nx48, nx54, nx62, nx126, nx136, nx146, nx156, nx169, nx181, nx183, nx185, nx187,
nx189;
wire [3:0] \$dummy ;
dffr Q_0__rename_rename (.Q (Q[0]), .QB (\ (\$dummy [0]), .D (nx126), .CLK (clock), .R (clear)) ;
mux21_ni ix127 (.Y (nx126), .A0 (Q[0]), .A1 (nx8), .S0 (enable))
(enable)) ;
oai21 ix9 (.Y (nx8), .A0 (load_count
(load_count),
), .A1 (Q[0]), .B0 (nx169)) ;
nand02 ix170 (.Y (nx169), .A0 (D[0]), .A1 (load_count
(load_count)))) ;
dffr Q_1__rename_rename (.Q (Q[1]), .QB (\ (\$dummy [1]), .D (nx136), .CLK (clock), .R (clear)) ;
mux21_ni ix137 (.Y (nx136), .A0 (Q[1]), .A1 (nx28), .S0 (enable))
(enable)) ;
ao22 ix29 (.Y (nx28), .A0 (D[1]), .A1 (load_count
(load_count), ), .B0 (nx14), .B1 (nx22) ) ;
or02 ix15 (.Y (nx14), .A0 (Q[0]), .A1 (Q[1])) ;
aoi21 ix23 (.Y (nx22), .A0 (Q[1]), .A1 (Q[0]), .B0 (load_count
(load_count))
)) ;
dffr Q_2__rename_rename (.Q (Q[2]), .QB (\ (\$dummy [2]), .D (nx146), .CLK (clock), .R (clear)) ;
mux21_ni ix147 (.Y (nx146), .A0 (Q[2]), .A1 (nx48), .S0 (enable))
(enable)) ;
oai21 ix49 (.Y (nx48), .A0 (nx181), .A1 (nx183), .B0 (nx189))
(nx189)) ;
aoi21 ix182 (.Y (nx181), .A0 (Q[1]), .A1 (Q[0]), .B0 (Q[2])) ;
nand02 ix184 (.Y (nx183), .A0 (nx185), .A1 (nx187)) ;
inv01 ix186 (.Y (nx185), .A (load_count
(load_count)))) ;
nand03 ix188 (.Y (nx187), .A0 (Q[2]), .A1 (Q[1]), .A2 (Q[0]))
(Q[0])) ;
nand02 ix190 (.Y (nx189), .A0 (D[2]), .A1 (load_count
(load_count)))) ;
dffr Q_3__rename_rename (.Q (Q[3]), .QB (\ (\$dummy [3]), .D (nx156), .CLK (clock), .R (clear)) ;
mux21_ni ix157 (.Y (nx156), .A0 (Q[3]), .A1 (nx62), .S0 (enable))
(enable)) ;
mux21_ni ix63 (.Y (nx62), .A0 (nx54), .A1 (D[3]), .S0 (load_count
(load_count)))) ;
xnor2 ix55 (.Y (nx54), .A0 (Q[3]), .A1 (nx187)) ;
endmodule
Post-synthesis simulation
(Leonardo-generated netlist)
Verify synthesized netlist matches behavioral
model
Create simulation primitives library for std cells:
>vlib adk VITAL
>vcom $ADK/technology/adk.vhd models of all
>vcom $ADK/technology/adk_comp.vhd
ADK std cells
Insert library/package declaration into netlist
library adk;
use adk.adk_components.all;
Memory
& Logic
BIST Boundary
Scan
Internal
Scan Design
ATPG
DFTadvisor/FastScan Design Flow
count4.vhd
count4_0.vhd
count4.v
DFT/ATPG count4_scan.v
Library:
adk.atpg
ATPG Library
DFT Advisor Insert Internal
Scan Circuitry
adk.atpg
VHDL/Verilog
Netlist With
Scan Elements
Fastscan/ Generate/Verify
Flextest Test Vectors
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
Cell-Based Block
Basic standard
Cell layout
-Netlist
-Simulation cmds
-Stimulus
SPICE “circuit” file generated by DA-IC SPICE netlist for modulo7 counter
From ADK
library
Draw
rectangle
of metal2
to fill gap
$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
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
h count source connected
Periodic pulses
run 5 ns
h reset Voltage source name
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
Xilinx “ISE”
Altera “Max Plus 2” Map to FPGA
LUTs, FFs, IOBs
FPGA/PLD
User-Specified Technology
Place & Route Files
Constraints
Generate
Generate
Programming
Timing Model
Data