Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer...

40
Unit 5: Constraining I/O Paths 5-1 PrimeTime: Introduction to Static Timing Analysis 5-1 Constraining I/O paths PrimeTime: Introduction to Static Timing Analysis Synopsys 34000-000-S16 Agenda: Day Two DAY 2 I/O Paths and Exceptions Lab Unit Introduction to Timing Models (QTM) 7 8 Specifying Timing Exceptions 6 Constraining I/O Interface Paths 5 Summary 9 Performing STA Customer Support 10

Transcript of Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer...

Page 1: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-1PrimeTime: Introduction to Static Timing Analysis

5-1

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Agenda: Day Two

DAY2222 I/O Paths and Exceptions LabUnit

Introduction to Timing Models (QTM)7

8

Specifying Timing Exceptions6

Constraining I/O Interface Paths5

Summary9

Performing STA

Customer Support10

Page 2: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-2PrimeTime: Introduction to Static Timing Analysis

5-2

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Unit Objectives

After completing this unit, you should be able to:

� Constrain the input and output (I/O) timing paths for single and multiple non-ideal clocks

� Determine when and how to use a Virtual clock

� Define common base period of synchronous multiple clocks

Page 3: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-3PrimeTime: Introduction to Static Timing Analysis

5-3

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

The Inputs and Outputs of PrimeTime

Reports

PrimeTime

Technology Libraries

SDFTiming

Models in .db format

Gate-LevelNetlist Constraints Exceptions

SetupFile

Log,Script Files

Our Focus

Page 4: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-4PrimeTime: Introduction to Static Timing Analysis

5-4

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Five Step Static Timing Analysis Flow

READREAD

CONSTRAINCONSTRAIN

EXCEPTIONSEXCEPTIONS

CHECKCHECK

ANALYZEANALYZEOur Focus

Page 5: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-5PrimeTime: Introduction to Static Timing Analysis

5-5

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Constrain Input and Output Timing Paths

In Unit-4, Path X was constrained bycreate_clock

D QFF4

T

D QFF3

M

B

Clock source

D Q D Q

Clk

Current_Design

FF1 FF2N S

u1u2 u3

u4

A

Network latencySource latency

Clock source

I/O Paths N & S are still unconstrained!

Page 6: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-6PrimeTime: Introduction to Static Timing Analysis

5-6

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Input Arrival Time

The_Current_Design

ND Q

Clk

MD Q

TClk-q TM TNTSETUP

Next edge captures data

External Logic

(Input Delay)(TClk-q + TM) (TN + TSETUP)

Clk

A

Launch edge triggers

data

A

Clk

Valid new data

To meet the setup time of our flop:Tclk-q + Tm + Tn + Tsetup < Clock period

Page 7: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-7PrimeTime: Introduction to Static Timing Analysis

5-7

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

You specifyhow much time

is used byexternal logic.

PT calculateshow much time

is left for theinternal logic.

Launch Edge

1.5

delay ofexternal

logic

time leftfor

internallogic

Capture Edge

Constraining Input Paths

� set_input_delay -max

� Describes the maximum arrival time of external data with respect to a launching clock and an input port

pt_shell> set_input_delay -max 1.5 -clock Clk [get_ports A]

Page 8: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-8PrimeTime: Introduction to Static Timing Analysis

5-8

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Exercise: : : : Constraining Input Paths

1.5

0.0 2.0 4.0

Clk

A

Constraint of YOUR input path

If U1 has a 0.37 ns setup time, what is the maximum delay for N?

A

Clk(250 MHz)

CLK-OUTPUT1.5 ns(worst)

EXTERNAL CIRCUIT

Clk

Clk latency: 0.8 nsSkew: 0.25 ns

The_Current_Design

U1

D QN

create_clock _______________________________________

set_clock_latency ___________________________________

set_clock_uncertainty _______________________________

set_input_delay ____________________________________

Points to remember:

1. Set_input_delay is specified w.r.t the launch clock.

2. Set_input_delay amount specified is measured from the launch clock edge.

Page 9: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-9PrimeTime: Introduction to Static Timing Analysis

5-9

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Timing Report: : : : Constraining Input Paths

Point Incr Path---------------------------------------------------------------clock Clk (rise edge) 0.00 0.00clock network delay (ideal) 0.80 0.80input external delay 1.50 2.30 fA (in) 0.00 2.30 f…..

data arrival time 4.25

clock Clk (rise edge) 4.00 4.00clock network delay (ideal) 0.80 4.80clock uncertainty -0.25 4.55 rlibrary setup time -0.37 4.18data required time 4.18---------------------------------------------------------------data required time 4.18data arrival time -4.25---------------------------------------------------------------slack (VIOLATED) -0.07

Latency = 0.80

Input delay = 1.50

Period = 4.0

Latency = 0.80

Skew = 0.25

Slack violation

create_clock -period 4.0 [get_ports Clk]

set_clock_latency 0.8 [get_clocks Clk]

set_clock_uncertainty 0.25 [get_clocks Clk]

set_input_delay -max 1.5 –clock Clk [get_ports A]

report_timing –from [all_inputs]

Page 10: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-10PrimeTime: Introduction to Static Timing Analysis

5-10

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Input Delay May Include Latency

In the previous timing report, would slack be different if you changed the clock latency?

What if the latency amount is already part of the input delay?Would you see a different slack?

A

Clk(250 MHz)

CLK-OUTPUT1.5 ns(worst)

EXTERNAL CIRCUIT

Clk

Clk latency: 0.8 nsSkew: 0.25 ns

The_Current_Design

U1

D QN

Includes latency

Page 11: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-11PrimeTime: Introduction to Static Timing Analysis

5-11

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Timing Report: : : : Constraining Input Paths

Point Incr Path---------------------------------------------------------------clock Clk (rise edge) 0.00 0.00clock network delay (ideal) 0.00 0.00input external delay 1.50 1.50 fA (in) 0.00 1.50 f…..

data arrival time 3.45

clock Clk (rise edge) 4.00 4.00clock network delay (ideal) 0.80 4.80clock uncertainty -0.25 4.55 rlibrary setup time -0.37 4.18data required time 4.18---------------------------------------------------------------data required time 4.18data arrival time -3.45---------------------------------------------------------------slack (MET) 0.73

Latency = 0.00

Input delay = 1.50

Period = 4.0

Latency = 0.80

Skew = 0.25

Slack MET

create_clock -p 4 [get_ports Clk]

set_clock_latency 0.8 [get_clocks Clk]

set_clock_uncertainty 0.25 [get_clocks Clk]

set_input_delay -network_latency_included -max 1.5 \

–clock Clk [get_ports A]

report_timing –from [all_inputs]

Page 12: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-12PrimeTime: Introduction to Static Timing Analysis

5-12

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Specifying Input Driving Cell

� In order to accurately calculate the timing of input boundary cells, PT also needs to know the driving cell

� set_driving_cell allows the user to specify the external driving cell (thus transition time or slew rate) for input ports:

� The default drive on input ports is 0; Transition time is zero.� The driving cell also imposes its design rules (max_transition etc) on

the input port (and slows down the data)� You may also specify max and min driving cells; for setup and hold.

set_driving_cell -lib_cell buf1 [get_ports IN1]

IN1

buf1

You will experiment the effect of applying driving cell in the lab.

Page 13: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-13PrimeTime: Introduction to Static Timing Analysis

5-13

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Output Setup Time

Clk

TT + TSETUP

Launch Edge Capture Edge

TClk-q + TS

(Output Delay)

Clk

B

SD Q

Ts

The_Current_Design

D Q

TT TSETUP

T

External Logic

U3 B

TClk-q

U3 Launches

Data

External Flip-Flop captures

data

Valid new data

To meet the external flop’s setup time:Tclk-q + Ts + Tt + Tsetup < clock period

Page 14: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-14PrimeTime: Introduction to Static Timing Analysis

5-14

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

LaunchEdge

CaptureEdge

1.75

You specifyhow much time

is needed byexternal logic.

PT calculateshow much time

is left forinternal logic.

Constraint for YOUR output path

Constraining Output Paths

� set_output_delay -max� Describes the setup time of an output port with respect to a

capture clock

pt_shell>set_output_delay -max 1.75 -clock Clk [get_ports B]

Page 15: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-15PrimeTime: Introduction to Static Timing Analysis

5-15

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Exercise: : : : Constraining Output Paths

0.0 2.0 4.0

1.75

Data launchMust be valid

here

Clk

B

What is the maximum delay for the timing path through S?

Clk

SD Q

The_Current_Design

U3 BEXTERNAL CIRCUIT

SetupRequirement:

1.75 nsClock

(250 MHz)

Source latency: 0.5 nsNetwork latency: 0.3Skew: 0.25 ns

Use Clock period and skew constraints from the previous exercise

set_clock_latency ___________________________________

set_clock_latency -source ___________________________

set_output_delay ___________________________________

Points to remember:1.set_output_delay is specified w.r.t the capture clock.

2.set_output_delay amount specified is measured from the capture clock edge, towards the launch clock, (in the negative time direction).

Page 16: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-16PrimeTime: Introduction to Static Timing Analysis

5-16

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Timing Report: : : : Constraining Output Paths

Point Incr Path---------------------------------------------------------------clock Clk (rise edge) 0.00 0.00clock network delay (ideal) 0.80 0.80…..B (out) 0.00 2.60 r

data arrival time 2.60

clock Clk (rise edge) 4.00 4.00clock network delay (ideal) 0.80 4.80clock uncertainty -0.25 4.55output external delay -1.75 2.80data required time 2.80---------------------------------------------------------------data required time 2.80data arrival time -2.60---------------------------------------------------------------slack (MET) 0.20

Source Lat : 0.50

Network Lat: 0.30

Period = 4.0

Source Lat : 0.50

Network Lat: 0.30

Skew = 0.25

Output delay: 1.75

Slack MET

create_clock -p 4 [get_ports Clk]

set_clock_latency 0.3 [get_clocks Clk]

set_clock_latency –source 0.5 [get_clocks Clk]

set_clock_uncertainty 0.25 [get_clocks Clk]

set_output_delay -max 1.75 –clock Clk [all_outputs]

report_timing –to [all_outputs]

Page 17: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-17PrimeTime: Introduction to Static Timing Analysis

5-17

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Output Delay May Include Latency

In the previous timing report, would slack be different if you changed the clock source or network latencies?

What if the latency amount is already part of the input delay?Would you see a different slack?

Clk

SD Q

The_Current_Design

U3 BEXTERNAL CIRCUIT

SetupRequirement:

1.75 nsClock

(250 MHz)

Source latency: 0.5 nsNetwork latency: 0.3Skew: 0.25 ns

Includes source, network latencies

Page 18: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-18PrimeTime: Introduction to Static Timing Analysis

5-18

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Point Incr Path---------------------------------------------------------------clock Clk (rise edge) 0.00 0.00clock network delay (ideal) 0.80 0.80…..B (out) 0.00 2.60 r

data arrival time 2.60

clock Clk (rise edge) 4.00 4.00clock network delay (ideal) 0.00 4.00clock uncertainty -0.25 3.75output external delay -1.75 2.00data required time 2.00---------------------------------------------------------------data required time 2.00data arrival time -2.60---------------------------------------------------------------slack (VIOLATED) -0.60

Source Lat : 0.50

Network Lat: 0.30

Period = 4.0

source latency (incl)

network latency (inc)

Skew = 0.25

Output delay: 1.75

Slack VIOLATION

Timing Report: : : : Constraining Output Pathscreate_clock -p 4 [get_ports Clk]

set_clock_latency 0.3 [get_clocks Clk]

set_clock_latency –source 0.5 [get_clocks Clk]

set_clock_uncertainty 0.25 [get_clocks Clk]

set_output_delay -source_latency \

–network_latency -max 1.75 –clock Clk [all_outputs]

report_timing –to [all_outputs]

Page 19: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-19PrimeTime: Introduction to Static Timing Analysis

5-19

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Is this Output Path Fully Constrained?

How many output delay constraints are specified on Port B?What is the effect of connecting another 10 External logic to B?

SD Q

The_Current_Design

U3D Q

T

External Logic

B

D QT

External Logic

D QT

External Logic

Clk

Clk

Clk

Clk buf1

Page 20: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-20PrimeTime: Introduction to Static Timing Analysis

5-20

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Specifying Output Capacitance (fixed)

� In order to accurately calculate the timing of boundary cells, PT needs to know the external capacitate loading

� set_load allows the user to specify the external capacitive load on ports:

� By default, the external load on ports is 0� You may also specify different min and max numbers

OUT15 pt_shell>set_load 5 [get_ports OUT1]

Useful at the very top level of the CHIP where the driving cell is an I/O buffer.

Page 21: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-21PrimeTime: Introduction to Static Timing Analysis

5-21

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Specifying Output Capacitance (Derived)

A

OUT1

A

A

Use load_of lib/cell/pin to return the pin capacitance of a specific gate from the technology library.

OUT1AN2

A

B

Required BLANK spaces around the *

set_load [load_of ssc_core_slow/AN2/A] [get_ports OUT1]

set LOAD [expr [load_of ssc_core_slow/IVA/A] * 3]

set_load $LOAD [get_ports OUT1]

Suitable for sub blocks within the chip.

Page 22: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-22PrimeTime: Introduction to Static Timing Analysis

5-22

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Test for Understanding

CHIP1CHIP1_CORE

BoardCHIP2

BLOCK2A

Clk

J = .1

CHIP2_COREPort Out1

EXTERNALPATH

DELAY = 2

INTERNALPATH DELAY

CLOCK NETWORK DELAY2

tu = 0.35

tsutsl1 = 0.5

tsl2 = 0.7

tn1 = 0.25

tn2 = 0.5

Your task is to constrain the input timing path(s) in CHIP2_CORE in the context shown above. Use the legend for the terms and the command template provided to you in the Notes section. There is a single clock Clk that controls 2 chips on a board. Your focus is on CHIP2_CORE.

Legend:Clk is 200 MHz Clock with a Jitter (J) = 0.1 and a maximum skew within each chip (tu) = 0.35CHIP1_CORE: Source Latency (tsl1) = 0.5, Network latency (tn1) = 0.25CHIP2_CORE: Source latency (tsl2) = 0.7, Network latency (tn2) = 0.5, Cell name driving CHIP2_CORE is is mux007NOTE1: Make reasonable assumptions for parameters not suppliedNOTE2: You do not have to use all the constraints below. You can, however, use additional constraints.create_clock ______________________________________________________________set_clock_latency __________________________________________________________set_clock_latency –source –early _____________________________________________set_clock_latency –source -late ______________________________________________set_clock_uncertainty ______________________________________________________set_input_delay __________________________________________________________set_driving_cell __________________________________________________________

Page 23: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-23PrimeTime: Introduction to Static Timing Analysis

5-23

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Verify or Remove I/O Constraints

report_port -verbose:Returns all constraints and environment placed on all the input and output ports (delay, load, driving cell).

remove_capacitance:Removes capacitance load placed by set_load command

remove_driving_cell:Removes driving cell placed by set_driving_cell

remove_input_delay:Removes input delay constraints from specified ports

remove_output_delay:Removes output delay constraints from specified ports

Note that to remove the capacitance placed by the set_load command you should use the remove_capacitance command.

Page 24: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-24PrimeTime: Introduction to Static Timing Analysis

5-24

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Synchronous Multiple Clock Designs

What is different?A: Multiple clock sources � All derived from the same clock source � Some clocks do not have a corresponding clock port

on our design� Multiple constraints on a single port

CLKA

CLKCCLKBCLKE

CLKDD Q D Q

The_Current_Design

FF2 FF3N X S

What do you do now?

Clocks are said to be synchronous if they are derived from the SAME clock source.

Page 25: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-25PrimeTime: Introduction to Static Timing Analysis

5-25

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Answer: Use Virtual Clocks!

What are virtual clocks?

A: Clocks in the environment of the design that:� Are defined as clock objects � Do not clock any sequential devices within the current_design

� Serve as references for input or output delays

Page 26: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-26PrimeTime: Introduction to Static Timing Analysis

5-26

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Creating a Virtual Clock

How do you create a virtual clock?

A: It is the same as defining a clock, but you do not specify a clock pin or port:

� You must name your virtual clock, since there is no clock port for the virtual clock

create_clock -name VCLK -period 5.00

No source pin or port!Must be named

Page 27: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-27PrimeTime: Introduction to Static Timing Analysis

5-27

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Method for Synchronous Multiple Clocks

Method is the same as that for single clock designs: 1. Define the clock(s), using virtual clocks if necessary2. Specify I/O delays relative to the clock(s):

• PrimeTime will determine which clock imposes the most restrictive constraint on the design by finding Base Period

CLKA

(33 Mhz)

CLKC(50 Mhz) CLKE

(100 Mhz)

CLKD(75 Mhz)D

The_Current_Design

FF2 FF3

N X S

300 MHz

CLKA

CLKD

÷9

÷4

Q D Q

CLKE÷3

÷6 CLKC

Base Period is the Lowest Common Multiple (LCM) of all the clock periods involved. In the above example there are 2 base periods:

For the Input paths: Base period = LCM (20, 30) = 60 nsFor the output paths: Base period = LCM (20, 1000/75, 10) = 40 ns

Page 28: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-28PrimeTime: Introduction to Static Timing Analysis

5-28

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Example: Multiple Clocks on Input Ports

create_clock -period 30 -name CLKA

create_clock -period 20 [get_ports CLKC]

set_input_delay 5.5 -clock CLKA -max [get_ports IN1]

create_clock -period 30 -name CLKA

create_clock -period 20 [get_ports CLKC]

set_input_delay 5.5 -clock CLKA -max [get_ports IN1]

0.5 nsCLK-Q

5.5 nsThe_Current_Design

IN1

CLKC

300MHz

CLKC

CLKA÷9

÷6

5 ns N

tN

Page 29: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-29PrimeTime: Introduction to Static Timing Analysis

5-29

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Example Waveforms

For the example shown, input logic cloud of The_Current_Design must meet:

tN < 10 - 5.5 - tsetup

CLKC

CLKA

0 10 20 30 40 50 60

10 ns

÷6300 MHz

CLKA

CLKC

÷9What is the Base period?

Page 30: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-30PrimeTime: Introduction to Static Timing Analysis

5-30

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Example: Multiple Clocks Output Ports

create_clock -period [expr 1000.0/75] -name CLKD

create_clock -period 10 -name CLKE

create_clock -period 20 [get_ports CLKC]

set_output_delay -max 2.5 -clock CLKD [get_ports OUT1]

set_output_delay -max 4.5 -clock CLKE -add_delay [get_ports OUT1]

2ns

4 ns

CLKD

0.5 nsSETUP

4.5 ns

2.5 ns

0.5 nsSETUP

CLKE

OUT1

The_Current_Design

CLKC

S

tS

NOTE: Do NOT use “13.3” as the clock period for CLKD when you cannot correctly represent it using finite decimals. Use “1000.0/75”. Also, do NOT use “1000/75”, the result will be truncated to integer 13.

Page 31: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-31PrimeTime: Introduction to Static Timing Analysis

5-31

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Example Waveforms

For the example shown, output logic cloud of The_Current_Design must meet:

tS < 10 - 4.5

CLKC

CLKD

CLKE

÷4300MHz CLKC

CLKD÷6÷3

CLKE0 10 20 30 40

tS < 6.6 - 2.5AND

6.6

10

26.613.3

What is the Base period?

Page 32: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-32PrimeTime: Introduction to Static Timing Analysis

5-32

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Recommendation: Keep the base period smaller than 10 * (the smallest clock period) whenever possible.

� By definition, all clocks used with PT are synchronous:� You can not create asynchronous clocks with create_clock

� PT will determine every possible data launch/data capture time, and perform STA to the most conservative constraint

� This can be very time consuming, when � difference in periods between multiple clocks is large� base period is too large

Hints for Multiple Clock Designs

Page 33: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-33PrimeTime: Introduction to Static Timing Analysis

5-33

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Test For Understanding

1. Given 4 synchronous clock periods of: 3, 5, 20, 25 ns:

A) What is the Base period? ______________________________

B) Does this Base period follow our Recommendation, i.e. Tbase < 10 * min (periods)? ___________________________

C) How would this affect the runtime for PT? _______________________________

2. Does it make sense to specify source and network latency for a virtual clock?

Page 34: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-34PrimeTime: Introduction to Static Timing Analysis

5-34

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Summary of I/O Path Constraints

set IN_EX_CLK [remove_from_collection \

[all_inputs] [get_ports Clk]]

set LOAD [load_of ssc_core_slow/AN2/A]

set_input_delay -max 1.0 -clock Clk $IN_EX_CLK

set_driving_cell -lib_cell FD2 -pin Q $IN_EX_CLK

set_output_delay -max 2.0 -clock Clk [all_outp]

set_load $LOAD [all_outputs]

redirect io.rpt {report_lib ssc_core_slow}

redirect -append io.rpt {report_port -verbose}

Page 35: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-35PrimeTime: Introduction to Static Timing Analysis

5-35

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Lab Overview

� Given a design specification you will constrain all the I/O paths in the design

� You will ensure that all timing paths in the design have been constrained using check_timing

� You will generate timing reports for the longest I/O paths and interpret the effects of your applied I/O constraints

� You will vary the input driving cell, output load and observe their effects on the timing paths

LAB

60 min

Page 36: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-36PrimeTime: Introduction to Static Timing Analysis

5-36

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Appendix

Constraining I/O for Hold Time check

Page 37: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-37PrimeTime: Introduction to Static Timing Analysis

5-37

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

When to Check for Hold Violations

� Small Violations:� Post layout: Check all hold-time violations using best case

operating conditions post-layout because� The clock tree is not in place until after layout� They often disappear when net parasitics are annotated

� Large Violations:� Pre-Layouit: Check only using the worst case operating

conditions for any large hold-time violations pre-layout

My design has met setup requirements.Is it a good time to check for hold?

Page 38: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-38PrimeTime: Introduction to Static Timing Analysis

5-38

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Constrain for Hold Time: Input Paths

D Q D Q D Q

QB

D Q

QB

Clk

TO_BE_SYNTHESIZED

FF1 FF2 FF3 FF4M N X S T

set_input_delay -min describes the fastest arrivaltime of the external logic on the input ports.

create_clock -period 10 [get_ports Clk]set_input_delay -min 0.3 -clock Clk $all_in_ex_clk

create_clock -period 10 [get_ports Clk]set_input_delay -min 0.3 -clock Clk $all_in_ex_clk

min 0.3ns

If FF2 has THOLD = 1ns:What is the min delay allowed for N?

Page 39: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-39PrimeTime: Introduction to Static Timing Analysis

5-39

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Constrain for Hold Time: Output Paths

D Q D Q D Q

QB

D Q

QB

Clk

TO_BE_SYNTHESIZED

FF1 FF2 FF3 FF4M N X S T

� set_output_delay -min :� Describes the hold time requirement of the external logic on the

output ports

0.3ns 0.5nsHold TimeRequirement

If FF has THOLD = 0.5ns and TT = 0.3ns:What is the min output delay?

If logic cloud T uses 0.3 ns, you need to have a minimum delay for FF3 (Clk->Q) plus logic cloud S of 0.2 ns in order not to violate the hold time requirement on FF4.

Page 40: Agenda: Day Two 5-1 - pudn.comread.pudn.com/downloads157/sourcecode/embed/701548/...10 Customer Support PrimeTime: Introduction to Static Timing Analysis 5-2 Unit 5: Constraining I/O

Unit 5: Constraining I/O Paths5-40PrimeTime: Introduction to Static Timing Analysis

5-40

Constraining I/O pathsPrimeTime: Introduction to Static Timing AnalysisSynopsys 34000-000-S16

Calculation of Output Hold Time

create_clock -period 5 [get_ports Clk]set_output_delay -min (0.3-0.5) -clock Clk [all_outputs]

D Q D Q

QBClk

FF3 FF4TS

set_output_delay -max (Tmax + FF4setup)set_output_delay -min (Tmin - FF4hold)

setup = 0.8hold = 0.5

Tmin

0.3ns

-0.2