Скачать презентацию Computer-Aided Design Concept to Silicon Victor P Nelson Скачать презентацию Computer-Aided Design Concept to Silicon Victor P Nelson

b77f0e64a9f6ffb80daf101134ef7ff0.ppt

  • Количество слайдов: 72

Computer-Aided Design Concept to Silicon Victor P. Nelson Computer-Aided Design Concept to Silicon Victor P. Nelson

ASIC Design Flow Behavioral Model Verify Function VHDL/Verilog Synthesis DFT/BIST & ATPG Gate-Level Netlist ASIC Design Flow Behavioral Model Verify Function VHDL/Verilog Synthesis DFT/BIST & ATPG Gate-Level Netlist Full-custom IC Test vectors Standard Cell IC & FPGA/CPLD DRC & LVS Verification Verify Function Transistor-Level Netlist Physical Layout Map/Place/Route Verify Function & Timing Verify Timing IC Mask Data/FPGA Configuration File

Mentor Graphics CAD Tools (select from “eda” list in user-setup on the Sun network) Mentor Graphics CAD Tools (select from “eda” list in user-setup on the Sun network) n ICFlow 2007. 2– For custom & standard cell IC designs n DFT/2006. 3 n n n – IC flow tools (Design Architect-IC, IC Station, Calibre) – Digital/analog/mixed simulation (Modelsim, ADVance MS, Eldo, Mach. TA) – HDL Synthesis (Leonardo) – ATPG/DFT/BIST tools (DFT Advisor, Flextest, Fastscan) Modelsim/6. 3 c (HDL Simulation) FPGA/2004 (FPGA Advantage, Modelsim, Leonardo) *Xilinx/ISE 8. 2 i (Xilinx FPGA/CPLD - back end design) *Quartus. II/5. 0 (Altera FPGA/CPLD - back end design) *Ims/6. 2 (IMS chip tester) * Vendor-Provided (Not Mentor Graphics) Tools

Mentor Graphics ASIC Design Kit (ADK) n Technology files & standard cell libraries – Mentor Graphics ASIC Design Kit (ADK) n Technology files & standard cell libraries – AMI: ami 12, ami 05 (1. 2, 0. 5 μm) – TSMC: tsmc 035, tsmc 025, tsmc 018 (0. 35, 0. 25, 0. 18 μm) n IC flow & DFT tool support files: – Simulation § § – – VHDL/Verilog/Mixed-Signal models (Modelsim/ADVance MS) Analog (SPICE) models (Eldo/Accusim) Post-layout timing (Mach TA) Digital schematic (Quicksim II, Quicksim Pro) (exc. tsmc 025, tsmc 018) Synthesis to std. cells (Leonardo. Spectrum) 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)

Xilinx/Altera FPGA/CPLD Design n Simulate designs in Modelsim – Behavioral models (VHDL, Verilog) – Xilinx/Altera FPGA/CPLD Design n Simulate designs in Modelsim – Behavioral models (VHDL, Verilog) – Synthesized netlists (VHDL, Verilog) § Requires “primitives” library for the target technology n Synthesize netlist from behavioral model – Leonardo has libraries for most FPGAs – Xilinx ISE has its own synthesis tool n Vendor tools for back-end design – Map, place, route, configure device, timing analysis, generate timing models – Xilinx Integrated Software Environment (ISE) – Altera Quartus II & Max+Plus 2 n Higher level tools for system design & management – Mentor Graphics FPGA Advantage – Xilinx Platform Studio : So. C design, IP management, HW/SW codesign

Behavioral Design & Verification (mostly technology-independent) VHDL Verilog System. C Model. Sim (digital) Leonardo Behavioral Design & Verification (mostly technology-independent) VHDL Verilog System. C Model. Sim (digital) Leonardo Spectrum, Xilinx ISE Create Behavioral/RTL HDL Model(s) Simulate to Verify Functionality VHDL-AMS Verilog-A ADVance MS (analog/mixed signal) Synthesize Circuit (digital) Technology Libraries Post-Layout Simulation, Technology-Specific Netlist to Back-End Tools

ADVance MS Simulation System n ADVance MS “kernel” supports: – VHDL & Verilog: digital ADVance MS Simulation System n ADVance MS “kernel” supports: – VHDL & Verilog: digital (via Model. Sim) – VHDL-AMS & Verilog-A: analog/mixed signal – Eldo/SPICE: analog (via Eldo) – Eldo RF/SPICE: analog RF (via Eldo RF) – Mach TA/SPICE: high-speed analog/timing n Invoke -IC stand-alone or from Design Architect

ADVance MS Digital, Analog, Mixed-Signal Simulation VHDL, Verilog, VHDL-AMS, Verilog-A, SPICE Netlists Working Library ADVance MS Digital, Analog, Mixed-Signal Simulation VHDL, Verilog, VHDL-AMS, Verilog-A, SPICE Netlists Working Library Simulation Setup Eldo, Eldo RF Analog Mach TA (SPICE) Mach PA Design_1 Design_2 VITAL SPICE models Xilinx simprims IEEE 1164 Resource Libraries ADVance MS EZwave or Xelga View Results Input Stimuli Model. Sim Digital (VHDL, Verilog) Mixed Signal (VHDL-AMS, Verilog-A)

Example: 4 -bit binary counter n VHDL model (count 4. vhd) – Create working Example: 4 -bit binary counter n VHDL model (count 4. vhd) – Create working library: vlib work vmap work – Compile: vcom count 4. vhd – Simulate: vsim count 4(rtl) n Model. Sim simulation-control inputs – Model. Sim “Macro” (count 4_rtl. do) – OR, VHDL testbench n Model. Sim results – listing or waveform

-- count 4. vhd 4 -bit parallel-load synchronous counter LIBRARY ieee; USE ieee. std_logic_1164. -- count 4. vhd 4 -bit parallel-load synchronous counter LIBRARY ieee; USE ieee. std_logic_1164. all; USE ieee. numeric_std. all; --synthesis libraries ENTITY count 4 IS PORT (clock, clear, enable, load_count : IN STD_LOGIC; D: IN unsigned(3 downto 0); Q: OUT unsigned(3 downto 0)); END count 4; ARCHITECTURE rtl OF count 4 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 PROCESS; Q <= int; END rtl;

Test stimulus: Modelsim “do” file: count 4_rtl. do add wave /clock /clear /enable /load_count Test stimulus: Modelsim “do” file: count 4_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

Testbench: count 4_bench. vhd LIBRARY ieee; USE ieee. std_logic_1164. all; USE ieee. numeric_std. all; Testbench: count 4_bench. vhd LIBRARY ieee; USE ieee. std_logic_1164. all; USE ieee. numeric_std. all; ENTITY count 4_bench is end count 4_bench; ARCHITECTURE test of count 4_bench is component count 4 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: count 4 use entity work. count 4(behavior); signal clk : STD_LOGIC : = '0'; signal clr, en, ld: STD_LOGIC; signal din, qout: unsigned(3 downto 0); begin UUT: count 4 port map(clk, clr, en, ld, din, qout); clk <= not clk after 10 ns; P 1: 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 also check results & “assert” error messages

Count 4 – Simulation waveform Clear Counting Parallel Load Count 4 – Simulation waveform Clear Counting Parallel Load

ADVance MS : mixed-signal simulation A/D converter digital analog VHDL-AMS ADVance MS : mixed-signal simulation A/D converter digital analog VHDL-AMS

ADVance MS: mixed Verilog-SPICE Verilog top (test bench) SPICE subcircuit ADVance MS: mixed Verilog-SPICE Verilog top (test bench) SPICE subcircuit

Automated Synthesis with Leonardo Spectrum Technology Synthesis Libraries FPGA VHDL/Verilog Behavioral/RTL Models Leonardo Spectrum Automated Synthesis with Leonardo Spectrum Technology Synthesis Libraries FPGA VHDL/Verilog Behavioral/RTL Models Leonardo Spectrum (Level 3) Design Constraints ASIC ADK AMI 0. 5, 1. 2 TSMC 0. 35, 0. 25 Technology. Specific Netlist VHDL, Verilog, SDF, EDIF, XNF Level 1 – FPGA Level 2 – FPGA + Timing Level 3 – ASIC + FPGA

Leonardo – ASIC Synthesis Flow Leonardo – ASIC Synthesis Flow

Leonardo synthesis procedure Invoke leonardo 2. Select & load a technology library (ASIC or Leonardo synthesis procedure Invoke leonardo 2. Select & load a technology library (ASIC or FPGA) 1. – ASIC > ADK > TSMC 0. 35 micron Read input VHDL/Verilog file(s): count 4. vhd 4. Enter any constraints (clock freq, delays, etc. ) 5. Optimize for area/delay/effort level 6. Write output file(s) 3. – – count 4_0. vhd - VHDL netlist count 4. v - Verilog netlist (for IC layout) count 4. sdf - Standard delay format file (for timing) count 4. edf - EDIF netlist (for Xilinx/Altera FPGA)

Leonardo-synthesized netlist count 4_0. vhd library IEEE; use IEEE. STD_LOGIC_1164. all; library adk; use Leonardo-synthesized netlist count 4_0. vhd library IEEE; use IEEE. STD_LOGIC_1164. all; library adk; use adk_components. all; -- ADDED BY VPN entity count 4 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 count 4 ; architecture netlist of count 4 is -- rtl changed to netlist by VPN signal Q_3_EXMPLR, Q_2_EXMPLR, Q_1_EXMPLR, Q_0_EXMPLR, nx 8, nx 14, nx 22, nx 28, nx 48, nx 54, nx 62, nx 126, nx 136, nx 146, nx 156, nx 169, nx 181, nx 183, nx 185, nx 187, nx 189: 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 : dffr port map ( Q=>Q_0_EXMPLR, QB=>OPEN, D=>nx 126, CLK=>clock, R=>clear); ix 127 : mux 21_ni port map ( Y=>nx 126, A 0=>Q_0_EXMPLR, A 1=>nx 8, S 0=>enable ); ix 9 : oai 21 port map ( Y=>nx 8, A 0=>load_count, A 1=>Q_0_EXMPLR, B 0=>nx 169 ); ix 170 : nand 02 port map ( Y=>nx 169, A 0=>D(0), A 1=>load_count); Q_1_EXMPLR : dffr port map ( Q=>Q_1_EXMPLR, QB=>OPEN, D=>nx 136, CLK=>clock, R=>clear); ix 137 : mux 21_ni port map ( Y=>nx 136, A 0=>Q_1_EXMPLR, A 1=>nx 28, S 0=> enable); ix 29 : ao 22 port map ( Y=>nx 28, A 0=>D(1), A 1=>load_count, B 0=>nx 14, B 1=> nx 22); ix 15 : or 02 port map ( Y=>nx 14, A 0=>Q_0_EXMPLR, A 1=>Q_1_EXMPLR); ix 23 : aoi 21 port map ( Y=>nx 22, A 0=>Q_1_EXMPLR, A 1=>Q_0_EXMPLR, B 0=> load_count); Q_2_EXMPLR : dffr port map ( Q=>Q_2_EXMPLR, QB=>OPEN, D=>nx 146, CLK=>clock, R=>clear); ix 147 : mux 21_ni port map ( Y=>nx 146, A 0=>Q_2_EXMPLR, A 1=>nx 48, S 0=> enable); ix 49 : oai 21 port map ( Y=>nx 48, A 0=>nx 181, A 1=>nx 183, B 0=>nx 189); ix 182 : aoi 21 port map ( Y=>nx 181, A 0=>Q_1_EXMPLR, A 1=>Q_0_EXMPLR, B 0=> Q_2_EXMPLR); ix 184 : nand 02 port map ( Y=>nx 183, A 0=>nx 185, A 1=>nx 187); ix 186 : inv 01 port map ( Y=>nx 185, A=>load_count); ix 188 : nand 03 port map ( Y=>nx 187, A 0=>Q_2_EXMPLR, A 1=>Q_1_EXMPLR, A 2=> Q_0_EXMPLR); ix 190 : nand 02 port map ( Y=>nx 189, A 0=>D(2), A 1=>load_count); Q_3_EXMPLR : dffr port map ( Q=>Q_3_EXMPLR, QB=>OPEN, D=>nx 156, CLK=>clock, R=>clear); ix 157 : mux 21_ni port map ( Y=>nx 156, A 0=>Q_3_EXMPLR, A 1=>nx 62, S 0=> enable); ix 63 : mux 21_ni port map ( Y=>nx 62, A 0=>nx 54, A 1=>D(3), S 0=> load_count); ix 55 : xnor 2 port map ( Y=>nx 54, A 0=>Q_3_EXMPLR, A 1=>nx 187); end netlist ;

// Verilog description for cell count 4, Leonardo. Spectrum Level 3, 2005 a. 82 // Verilog description for cell count 4, Leonardo. Spectrum Level 3, 2005 a. 82 module count 4 ( clock, clear, enable, load_count, D, Q ) ; input clock ; input clear ; input enable ; input load_count ; input [3: 0]D ; output [3: 0]Q ; wire nx 8, nx 14, nx 22, nx 28, nx 48, nx 54, nx 62, nx 126, nx 136, nx 146, nx 156, nx 169, nx 181, nx 183, nx 185, nx 187, nx 189; wire [3: 0] $dummy ; dffr Q_0__rename (. Q (Q[0]), . QB ($dummy [0]), . D (nx 126), . CLK (clock), . R (clear)) ; mux 21_ni ix 127 (. Y (nx 126), . A 0 (Q[0]), . A 1 (nx 8), . S 0 (enable)) ; oai 21 ix 9 (. Y (nx 8), . A 0 (load_count), . A 1 (Q[0]), . B 0 (nx 169)) ; nand 02 ix 170 (. Y (nx 169), . A 0 (D[0]), . A 1 (load_count)) ; dffr Q_1__rename (. Q (Q[1]), . QB ($dummy [1]), . D (nx 136), . CLK (clock), . R (clear)) ; mux 21_ni ix 137 (. Y (nx 136), . A 0 (Q[1]), . A 1 (nx 28), . S 0 (enable)) ; ao 22 ix 29 (. Y (nx 28), . A 0 (D[1]), . A 1 (load_count), . B 0 (nx 14), . B 1 (nx 22) ) ; or 02 ix 15 (. Y (nx 14), . A 0 (Q[0]), . A 1 (Q[1])) ; aoi 21 ix 23 (. Y (nx 22), . A 0 (Q[1]), . A 1 (Q[0]), . B 0 ( load_count)) ; dffr Q_2__rename (. Q (Q[2]), . QB ($dummy [2]), . D (nx 146), . CLK (clock), . R (clear)) ; mux 21_ni ix 147 (. Y (nx 146), . A 0 (Q[2]), . A 1 (nx 48), . S 0 (enable)) ; oai 21 ix 49 (. Y (nx 48), . A 0 (nx 181), . A 1 (nx 183), . B 0 (nx 189)) ; aoi 21 ix 182 (. Y (nx 181), . A 0 (Q[1]), . A 1 (Q[0]), . B 0 (Q[2])) ; nand 02 ix 184 (. Y (nx 183), . A 0 (nx 185), . A 1 (nx 187)) ; inv 01 ix 186 (. Y (nx 185), . A (load_count)) ; nand 03 ix 188 (. Y (nx 187), . A 0 (Q[2]), . A 1 (Q[1]), . A 2 (Q[0])) ; nand 02 ix 190 (. Y (nx 189), . A 0 (D[2]), . A 1 (load_count)) ; dffr Q_3__rename (. Q (Q[3]), . QB ($dummy [3]), . D (nx 156), . CLK (clock), . R (clear)) ; mux 21_ni ix 157 (. Y (nx 156), . A 0 (Q[3]), . A 1 (nx 62), . S 0 (enable)) ; mux 21_ni ix 63 (. Y (nx 62), . A 0 (nx 54), . A 1 (D[3]), . S 0 ( load_count)) ; xnor 2 ix 55 (. Y (nx 54), . A 0 (Q[3]), . A 1 (nx 187)) ; endmodule

Post-synthesis simulation (Leonardo-generated netlist) Verify synthesized netlist matches behavioral model n Create simulation primitives Post-synthesis simulation (Leonardo-generated netlist) Verify synthesized netlist matches behavioral model n Create simulation primitives library for std cells: n >vlib adk >vcom $ADK/technology/adk. vhd >vcom $ADK/technology/adk_comp. vhd n VITAL models of all ADK std cells Insert library/package declaration into netlist library adk; use adk_components. all; n Simulate in Modelsim, using “do file” or test bench from original behavioral simulation – results should match

Post-synthesis timing analysis n Leonardo can generate SDF (std. delay format) file with technology-specific, Post-synthesis timing analysis n Leonardo can generate SDF (std. delay format) file with technology-specific, VITAL-compliant timing parameters. (CELLTYPE "dffr") (INSTANCE Q_0_EXMPLR) (DELAY (ABSOLUTE (PORT D (: : 0. 00)) (PORT CLK (: : 0. 00)) (PORT R (: : 0. 00)) (IOPATH CLK Q (: : 0. 40) (: : 0. 47)) (IOPATH R Q (: : 0. 00) (: : 0. 55)) (IOPATH CLK QB (: : 0. 45) (: : 0. 36)) (IOPATH R QB (: : 0. 53) (: : 0. 00)))) (TIMINGCHECK (SETUP D (posedge CLK) (0. 47)) (HOLD D (posedge CLK) (-0. 06)))) Delays lumped at pins Path delays (min: typ: max) Constraints

VITAL Model (1) library IEEE; use IEEE. STD_LOGIC_1164. all; use IEEE. VITAL_Primitives. all; use VITAL Model (1) library IEEE; use IEEE. STD_LOGIC_1164. all; use IEEE. VITAL_Primitives. all; use IEEE. VITAL_Timing. all; entity and 02 is generic ( tipd_A 0 : Vital. Delay. Type 01 Z : = Vital. Zero. Delay 01 Z; tipd_A 1 : Vital. Delay. Type 01 Z : = Vital. Zero. Delay 01 Z; tpd_A 0_Y : Vital. Delay. Type 01 Z : = Vital. Zero. Delay 01 Z; tpd_A 1_Y : Vital. Delay. Type 01 Z : = Vital. Zero. Delay 01 Z ); port ( A 0 : in STD_LOGIC; A 1 : in STD_LOGIC; Y : out STD_LOGIC ); attribute VITAL_LEVEL 0 of and 02 : entity is TRUE; end and 02;

VITAL Model (2) architecture and 02_arch of and 02 is attribute VITAL_LEVEL 1 of VITAL Model (2) architecture and 02_arch of and 02 is attribute VITAL_LEVEL 1 of and 02_arch : architecture is TRUE; signal A 0_ipd : STD_LOGIC : = 'X'; signal A 1_ipd : STD_LOGIC : = 'X'; begin Wire. Delay : Block begin Vital. Wire. Delay (A 0_ipd, A 0, tipd_A 0); Vital. Wire. Delay (A 1_ipd, A 1, tipd_A 1); end Block; Vital. Behavior : Process (A 0_ipd, A 1_ipd) VARIABLE INT_RES_0 : STD_LOGIC : = 'X'; VARIABLE Glitch. Data_Y : Vital. Glitch. Data. Type; begin -FUNCTIONALITY SECTION -INT_RES_0 : = Vital. And 2 (A 0_ipd, A 1_ipd);

VITAL Model (3) -PATH DELAY SECTION -Vital. Path. Delay 01 Z ( Out. Signal VITAL Model (3) -PATH DELAY SECTION -Vital. Path. Delay 01 Z ( Out. Signal => Y, Out. Signal. Name => "Y", Out. Temp => INT_RES_0, Paths => ( 0 => ( Input. Change. Time => A 0_ipd'LAST_EVENT, Path. Delay => tpd_A 0_Y, Path. Condition => TRUE ), 1 => ( Input. Change. Time => A 1_ipd'LAST_EVENT, Path. Delay => tpd_A 1_Y, Path. Condition => TRUE ) ), Glitch. Data => Glitch. Data_Y, Mode => On. Detect, Msg. On => TRUE, Xon => TRUE, Msg. Severity => WARNING

Design for test & test generation n Consider test during the design phase – Design for test & test generation n Consider test during the design phase – Test design more difficult after design frozen n Basic steps: – Design for test (DFT) – insert test points, scan chains, etc. to improve testability – Insert built-in self-test (BIST) circuits – Generate test patterns (ATPG) – Determine fault coverage (Fault Simulation)

DFT & test design flow Memory & Logic BIST Boundary Scan Internal Scan Design DFT & test design flow Memory & Logic BIST Boundary Scan Internal Scan Design ATPG

DFTadvisor/Fast. Scan Design Flow count 4. vhd count 4_0. vhd count 4. v DFT/ATPG DFTadvisor/Fast. Scan Design Flow count 4. vhd count 4_0. vhd count 4. v DFT/ATPG Library: count 4_scan. v adk. atpg Source: Flex. Test Manual

ASIC DFT Flow Synthesized VHDL/Verilog Netlist ATPG Library DFT Advisor Insert Internal Scan Circuitry ASIC DFT Flow Synthesized VHDL/Verilog Netlist ATPG Library DFT Advisor Insert Internal Scan Circuitry VHDL/Verilog Netlist With Scan Elements Fastscan/ Flextest Generate/Verify Test Vectors Test Pattern File adk. atpg

Example DFTadvisor session n Invoke: n Implement scan with defaults: – dftadvisor –verilog count Example DFTadvisor session n Invoke: n Implement scan with defaults: – dftadvisor –verilog count 4. v –lib $ADK/technology/adk. atpg (full scan, mux-DFF scan elements) – set system mode setup – analyze control signals –auto – set system mode dft – run – insert test logic – write netlist count 4_scan. v –verilog – write atpg setup count 4_scan (creates count 4_scan. dofile for ATPG in Fastscan)

count 4 – without scan design count 4 – without scan design

count 4 – scan inserted by DFTadvisor count 4 – scan inserted by DFTadvisor

ATPG with Fast. Scan (full-scan circuit) n Invoke: – fastscan –verilog count 4. v ATPG with Fast. Scan (full-scan circuit) n Invoke: – fastscan –verilog count 4. v –lib $ADK/technology/adk. atpg n Generate test pattern file in Fast. Scan: – – dofile count 4_scan. dofile set system mode atpg create patterns –auto save patterns (defines scan path & procedure) (generate test patterns) Note: “count 4_scan. dofile” created by DFTadvisor

Test file: scan chain definition and load/unload procedures scan_group Test file: scan chain definition and load/unload procedures scan_group "grp 1" = scan_chain "chain 1" = scan_in = "/scan_in 1"; scan_out = "/output[3]"; length = 4; end; procedure shift "grp 1_load_shift" = force_sci "chain 1" 0; force "/clock" 1 20; force "/clock" 0 30; period 40; end; procedure shift "grp 1_unload_shift" = measure_sco "chain 1" 10; force "/clock" 1 20; force "/clock" 0 30; period 40; end; procedure load "grp 1_load" = force "/clear" 0 0; force "/clock" 0 0; force "/scan_en" 1 0; apply "grp 1_load_shift" 4 40; end; procedure unload "grp 1_unload" = force "/clear" 0 0; force "/clock" 0 0; force "/scan_en" 1 0; apply "grp 1_unload_shift" 4 40; end;

Generated scan-based test // send a pattern through the scan chain CHAIN_TEST = pattern Generated scan-based test // send a pattern through the scan chain CHAIN_TEST = pattern = 0; apply "grp 1_load" 0 = (use grp 1_load procedure) chain "chain 1" = "0011"; (pattern to scan in) end; apply "grp 1_unload" 1 = (use grp 1_unload procedure) chain "chain 1" = "1100"; (pattern scanned out) end; // one of 14 patterns for the counter circuit pattern = 0; (pattern #) apply "grp 1_load" 0 = (load scan chain) chain "chain 1" = "1000"; (scan-in pattern) end; force "PI" "00110" 1; (PI pattern) measure "PO" "0010" 2; (expected POs) pulse "/clock" 3; (normal op. cycle) apply "grp 1_unload" 4 = (read scan chain) chain "chain 1" = "0110"; (expected pattern) end;

ASIC Physical Design (Standard Cell) (can also do full custom layout) Component-Level Netlist (EDDM ASIC Physical Design (Standard Cell) (can also do full custom layout) Component-Level Netlist (EDDM format) Std. Cell Layouts Floorplan Chip/Block Libraries Mentor Graphics “IC Station” (adk_ic) ICblocks Process Data Place & Route Std. Cells Design Rules Generate Mask Data Design Rule Check Calibre IC Mask Data Backannotate Schematic Calibre Layout vs. Schematic Check Calibre Mach TA/Eldo Simulation Model

Cell-Based IC Cell-Based IC

Cell-Based Block Cell-Based Block

Basic standard Cell layout Source: Weste “CMOS VLSI Design” Basic standard Cell layout Source: Weste “CMOS VLSI Design”

Preparation for Layout 1. Use Design Architect-IC to convert Verilog netlist to Mentor Graphics Preparation for Layout 1. Use Design Architect-IC to convert Verilog netlist to Mentor Graphics EDDM netlist format – – 2. 3. n Invoke Design Architect-IC (adk_daic) On menu bar, select File > Import Verilog § Netlist file: count 4. v (the Verilog netlist) § Output directory: count 4 (for the EDDM netlist) § Mapping file $ADK/technology/adk_map. vmp Open the generated schematic for viewing – – – 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” Create design viewpoints for ICstation tools – adk_dve count 4 –t tsmc 035 (V. P’s: layout, lvs, sdl, tsmc 035) Can also create gate/transistor schematics directly in DAIC using components from the ADK library

DA-IC generated schematic DA-IC generated schematic

Eldo simulation from DA-IC n Run simulations from within DA-IC – Eldo, ADVance MS, Eldo simulation from DA-IC n Run simulations from within DA-IC – Eldo, ADVance MS, Mach TA n DA-IC invokes a “netlister” to create a circuit model from the schematic – SPICE model for Eldo & Mach TA n Eldo analyses, forces, probes, etc. same as SPICE n View results in EZwave or Xelga

Eldo input and output files -Netlist -Simulation cmds -Stimulus Eldo input and output files -Netlist -Simulation cmds -Stimulus

SPICE “circuit” file generated by DA-IC From ADK library Force values (created interactively) SPICE SPICE “circuit” file generated by DA-IC From ADK library Force values (created interactively) SPICE netlist for modulo 7 counter

Force functions (1) n DC value – Vsigname A 0 DC 5 V indicates Force functions (1) n DC value – Vsigname A 0 DC 5 V indicates voltage Force name Between circuit nodes A and GND (node 0) Value (volts)

Force functions (2) n Pulse/square wave – Vsigname B 0 pulse 0 5 0 Force functions (2) n Pulse/square wave – Vsigname B 0 pulse 0 5 0 0. 1 N 20 N 40 N Nodes Initial Pulsed Voltage v 1 v 2 tp v 2 v 1 td tr tw tf Rise Fall time tr tf Pulse Period width tp tw Delay from start of period for waveform to begin - td

Force functions (3) n Pattern wave (for logic 0 & 1 values) Vname B Force functions (3) n Pattern wave (for logic 0 & 1 values) Vname B 0 pattern 5 0 5 n 0. 1 n 10 n 011010 R Bit pattern Rise & Fall Time between Logic 1 & 0 voltages Delay tochanges Duration of bit value waveform Between circuit Nodes B & GND (node 0) begin 1 0 delay 1 1 0 pattern 0 Repeat the pattern (optional)

Eldo simulation of modulo 7 counter (transient analysis) Eldo simulation of modulo 7 counter (transient analysis)

Create a std-cell based logic block in IC Station Invoke: adk_ic n In IC Create a std-cell based logic block in IC Station Invoke: adk_ic n In IC Station palette, select: Create Cell n – – – – – Cell name: count 4 Attach library: $ADK/technology/ic/process/tsmc 035 Process: $ADK/technology/ic/process/tsmc 035 Rules file: $ADK/technology/ic/process/tsmc 035. rules Angle mode: 45 Cell type: block Select With connectivity EDDM schematic viewpoint: count 4/layout Logic loading options: flat

Create Cell dialog box Create Cell dialog box

Auto-”floorplan” the block place & route > autofp Auto-”floorplan” the block place & route > autofp

Auto-place the std cells Autoplc > Std. Cel Auto-place the std cells Autoplc > Std. Cel

Auto-place “ports” (Autoplc > Ports) Signal connections on cell boundaries Auto-place “ports” (Autoplc > Ports) Signal connections on cell boundaries

Auto. Route all nets (hand-route any unrouted “overflows”) Then: Add > Port Text to Auto. Route all nets (hand-route any unrouted “overflows”) Then: Add > Port Text to copy port names from schematic – for Calibre

Layout design rule check (DRC) n Technology-specific design rules specify minimum sizes, spacing, etc. Layout design rule check (DRC) n Technology-specific design rules specify minimum sizes, spacing, etc. of features to ensure reliable fabrication – Design rules file specified at startup Ex. tsmc 035. rules n From main palette, select ICrules – Click Check and then OK in prompt box (can optionally select a specific area to check) – Rules checked in numeric order

Common errors detected by DRC n To fix, click on First in palette to Common errors detected by DRC n To fix, click on First in palette to highlight first error – – n Error is highlighted in the layout Click View to zoom in to the error (see next) Example: DRC 9_2: Metal 2 spacing = 3 L Fix by drawing a rectangle of metal 2 to fill in the gap between contacts that should be connected Click Next to go to next error, until all are fixed NOTE: There can be no DRC errors if MOSIS is to fabricate the chip – they will run their own DRC.

Error: DRC 9_2 metal 2 spacing = 3 L Draw rectangle of metal 2 Error: DRC 9_2 metal 2 spacing = 3 L Draw rectangle of metal 2 to fill gap

Layout vs schematic check Calibre Interactive LVS n From ICstation menu: Calibre > Run Layout vs schematic check Calibre Interactive LVS n From ICstation menu: Calibre > Run LVS – – – n In popup, Calibre location: $MGC_HOME/. . /Calibre Rules: $ADK/technology/ic/process/tsmc 035. calibre. rules Input: count 4. src. net (previously created in DA-IC) H-cells: $ADK/technology/adk. hcell (hierarchical cells) Extracted file: count 4. lay. net Compares extracted transistor-level netlist vs. netlist saved in DA-IC

Post-layout parameter extraction Calibre Interactive PEX n Extract Spice netlist, including parasitic RC – Post-layout parameter extraction Calibre Interactive PEX n Extract Spice netlist, including parasitic RC – Simulate in Eldo or Mach. TA n ICstation menu: Calibre>Run PEX – Options similar to Calibre LVS – Extraction options: § lumped C + coupling cap’s § distributed RC + coupling cap’s – Output file: count 4. pex. netlist

Post-layout simulation with Mach. TA n Mach. TA is an accelerated Spice simulator – Post-layout simulation with Mach. TA n Mach. TA 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 n 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/tsmc 035 Mach TA flow diagram SPICE netlist $ADK/technology/mta/tsmc 035

Prepare Calibre-extracted netlist for Mach TA (file. pex. netlist) n In file. pex. netlist, Prepare Calibre-extracted netlist for Mach TA (file. pex. netlist) n In file. pex. netlist, insert model definitions and VDD/GND voltage source functions after comment header: * File: m 7. pex. netlist * Created: Thu Nov 15 15: 25: 56 2007 * Program "Calibre x. RC" * Version "v 2005. 2_9. 14". model n nmos. model p pmos Vvdd VDD 0 5 Vgnd GND 0 0 n Delete (or comment out with * in 1 st column). subcircuit statement and any continuation lines (for long statement): *. subckt modulo 7 CLK Q[1] CLEARBAR I[1] Q[0] I[0] Q[2] *+ L_CBAR I[2] GND VDD n Change. ends to. END near end of file

Post-layout simulation with Mach TA n Invoke Mach TA: ana - command file to Post-layout simulation with Mach TA n Invoke Mach TA: ana - command file to initialize Anacad SW mta –ezw –t $ADK/technology/mta/tsmc 035 count 4. sp Transistor calibration files for this technology Generate waveform database & display in EZwave Netlist, modified as on previous slide Other options: -do file -donot -b (execute commands from file. do – instead of design. spdo (run without simulating – compile only) (run in batch mode – no GUI – output to console)

Sample Mach TA “dofile” (transient analysis) Signals to observe in EZwave plot v(clk) v(q[2]) Sample Mach TA “dofile” (transient analysis) Signals to observe in EZwave plot v(clk) v(q[2]) v(q[1]) v(q[0]) measure rising TRIG v(clk) VAL=2. 5 v RISE=1 TARG v(q[0]) VAL=2. 5 v l load l reset h count Measure time from rising edge of clk (TRIGger) l clk to 1 st 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 Command to execute: dofile. do

EZwaveform viewer (results for previous dofile) Double-click signal name to display. EZwaveform 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]) 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. 5 v RISE=1 TARG v(q[0]) VAL=2. 5 v vpulse Vclk 0 pulse(0 3. 3 10 n. 05 n 10 n 20 n) 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 n Verify design functionality/behavior – apply test vectors Mach TA – test vector file n Verify design functionality/behavior – apply test vectors – capture outputs – compare outputs to expected result – vectors/outputs from behavioral simulation n Command to execute a test vector file: run –tvend tvfile. tv test vector file (next slide)

Test vector file format # Test vector file for modulo 7 counter CODEFILE UNITS Test vector file format # Test vector file for modulo 7 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 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 Behavioral simulation listing Corresponding Mach TA test vector file

Alternate test vector file (clock generated separately by voltage source) vpulse vclk 0 pulse(0 Alternate test vector file (clock generated separately by voltage source) vpulse vclk 0 pulse(0 3. 3 10 n. 5 n 10 n 20 n) Can mix other simulation commands with test vector application.

Physical Design - FPGA Component-Level Netlist Xilinx “ISE” Altera “Max Plus 2” User-Specified Constraints Physical Design - FPGA Component-Level Netlist Xilinx “ISE” Altera “Max Plus 2” User-Specified Constraints Map to FPGA LUTs, FFs, IOBs Place & Route Generate Programming Data Configuration File Generate Timing Model Simulation Model FPGA/PLD Technology Files

So. C Design with Xilinx XPS Memory Power. PC Peripherals So. C Design with Xilinx XPS Memory Power. PC Peripherals