Lecture 5
Lecture 5
Lecture 5
VLSI-II
Early Design Planning:
Basic Timing Analysis & Timing Closure
SPRING 2011
Matthew Amatangelo
Mark McDermott
Basics of Timing
EDP-TC What is It?
EDP-TC Goals & Objectives
EDP-TC Starting Point Data Requirements
EDP-TC Methodology How-To
– Methodology Overview
– Block Size Estimation (another lecture)
– Block Timing Assertions Generation
– Delay Estimation
EDP-TC End Products
Specifics for the Class Project: EDP-TC Floorplanning for Design
Space Exploration & Timing Closure
TA - Timing Analysis
STA - Static Timing Analysis
DCL - Delay Calculator Language
AT - Arrival Time
PT - Passthrough
RAT - Required Arrival Time
LCB - Local Clock Buffer
EDP - Early Design Planning
EDP-TC - Timing Closure for EDP
(RAT)
COMB COMB
COMB
DFF DFF
CLK CLK
Module X
Simple
Module Feed Module
Input Pin Input Path Output Path Output Pin
Delay Through Delay
Logic (CL)
Delay
Delay through Pass-Through Block = input path delay + CL delay + output path delay
Module Z
reg flushpipe_r;
rst
CLK
rst
CL
K
RAT for icpu_err_i and icpu_ack_i includes delay through a NOR, Inv, Mux, as well as the
setup time to a flop
RAT for flushpipe includes 2 mux delays and the setup time (use the worst case here, since
flushpipe has 2 paths to the flop).
Since this path is receiving, assume the gates are minimum sizes.
Since we won’t have the nice fanout of 3 working for us in this case, it’s time for some
Logical Effort fun! (Also applies to Arrival Time calculations.)
rst
Cell Cin G P
NOR2 5 9 37
CL INV 3 9 21
K
MUX2 6 8 32
The g and p values for the NOR, MUX, and Inv are listed in the table to the right.
To use, multiply ‘g’ by ‘h’, which is the Cout/Cin value, and add ‘p’
The NOR has h=3/5 (inv/nor), so its formula is 9*3/5+37 = 42.4ps (note that it’s larger than
the FO3 value in the spreadsheet -> this shows that logical effort is not quite accurate…)
The inv is driving a minimum mux, so its h is 6/3 (mux/inv). Delay = 9*2+21 = 39ps
The mux is driving a flop (assume cin=6), so its h is 6/6. Delay = 8*1+32 = 40ps
rst
CL
K
We now have everything we need to compute the RATs for the three inputs. Remember that for
a RAT, you subtract the delay from the usable clock period!
For icpu_err_i, the RAT is Clock Period - NOR - INV - MUX - Setup = 900 - 42.4 - 39 - 40 - 100 =
678.6ps
icpu_ack_i sees the same path, so it’s RAT is also 678.6 ps
flushpipe sees Clock Period - MUX - MUX - Setup = 900 - 40 - 40 - 100 = 720ps
NOTE that again, these do not include any wire delay!!!
rst
CL
K
You need to verify that all internal paths meet timing as well.
In this case you would make sure that the C2Q + Mux Delay + Mux Delay + Setup
time is less than the clock period (900ps)
Delay = 134.7 + 40 + 40 + 100 = 314.7 ps < 900 ps -> In this case we meet timing
– BLOCK_NAME or1200_freeze
– START_RAT_SECTION
– PIN icpu_ack_i CLK rise 678.6
– PIN icpu_err_i CLK rise 678.6
– PIN flushpipe CLK rise 720
– START_AT_SECTION
– PIN genpc_freeze CLK rise 206.98
– START_PASS_THROUGH_SECTION
– PASS_THROUGH du_stall genpc_freeze 72.28
Need to have a RAT or PASSTHROUGH for all input pins (you may have both
and you may have multiple RATS or PASSTHROUGHs)
Need to have an AT or PASSTHROUGH for all output pins (again, you may have
both and also multiple ATs or PASSTHROUGHs)
All always @ (posegde CLK … ) blocks are sequential and provide conditions for
setting a state variable. If they receive an input pin there will be a RAT. If they
drive an output pin, there will be an AT
Any always @ block that does not have CLK involved is again combinational. It
would synthesize into a latch, but this is wrong. It is combinational and will
have a PASSTRHROUGH unless all elements are state variables
EE382M-8 Class Notes
EDP-TC What Is It?
* Process/Voltage/Temperature
Methodology Overview
Block Size Estimation (another lecture)
Block Timing Assertions Generation
– How do you get the numbers
Delay Estimation
Output(s)
Internal logic & wire Internal logic bound Internal logic & wire
Input(s) delay from input pin by F2F timing delay from register
to register to output pin
COMB Dout
Din
Delay
Delay
RAT: determined DFF DFF
AT: determined
by CLK arrival
from CLK’ launch
RAT = AT(CLK) - Din - DFFsetup AT = AT(CLK’) + Dout +DFFc-q
CLK CLK’
Clock Skew =
CLK - CLK’
AT RAT AT RAT
Dwire1 Dinout Dwire2
DFF DFF
Module Z
CLK CLK’
Module X Module Y
AT(X.pin)
Dout Din
Dwire
DFF DFF
CLK
CLK’
Module X Module Y
RAT(Y.pin)
AT(X.pin) RAT(Z.pin)
600 ps 100 ps
200 ps
DFF DFF
Dwire
CLK
CLK’
Module X Module Y
Module X Module Y
Level Level
Timing: RAT(X.pin) = 600 Timing: AT(Y.pin) = T-100
7 8
R7 R8
C7 C8
1 2 4 5 6
3
R1 R2 R3 R4 R5 R6
+
Vin - C1 C2 C3 C4 C5 C6
3 4 5 6
Td6 = R1C1 + (R1+R2)(C2+C7+C8) + ( Rn) (C3) + (
Rn (C4) + (Rn) (C5) + ( Rn ) (C6)
n=1 n=1 n=1 n=1
constraints
Floorplan file
Chip
Run Timing
Floorplan
Script
NO
Floorplan file
Slack >= 0?
YES
ATs/RATs == Contracts
Floorplan
Timing contracts
Pin positions
Wire metal
timer RESULTS
block
timing
model (atrat)
output pins,
BLOCK_NAME b1 launching event and time from
START_AT_SECTION launch that signal arrives at pin
PIN t clk rise 400
START_RAT_SECTION
PIN y clk rise 900
START_PASS_THROUGH_SECTION
PASS_THROUGH x t 100
input pins,
capture event and time after (for now)
this event that the arrival is required
in-to-out arcs,
paths from input pins to output
pins with propagation delay
• Log messages:
•####WARNING: Net wi21 has multiple drivers
• Paths:
i_b6:t -> i_b4:y -> i_b4:u -> i_b5:y -> i_b5:t -> i_b3:x -> i_b3:t ->
i_b4:x -> i_b4:u -> i_io:po2 -816.629
i_b6:t -> i_b4:y -> i_b4:u -> i_b5:y -> i_b5:t -> i_b3:x -> i_b3:t -
> i_b4:x -> i_b4:t -> i_io:po1 -707.747
i_b6:t -> i_b4:y -> i_b4:u -> i_io:po2 -73.55
i_b6:t -> i_b3a:x -> i_b3a:t -> i_b1:y -66.1875
i_b1:t -> i_b5:x -> i_b5:t -> i_b3:x -> i_b3:t -> i_b4:x -> i_b4:u -
> i_io:po2 -64.3805
i_io:pi1 -> i_b1:x -> i_b1:t -> i_b5:x -> i_b5:t -> i_b3:x -> i_b3:t
-> i_b4:x -> i_b4:u -> i_io:po2 15.845