ELEN 468 Lecture 61 ELEN 468 Advanced Logic Design Lecture 6 Delay Models.

Slides:



Advertisements
Similar presentations
Selected Design Topics. Integrated Circuits Integrated circuit (informally, a chip) is a semiconductor crystal (most often silicon) containing the electronic.
Advertisements

D-Type Flip Flops Benchmark Companies Inc PO Box
D Flip-Flop.
//HDL Example 8-2 // //RTL description of design example (Fig.8-9) module Example_RTL (S,CLK,Clr,E,F,A);
Simulation executable (simv)
Verilog Overview. University of Jordan Computer Engineering Department CPE 439: Computer Design Lab.
Synchronous Sequential Logic
Combinational Logic.
ELEN 468 Lecture 21 ELEN 468 Advanced Logic Design Lecture 2 Hardware Modeling.
Verilog Modules for Common Digital Functions
Table 7.1 Verilog Operators.
Verilog Intro: Part 1.
Hardware Description Language (HDL)
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.
1 Kuliah Rangkaian Digital Kuliah 8: Rangkaian Logika Sekuensial Teknik Komputer Universitas Gunadarma.
Chapter 6 –Selected Design Topics Part 2 – Propagation Delay and Timing Logic and Computer Design Fundamentals.
Prof. John Nestor ECE Department Lafayette College Easton, Pennsylvania ECE VLSI System Design Lecture 3 - Verilog Delay.
Digital System Design Verilog ® HDL Timing and Delays Maziar Goudarzi.
Lecture 2: Hardware Modeling with Verilog HDL
ELEN 468 Lecture 111 ELEN 468 Advanced Logic Design Lecture 11 Switch Level Models.
ENEE 408C Lab Capstone Project: Digital System Design Verilog Tutorial Class Web Site:
ECEN ECEN475 Introduction to VLSI System Design Verilog HDL.
ELEN 468 Advanced Logic Design
Prof. John Nestor ECE Department Lafayette College Easton, Pennsylvania ECE Senior Design I Lecture 6 - Behavioral Modeling.
ELEN468 Lecture 31 ELEN 468 Advanced Logic Design Lecture 3 Simulation and Testbench.
Today’s Lecture Process model –initial & always statements Assignments –Continuous & procedural assignments Timing Control System tasks.
ECE 2372 Modern Digital System Design
Introduction Verilog is a HARDWARE DESCRIPTION LANGUAGE (HDL) A hardware description language is a language or means used to describe or model a digital.
Module 2 : Behavioral modeling TOPIC : Modeling a Digital pulse UNIT 1: Modeling and Simulation.
Chapter 2: Structural Modeling Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 2-1 Ders – 2: Yapısal Modelleme.
CH71 Chapter 7 Hardware Description Language (HDL) By Taweesak Reungpeerakul.
1 CSE-308 Digital System Design (DSD) N-W.F.P. University of Engineering & Technology, Peshawar.
1 COMP541 Sequential Circuits Montek Singh Feb 1, 2012.
Anurag Dwivedi. Basic Block - Gates Gates -> Flip Flops.
Timing Model VHDL uses the following simulation cycle to model the stimulus and response nature of digital hardware Start Simulation Update Signals Execute.
1 Hardware description languages: introduction intellectual property (IP) introduction to VHDL and Verilog entities and architectural bodies behavioral,
Digital System Design Verilog ® HDL Design at Structural Level Maziar Goudarzi.
Types of Delay Models. Delay models Three types of delay models used in Verilog Distributed delay model Lumped Delay model Pin-to-pin (path) Delay model.
Synchronous Sequential Circuits by Dr. Amin Danial Asham.
ELEN 468 Lecture 171 ELEN 468 Advanced Logic Design Lecture 17 Midterm1 Review.
Synchronous Sequential Circuits by Dr. Amin Danial Asham.
1 A hardware description language is a computer language that is used to describe hardware. Two HDLs are widely used Verilog HDL VHDL (Very High Speed.
Structural Description
Lecture 10 Flip-Flops/Latches
Supplement on Verilog FF circuit examples
Digital System Clocking
Verilog Introduction Fall
VLSI Testing Lecture 5: Logic Simulation
Overview Part 1 – The Design Space
Verilog HDL.
D Flip-Flop.
Introduction to Sequential Logic Design
ELEN 468 Advanced Logic Design
Introduction to DIGITAL CIRCUITS MODELING & VERIFICATION using VERILOG [Part-I]
Chapter 2a: Structural Modeling
Chapter 7: Advanced Modeling Techniques
332:437 Lecture 10 Verilog Language Details
Timing Analysis 11/21/2018.
332:437 Lecture 10 Verilog Language Details
332:437 Lecture 8 Verilog and Finite State Machines
Lecture 3 Simulation and Testbench
Test Fixture (Testbench)
332:437 Lecture 10 Verilog Language Details
1) Latched, initial state Q =1
The Verilog Hardware Description Language
Flip-Flops.
The Verilog Hardware Description Language
332:437 Lecture 8 Verilog and Finite State Machines
COE 202 Introduction to Verilog
Lecture 3: Timing & Sequential Circuits
Presentation transcript:

ELEN 468 Lecture 61 ELEN 468 Advanced Logic Design Lecture 6 Delay Models

ELEN 468 Lecture 62 Delay Models

ELEN 468 Lecture 63 Propagation Delay Xin Xout Tpd_1_0 Xin Xout t t 50%Vdd

ELEN 468 Lecture 64 Delay Models Gate delay Intrinsic delay Layout-induced delay due to capacitive load Waveform slope-induced delay Net delay/transport delay Signal propagation delay along interconnect wires Module path delay Delay between input port and output port

ELEN 468 Lecture 65 Signal Transitions Rising 0->1, x->1, z->1 Falling 1->0, x->0, z->0 Turnoff 0->z, 1->z, x->z

ELEN 468 Lecture 66 Model Delay Uncertainties: Min, Typical and Max Delays Process variations Defects, etching errors, photomask misalignment … Power-ground noise Power supply level lower than ideal level Ground voltage level greater than zero Crosstalk noise Signal switching in neighboring wires causes extra net delay

ELEN 468 Lecture 67 Gate Delay and (yout, x1, x2);// default, zero gate delay and #3 (yout, x1, x2);// 3 units delay for all transitions and #(2,3) G1(yout, x1, x2); // rising, falling delay and #(2,3) G1(yout, x1, x2), G2(yout2, x3, x4); // Multiple instances a_buffer #(3,5,2) (yout, x); // UDP, rise, fall, turnoff bufif1 #(3:4:5, 6:7:9, 5:7:8) (yout, xin, enable); // min:typ:max / rise, fall, turnoff and (yout, x1, x2);// default, zero gate delay and #3 (yout, x1, x2);// 3 units delay for all transitions and #(2,3) G1(yout, x1, x2); // rising, falling delay and #(2,3) G1(yout, x1, x2), G2(yout2, x3, x4); // Multiple instances a_buffer #(3,5,2) (yout, x); // UDP, rise, fall, turnoff bufif1 #(3:4:5, 6:7:9, 5:7:8) (yout, xin, enable); // min:typ:max / rise, fall, turnoff Simulators simulate with only one of min, typ and max delay values Selection is made through compiler directives or user interfaces Default delay is typ delay

ELEN 468 Lecture 68 Options for Delay Specifications dr = rising delay, df = falling delay, dz = turnoff delay If 2 delays are specified d* = d** = min ( dr, df ) If 3 delays are specified d* = min( dr, df, dz ), d** = dz Logic value before transition Logic value after transition 01xz 0drd*dz 1dfd*dz xdfdrd** zdfdrd*

ELEN 468 Lecture 69 Time Scales Time scale directive: ‘ timescale / time_unit -> physical unit of measure, time scale of delay time_precision -> time resolution/minimum step size during simulation time_unit  time_precision Unit/precisionDelay specification Simulator time step Delay value in simulation 1ns / 100ps#40.1ns4.0ns 100ns / ns#41ns400ns 10ns / 100ps# ns46.3ns

ELEN 468 Lecture 610 Example of Time Scale `timescale 1 ns / 10 ps module modA( y, x1, x2 ); input x1, x2; output y; nand #(3.225, 4.237) ( y, x1, x2 ); endmodule `timescale 10 ns / 10 ns module modB(); reg x1, x2; wire y; modA M1(y, x1, x2); initial begin $monitor ( $time, “%f x1= %b x2= %b y= %b”, $realtime, x1, x2, y ); end initial begin #5 x1 = 0; x2 = 0; #5 x2 = 1; #5 x1 = 1; #5 x2 = 0; end endmodule

ELEN 468 Lecture 611 Example of Time Scale `timescale 1 ns / 10 ps module modA( y, x1, x2 ); … … nand #(3.225, 4.237) ( y, x1, x2 ); endmodule `timescale 10 ns / 10 ns module modB(); … … modA M1(y, x1, x2); initial begin $monitor ( $time, “%f x1= %b x2= %b y= %b”, $realtime, x1, x2, y ); end initial begin #5 x1 = 0; x2 = 0; #5 x2 = 1; #5 x1 = 1; #5 x2 = 0; end endmodule `timescale 1 ns / 10 ps module modA( y, x1, x2 ); … … nand #(3.225, 4.237) ( y, x1, x2 ); endmodule `timescale 10 ns / 10 ns module modB(); … … modA M1(y, x1, x2); initial begin $monitor ( $time, “%f x1= %b x2= %b y= %b”, $realtime, x1, x2, y ); end initial begin #5 x1 = 0; x2 = 0; #5 x2 = 1; #5 x1 = 1; #5 x2 = 0; end endmodule $t$real_tx1x2y x1=xx2=xy=x x1=0x2=0y=x x1=0x2=0y= x1=0x2=1y= x1=1x2=1y= x1=1x2=1y= x1=1x2=0y= x1=1x2=0y=1

ELEN 468 Lecture 612 Time Display Format `timescale 1 ns / 1 ps module modA( y, x1, x2 ); … … nand #(3.225, 4.237) ( y, x1, x2 ); endmodule `timescale 10 ns / 10 ns module modB(); … … modA M1(y, x1, x2); initial begin $timeformat (-12, 1, “ ps”, 10); $monitor ( $time, “%f x1= %b x2= %b y= %b”, $realtime, x1, x2, y ); end initial begin #5 x1 = 0; x2 = 0; #5 x2 = 1; #5 x1 = 1; #5 x2 = 0; end endmodule `timescale 1 ns / 1 ps module modA( y, x1, x2 ); … … nand #(3.225, 4.237) ( y, x1, x2 ); endmodule `timescale 10 ns / 10 ns module modB(); … … modA M1(y, x1, x2); initial begin $timeformat (-12, 1, “ ps”, 10); $monitor ( $time, “%f x1= %b x2= %b y= %b”, $realtime, x1, x2, y ); end initial begin #5 x1 = 0; x2 = 0; #5 x2 = 1; #5 x1 = 1; #5 x2 = 0; end endmodule $t $real_t x1x2y ps x1=xx2=xy=x ps x1=0x2=0y=x ps x1=0x2=0y= ps x1=0x2=1y= ps x1=1x2=1y= ps x1=1x2=1y= ps x1=1x2=0y= ps x1=1x2=0y=1 $timeformat ( units_number, precision_number, suffix_string, min_field_width );

ELEN 468 Lecture 613 Unit Number in Time Format Unit_numberTime unitUnit_numberTime unit 01s-810ns 100ms-91ns -210ms-10100ps -31ms-1110ps -4100us-121ps -510us-13100fs -61us-1410fs -7100ns-151fs

ELEN 468 Lecture 614 Net Delay … wire #2 y_tran; and #3 (y_tran, x1, x2); buf #1 (buf_out, y_tran); and #3 (y_inertial, x1, x2); … wire #2 y_tran; and #3 (y_tran, x1, x2); buf #1 (buf_out, y_tran); and #3 (y_inertial, x1, x2); … x1 x2 y_tran y_inertial buf_out x1 x2 y_inertial y_tran buf_out

ELEN 468 Lecture 615 Examples of Net Delay module xor1( y, a, b ); inputa, b; outputy; parameterdelay = 5; assign #delay y = a ^ b; endmodule module xor1( y, a, b ); inputa, b; outputy; parameterdelay = 5; assign #delay y = a ^ b; endmodule module xor2( y, a, b ); inputa, b; outputy; wire#5 y; assign y = a ^ b; endmodule module xor2( y, a, b ); inputa, b; outputy; wire#5 y; assign y = a ^ b; endmodule module xor3( y, a, b ); inputa, b; outputy; parameter wire_delay = 5; parameter gate_delay =3; wire #wire_delay y; assign #gate_delay y = a ^ b; endmodule module xor3( y, a, b ); inputa, b; outputy; parameter wire_delay = 5; parameter gate_delay =3; wire #wire_delay y; assign #gate_delay y = a ^ b; endmodule

ELEN 468 Lecture 616 Module Delays and Paths In structural description, module delays can be obtained by tracing gate and net delays In behavioral description, module paths can be described separately to allow delay descriptions

ELEN 468 Lecture 617 Module Paths Simple module paths Unconditional direct input to output path State-dependent paths Exists when certain condition is satisfied Describe transparent latch Edge-dependent paths Exists for a synchronizing signal Describe edge-triggered flip-flop

ELEN 468 Lecture 618 Simple Module Path Source of path must be a net declared as input or output Destination of path must be a net or reg declared as output or inout Parallel paths, “=>” Full connection paths, “*>”

ELEN 468 Lecture 619 Example of Simple Module Path Delay module nand1( out, A, B ); outputout; inputA, B; nand ( out, A, B ); specify ( A,B *> out ) = ( 15, 14, 11, 10, 16,15 ); // 0->1, 1->0, 0->z, z->1, 1->z, z->0 endspecify endmodule module nand1( out, A, B ); outputout; inputA, B; nand ( out, A, B ); specify ( A,B *> out ) = ( 15, 14, 11, 10, 16,15 ); // 0->1, 1->0, 0->z, z->1, 1->z, z->0 endspecify endmodule A B out Specify blocks declare paths Its path can override structural delays

ELEN 468 Lecture 620 Edge-Sensitive Paths module edge_FF ( clock, data, clear, preset, q ); input clock, data, clear, preset; output q; specify specparam t_rise_clk_q = 100; t_fall_clk_q = 120; t_rise_ctl_q = 50; t_fall_ctl_q = 60; ( posedge clock *> (q:data) ) = ( t_rise_clk_q, t_fall_clk_q ); ( clear, preset *> q ) = ( t_rise_ctl_q, t_fall_ctl_q ); endspecify … endmodule module edge_FF ( clock, data, clear, preset, q ); input clock, data, clear, preset; output q; specify specparam t_rise_clk_q = 100; t_fall_clk_q = 120; t_rise_ctl_q = 50; t_fall_ctl_q = 60; ( posedge clock *> (q:data) ) = ( t_rise_clk_q, t_fall_clk_q ); ( clear, preset *> q ) = ( t_rise_ctl_q, t_fall_ctl_q ); endspecify … endmodule

ELEN 468 Lecture 621 State-Dependent Paths specify if ( enable ) ( data *> q ) = ( t_rise_clk_q, t_fall_clk_q ); endspecify specify if ( !set && !clear ) ( posedge clock *> ( q:data )) = ( t_rise_clk_q, t_fall_clk_q ); endspecify specify if ( enable ) ( data *> q ) = ( t_rise_clk_q, t_fall_clk_q ); endspecify specify if ( !set && !clear ) ( posedge clock *> ( q:data )) = ( t_rise_clk_q, t_fall_clk_q ); endspecify

ELEN 468 Lecture 622 Path Polarity ( siga +*> q1 ) = delay_to_q1;// positive path polarity ( sigb -*> q2 ) = delay_to_q2;// negative path polarity ( sigc *> q3 ) = delay_to_q3;// unknown polarity ( siga +*> q1 ) = delay_to_q1;// positive path polarity ( sigb -*> q2 ) = delay_to_q2;// negative path polarity ( sigc *> q3 ) = delay_to_q3;// unknown polarity Specify whether a transition at output of a path has the same direction (rising or falling) as the input

ELEN 468 Lecture 623 Specify Block Parameters module nand1 ( O, A, B ); input A, B; output O; nand ( O, A, B ); specify specparam T01 = 1.13:3.09:7.75; T10 = 0.93:2.50:7.34; ( A=>O ) = ( T01, T10 ); ( B=>O ) = ( T01, T10 ); endspecify endmodule module nand1 ( O, A, B ); input A, B; output O; nand ( O, A, B ); specify specparam T01 = 1.13:3.09:7.75; T10 = 0.93:2.50:7.34; ( A=>O ) = ( T01, T10 ); ( B=>O ) = ( T01, T10 ); endspecify endmodule Local to specify block

ELEN 468 Lecture 624 Specify Pulse Width module nand1 ( O, A, B ); input A, B; output O; nand ( O, A, B ); specify specparam T01 = 1.13:3.09:7.75; T10 = 0.93:2.50:7.34; ( A=>O ) = ( T01, T10 ); ( B=>O ) = ( T01, T10 ); pathpulse$ ( : : ); endspecify endmodule module nand1 ( O, A, B ); input A, B; output O; nand ( O, A, B ); specify specparam T01 = 1.13:3.09:7.75; T10 = 0.93:2.50:7.34; ( A=>O ) = ( T01, T10 ); ( B=>O ) = ( T01, T10 ); pathpulse$ ( : : ); endspecify endmodule Specify inertial delays

ELEN 468 Lecture 625 Pulse Reject Limit and Error Limit specify ( clk => q ) = 10; ( data => q ) = 7; ( clr, preset *> q ) = 3; specparam pathpulse$ clk$q = ( 3, 8 ); pathpulse$ clr$q = ( 0, 5 ); pathpulse$ = 4; endspecify specify ( clk => q ) = 10; ( data => q ) = 7; ( clr, preset *> q ) = 3; specparam pathpulse$ clk$q = ( 3, 8 ); pathpulse$ clr$q = ( 0, 5 ); pathpulse$ = 4; endspecify Reject limit Error limit If pulse_width < reject_limit, pulse is rejected If reject_limit < pulse_width < error_limit, ‘x’ is at output If error_limit < pulse_width, signal is transported to output Single value for both reject and error For any other paths not specified