Micron Technology Clinic Tool Flow and Comparison of Micron Package Models Presenter: Michael Tomer Advisor: Dr. Ken Stevens.

Slides:



Advertisements
Similar presentations
Simulation executable (simv)
Advertisements

ELEN 468 Lecture 61 ELEN 468 Advanced Logic Design Lecture 6 Delay Models.
12- Agenda Introduction 1 Verilog-A Modules 2 DAY 1 Synopsys 60-I-032-BSG-005 © 2007 Synopsys, Inc. All Rights Reserved Simulating Variability – Design.
ECE Synthesis & Verification - Lecture 2 1 ECE 667 Spring 2011 ECE 667 Spring 2011 Synthesis and Verification of Digital Circuits High-Level (Architectural)
16/04/20151 Hardware Descriptive Languages these notes are taken from Mano’s book It can represent: Truth Table Boolean Expression Diagrams of gates and.
How to get a Circuit in verilog converted to hspice, connected to the micron package models, and simulating in hspice and hsimplus.
ECE 551 Digital System Design & Synthesis Lecture 08 The Synthesis Process Constraints and Design Rules High-Level Synthesis Options.
Logic Synthesis – 3 Optimization Ahmed Hemani Sources: Synopsys Documentation.
1 Workshop Topics - Outline Workshop 1 - Introduction Workshop 2 - module instantiation Workshop 3 - Lexical conventions Workshop 4 - Value Logic System.
1 COMP541 Sequential Circuits Montek Singh Sep 17, 2014.
PSPICE Tutorial. Introduction SPICE (Simulation Program for Integrated Circuits Emphasis) is a general purpose analog circuit simulator that is used to.
Integrated Circuits Laboratory Faculty of Engineering Digital Design Flow Using Mentor Graphics Tools Presented by: Sameh Assem Ibrahim 16-October-2003.
CSE241 Formal Verification.1Cichy, UCSD ©2003 CSE241A VLSI Digital Circuits Winter 2003 Recitation 6: Formal Verification.
Micron Technology Clinic Evaluation of Integrated Circuit Power Supply Noise with Two-Phase Analysis Sze-Hsiang Harper, Michael Tomer, Kristian Blomquist,
Kazi Spring 2008CSCI 6601 CSCI-660 Introduction to VLSI Design Khurram Kazi.
ECE 353 Computer Systems Lab I Verilog Hardware Description Language.
Verilog Lab This presentation includes some material that is selected from BUCKNELL VERILOG HANDBOOK. Instructor: Dr. Charles Liu Prepared by John Ren.
ECEN ECEN475 Introduction to VLSI System Design Verilog HDL.
1 8 Bit ALU EE 166 Design Project San Jose State University Roger Flores Brian Silva Chris Tran Harizo Yawary Advisor: Dr. Parent May 2006.
Guest Lecture by Ben Magstadt CprE 281: Digital Logic.
Robust Low Power VLSI R obust L ow P ower VLSI Memory Management Units for Instruction and Data Cache for OR1200 CPU Core Arijit Banerjee ASIC/SOC Class.
Global Timing Constraints FPGA Design Workshop. Objectives  Apply timing constraints to a simple synchronous design  Specify global timing constraints.
Guest Lecture by Ben Magstadt CprE 281: Digital Logic.
1 VERILOG Fundamentals Workshop סמסטר א ' תשע " ה מרצה : משה דורון הפקולטה להנדסה Workshop Objectives: Gain basic understanding of the essential concepts.
ISE. Tatjana Petrovic 249/982/22 ISE software tools ISE is Xilinx software design tools that concentrate on delivering you the most productivity available.
© 2003 Xilinx, Inc. All Rights Reserved Reading Reports Xilinx: This module was completely redone. Please translate entire module Some pages are the same.
Kazi ECE 6811 ECE 681 VLSI Design Automation Khurram Kazi* Lecture 10 Thanks to Automation press THE button outcomes the Chip !!! Reality or Myth (*Mostly.
EE415 VLSI Design DYNAMIC LOGIC [Adapted from Rabaey’s Digital Integrated Circuits, ©2002, J. Rabaey et al.]
ASIC/FPGA design flow. FPGA Design Flow Detailed (RTL) Design Detailed (RTL) Design Ideas (Specifications) Design Ideas (Specifications) Device Programming.
ASIC Design Flow – An Overview Ing. Pullini Antonio
ELEC 5270/6270 Spring 2013 Low-Power Design of Electronic Circuits Tools for Power Analysis
ECE122 – Digital Electronics & Design
Chonnam national university VLSI Lab 8.4 Block Integration for Hard Macros The process of integrating the subblocks into the macro.
The George Washington University School of Engineering and Applied Science Department of Electrical and Computer Engineering ECE122 – 30 Lab 3: Layout.
1 COMP541 Combinational Logic - 4 Montek Singh Jan 30, 2012.
Synopsys Custom Designer Tutorial for a chip integration using the University of Utah Standard Cell Libraries In ON Semiconductor 0.5u C5 CMOS Version.
Module 1.2 Introduction to Verilog
1 COMP541 Sequential Circuits Montek Singh Feb 1, 2012.
ECE 545 Project 2 Specification. Project 2 (15 points) – due Tuesday, December 19, noon Application: cryptography OR digital signal processing optimized.
Introductory project. Development systems Design Entry –Foundation ISE –Third party tools Mentor Graphics: FPGA Advantage Celoxica: DK Design Suite Design.
Modern VLSI Design 4e: Chapter 8 Copyright  2008 Wayne Wolf Topics Modeling with hardware description languages (HDLs).
Modern VLSI Design 3e: Chapter 8 Copyright  1998, 2002 Prentice Hall PTR Topics n Modeling with hardware description languages (HDLs).
IMPLEMENTATION OF MIPS 64 WITH VERILOG HARDWARE DESIGN LANGUAGE BY PRAMOD MENON CET520 S’03.
Behavioral Modelling - 1. Verilog Behavioral Modelling Behavioral Models represent functionality of the digital hardware. It describes how the circuit.
Switch Level Modeling Part II 26 September Contents 1.Clarifications: a)nMOS and pMOS instantiations b)Testbenches for NOR gate example c)Use of.
Floyd, Digital Fundamentals, 10 th ed Digital Fundamentals Tenth Edition Floyd © 2008 Pearson Education Chapter 1.
Spring 2009W. Rhett DavisNC State UniversityECE 406Slide 1 ECE 406 – Design of Complex Digital Systems Lecture 4: Testing, Dataflow Modeling Spring 2009.
Introduction to Verilog. Data Types A wire specifies a combinational signal. – Think of it as an actual wire. A reg (register) holds a value. – A reg.
Digital Logic Design Lecture # 6 University of Tehran.
FPGA-Based System Design Copyright  2004 Prentice Hall PTR Topics n Modeling with hardware description languages (HDLs).
CprE 281: Verilog Tutorial Ben Magstadt – Master’s Student Electrical Engineering.
ASIC/FPGA design flow. Design Flow Detailed Design Detailed Design Ideas Design Ideas Device Programming Device Programming Timing Simulation Timing Simulation.
04/21/20031 ECE 551: Digital System Design & Synthesis Lecture Set : Functional & Timing Verification 10.2: Faults & Testing.
ECE122 – Digital Electronics & Design Tanner Tools Tutorial Ritu Bajpai September 4, 2008.
Ryan C. Semler Fall 2009 EE330 Final Design Project.
EECE6017C - Lab 0 Introduction to Altera tools and Basic Digital Logic
THE CMOS INVERTER.
Library Characterization
Reg and Wire:.
Introduction to Verilog
Verilog-HDL-1 by Dr. Amin Danial Asham.
SoCKs Flow: Here, There, and Back Again
Introduction to Verilog
Week 5, Verilog & Full Adder
Timing Analysis 11/21/2018.
Introduction to Digital System and Microprocessor Design
Introduction to Verilog
Introduction to Verilog
Introduction to Verilog
Introduction to Digital IC Design
Presentation transcript:

Micron Technology Clinic Tool Flow and Comparison of Micron Package Models Presenter: Michael Tomer Advisor: Dr. Ken Stevens

Tool Flow and Comparison of the Micron Package Models ► Tool flow  Design of circuits and conversion of circuits to spice format  Setup of control files to run simulations ► Comparison of the Micron package models  Differences between HSimPlus and Hspice when simulating using the package models  Actual differences in the signal between the same tool ► Power and signal integrity when using varying amounts of power inputs

Tool Flow VerilogOptimized VerilogStructural VerilogSpiceVerilog (logic correct)ResultsSimulation Control File

Tool Flow ► Biggest problem encountered in the project  Tool Setup ► Licensing  No prior experience with tools  Tools failed and stopped working randomly ► As I write this, the tools which had been working earlier today have stopped working. (citing licensing issues) ► As an example I will be converting a verilog file to the spice format

Tool Flow VerilogOptimized VerilogStructural VerilogSpiceVerilog (logic correct)ResultsSimulation Control File

Verilog Creation // mod.v `timescale 1ns / 1ps module mod( a, out, CLK); input [3:0] a; input CLK; output [1:0] out; reg [1:0] out; CLK) begin out <= a % 3; endendmodule These are the names of the internal inputs and outputs This is where you declare the specs of the circuit. The [3:0] syntax means that there are 4 wires contained in the circuit. the output of this circuit is named out. For us to be able to assign to out in the always block below we must also declare a reg of the same type and name. For this circuit, the code in the always block will run every time that the CLK signal goes from low to high

Initial Simulation ► Simulation of the digital logic in the circuit is wise to do at this level before proceeding  More difficult to simulate later ► Digital logic simulation tools  ModelSim SE  Xilink ISE

ModelSim SE

Conversion from Verilog to Spice ► Conversion from verilog to spice is done in three steps 1.Optimization and verification 2.Synthesized using design compiler 3.Conversion to spice

Conversion from Verilog to Spice ► A set of script files are used to do steps 1 and 2  These are based off of the scripts from Ken Stevens ECE 6770 Advanced digital VLSI design class webpage  They have been modified to use 65nm design libraries

Step 1: Optimization and Verification ► Verilog circuit is verified and optimized using Design Compiler  Prepares the RTL verilog code to be mapped to the 65nm libraries mod.v `timescale 1ns / 1ps module mod( a, out, CLK); input [3:0] a; input CLK; output [1:0] out; reg [1:0] out; CLK) begin out <= a % 3; end Endmodule mod.rtlopt.v module mod ( a, out, CLK ); input [3:0] a; output [1:0] out; input CLK; wire N0, N1; REM_UNS_OP rem_13 (.A(a),.B({1'b1, 1'b1}),.REMAINDER({N1, N0}) ); \**SEQGEN** \out_reg[1] (.clear(1'b0),.preset(1'b0),.next_state(N1),.clocked_on(CLK),.data_in(1'b0),.enable(1'b0),.Q(out[1]),.synch_clear(1'b0),.synch_preset(1'b0),.synch_toggle(1'b0),.synch_enable(1'b1) ); \**SEQGEN** \out_reg[0] (.clear(1'b0),.preset(1'b0),.next_state(N0),.clocked_on(CLK),.data_in(1'b0),.enable(1'b0),.Q(out[0]),.synch_clear(1'b0),.synch_preset(1'b0),.synch_toggle(1'b0),.synch_enable(1'b1) ); endmodule

Step 2: Conversion to Structural Verilog ► Design compiler will convert the file  Maps the logic in the optimized verilog file to modules in the 65nm libraries ► Runs timing tests  Ensures that signals have enough time to propagate through a circuit

Step 2: Conversion to Structural Verilog (continued) Excerpt from mod.dcopt.fullpaths Startpoint: a[2] (input port) Endpoint: clock_r_REG0_S1 (rising edge-triggered flip-flop clocked by clock) Path Group: clock Path Type: max Point Incr Path clock (input port clock) (rise edge) input external delay r a[2] (in) r U19/Y (NAND2X1A12TR) f U17/Y (NAND2X1A12TR) r U14/Y (OAI22X1A12TR) f U18/Y (XOR2X0P7A12TR) f clock_r_REG0_S1/D (DFFQNX0P5A12TR) f data arrival time 0.10 clock clock (rise edge) clock network delay (ideal) clock uncertainty clock_r_REG0_S1/CK (DFFQNX0P5A12TR) r library setup time data required time data required time 0.23 data arrival time slack (MET) 0.13 Scripts generate timing information Clock rate is defined in our script files Possibly too fast or too slow

Step 2: Conversion to Structural Verilog (continued) mod.dcopt.v module mod ( a, out0, CLK ); input [3:0] a; output [1:0] out0; input CLK; wire n22, n23, n1, n2, n3, n5, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19, n20, n21; A2DFFQX1A12TR clock_r_REG2_S1 (.A(n1),.B(n12),.CK(CLK),.Q(n10) ); DFFQX0P5A12TR clock_r_REG1_S1 (.D(n18),.CK(CLK),.Q(n9) ); DFFQNX0P5A12TR clock_r_REG0_S1 (.D(n15),.CK(CLK),.QN(n21) ); DFFQX0P5A12TR clock_r_REG3_S1 (.D(n2),.CK(CLK),.Q(n8) ); OAI2XB1X1A12TR U3 (.A1N(n8),.A0(n21),.B0(n19),.Y(n20) ); XOR2X0P7A12TR U4 (.A(n20),.B(n8),.Y(n23) ); XNOR2X0P7A12TR U5 (.A(n7),.B(n21),.Y(n22) ); INVX16A12TR U6 (.A(n3),.Y(out0[0]) ); INVX16A12TR U7 (.A(n5),.Y(out0[1]) ); BUFHX1P4A12TR U8 (.A(a[2]),.Y(n1) ); INVX0P5BA12TR U9 (.A(a[3]),.Y(n12) ); NAND2X0P5BA12TR U10 (.A(a[1]),.B(n16),.Y(n18) ); BUFHX1P4A12TR U11 (.A(a[0]),.Y(n2) ); INVX0P5BA12TR U12 (.A(n23),.Y(n3) ); INVX0P5BA12TR U13 (.A(n22),.Y(n5) ); OAI22X1A12TR U14 (.A0(n17),.A1(n14),.B0(n13),.B1(n12),.Y(n16) ); INVX2A12TR U15 (.A(a[1]),.Y(n14) ); INVX2A12TR U16 (.A(n11),.Y(n13) ); NAND2X1A12TR U17 (.A(a[2]),.B(n11),.Y(n17) ); XOR2X0P7A12TR U18 (.A(n16),.B(a[1]),.Y(n15) ); NAND2X1A12TR U19 (.A(a[3]),.B(a[2]),.Y(n11) ); AND2X1A12TR U20 (.A(n8),.B(n20),.Y(n7) ); XOR2X0P7A12TR U21 (.A(n9),.B(n10),.Y(n19) ); endmodule mod.rtlopt.v module mod ( a, out, CLK ); input [3:0] a; output [1:0] out; input CLK; wire N0, N1; REM_UNS_OP rem_13 (.A(a),.B({1'b1, 1'b1}),.REMAINDER({N1, N0}) ); \**SEQGEN** \out_reg[1] (.clear(1'b0),.preset(1'b0),.next_state(N1),.clocked_on(CLK),.data_in(1'b0),.enable(1'b0),.Q(out[1]),.synch_clear(1'b0),.synch_preset(1'b0),.synch_toggle(1'b0),.synch_enable(1'b1) ); \**SEQGEN** \out_reg[0] (.clear(1'b0),.preset(1'b0),.next_state(N0),.clocked_on(CLK),.data_in(1'b0),.enable(1'b0),.Q(out[0]),.synch_clear(1'b0),.synch_preset(1'b0),.synch_toggle(1'b0),.synch_enable(1'b1) ); endmodule

Step 3: Conversion to Spice ► Mentor’s v2lvs utility converts the structural verilog to spice format  Formats are similar

Step 3: Conversion to Spice mod.dcopt.v module mod ( a, out0, CLK ); input [3:0] a; output [1:0] out0; input CLK; wire n22, n23, n1, n2, n3, n5, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19, n20, n21; A2DFFQX1A12TR clock_r_REG2_S1 (.A(n1),.B(n12),.CK(CLK),.Q(n10) ); DFFQX0P5A12TR clock_r_REG1_S1 (.D(n18),.CK(CLK),.Q(n9) ); DFFQNX0P5A12TR clock_r_REG0_S1 (.D(n15),.CK(CLK),.QN(n21) ); DFFQX0P5A12TR clock_r_REG3_S1 (.D(n2),.CK(CLK),.Q(n8) ); OAI2XB1X1A12TR U3 (.A1N(n8),.A0(n21),.B0(n19),.Y(n20) ); XOR2X0P7A12TR U4 (.A(n20),.B(n8),.Y(n23) ); XNOR2X0P7A12TR U5 (.A(n7),.B(n21),.Y(n22) ); INVX16A12TR U6 (.A(n3),.Y(out0[0]) ); INVX16A12TR U7 (.A(n5),.Y(out0[1]) ); BUFHX1P4A12TR U8 (.A(a[2]),.Y(n1) ); INVX0P5BA12TR U9 (.A(a[3]),.Y(n12) ); NAND2X0P5BA12TR U10 (.A(a[1]),.B(n16),.Y(n18) ); BUFHX1P4A12TR U11 (.A(a[0]),.Y(n2) ); INVX0P5BA12TR U12 (.A(n23),.Y(n3) ); INVX0P5BA12TR U13 (.A(n22),.Y(n5) ); OAI22X1A12TR U14 (.A0(n17),.A1(n14),.B0(n13),.B1(n12),.Y(n16) ); INVX2A12TR U15 (.A(a[1]),.Y(n14) ); INVX2A12TR U16 (.A(n11),.Y(n13) ); NAND2X1A12TR U17 (.A(a[2]),.B(n11),.Y(n17) ); XOR2X0P7A12TR U18 (.A(n16),.B(a[1]),.Y(n15) ); NAND2X1A12TR U19 (.A(a[3]),.B(a[2]),.Y(n11) ); AND2X1A12TR U20 (.A(n8),.B(n20),.Y(n7) ); XOR2X0P7A12TR U21 (.A(n9),.B(n10),.Y(n19) ); endmodule mod.v2lvs.sp $ Spice netlist generated by v2lvs $ v2007.2_26.18 Wed Jun 13 20:11:48 PDT 2007.SUBCKT mod a[3] a[2] a[1] a[0] out0[1] out0[0] CLK Xclock_r_REG2_S1 n10 n1 n12 CLK A2DFFQX1A12TR Xclock_r_REG1_S1 n9 CLK n DFFQX0P5A12TR Xclock_r_REG0_S1 n21 CLK n DFFQNX0P5A12TR Xclock_r_REG3_S1 n8 CLK n DFFQX0P5A12TR XU3 n20 n21 n8 n OAI2XB1X1A12TR XU4 n23 n20 n XOR2X0P7A12TR XU5 n22 n7 n XNOR2X0P7A12TR XU6 out0[0] n INVX16A12TR XU7 out0[1] n INVX16A12TR XU8 n1 a[2] BUFHX1P4A12TR XU9 n12 a[3] INVX0P5BA12TR XU10 n18 a[1] n NAND2X0P5BA12TR XU11 n2 a[0] BUFHX1P4A12TR XU12 n3 n INVX0P5BA12TR XU13 n5 n INVX0P5BA12TR XU14 n16 n17 n14 n13 n OAI22X1A12TR XU15 n14 a[1] INVX2A12TR XU16 n13 n INVX2A12TR XU17 n17 a[2] n NAND2X1A12TR XU18 n15 n16 a[1] XOR2X0P7A12TR XU19 n11 a[3] a[2] NAND2X1A12TR XU20 n7 n8 n AND2X1A12TR XU21 n19 n9 n XOR2X0P7A12TR.ENDS

Step 3: Conversion to Spice mod.v2lvs.sp (with VDD,VSS addition) $ Spice netlist generated by v2lvs $ v2007.2_26.18 Wed Jun 13 20:11:48 PDT 2007.SUBCKT mod a[3] a[2] a[1] a[0] out0[1] out0[0] CLK VDD VSS Xclock_r_REG2_S1 n10 n1 n12 CLK VDD VSS A2DFFQX1A12TR Xclock_r_REG1_S1 n9 CLK n18 VDD VSS DFFQX0P5A12TR Xclock_r_REG0_S1 n21 CLK n15 VDD VSS DFFQNX0P5A12TR Xclock_r_REG3_S1 n8 CLK n2 VDD VSS DFFQX0P5A12TR XU3 n20 n21 n8 n19 VDD VSS OAI2XB1X1A12TR XU4 n23 n20 n8 VDD VSS XOR2X0P7A12TR XU5 n22 n7 n21 VDD VSS XNOR2X0P7A12TR XU6 out0[0] n3 VDD VSS INVX16A12TR XU7 out0[1] n5 VDD VSS INVX16A12TR XU8 n1 a[2] VDD VSS BUFHX1P4A12TR XU9 n12 a[3] VDD VSS INVX0P5BA12TR XU10 n18 a[1] n16 VDD VSS NAND2X0P5BA12TR XU11 n2 a[0] VDD VSS BUFHX1P4A12TR XU12 n3 n23 VDD VSS INVX0P5BA12TR XU13 n5 n22 VDD VSS INVX0P5BA12TR XU14 n16 n17 n14 n13 n12 VDD VSS OAI22X1A12TR XU15 n14 a[1] VDD VSS INVX2A12TR XU16 n13 n11 VDD VSS INVX2A12TR XU17 n17 a[2] n11 VDD VSS NAND2X1A12TR XU18 n15 n16 a[1] VDD VSS XOR2X0P7A12TR XU19 n11 a[3] a[2] VDD VSS NAND2X1A12TR XU20 n7 n8 n20 VDD VSS AND2X1A12TR XU21 n19 n9 n10 VDD VSS XOR2X0P7A12TR.ENDS V2lvs utility not perfect Emacs script Define power net domains for the blocks (supports multiple power sources) Fix naming clashes (HSPICE not case sensitive) Correct unconnected net problems Hand editing

Step 3: Conversion to Spice ► Result  A spice file of the circuit that is ready to be simulated mod.v2lvs.sp (with VDD,VSS addition) $ Spice netlist generated by v2lvs $ v2007.2_26.18 Wed Jun 13 20:11:48 PDT 2007.SUBCKT mod a[3] a[2] a[1] a[0] out0[1] out0[0] CLK VDD VSS Xclock_r_REG2_S1 n10 n1 n12 CLK VDD VSS A2DFFQX1A12TR Xclock_r_REG1_S1 n9 CLK n18 VDD VSS DFFQX0P5A12TR Xclock_r_REG0_S1 n21 CLK n15 VDD VSS DFFQNX0P5A12TR Xclock_r_REG3_S1 n8 CLK n2 VDD VSS DFFQX0P5A12TR XU3 n20 n21 n8 n19 VDD VSS OAI2XB1X1A12TR XU4 n23 n20 n8 VDD VSS XOR2X0P7A12TR XU5 n22 n7 n21 VDD VSS XNOR2X0P7A12TR XU6 out0[0] n3 VDD VSS INVX16A12TR XU7 out0[1] n5 VDD VSS INVX16A12TR XU8 n1 a[2] VDD VSS BUFHX1P4A12TR XU9 n12 a[3] VDD VSS INVX0P5BA12TR XU10 n18 a[1] n16 VDD VSS NAND2X0P5BA12TR XU11 n2 a[0] VDD VSS BUFHX1P4A12TR XU12 n3 n23 VDD VSS INVX0P5BA12TR XU13 n5 n22 VDD VSS INVX0P5BA12TR XU14 n16 n17 n14 n13 n12 VDD VSS OAI22X1A12TR XU15 n14 a[1] VDD VSS INVX2A12TR XU16 n13 n11 VDD VSS INVX2A12TR XU17 n17 a[2] n11 VDD VSS NAND2X1A12TR XU18 n15 n16 a[1] VDD VSS XOR2X0P7A12TR XU19 n11 a[3] a[2] VDD VSS NAND2X1A12TR XU20 n7 n8 n20 VDD VSS AND2X1A12TR XU21 n19 n9 n10 VDD VSS XOR2X0P7A12TR.ENDS

Tool Flow VerilogOptimized VerilogStructural VerilogSpiceVerilog (logic correct)ResultsSimulation Control File

Spice File Simulation ► HSpice and HSimPlus require a control file to simulate  These control files define circuits, input stimulus, output measurements, and other options ► Hard to program from scratch without example ► Hard to set up properly even with good examples

Control Files mod.wop.sp SPICE simulation of our simple inverter * SPICE simulation of our simple inverter * include our circuit.include 'mod.v2lvs.sp' * include the library.include '/home/micron/design/65nm/data/cmos10sfrvt_a12.cdl' * include the transistor models.lib '/home/micron/design/65nm/data/skew.file' stats.include '/home/micron/design/65nm/data/fixed_corner'.include '/home/micron/design/65nm/data/HSpice_example.param'.lib '/home/micron/design/65nm/data/lib.models.10sf' 10sf_models **.include '/home/micron/design/65nm/data/nfet.inc' **.include '/home/micron/design/65nm/data/pfet.inc' *** define usage of the subcircuits x1 DIE_DQ3 DIE_DQ2 DIE_DQ1 DIE_DQ0 DIE_DQ5 DIE_DQ4 DIE_DQ6 pwr1 gnd mod * ".option post" generates the outputs for cscope.option acct=1 post *Give initial Voltage and ground powers.nodeset v(pwr1) = 1.2 v(gnd) = 0.0 *Give Initial signal voltages.nodeset v(DIE_DQ0) = 1.2 v(DIE_DQ2) = 1.2 v(DIE_DQ4) = v(DIE_DQ6) = 1.2 * set up our power and ground sources VCC1 pwr1 0 DC 1.2 VSS1 gnd 0 DC 0.0 (continued on next slide).include and.lib tell the simulator what files to use We include our mod.v2lvs.sp which contains our circuit Defines the voltage and ground pins Defines initial voltages (helps HSimplus and HSpice) Makes the simulator generate waveform outputs Instantiates and defines use of sub-circuits (more on this later)

Control Files (continued) mod.wop.sp (continued) * define input waves for first gate. * these are switching simultaneously. * PULSE commands are initial-voltage pulse-voltage, time-offset, * rise-time fall-time high-delay cycle-time VA3 DIE_DQ3 0 PULSE( p 100p 100p 10000p 20000p) VA2 DIE_DQ2 0 PULSE( p 100p 100p 10000p 20000p) VA1 DIE_DQ1 0 PULSE( p 100p 100p 10000p 20000p) VA0 DIE_DQ0 0 PULSE( p 100p 100p 10000p 20000p) VA6 DIE_DQ6 0 PULSE( p 100p 100p 1000p 2000p).save type=nodeset level=all *** This lowers precision - 1 is default (up to 4).param HSimparprecision = 0 * run a transitent analysis for two clock cycles.TRAN 1p 40000p START=0ps * plot transient voltages.PLOT TRAN V(DIE_DQ0) V(0) (0,1.2).PLOT TRAN V(DIE_DQ1) V(0) (0,1.2).PLOT TRAN V(DIE_DQ2) V(0) (0,1.2).PLOT TRAN V(DIE_DQ3) V(0) (0,1.2).PLOT TRAN V(DIE_DQ4) V(0) (0,1.2).PLOT TRAN V(DIE_DQ5) V(0) (0,1.2).PLOT TRAN V(DIE_DQ6) V(0) (0,1.2).PLOT TRAN V(pwr1) V(0) (0,1.2).PLOT TRAN V(gnd) V(0) (0,1.2) * measure the power.MEAS rmsen rms I(VCC) from = 0ps to 40000ps.end Define inputs for the circuits Here we are doing a 10000ps pulse with various offsets for DIE_DQ0-DIE_DQ3 DIE_DQ6 here is a clock signal Sets HSim’s precision factor. (lower is slower) Instructs the simulator to simulate for a specific amount of time. (40000 pico- seconds) Instructs the simulator to plot the output waveforms of signals from 0 to 1.2 volts Measures the average (rms) power of VCC from 0ps to 40000ps

Control Files (continued) *** define usage of the subcircuits x1 DIE_DQ3 DIE_DQ2 DIE_DQ1 DIE_DQ0 DIE_DQ5 DIE_DQ4 DIE_DQ6 pwr1 gnd mod ► Where do we get all of this info  x# at the start gives it a unique identifier for this instantiation of this circuit  mod at the end tells us what circuit it is  The rest of them are arbitrary names chosen by whatever naming scheme you see fit. ► So what should I put here and how many of them should I put? ► First look at the spice file.SUBCKT mod a[3] a[2] a[1] a[0] out0[1] out0[0] CLK VDD VSS x1 DIE_DQ3 DIE_DQ2 DIE_DQ1 DIE_DQ0 DIE_DQ5 DIE_DQ4 DIE_DQ6 pwr1 gnd mod Remember these names have been arbitrary chosen

Control Files (continued) ► To connect circuits  Set the name of the outputs of one to be the inputs of another  In this example the outputs of mod circuit x1 used as some of the inputs to x2 x1 DIE_DQ3 DIE_DQ2 DIE_DQ1 DIE_DQ0 DIE_DQ5 DIE_DQ4 DIE_DQ6 pwr1 gnd mod x2 DIE_DQ7 DIE_DQ8 DIE_DQ5 DIE_DQ4 DIE_DQ9 DIE_DQ10 DIE_DQ6 pwr1 gnd mod

Micron Package Models ► Micron provided two models of the resistive, capacitive, and inductive effects of a package  Single layer package  Two layer package

Control Files (continued) ► The same principals apply to using the micron control files  Only much more complicated

Micron Single Layer Model ► I/O Pins *** include the single layer package.include 'v48c_x8_production_11704_DQs_pkg.inc' ***using the single layer power delivery package x0 DIE_DQ0_PKG001 DIE_DQ1_PKG001 DIE_DQ2_PKG001 DIE_DQ3_PKG001 + DIE_DQ4_PKG001 DIE_DQ5_PKG001 DIE_DQ6_PKG001 DIE_DQ7_PKG001 DIE_DQS_PKG001 + DIE_DQS#_PKG001 DIE_DM_PKG001 DIE_TDQS#_PKG001 gnd gnd gnd gnd gnd gnd + gnd gnd gnd gnd gnd gnd pwrQ pwrQ pwrQ1 pwrQ2 pwrQ3 pwrQ3 pwrQ3 gnd gnd + gnd gnd gnd gnd gnd gnd gnd gnd gnd gnd gnd pwr pwr pwr1 pwr2 pwr3 pwr + pwr pwr pwr pwr pwr pwr pwr BGA_VSSA_PKG001 BGA_VSSB_PKG001 BGA_VSSC_PKG001 + BGA_VSSD_PKG001 BGA_VSSE_PKG001 BGA_VSSF_PKG001 BGA_VCCA_PKG001 + BGA_VCCB_PKG001 BGA_VCCC_PKG001 BGA_VCCD_PKG001 BGA_VSSQ1_PKG001 + BGA_VSSQ2_PKG001 BGA_VSSQ3_PKG001 BGA_VSSQ4_PKG001 BGA_VSSQ_PKG001 + BGA_VCCQ2_PKG001 BGA_VCCQ3_PKG001 BGA_VCCQ_PKG001 BGA_VCCQ1_PKG001 + BGA_VSS1_PKG001 BGA_VSS2_PKG001 BGA_VSS3_PKG001 BGA_VSS4_PKG001 + BGA_VSS_PKG001 BGA_VCC3_PKG001 BGA_VCC_PKG001 BGA_VCC1_PKG001 + BGA_VCC2_PKG001 BGA_TDQS#_PKG001 BGA_DM_PKG001 BGA_DQS#_PKG001 + BGA_DQS_PKG001 BGA_DQ7_PKG001 BGA_DQ6_PKG001 BGA_DQ5_PKG001 BGA_DQ4_PKG001 + BGA_DQ3_PKG001 BGA_DQ2_PKG001 BGA_DQ1_PKG001 BGA_DQ0_PKG001 + v48c dq-str-pwrs-unmer_wrapper

Micron Two Layer Model ► I/O Pins *** include the two layer package.include 'v48c_x8_2metal_layer_0523_DQs_pkg.inc' ***using the two layer power delivery package x0 DIE_DQ0_PKG001 DIE_DQ1_PKG001 DIE_DQ2_PKG001 DIE_DQ3_PKG001 + DIE_DQ4_PKG001 DIE_DQ5_PKG001 DIE_DQ6_PKG001 DIE_DQ7_PKG001 DIE_DQS_PKG001 + DIE_DQS#_PKG001 DIE_DM_PKG001 DIE_TDQS#_PKG001 gnd gnd gnd gnd gnd gnd gnd + gnd gnd gnd gnd gnd pwrQ1 pwrQ1 pwrQ pwrQ pwrQ pwrQ pwrQ1 gnd gnd gnd gnd + gnd gnd gnd gnd gnd gnd gnd gnd gnd pwr pwr pwr pwr pwr pwr pwr1 pwr pwr + pwr pwr pwr pwr BGA_VSSQ1A_PKG001 BGA_VSSQ1B_PKG001 BGA_VSSQC_PKG001 + BGA_VCCQ_PKG001 BGA_VCCQ1_PKG001 BGA_VSSA_PKG001 BGA_VSSB_PKG001 + BGA_VSSC_PKG001 BGA_VSSD_PKG001 BGA_VSSE_PKG001 BGA_VSSF_PKG001 + BGA_VSSG_PKG001 BGA_VSSH_PKG001 BGA_VSSI_PKG001 BGA_VCCA_PKG001 + BGA_VCCB_PKG001 BGA_VCCC_PKG001 BGA_VCCD_PKG001 BGA_VCCE_PKG001 + BGA_VCCF_PKG001 BGA_VSSQ1_PKG001 BGA_VSSQ_PKG001 BGA_VCCQ3_PKG001 + BGA_VCCQ2_PKG001 BGA_VSS1_PKG001 BGA_VSS_PKG001 BGA_VCC1_PKG001 + BGA_VCC_PKG001 BGA_TDQS#_PKG001 BGA_DM_PKG001 BGA_DQS#_PKG001 + BGA_DQS_PKG001 BGA_DQ7_PKG001 BGA_DQ6_PKG001 BGA_DQ5_PKG001 + BGA_DQ4_PKG001 BGA_DQ3_PKG001 BGA_DQ2_PKG001 BGA_DQ1_PKG001 BGA_DQ0_PKG001 + sol_v48c_523_dq_dm_str_pwr_unmergedSnks_wrapper

Simple ALU Input (op) Output 00out(31:0) <= a+b 01out(31:0) <= a-b 10out(31:0) <= a*b 11out(31:16) <= a%b out(15:0) <= a/b

Alu Without Package (WOP) Power HSpice HSim

Alu Without Package (WOP) Output HSpice

Alu Without Package (WOP) Output HSpiceHSim

Single Layer Package vs WOP Output in HSpice Single LayerWOP

Single Layer Package vs WOP Output in HSpice (more detail) Single LayerWOP

Single Layer Package vs WOP Output in HSim (more detail) WOPSingle Layer

Single Layer Package Power in HSpice HSpice

Single Layer Package Power in HSim HSim

Single Layer Package Power in HSpice and HSim HSpiceHSim

Single Layer Package Output in HSpice and HSim HSpiceHSim

Two Layer Package vs WOP Output in HSpice Single LayerWOP

Two Layer Package vs WOP Output in HSpice Single LayerWOP

Two Layer Package vs WOP Output in HSim Single LayerWOP

Two Layer Package Power in HSpice HSpice

Two Layer Package Power in HSim HSim

Two Layer Package Power in HSpice and HSim HSpiceHSim

Two Layer Package Output in HSpice and HSim HSpiceHSim

Two Layer vs Single Layer vs WOP Output in HSpice WOPSingle LayerTwo Layer

Two Layer vs Single Layer vs WOP Output in HSpice WOPSingle LayerTwo Layer

Package Power Micron packages had a majority of pins dedicated to power and ground lines For simplicity sake, most of our tests use just one of the power inputs All of our experiments don’t use the package for signal outputs, only for power input

Split Power Experiment Modified the ALU circuit to take in 8 power lines. Set 1/8 of sub circuits in the ALU to use each of the power lines

Power Graphs of Split Power In HSpice

Regular vs Split Power in HSim Split Power Single Power

Regular vs Split Power in HSim Split PowerSingle Power

Regular vs Split, Output in HSim Split Power Single Power

Regular vs Split, Output in HSim Split PowerSingle Power

► Developed a tool flow  Created circuits design in behavioral verilog  Synthesized designs into spice format using 65nm technology part libraries ► Developed necessary scripts to support conversion  Created control files and simulation vectors for comparing designs ► Performed comparative studies  Developed ALU test circuit  Compared package models ► Dual layer package has less power supply noise ► Splitting power delivery into multiple power lines reduces noise Conclusions