Fourteen stages, in order, from what the job is to what signing off means.
For somebody who has finished a digital design course and has never opened a timing tool. Every command is checked against the tool’s own documentation, every figure is drawn from one symbol library, and every number is recomputed from its own parts.
125pages in the PDF
14stages
71figures
66self-test cards
45glossary terms
About 188 minutes to read straight through, which nobody does. The PDF is the same guide set for print: 125 pages, A4, with a contents page and a clickable index.
It is a route, not a textbook. It says what to learn, in what order, to what depth, and how to tell when you have it.
This guide is for somebody who has finished a digital design course and has never opened a timing tool. It assumes you know what a flip-flop is and what a clock is, and it assumes nothing else.
It is arranged as fourteen stages in four parts. Each stage has the same nine sections in the same order, and the repetition is deliberate: once you have read one stage you can navigate any of the others without looking.
Section
What it is for
Where you are
Why this stage sits here rather than earlier or later
What you will be able to do
Demonstrable actions, not topics. Each one is something you could be asked to perform.
Prerequisites
Which earlier stages this needs, by number
The concept
The teaching. Figures carry most of it.
In the tool
Which commands touch this, named but not documented in depth
The traps
Misconceptions students reliably form here, and what is actually true
Check yourself
Things to do, with answers placed where you will not read them by accident
What this unlocks
The next stage, and what breaks if you skip ahead
How long this takes
An honest estimate, which varies
Two stages, marked where they appear, are at awareness depth. The aim there is that you know what the terms mean and when they are used, not that you can set up the flow. A roadmap that pretended otherwise would be lying about how long it takes to become useful at them.
Every command, switch and number in this guide was checked against the tool's own documentation before it was written down. Where the documentation names a command without ever showing it being used, this guide names it too and says so rather than inventing an example. Formulas appear with every symbol defined and its unit stated, because an equation with undefined symbols teaches nothing.
The two legends
MARKS AND BOXES
Five inline icons and seven kinds of sidebar. Each has exactly one meaning and that meaning never varies.
Two systems of marking run through this guide. Icons are inline markers that label a paragraph or a block. Sidebars are boxes that step outside the main line of the argument. They coexist and they do different jobs.
THE FIVE ICONS
Settled and checked
A command or a formula that was verified against the tool's own documentation, and a milestone you have reached.
A misconception
Something that is wrong, however reasonable it sounds. It marks the traps section of every stage and appears nowhere else.
The idea to hold onto
The intuition rather than the mechanics. One paragraph per stage carries it.
How this links to the rest
A forward or backward reference, and the bigger picture. It marks what a stage unlocks.
Hands on, in the tool
A command block, and the section of each stage that names which commands touch the subject.
An icon never replaces a word. Every block marked with one reads correctly with the icons stripped out, and that was checked by rendering the whole guide once with them hidden.
THE SEVEN SIDEBARS
WHY
The reason behind a convention, for when the convention on its own looks arbitrary.
WHAT IF
A question a careful reader is about to ask, answered before it becomes a gap.
IN PRACTICE
What this looks like on a real project, which is often untidier than the explanation.
TRAP
A specific mistake, called out where it is most likely to be made.
TAKEAWAY
The one sentence from a stretch of text worth carrying away.
MENTOR'S ASIDE
An opinion or a piece of judgement, marked as such so you can disagree with it.
NOTE
A correction or a caveat about the material itself rather than about the subject.
A sidebar can be skipped on a first reading without losing the argument. An icon-marked paragraph cannot, because it is part of the argument and the icon is only saying which part.
The roadmap
THE WHOLE THING ON ONE PAGE
Fourteen stages, four parts, and the shape of the route. This page repeats at the end, so you can find it from either direction.
FIGURE 1 — THE ROADMAP
Fourteen stages in four parts, and the order to take them in.
Read it: Read left to right inside a part, then down to the next part. The numbers are the stages, not a difficulty rating. This is not claiming the stages take equal time — Stage 8 alone is worth two of most of the others, and the study plan says which.
Read it left to right inside a part and then down to the next. The numbers are stage numbers rather than a difficulty ranking, and the stages do not take equal time: the study plan after Stage 14 says which ones take longer than anybody expects.
If you would rather take the conventional route, with the fundamentals first and the scenario grid at the end, read Stage 1 after Stage 10 instead. Nothing else has to move. The only thing you lose is the reason Part Two matters, which you will then have to supply for yourself.
I
PART ONE
What the job is
What is being asked of you, and what kind of answer counts?
Three stages that describe the shape of the work before any of the machinery arrives. By the end of this part you will know what an analysis is, what it is unable to tell you, and what object it is analysing. None of that requires knowing how a delay number is produced, which is why it comes first.
The stages in this part
What it covers
Stage 1
The destination: modes, corners and scenarios
Stage 2
What static timing analysis is, and what it is not
Stage 3
The timing path
What this part gives you
The vocabulary every later stage assumes: mode, corner, scenario, path, startpoint, endpoint, arrival, required, slack.
A reason to care about the whole of Part Two, which is otherwise three stages of physics with no visible purpose.
Enough to follow a conversation about timing without contributing to it.
What to expect
About four evenings for the three stages together. Stage 3 is the one worth drawing repeatedly.
FIGURE 2 — PART ONE AT A GLANCE
The three stages that say what the job is.
Read it: Each box is one stage and the arrows are the order. The labels on either end name what comes before and after.
1
STAGE 1
The destination: modes, corners and scenarios
AWhere you are
the front matter → Stage 1 → Stage 2
It sits first because everything after it is an answer to a question this stage asks. A student who has not seen the grid has no reason to care that a library is characterised at one voltage, or that the same wire has three different delays.
BWhat you will be able to do
Say what a mode is, what a corner is, and why they are different kinds of thing rather than two words for the same idea
Draw the scenario grid for a design with three modes and four corners, and say how many analyses that is
Explain why a path can pass at one corner and fail at another without anything in the design changing
Say which check you would expect to fail at the slow corner and which at the fast one, and give the reason rather than the rule
CPrerequisites
None. This is the first stage and it assumes you have seen a flip-flop and know what a clock is.
DThe concept
A chip does more than one thing. The same silicon runs your application, and then it runs a manufacturing test where a scan chain shifts patterns through every register, and then it may drop into a low-power state where half of it is switched off and the rest runs at a lower voltage and a slower clock. Each of these is a mode. What changes between them is which paths are real: a select pin held at one value makes one set of paths live and another set irrelevant, and the clock period itself is often different.
The same chip also comes out of the fab differently every time. Transistors are a little faster or a little slower than the nominal. The supply sags under load or sits high when the board is idle. The die runs at eighty degrees in a phone in your pocket and at minus twenty on a cold morning. The wires come out narrower or wider than they were drawn, which changes both their resistance and how strongly they couple to their neighbours. A corner is one named combination of all of that: a process point, a voltage, a temperature, and an extraction point for the wires.
FIGURE 3 — A MODE AND A CORNER ARE DIFFERENT THINGS
One changes what the logic is doing; the other changes how fast the silicon runs.
Read it: The left panel is a select pin held constant, which makes a different set of paths real. The right panel is the same logic with every delay number rescaled. The voltages and temperatures shown are typical ranges, not this design's.
A mode changes what the logic is doing. A corner changes how fast the silicon does it. Neither one is a version of the other, and a design has to survive every reasonable combination of the two.
One mode paired with one corner is a scenario, and a scenario is the unit of work in timing analysis. It is a complete, self-contained question: given this logic configuration, these libraries, these parasitics and these constraints, does every path meet its requirement? Laying the modes along one axis and the corners along the other gives a grid, and signoff means running the grid.
FIGURE 4 — THE SCENARIO GRID
Modes on one axis, corners on the other, and every cell is a run.
Read it: Read a cell as one complete analysis: one mode's logic, one corner's libraries and parasitics, checked for setup and for hold. Three modes and four corners are illustrative — a real chip may have twice as many of each, or fewer.
Here is that argument drawn on a single path. Nothing about the path changes between the two panels. The same registers launch and capture, the same gate sits between them, the same wire connects them. Only the numbers behind those cells change, because the library that supplies them was characterised somewhere else.
FIGURE 5 — ONE PATH, TWO CORNERS, TWO FAILURES
The same path can fail setup at one corner and hold at another.
Read it: The schematic at the top is drawn once because it does not change: same cells, same wires. Only the numbers behind them change. The figure is not claiming every path behaves this way — most fail at one corner or neither. It is claiming that checking one corner cannot tell you which.
The two failures want opposite fixes. Setup wants the path faster, so you make the cells bigger or take a stage out. Hold wants the path slower, so you add delay on purpose. Fixing one can create the other, which is why closing timing is an iteration rather than a list of repairs, and why the grid has to be re-run after each round rather than trusted from the last one.
FIGURE 6 — WHY ONE POINT IS NOT ENOUGH
Closing at one corner is a fact about that corner and nothing else.
Read it: Follow the left branch for what assuming costs and the right for what checking costs. The figure is not arguing that more scenarios are always better: each one costs runtime and licences, and Stage 11 covers how a team decides.
EIn the tool
Three commands describe the corner side of a scenario, and one groups the whole thing. None of them is worth learning properly yet, because each one makes sense only once you know what it is scaling.
Command
What it decides
Covered in full
set_operating_conditions
which process, voltage and temperature point this analysis sits at
Stage 11
read_parasitics
which extraction of the wires to use
Stage 5, then Stage 11
set_case_analysis
which mode this is, by holding select pins at constant values. Paths the constant makes unreachable stop being checked, but that pruning is the consequence of declaring a mode rather than an instruction to ignore them
Stage 9
create_scenario
the whole combination, named, so it can be run alongside others
Stage 11
If you want the fuller treatment of this topic now rather than at Stage 11, the MMMC track at pdverse.net/mmmc goes through scenario setup, distributed analysis and the reporting rules in the detail a working flow needs.
FThe traps
A corner and a mode are basically the same thing.
They are independent axes, which is exactly why they form a grid rather than a list. Adding a mode multiplies the number of runs by the number of corners, and adding a corner multiplies it by the number of modes. Treating them as one idea makes the arithmetic of a signoff schedule impossible to reason about.
The slow corner is the hard one and the fast corner is a formality.
The fast corner is where hold violations live, and hold violations are the ones that cannot be fixed by slowing the clock down. A chip that fails hold is a chip that fails at every frequency, including zero. The fast corner is the one that ends projects.
If it passes at typical it will pass everywhere, because typical is in the middle.
Typical is in the middle of the distribution, not in the middle of the failure modes. Both failure modes live at the ends. A design that is clean at typical and broken at both extremes is an entirely ordinary outcome of a first pass.
GCheck yourself
1
A design has two functional modes, one scan mode, and corners named slow, fast and typical, each of which comes in two extraction variants. Work out how many scenarios that is, and then how many individual checks, remembering that each scenario is examined for both setup and hold.
2
Draw, from memory, a single register-to-register path. Then write beside it two sentences: one saying what makes it fail at the slow corner, and one saying what makes it fail at the fast corner. Do not use the words setup or hold in either sentence.
3
A colleague says their block closed timing and is ready. Name three questions you would ask before agreeing, all of them about this stage rather than about the numbers.
Answers
1 Three modes times three process points times two extraction variants is eighteen scenarios, and each is checked twice, so thirty-six. The arithmetic is the point: the grid grows by multiplication, which is why nobody runs all of it without thinking about which cells are redundant.
2 At the slow corner every cell and every wire takes longer, so the data reaches the second register after the moment it needed to be there. At the fast corner everything takes less time, so the data reaches the second register while it is still supposed to be holding the previous value. Writing it without the jargon is the test of whether the mechanism is in your head or only the vocabulary.
3 Which scenarios did you run? Which modes are in the set, and is scan among them? Which corner did the hold numbers come from, and was it the fast one? Any answer that names a single run is an answer that has not yet met the grid.
HWhat this unlocks
Stage 2, which says what static timing analysis actually is and, more usefully, what it is unable to tell you. If you skip it you will spend a long time expecting the tool to answer questions about function that it has no way to answer.
IHow long this takes
Two evenings. Most of that is looking at the grid until it stops looking arbitrary.
2
STAGE 2
What static timing analysis is, and what it is not
AWhere you are
Stage 1 → Stage 2 → Stage 3
It sits here because the previous stage described a grid of analyses without saying what an analysis is. This stage says what the tool does and, at least as importantly, what it declines to do.
BWhat you will be able to do
State the difference between static timing analysis and simulation in terms of what each one needs as input
Name two questions that static analysis cannot answer, and say why the limitation is structural rather than a shortcoming of a particular tool
Say where in the implementation flow timing analysis runs, and what the clock and the wires look like at each of those points
Name the four kinds of timing path and give an example of each
CPrerequisites
Stage 1, for the vocabulary of modes, corners and scenarios.
DThe concept
Simulation asks what the design does when you feed it a particular sequence of inputs. It is exact about that sequence and silent about every sequence you did not write. Static timing analysis asks a different question and asks it without any input at all. It walks the structure of the netlist, finds every path from a launching point to a capturing point, adds up the delays along each one, and compares the total against what the clock allows. It does not need vectors because it is not simulating behaviour; it is measuring the structure.
FIGURE 7 — STATIC ANALYSIS AGAINST SIMULATION
One needs stimulus and answers about function; the other needs none and answers about time.
Read it: The left panel needs vectors you wrote; whatever you did not write is not tested. The right panel needs none, and covers every path. It is not claiming static analysis replaces simulation — they answer different questions and both are run.
That trade is the whole character of the method. Because it needs no stimulus it is exhaustive: every path gets an answer, including the ones nobody thought to test. Because it needs no stimulus it is also fast enough to run on a full chip many times a day. And because it needs no stimulus it has no idea what the logic means.
Static analysis is exhaustive over structure and blind to function. Both halves of that sentence are consequences of the same design decision, and you cannot have one without the other.
The blindness is worth taking seriously early, because a great deal of wasted effort comes from expecting the tool to know something it cannot know. It will happily report a long path through logic that can never be sensitised, because sensitisation is a question about values and the tool is not tracking values. It will time a path between two clocks that have no relationship and produce a number, because it was given two clocks and a structural connection between them and that is all it needs.
FIGURE 8 — WHAT THE ANALYSIS CANNOT SEE
Three things it is structurally unable to tell you.
Read it: The schematic shows a path the tool will report as real and slow, whether or not the two inputs can ever be high together. The figure is not claiming the tool is unreliable; it is exact about what it measures. The gap is between structure and function, and closing it is your job, not its.
Timing analysis is not a single step near the end of the flow. It runs after synthesis, after placement, after the clock tree is built, after routing, and again at signoff, and each of those runs sees a different picture. Early on the clock is an assertion and the wires are estimates. Later the clock is a real tree with real buffers and the wires have been measured off the layout. The same netlist gives different answers at each point, and the answers are supposed to converge.
FIGURE 9 — WHERE TIMING ANALYSIS SITS
Not a stage of its own: a gate after every stage.
Read it: The top row is the implementation flow and each drop-down is a timing run that must pass before the design advances. The table beneath says what the clock and the parasitics look like at each point. It is not claiming every project runs exactly these five gates; the shape is what carries over.
Finally, the paths themselves. Every path starts somewhere and ends somewhere, and there are only four combinations of what those ends can be. A register can launch or an input port can; a register can capture or an output port can. All four combinations are checked, and they are worth naming because reports are grouped by them and because two of the four depend on numbers you have to supply by hand.
FIGURE 10 — THE FOUR KINDS OF TIMING PATH
Every path in a design starts and ends in one of four ways.
Read it: Read each row as a path: what launches it on the left, what captures it on the right. The logic cloud is drawn as a single gate for space; in a real path it is many.
EIn the tool
Two commands that are worth knowing before anything else, because they are the fastest way out of every question this guide does not answer.
help -verbose <command> all options and arguments
man <command> the manual page for a command,
a variable, or a message identifier
The second one is the more useful of the two. It takes message identifiers as well as command names, so when a run prints a warning code you have not seen before, that code is itself a searchable question.
FThe traps
Static analysis has replaced simulation.
They answer different questions and both are run on every project. Timing analysis will not tell you the state machine is wrong, and simulation will not tell you that one of nine million paths is forty picoseconds short. A design signs off on both.
If the timing report is clean, the timing is correct.
The report is correct about the paths it analysed. Whether those are the paths that matter depends on the constraints, the exceptions and the scenarios, none of which the report comments on. This gap is large enough that a separate discipline exists to close it.
Input-to-output paths are rare enough to ignore.
They are common in glue logic, in bypass and passthrough modes, and in any block that muxes an input straight to an output. They are also the path type most often left unconstrained, because they depend on two numbers a designer has to supply rather than on a clock the tool already knows about.
GCheck yourself
1
Without looking back at the figures, write the shortest honest answer you can to the question “what does a timing analysis tool actually do?” Aim for two sentences.
2
A block has eight input ports, twelve output ports and four hundred registers. Which of the four path types would you expect the report to have the most of, and why?
3
Name the two things about a timing run that change between the run after synthesis and the run after routing, and say which direction each one usually moves the numbers.
Answers
1 It finds every path through the design from a launching point to a capturing point and adds up the delay along each one. It then compares each total against what the clock and the constraints allow, and reports the difference. If your answer mentions vectors or stimulus, something has gone wrong in the first sentence.
2 Register to register, by a wide margin. Four hundred registers can reach each other in a great many combinations, while only eight ports launch and only twelve capture. This is also why the register-to-register group is the one people mean when they say “the timing” without qualifying it.
3 The clock goes from asserted to computed, which usually adds skew that was assumed to be zero. The wires go from estimated to extracted, which usually adds delay on the long nets. Both changes tend to move slack downwards, which is why margin is carried early rather than spent.
HWhat this unlocks
Stage 3, which draws the object every one of these paths is an instance of. Skipping it leaves you with the vocabulary of paths but no picture to attach it to, and every later stage refers back to that picture.
IHow long this takes
One evening. It is a short stage and its value is mostly in the third section.
3
STAGE 3
The timing path
AWhere you are
Stage 2 → Stage 3 → Stage 4
It sits here because the first two stages have used the word “path” without drawing one. This stage draws it, names every part, and defines the three quantities that the rest of the guide computes.
BWhat you will be able to do
Draw a register-to-register timing path from memory, with the clock reaching both registers, and name the startpoint and the endpoint correctly
Say what arrival time and required time each mean and which direction each one is computed in
Define slack in one sentence and say what its sign means
Explain why the check is anchored at the endpoint rather than at the startpoint
CPrerequisites
Stage 2, for what analysis is doing and why it works on structure.
DThe concept
Here is the object. A register launches a value when its clock edge arrives. The value travels through some amount of combinational logic. Another register captures it when its own clock edge arrives. That is a timing path, and the overwhelming majority of the paths in any design look exactly like this.
FIGURE 11 — THE TIMING PATH
A startpoint, a combinational cloud, an endpoint, and one clock reaching both registers.
Read it: The dashed shape is any amount of logic between the two registers. Both registers take the same clock, drawn as one line, because the commonest path in any design is this one. The figure is not claiming the clock arrives at both at the same moment — that difference is Stage 7.
The startpoint is the clock pin of the launching register. The endpoint is the data pin of the capturing register. Notice that these are not symmetric: one is a clock pin and the other is a data pin. That asymmetry is not an accident of naming. The path begins when a clock edge causes something to happen, and it ends where a requirement has to be satisfied, and requirements live at data pins.
Two clock edges matter to this path. The launch edge is the one that causes the launching register to put a new value on its output. The capture edge is the one that causes the capturing register to take a sample. By default the tool assumes these are consecutive edges, one period apart, and that default assumption is behind more confusion than any other single thing in the subject.
FIGURE 12 — LAUNCH EDGE AND CAPTURE EDGE
The data launched by one edge must be caught by the next.
Read it: The top waveform is the clock and the marks are the two edges that matter to one path. The lower trace is the data at the capturing register's D pin. The figure is drawn with generous margin so both edges are visible; it is not claiming a healthy path looks this relaxed.
Arrival time is when the data actually reaches the endpoint. It is computed forwards: start at the launch edge, add the launching register's own delay from clock to output, then add every cell delay and every net delay along the way. Required time is the latest the data may arrive and still be captured correctly. It is computed backwards from the capture edge, subtracting whatever the capturing register needs.
FIGURE 13 — ARRIVAL FORWARDS, REQUIRED BACKWARDS
One number is accumulated from the startpoint; the other is worked back from the constraint.
Read it: The upper row adds delays as it moves right. The lower row subtracts requirements as it moves left. They meet at the endpoint and their difference is the slack. The numbers are illustrative. Required time is only computed where a check exists, which is why the lower row is worked backwards from the endpoint rather than forwards from the start.
the boundary the data must respect: the latest it may arrive for setup, the earliest for hold
time units
data arrival time
when the data actually arrives at the endpoint
time units
the sign
negative means the check fails, in both cases
—
Stated in the tool documentation. A maximum-delay report closes with the required time, the arrival time and the slack, in that order. A minimum-delay report closes with the same three lines and the subtraction the other way round, because for hold it is arriving too early that breaks the check.
Positive slack means the check passes with room to spare, and the size of the number tells you how much. Zero means it passes exactly. Negative means it fails, and the magnitude is how much time you have to find. That is the entire scoring system, and every report you will read for the rest of your career ends in those three lines.
FIGURE 14 — SLACK, MET AND VIOLATED
Slack is the distance between two marks, and its sign is the verdict.
Read it: In both bars time runs left to right, the solid mark is when the data arrives and the dashed mark is the latest it may. The numbers are illustrative. The figure is not claiming slack is a percentage or a ratio: it is a duration, in the library's time units.
FROM THE TOOL DOCUMENTATION
The amount of time by which a violation is avoided is called the slack. For example, for a setup constraint, if a signal must reach a cell input at no later than 8 ns and is determined to arrive at 5 ns, the slack is 3 ns. A slack of 0 means that the constraint is just barely satisfied. A negative slack indicates a timing violation.
EIn the tool
One command produces everything described in this stage, and you will run it more often than all the others put together.
report_timing -path_type full -delay_type max -max_paths 1
Those are its defaults, so running it bare gives the same result: the single worst setup path, shown in full. Stage 10 walks a real report from this command line by line. For now the point is that arrival, required and slack are not abstractions. They are three labelled lines at the bottom of the output, in that order.
FThe traps
The startpoint is where the data comes from, so it is the launching register's output pin.
It is the launching register's clock pin. The path's time origin is the clock edge, not the data. This matters because the clock's own journey to that pin is part of the arithmetic, and Stage 7 spends most of its length on that journey.
Slack is a percentage or a ratio.
It is a duration, in whatever time unit the library uses. A slack of −0.2 in a library that works in nanoseconds is a fifth of a nanosecond short, and whether that is a disaster or a rounding error depends entirely on the period.
The worst path is the one with the longest delay.
It is the one with the most negative slack, which is a different thing. A very long path with a very long period available to it may have comfortable slack, while a short path on a fast clock with a tight constraint may be the one failing. Delay is an input; slack is the verdict.
Arrival time is when the signal leaves the startpoint.
It is when the signal reaches the point being discussed. Every node along the path has an arrival time, accumulating as you move forwards, and the one that matters for the check is the arrival time at the endpoint.
GCheck yourself
1
Draw a register-to-register path from memory, with one gate in the middle and the clock reaching both registers. Mark the startpoint and the endpoint, and then mark the four things that get added together to make the arrival time at the endpoint.
2
A report gives arrival time 4.82 and required time 4.30 for a setup check. Compute the slack, say whether the check passes, and say what you would have to change to make it pass.
3
Explain, in writing and without using the word “because it just is”, why the analysis anchors the check at the endpoint instead of at the startpoint.
Answers
1 Startpoint at the launching register's clock pin, endpoint at the capturing register's data pin. The four contributions are the clock's journey to the launching register, that register's clock-to-output delay, the delay of the gate, and the delay of the wires. If you drew the clock reaching only one register, redraw it: the capture side's clock journey is half of the next stage's subject.
2 Required minus arrival is 4.30 − 4.82, which is −0.52, so the check fails by 0.52 time units. Either the arrival has to come down, which means a faster path, or the required time has to go up, which means a longer period, a relaxed constraint, or a clock arrangement that pushes the deadline later. Stage 8 says which of those are available for which check.
3 The requirement belongs to the capturing register. It is that register's library data that says how early the data must be stable, and it is that register's clock edge that sets the deadline. The startpoint contributes a starting time, and many startpoints may share one endpoint, but only the endpoint has a requirement to compare against.
HWhat this unlocks
Part Two, which opens up the one thing this stage treated as a single number: the delay along the path. Skipping ahead to the checks without knowing where delay comes from leaves you able to read a report and unable to change one.
IHow long this takes
Two evenings, and it is worth drawing the main figure yourself from memory at the end of each.
II
PART TWO
Where delay comes from
The path has a delay. What is that number made of?
Part One treated the delay along a path as a single quantity. These three stages open it. A cell's delay turns out to depend on its situation rather than being a property it carries; a wire turns out to have a delay of its own that grows faster than its length; and the two interact, so a mistake in one place shows up several stages later.
The stages in this part
What it covers
Stage 4
Cell delay
Stage 5
Net delay
Stage 6
Transition, load and the chain
What this part gives you
Why the same gate is fast in one place and slow in another.
Why a design that closed after synthesis opens up after routing.
Why three limits exist that have nothing to do with setup or hold, and what happens to a design that ignores them.
What to expect
Seven to nine evenings. Stage 4 alone is worth three of them and most study plans give it one.
FIGURE 15 — PART TWO AT A GLANCE
Where every delay number in the design comes from.
Read it: Same shape as the last strip. These three stages answer one question between them, so the arrows are tighter than they look: skipping the middle one leaves the third without its cause.
4
STAGE 4
Cell delay
AWhere you are
Stage 3 → Stage 4 → Stage 5
It sits here because Stage 3 treated the delay along a path as a single number. This stage opens the first half of that number and shows that a cell's delay is not a property the cell carries around with it.
BWhat you will be able to do
Name the two axes of the cell delay table and say what each one physically is
Given a table and a pair of operating conditions, say whether the tool will interpolate or extrapolate, and why the difference matters
Explain why the same gate has different delays at two places in the same design
Classify a timing arc as positive unate, negative unate or non-unate, and give a gate for each
Say what problem current-source models were introduced to solve
CPrerequisites
Stage 3, for the path and for what arrival time is accumulating.
DThe concept
Ask where a cell's delay number comes from and the honest answer is that somebody measured it. Before a library is released, every cell in it is simulated at transistor level, many times, under a range of conditions, and the results are written into a table. The tool does not compute delay from physics during a timing run. It looks the answer up.
The table has two axes, and understanding why it has exactly two is most of this stage. The first is the input transition time: how quickly the signal arriving at the cell's input is moving. The second is the output load capacitance: how much the cell's output has to drive, counting the wire and every input pin hanging off it.
FIGURE 16 — THE CELL DELAY TABLE
A cell's delay is read from a two-dimensional table and interpolated between its entries.
Read it: Columns are output load, rows are input transition time, and each cell of the grid is a number measured once during characterisation. The red point is a real operating condition, which falls between four entries. The numbers shown are illustrative and are in the library's own units. The figure is not claiming every library uses a four-by-four table — seven by seven is more usual, and the principle is the same.
Delay is not a property of a gate. It is a function of the gate's situation, and the two things that describe that situation are how the input arrived and what the output has to push.
Both axes have an intuition worth holding. A larger load takes longer to charge, which is the obvious half. A slower input edge is less obvious: while the input is drifting through the middle of its range, both the pull-up and the pull-down transistors are partly conducting, and the cell spends that whole interval fighting itself rather than driving its output. The slower the edge, the longer that interval lasts.
FIGURE 17 — WHY BOTH AXES MATTER
Change the load and the delay changes; change the input edge and it changes again.
Read it: Each panel holds one axis fixed and moves the other. The delays quoted are the corner entries of the table in the previous figure, so the two figures are consistent. It is not claiming the two effects are independent — they are not, which is exactly why the table has two dimensions rather than two separate lists.
There is one more thing the library had to decide before it could measure anything: where the delay is measured from and to. A signal does not change instantly, so “when the input changed” has to mean the moment it crossed some particular voltage. Libraries usually pick the halfway point for delay, and a different pair of points for transition time, and they state which.
FIGURE 18 — WHERE THE DELAY IS MEASURED FROM
Delay is measured between two voltage points, and the library chooses which.
Read it: The upper trace is the input, the lower the output, and the dimension between the two marked crossings is the cell delay. Transition time is measured between a different pair. The percentages shown are common choices, not a standard: the figure is not claiming every library uses these, and the point is that two libraries using different ones will disagree about identical silicon.
Two libraries that chose different points will disagree about identical silicon, by an amount that is small on a fast edge and not small on a slow one. This is a real source of mismatch between a signoff tool and an implementation tool, and it is worth reading your library's own statement of it once, early, so that a discrepancy later has a candidate explanation.
The actual conditions in a design almost never land exactly on a table entry, so the tool interpolates between the four surrounding points. Inside the table that is a reasonable thing to do and the answer is trustworthy. Outside it the tool extrapolates instead, extending a surface past the last point anyone measured, and the answer becomes a guess with the same number of decimal places as a measurement.
A table is a table of one thing, so a cell has many of them. There is one per timing arc, which is one input pin to one output pin, and usually one for the rising output and one for the falling. A two-input gate with one output therefore carries at least four delay tables, plus tables for the output transition, plus more for every corner the library was characterised at.
An arc also has a sense. If a rising input causes a rising output the arc is positive unate. If a rising input causes a falling output it is negative unate. If the direction of the output depends on the other inputs, the arc is non-unate and the tool cannot decide which transition to propagate without more information.
FIGURE 19 — UNATENESS
Whether a rising input makes a rising or a falling output, or neither reliably.
Read it: Each panel shows one gate and the edges on its input and output. The third panel draws both possible outputs dashed, because which one happens depends on the other input. XOR and XNOR gates are common in clock paths, which is why the tool has to be told which sense to assume.
FROM THE TOOL DOCUMENTATION
A clock signal is non-unate if the clock sense is ambiguous as a result of non-unate timing arcs in the clock path. For example, a clock that passes through an XOR gate is not unate because there are non-unate arcs in the gate.
Unateness rarely bothers you in a data path, where both possibilities are analysed anyway. It matters in clock networks, where a clock passing through a gate with a non-unate arc leaves the tool unable to say whether a rising edge at the source is still a rising edge at the register.
One more thing, mentioned rather than taught. The table model treats a cell's output as a voltage source driving a single lumped capacitance. That is accurate while the wire's own resistance is small beside the driver's. Once the wire is resistive enough to hide part of its own capacitance from the driver — which is called resistive shielding — a single lumped number stops describing the situation.
There is a way to keep the table model and account for the shielding, and it is worth knowing because the term comes up constantly.
Ceff = C1 + k · C2, with 0 ≤ k ≤ 1
C1
the capacitance the driver sees immediately, before the wire's own resistance
farads
C2
the capacitance beyond that resistance, at the far end
farads
k
how much of the far capacitance the driver can actually feel; 1 when the wire has no resistance, falling towards 0 as it dominates
dimensionless
From the physical-design reference material. This is resistive shielding written as a number. The driver is charging something smaller than the total capacitance, because the wire's resistance hides part of it. k depends on the driver as well as the wire, so it is solved iteratively rather than looked up.
The driver is charging an effective capacitance somewhere between the near capacitance alone and the total. How far between is what k says, and because k depends on the driver as well as the wire the tool solves for it rather than looking it up. When that is still not good enough, signoff libraries carry current-source models instead.
FIGURE 20 — TWO WAYS TO MODEL A DRIVER
As a voltage source with one lumped load, or as a current source feeding the wire's real shape.
Read it: The left panel is the model the table in this stage belongs to. The right is what signoff libraries carry now. The figure is not claiming the table model is obsolete: it is what every explanation of cell delay still rests on, and it is accurate whenever the wire's resistance is small.
EIn the tool
You will not often interrogate the delay calculator directly, but it is worth knowing that you can.
Command
What it is for
Where it is covered
report_delay_calculation
shows how one arc's delay was arrived at, including the table lookup
named in the flow at Stage 10
report_lib
what the loaded libraries contain, and at what conditions
named in the flow at Stage 10
set_operating_conditions
which characterisation point the tables are read at
Stage 11
When a delay number looks wrong, the delay calculation report is where the argument ends, because it shows the inputs the lookup was given rather than only the answer it produced.
FThe traps
An inverter has a delay, and you can look it up.
An inverter has a table. Asking for its delay without saying what is driving it and what it is driving is like asking how long a journey takes without saying how far. Two instances of the same cell in the same design routinely differ by a factor of three.
Bigger cells are always faster.
A bigger cell drives its load faster and presents a larger load to whatever drives it. Sizing a cell up moves delay from one stage to the stage before it. Whether that helps depends on where the slack is, which is why optimisation is an algorithm rather than a rule.
The delay numbers in the report are measurements.
They are interpolations between measurements, which is close enough, unless the operating point is outside the table, in which case they are extrapolations and nobody measured anything nearby.
Unateness is an obscure corner case.
It is why you sometimes have to tell the tool the sense of a clock path by hand. Any clock that passes through a gate whose other input is a control signal is a candidate, and clock-gating structures are full of them.
GCheck yourself
1
Take the table in the figure for this stage. The operating point is an input transition of 0.06 and an output load of 0.09. Say which four entries the tool will use, and say roughly what answer to expect. Then say what happens if the load turns out to be 0.45 instead.
2
Two instances of the same buffer cell sit in the same design. One reports a delay of 0.04 and the other 0.19. List every explanation you can think of that does not involve either of them being faulty.
3
Write down a gate for each of the three kinds of unateness, and for the non-unate one explain in a sentence why the tool cannot resolve it on its own.
Answers
1 Transition 0.06 lies between the rows 0.04 and 0.10; load 0.09 lies between the columns 0.05 and 0.12. So the four entries are 0.073, 0.107, 0.101 and 0.138, and the answer is somewhere near 0.10. A load of 0.45 is past the last column, so the tool extrapolates, and the number it returns is no longer supported by anything that was measured.
2 The second drives a longer wire, or more input pins, or both. The second receives a slower input edge, because whatever drives it is itself loaded. The two are in different voltage domains. The two are being reported at different corners. All of these are ordinary, and the first two are the usual answer.
3 Positive unate: an AND or an OR gate, or a buffer. Negative unate: an inverter, a NAND or a NOR. Non-unate: an XOR or an XNOR. The tool cannot resolve the third because the output's direction depends on the value of the other input, and tracking values is exactly what static analysis does not do.
HWhat this unlocks
Stage 5, which opens the other half of the delay number. If you skip it you will believe the load in this stage's table is a property of the fanout, when most of it is usually wire.
IHow long this takes
Three or four evenings. This stage takes longer than students expect and the study plan budgets for that.
5
STAGE 5
Net delay
AWhere you are
Stage 4 → Stage 5 → Stage 6
It sits here because the previous stage kept saying “output load” without saying where that load comes from. Most of it is wire, and the wire has a delay of its own.
BWhat you will be able to do
Say why a wire has a delay at all, rather than connecting two points instantly
Distinguish a lumped model from a distributed one and say which question each is the right answer to
State the Elmore approximation and explain in words why the far end of a wire is slow
Say where net delay numbers come from before layout and after it, and why the two disagree most on the nets that matter
Explain what an extraction corner is and why it is separate from a PVT corner
CPrerequisites
Stage 4, for the load axis of the delay table.
DThe concept
In a schematic a wire is a line, and a line has no properties. In silicon a wire is a strip of metal with resistance along its length and capacitance to everything around it: the substrate below, the wires beside it, the wires crossing above. Pushing a voltage change from one end to the other means charging all of that capacitance through all of that resistance, and that takes time.
How much of this you model is a choice, and there are three common answers. You can count only the capacitance, which is fast and adequate for power. You can add a single lumped resistance, which is cheap and pessimistic on anything long. Or you can break the wire into a ladder of small resistance and capacitance segments, which costs the most to extract and is what timing needs.
FIGURE 21 — THREE MODELS OF A WIRE
How much of the wire's physics each model keeps, and what that costs.
Read it: Read down for increasing accuracy and increasing runtime. The ladder in the third row is drawn with four segments; a real extraction may use many more. It is not claiming the distributed model is always required — the caption under it says which question each one is the right answer to.
The ladder has a consequence worth sitting with. The capacitance nearest the driver is charged through almost no resistance. The capacitance at the far end is charged through all of it. So the delay to a node is not proportional to how far away it is; it is a sum in which each capacitance is weighted by everything upstream of it.
Di = Σk=1..N Rki · Ck
Di
the delay to node i of the wire
seconds
Rki
resistance of the segment common to the input–to–i and input–to–k paths
ohms
Ck
capacitance at node k
farads
N
number of nodes in the wire
count
From the physical-design reference material. The first-moment approximation. For a three-segment wire it expands to D = R1C1 + (R1+R2)C2 + (R1+R2+R3)C3.
FIGURE 22 — WHY THE FAR END OF A WIRE IS SLOW
Each capacitance has to be charged through every resistance between it and the driver.
Read it: Follow the expression under the drawing against the ladder above it: C1 sees R1 only, C2 sees R1 and R2, C3 sees all three. The figure is not claiming this expression is the delay a signoff tool computes — it is an approximation, and a good one for the far end of a wire, which is where it is used.
That is an argument about charge, and it is easier to believe when it is drawn as edges. Put a probe on the near node and another on the far node of the same wire and watch one edge arrive at both. They start moving at the same instant, because the driver starts driving once. They do not cross the threshold at the same instant, and the gap between the two crossings is the delay the far node costs.
FIGURE 23 — THE NEAR NODE AND THE FAR NODE, AS EDGES
The same driver, one wire, two nodes — and two different moments of crossing the threshold.
Read it: The two traces start at the same instant, because the driver starts driving once. The marked crossings are where each node passes the 50 per cent point, and the dimension between them is the delay the far node costs. The shapes are illustrative: a real node charges on an RC curve, not a straight ramp, and the figure is not claiming otherwise. What it is claiming is the ordering, and its cause.
A long wire is slow out of proportion to its length. Doubling the length roughly doubles both the resistance and the capacitance, and the delay involves their product, so it goes up by about four. That square is why long nets behave like a different kind of object from short ones.
t = rcL² / 2
t
propagation delay of an unbuffered wire
seconds
r
resistance per unit length
ohms per unit length
c
capacitance per unit length
farads per unit length
L
wire length
length units
From the physical-design reference material. The continuous limit of the distributed RC ladder. The L² term is why a long wire behaves unlike a short one.
Now the practical question: where do these numbers come from? Before there is a layout there is no wire to measure, so the delay is estimated. The crudest estimate is zero, which is what a pre-layout synthesis run often uses. A better one is a wire-load model, a table indexed by how many pins a net connects, built from statistics over previous designs in the same technology. After routing the wires exist, and they are measured: extraction walks the layout and writes out a resistance and capacitance description of every net.
FIGURE 24 — THE SAME NET, THREE WAYS
One netlist, three descriptions of one wire, three different delays.
Read it: The same driver and receiver appear in all three panels; only what sits between them changes. The delays are illustrative, chosen to show the ordering. The figure is not claiming extracted is always three times the estimate — on a short net the three numbers nearly agree, which is the next figure's point.
The estimate and the measurement agree well on short nets and part company on long ones. That is the worst possible arrangement, because long nets are exactly the ones that were going to fail. A design that closes comfortably after synthesis and opens up after routing has not gone wrong; it has met the real wires for the first time.
FIGURE 25 — WHERE THE ESTIMATE GOES WRONG
Estimated and extracted net delay agree on short nets and part company on long ones.
Read it: Each point is one net: its estimated delay across, its extracted delay up. The dashed line is perfect agreement. The scatter is illustrative, drawn to show the shape that real data has. It is not claiming every design produces this exact curve, only that the disagreement grows with length — and long nets are the ones that were going to fail.
One more thing the wires bring with them. The metal that comes out of the fab is not exactly the metal that was drawn. Etching leaves it narrower or wider than intended, which changes its resistance one way and its capacitance to its neighbours the other way. Extraction is therefore done several times at several assumed outcomes, and those are extraction corners, separate from the process, voltage and temperature corners that scale the cells.
FIGURE 26 — WHY EXTRACTION HAS CORNERS TOO
The same drawn wires come out of the fab at different widths and spacings.
Read it: The three panels show the same pair of wires after three different process outcomes. Wider and closer means more capacitance between them and less resistance along them; narrower and further apart means the reverse. The widths are exaggerated for legibility.
These have names, and the names are worth recognising on a corner list even though they vary between foundries. You will see cworst and cbest, which bracket the capacitance, and rcworst and rcbest, which bracket the resistance and capacitance together; some flows add a typical and separate the coupling-dominated cases out again. Which of them pairs with which PVT point is a decision the project makes, and it is written down.
EIn the tool
One command brings the measured wires into the analysis.
read_parasitics design.spef
The file it reads is a description of every net's resistance and capacitance, written out by extraction. A second form of the same command keeps the coupling capacitance between neighbouring nets rather than folding it into ground, and that form is what Stage 13 needs.
Command
What it is for
Where it is covered
read_parasitics
bring in the extracted wires
here
set_wire_load_model
use a statistical estimate instead, before layout
named in the flow at Stage 10
report_net
what the tool thinks one net is
named in the flow at Stage 10
FThe traps
Net delay is small compared with cell delay, so it can be ignored.
It was small in older technologies and it is not now. On a modern process the wires can account for more than half the delay of a long path, and on the longest nets they account for nearly all of it. The whole practice of inserting buffers exists because of this.
Extraction gives you the answer, so pre-layout numbers are pointless.
Extraction gives you the answer four months later than you needed to start making decisions. The estimate is what lets synthesis pick cell sizes at all. Knowing how wrong it is, and in which direction, is more useful than distrusting it.
A longer wire has proportionally more delay.
It has roughly four times the delay for twice the length, because the resistance and the capacitance both scale and the delay involves the product. Reasoning about wires with a linear intuition will make every estimate you form too optimistic on exactly the nets you were worried about.
The extraction corner is just part of the PVT corner.
They come from different physical causes and they are chosen separately. The transistors and the metal are made in different steps, and a slow-transistor die can carry either fast or slow metal. A word on the word, because both uses are common: this guide uses corner for the whole physical point an analysis sits at, extraction included, which is the convention Stage 1's grid follows. Plenty of teams reserve corner for the PVT point alone and say RC corner for the metal. Either is fine as long as you say which you mean, and an interviewer who uses the narrower sense is not correcting you.
GCheck yourself
1
A net connects a driver to four receivers spread across a block. Explain, in terms of the Elmore expression, why the receiver at the far end sees more delay than the one nearest the driver, and say whether moving one receiver closer changes the delay seen by the others.
2
A path has slack of +0.30 after synthesis with a wire-load model, and −0.18 after routing with extracted parasitics. Give three explanations, and say which one you would check first.
3
Explain in writing why inserting a buffer into a long wire can make the wire faster, given that a buffer has a delay of its own. Do not use the word “repeater”.
Answers
1 Each receiver's delay is a sum in which every capacitance is weighted by the resistance between it and the driver. The near receiver's own capacitance is charged through almost nothing; the far one's is charged through the whole wire. Moving one receiver does change the others, because it changes the shared resistance and capacitance they all sit on. Nets are not independent collections of point-to-point connections.
2 The path contains one or more long nets whose real delay is much larger than the estimate. The real load on some cell is larger than estimated, so its cell delay grew too. The routing took a detour the estimate had no way to predict. Check the net lengths on the path first: if one of them is far longer than the others, that is nearly always the whole story.
3 Cutting the wire in half gives each half a quarter of the original delay, because delay grows with the square of length. Two quarters is a half, so the wire contributes half what it did, and the buffer's own delay is subtracted from the saving. As long as the buffer is quicker than the half you saved, the total comes down. Stage 6 draws this.
HWhat this unlocks
Stage 6, which joins the two halves together and explains why a slow edge in one place makes a slow edge in the next. Skipping it leaves you knowing that both transition and load matter without knowing that they feed each other.
IHow long this takes
Two or three evenings.
6
STAGE 6
Transition, load and the chain
AWhere you are
Stage 5 → Stage 6 → Stage 7
It sits here because the last two stages established that a cell's delay depends on its input edge and that a wire contributes load. This stage joins them: the output edge of one cell is the input edge of the next, so the two effects compound along a path.
BWhat you will be able to do
Explain why a slow edge at one pin makes the next cell slower, and the one after that slower still
Name the three design rule constraints and say what each one limits
Say why those three are checked separately from setup and hold, and where their violations appear
Explain why inserting a buffer into a long net can reduce the net's delay
CPrerequisites
Stages 4 and 5, both of them, because this stage is about their interaction.
DThe concept
The delay table has input transition on one axis, and the tool also keeps a second table giving the cell's output transition for the same two inputs. That output transition becomes the input transition of whatever the cell drives. Degradation therefore does not stay where it started.
FIGURE 27 — THE TRANSITION CHAIN
A slow edge makes the next stage slower, which makes the edge after it slower still.
Read it: The four buffers are identical. The traces beneath show the edge arriving at each one, and the dimension under each is how long that edge takes. The numbers are illustrative. The figure is not claiming the degradation is unbounded — a healthy design stops it, and the next figure is how.
Each cell in that chain is behaving exactly as its library says it does. Nothing is broken. The edge arriving at the last one is slow because of an accumulation that began several stages back, and the last cell's delay is correspondingly large. Left alone, this is how a design ends up with paths that are slow for no locally visible reason.
Transition time is contagious. A cell driving too much load produces a slow edge, which makes the next cell slow, which makes its output edge slower still. The damage is not confined to the pin where the mistake was made.
Three limits exist to stop this, and they are set per pin rather than per path. A maximum transition time says no edge anywhere may be slower than this. A maximum capacitance says no cell may be asked to drive more load than this. A maximum fanout says no output may feed more inputs than this. The third is a rough proxy for the second and exists mostly because it can be checked before anything physical is known.
FIGURE 28 — THE THREE ELECTRICAL LIMITS
Properties every pin must have, whatever path it is on.
Read it: Each panel shows what one limit constrains. The command names beneath are how each is stated. The figure is not claiming these are timing checks — they are reported separately, and a design can have perfect slack and still violate all three.
These are not timing checks and they do not appear in a timing report. They are properties every pin must have whatever path it happens to lie on, and a design can have perfect slack everywhere and still violate all three. Their violations appear in the constraint report instead.
The other lever is drive strength. A library carries the same logic function at several sizes, and a larger one delivers more current, so it charges a given load faster. It also presents a larger input capacitance to whatever drives it, so the improvement is partly paid for by the stage before.
FIGURE 29 — DRIVE STRENGTH
One logic function, several sizes, and a trade in both directions.
Read it: The four symbols are the same cell at increasing drive. Bigger drives its load faster and presents a larger load to whatever drives it. The naming shown is a common convention, not a standard; the figure is not claiming your library uses these names.
That leaves the case where no amount of sizing helps, because the load is not fanout but wire. Here the fix is to stop the wire being long, by cutting it into pieces with a buffer at each cut. The arithmetic works because wire delay grows with the square of length while buffer delay is added linearly.
FIGURE 30 — BUFFER INSERTION
Adding two cells to a long net can make the net faster.
Read it: The upper panel is one long wire; the lower is the same wire cut into three with a buffer at each cut. The totals are illustrative and include the buffers' own delays. It is not claiming more buffers is always better: past the optimum the buffer delays dominate and the total climbs again.
N = L √( rc / 2tb )
N
the number of segments the wire is cut into, which is one more than the number of buffers
count
tb
the delay of one inserted buffer
seconds
L, r, c
as above
—
From the physical-design reference material. Cut into N equal segments the wire contributes N · rc(L/N)²/2 = rcL²/2N, and the N−1 buffers add (N−1)tb. Differentiating that total with respect to N and setting it to zero gives the expression above. Check it on the worked example in this stage: a wire of 0.9 and a buffer of 0.06 give √15 ≈ 3.87, and four segments is indeed the best of 3, 4 and 5.
EIn the tool
The three limits, and the report that shows their violations.
A limit set on the design applies everywhere; one set on a specific object applies there and overrides the broader setting. Maximum capacitance is set the same way, and it is worth saying plainly that the tool documentation names that command without ever showing it being invoked, so the exact form is worth confirming from its own manual page rather than from any guide, including this one.
That is the command that shows them. Note that it is a different command from the one that reports timing, which is the entire point of the trap above.
FThe traps
A transition violation is cosmetic and can be cleaned up later.
It means some cell is being evaluated outside the range its library was characterised for, so every delay number downstream of it is an extrapolation. The timing numbers on that path are not wrong by a little; they are unsupported.
Max fanout is the important one because it is the easiest to picture.
It is the weakest of the three, because ten small inputs and ten large ones are not the same load, and neither accounts for the wire. It is useful early, before there is any physical information, and it is superseded by the capacitance limit once there is.
Adding buffers adds delay, so a heavily buffered path is a badly built one.
On long nets the opposite is true, and the reason is the square term. A path with no buffers on a very long net is the one to look at.
Sizing a cell up always improves the path it is on.
It improves the stage it is in and loads the stage before. If the slack is upstream, sizing up makes the path worse. This is why optimisation looks at the whole path rather than the worst cell.
GCheck yourself
1
A pin reports a transition of 1.8 against a limit of 0.8. Before fixing anything, list what you would expect to be true of the delay numbers on every path through that pin, and say why.
2
Compute it. A wire of length L has a delay of 0.9. Cut it into N equal segments with N−1 buffers of 0.06 each. Work out the total for N = 3, 4 and 5, and say where the optimum is.
3
Explain why the three electrical limits are reported by a different command from the timing, rather than appearing as extra lines in a timing report.
Answers
1 They are probably extrapolated rather than interpolated, because 1.8 is likely outside the range the driving cell's tables were characterised for. The delays reported downstream are therefore projections, and both optimistic and pessimistic outcomes are possible. The correct order is to fix the violation and then read the timing, not the reverse.
2 Each segment has one N-squared-th of the whole wire's delay and there are N of them, so the wire contributes 0.9/N. N = 3: 0.30 + 2×0.06 = 0.42. N = 4: 0.225 + 3×0.06 = 0.405. N = 5: 0.18 + 4×0.06 = 0.42. So four segments is the best of the three, and the formula in this stage agrees: √(0.9/0.06) ÷ √2 gives √15 ≈ 3.87. Notice also how flat the curve is either side of the optimum, which is why nobody agonises over the exact count.
3 Because they are not properties of paths. A pin has one transition time and one load whatever path you reach it by, so attaching the violation to a path would mean reporting it once per path through that pin. They belong to the design rather than to any route through it, and the reporting follows that.
HWhat this unlocks
Part Three, which turns to the clock. Skipping this stage leaves you with a picture in which delay is something cells have, rather than something a design accumulates, and the buffer arithmetic in Stage 14 will look arbitrary.
IHow long this takes
Two evenings.
III
PART THREE
The clock and the checks
When does the data have to be there, and when must it not be?
The clock was drawn in Part One as a single line reaching two registers at the same instant. It is not. Once that is repaired, the two checks can be derived rather than asserted, and once they are derived, everything about how they behave follows: why one of them can be fixed by slowing the clock and the other cannot, and why they fail at opposite corners.
The stages in this part
What it covers
Stage 7
The clock
Stage 8
Setup and hold, with the arithmetic
Stage 9
Constraining the design
What this part gives you
Both timing checks, as inequalities you can reconstruct rather than recite.
The reason hold violations end projects and setup violations only disappoint them.
The constraint set, grouped by what each command is trying to say.
What to expect
Ten evenings, and Stage 8 deserves four of them on its own.
FIGURE 31 — PART THREE AT A GLANCE
The clock, the two checks, and how you state them.
Read it: Read it as before. Stage 8 is the widest box for a reason: it carries both checks and the arithmetic of each.
7
STAGE 7
The clock
AWhere you are
Stage 6 → Stage 7 → Stage 8
It sits here because Stage 3 drew the clock as a single line reaching two registers at the same instant, and that was a convenient lie. This stage replaces it.
BWhat you will be able to do
Distinguish source latency from network latency and say where the boundary between them is
Say what ideal and propagated mean, and at which point in the flow each one is the correct setting
Explain why skew improves one check and worsens the other
Say what uncertainty stands in for and why one number covers three separate ideas
Say what makes a clock generated rather than created, and why the distinction matters
CPrerequisites
Stage 3 for the path, and Stages 4 to 6 for why a tree of buffers driving long wires has delays of its own.
DThe concept
A clock declared at a port has a perfect waveform: a period, and edge times inside it, and no delay anywhere. That description is complete and it is also nothing like what reaches the registers.
FIGURE 32 — PERIOD AND WAVEFORM
A clock is a period and the edge times inside it.
Read it: The dimension across the top is the period; the two beneath are the high and low intervals. The invocation below is how this clock is stated. The figure is not claiming a clock is always symmetric — the edge times are stated separately, and they need not be half and half.
FROM THE TOOL DOCUMENTATION
Clocks that you create with the create_clock command have perfect waveforms that ignore the delay effects of the clock network.
The real clock has to travel. It comes from somewhere off the die or from a generator on it, enters the design at a port, and then fans out through a tree of buffers and wires to every register that needs it. The time it takes to do that is latency, and it is split into two parts at the point where the clock is declared.
FROM THE TOOL DOCUMENTATION
Latency consists of clock source latency and clock network latency. Clock source latency is the time a clock signal takes to propagate from its ideal waveform origin point to the clock definition point in the design. Clock network latency is the time a clock signal (rise or fall) takes to propagate from the clock definition point in the design to a register clock pin.
FIGURE 33 — THE CLOCK TREE, WITH LATENCY AND SKEW
Latency is how long the edge takes to arrive; skew is how much those arrivals differ.
Read it: Follow one path from the source through the buffers to one register's clock pin: that is its latency, split into the source and network parts marked beneath. Skew is the spread across all four. The tree is drawn with two levels; a real one has many more. It is not claiming latency is a problem — latency shifts every register together, and only skew pulls them apart.
Latency by itself is harmless. If every register saw the edge 2.0 later than nominal, every launch and every capture would shift together and no check would change. What matters is the spread: the difference between the earliest and the latest arrival. That is skew, and skew is what pulls the two ends of a path apart.
Latency moves every register together and changes nothing. Skew moves them relative to each other and changes everything. When somebody worries about a clock, skew is nearly always what they mean.
Before the clock tree is built there is nothing to propagate through, so the latency is asserted as an estimate and every register is told the same number. That setting is called ideal, and it is the correct thing to do at that point. After the tree exists, the tool can compute each register's latency by walking the real buffers and wires, and that setting is propagated.
FIGURE 34 — IDEAL AGAINST PROPAGATED
The same tree before and after it exists.
Read it: The left panel has no buffers because none have been built yet, and every register is told one estimated number. The right has the real tree and computed numbers that differ. The values are illustrative. The figure is not claiming ideal is wrong: it is the correct setting before clock tree synthesis, and a mistake only after it.
FROM THE TOOL DOCUMENTATION
Propagated latency calculation is usually inaccurate for prelayout design because the parasitics are unknown. For prelayout designs, you can estimate the latency of each clock and directly set that estimation with the set_clock_latency command. This method, known as ideal clocking, is the default method for representing clock latency in PrimeTime.
Now the part that repays slow reading. Suppose the capture register's clock arrives later than the launch register's. The deadline for the data has moved later, so the setup check has more room. But the edge that the data must not overrun has also moved later, so the hold check has less room. One value, two checks, opposite signs.
FIGURE 35 — SKEW HELPS ONE CHECK AND HURTS THE OTHER
The same skew value, on the same path, improving setup and worsening hold.
Read it: The two traces are the same clock at two registers, and the skew is the gap between their edges, dimensioned where it is. The setup window sits against the capture edge and the hold window against the capture edge before it, so moving the capture clock later moves both. The two panels below read that one shift twice. The 0.20 is illustrative and the gap is drawn wider than to scale so it can be seen. The figure is not claiming positive skew is desirable — it buys setup margin with hold margin, and hold is the harder one to buy back.
Alongside skew there is jitter: the clock source's own edges do not land at exactly even intervals, because a phase-locked loop is an analogue circuit with noise in it. And alongside both there is the margin a team decides to carry for things not yet modelled. All three are usually folded into one number.
FIGURE 36 — JITTER AND UNCERTAINTY
One is a physical variation of the clock; the other is a number you set to stand in for it.
Read it: The upper pair of traces is a nominal clock and a real one, with the real edges landing a little early or late. The two panels beneath separate the thing from its representation. It is not claiming uncertainty models only jitter — it carries skew and deliberate margin as well, which is why one number covers three ideas.
FROM THE TOOL DOCUMENTATION
Clock uncertainty is the maximum difference between the arrival of clock signals at registers in one clock domain or between domains. This is also called skew.
FROM THE TOOL DOCUMENTATION
PrimeTime subtracts a setup uncertainty value from the data required time when it checks setup time (maximum paths). PrimeTime adds a hold uncertainty value to the data required time when it checks the hold time (minimum paths).
That last sentence is worth reading twice, because it is the whole behaviour of the knob. Setup uncertainty is subtracted from the required time, making the deadline earlier and the check harder. Hold uncertainty is added, making the earliest allowed arrival later and that check harder too. Uncertainty always costs margin, in both directions, which is why it is set deliberately rather than generously.
Finally, clocks that are made inside the design. A divider, a multiplexer between two sources, a gating cell: each produces a signal that behaves like a clock, and each has a fixed relationship with the clock it came from. Declaring it as generated preserves that relationship, so the tool knows the two are phase-related and can time paths between them against real edges.
FIGURE 37 — A GENERATED CLOCK AND ITS MASTER
A clock made inside the design stays tied to the one it came from.
Read it: The divider at the top produces an edge every other master edge, shown in the waveforms beneath. Declaring it as generated keeps that relationship, so paths between the two are timed against real edges. The figure is not claiming all generated clocks are divisions: multiplications, inversions and explicit edge lists are all possible.
Where two clocks have no fixed relationship, or where only one of them can be live at a time, the tool has to be told. It cannot work this out, and if it is not told it will produce a number for a check that has no meaning.
FIGURE 38 — THREE RELATIONSHIPS BETWEEN TWO CLOCKS
Related, exclusive, or asynchronous — and the analysis differs in each case.
Read it: Each row is one relationship, with a sketch of what produces it. The figure is not claiming the tool can work out which applies: it will happily time a path between two crystals that have never agreed about anything, and report a number. Telling it is your job.
EIn the tool
The clock commands, in the order you will use them.
The third form makes a clock with no source object at all. It exists purely as a timing reference, for constraining ports whose real clock is outside the block.
With -source the value is the journey to the clock definition point; without it the value stands in for the network beyond that point. Two values can be given, early and late, and the tool picks the pessimistic one for each end of each check.
FROM THE TOOL DOCUMENTATION
For setup analysis, it uses the late value for each startpoint and the early value for each endpoint. For hold analysis, it uses the early value for each startpoint and the late value for each endpoint.
only one of them is ever selected, because a multiplexer chooses between them. They may both be physically present on the die.
-physically_exclusive
they can never be present together at all. A stronger statement, and the one an implementation tool needs before it will let the two share resources.
-asynchronous
they have no fixed phase relationship, so no edge pairing between them is meaningful.
The third of those has a consequence the constraint does not supply. Telling the tool two clocks are asynchronous stops it timing paths between them; it does not make those paths safe. Data crossing between unrelated clocks can be sampled while it is changing, and a register caught that way can sit between levels for a while before settling, which is called metastability. The design fixes that, with a synchroniser — usually two registers in series on the receiving clock, so that the first one's indecision has a whole cycle to resolve before anything downstream sees it. The constraint tells the analysis to look away; the synchroniser is what makes looking away safe.
FIGURE 39 — METASTABILITY, AND THE SYNCHRONISER
A register sampled while its input was moving, and the second register that gives the first one a cycle.
Read it: The wavering trace is Q1 failing to resolve immediately; the dimension under it is the cycle it is given. The wavering is drawn as a shape, not as a measurement — how long resolution actually takes is a probability, not a number, and the figure is not claiming otherwise. It is claiming why the second register is there.
set_clock_transition is only meaningful while the clock is ideal, because an ideal network has no computed edge rate of its own. Once the clock is propagated the tool works the transition out, and the assertion stops applying.
FThe traps
Skew is bad and should always be reduced to zero.
Skew is a shift, and it has a sign. Deliberately arranging for the capture clock to arrive a little later is a real optimisation technique, and it buys setup margin with hold margin. Zero skew everywhere is neither achievable nor the goal; controlled skew is.
Latency and skew are two words for the same effect.
Latency is how long the edge takes to arrive; skew is how much that time differs between registers. A tree with enormous latency and no skew breaks nothing internally. A tree with tiny latency and large skew breaks paths.
Uncertainty models jitter.
It models jitter, plus skew that has not been computed yet, plus whatever margin the team decided to carry. It is a budget line, not a measurement, and before clock tree synthesis most of what is in it is the skew the tree has not been built to have yet.
A divided clock can be declared with the ordinary create_clock command, since it is a clock.
Doing that cuts it loose from its master. The tool then treats the two as unrelated, loses the phase relationship, and stops timing the paths between them correctly. The distinction is not bookkeeping; it changes which edges are compared.
GCheck yourself
1
A register's clock pin shows a latency of 2.4. Someone asserted a source latency of 0.9. What is the network latency, and what would happen to all three numbers if the clock were left ideal?
2
Draw a two-register path with the capture clock arriving 0.15 later than the launch clock. Write down what that does to the setup check and to the hold check, with the sign in each case, and then say which of the two you would rather have to fix.
3
A design has a clock at 500 MHz and a divide-by-four version of it used by a slower block. Both are declared with create_clock. Name two things that are now wrong about the analysis.
Answers
1 Network latency is 1.5, because the two add. If the clock were left ideal there would be no computed network latency at all; every register would report whatever number was asserted, and the differences between registers would vanish from the report while remaining in the silicon.
2 Setup gains 0.15 of margin, because the deadline moved later. Hold loses 0.15, because the edge the data must stay behind also moved later. You would rather fix setup: setup can be bought with faster cells, a longer period or a relaxed constraint, while hold can only be bought by adding delay, and adding delay late in a project is both fiddly and easy to get wrong.
3 The tool does not know the two are phase-related, so paths between the two domains are timed against whatever edge alignment it can construct rather than the real one, which is usually far more pessimistic than reality. And the divided clock's source latency is asserted rather than inherited from its master, so any change to the master's tree does not reach it.
HWhat this unlocks
Stage 8, which uses everything here. The setup and hold equations both contain a clock arrival term at each end, and those terms are what this stage has been describing. Skipping it makes Stage 8 look like algebra with unexplained symbols.
IHow long this takes
Three evenings. It is the second of the two stages that reliably take longer than planned.
8
STAGE 8
Setup and hold, with the arithmetic
AWhere you are
Stage 7 → Stage 8 → Stage 9
It sits here because everything it needs is now in place: the path from Stage 3, the delays from Part Two, and the clock arrivals from Stage 7. This stage assembles them into the two inequalities that every timing check is an instance of.
BWhat you will be able to do
Write both inequalities from memory, with every term named
Derive each one from a waveform rather than reciting it
Explain why the default hold inequality contains no period term, the three cases that put one back, and what follows from that
Say why hold is usually fixed with delay and setup with speed
Explain how one path can fail setup at one corner and hold at another
CPrerequisites
Stages 3, 4, 5, 6 and 7. All of them. This is the one stage with no shortcuts into it.
DThe concept
Both checks are about the same physical requirement: a flip-flop needs its data input to be stable for a short window around the clock edge that samples it. Before the edge, that window is the setup requirement. After the edge, it is the hold requirement. Everything else follows from working out when the data actually arrives and comparing it against those two boundaries.
FROM THE TOOL DOCUMENTATION
A setup constraint specifies how much time is necessary for data to be available at the input of a sequential device before the clock edge that captures the data in the device. This constraint enforces a maximum delay on the data path relative to the clock edge.
FROM THE TOOL DOCUMENTATION
A hold constraint specifies how much time is necessary for data to be stable at the input of a sequential device after the clock edge that captures the data in the device. This constraint enforces a minimum delay on the data path relative to the clock edge.
Here is the whole thing on one timeline. The launch clock and the capture clock are drawn separately, because Stage 7 established they are not the same signal at the same instant. The data is drawn below both. The two shaded bands are the windows.
FIGURE 40 — SETUP AND HOLD ON ONE TIMELINE
Both checks, both windows, and the terms of both equations labelled where they happen.
Read it: The top two traces are the launch and capture clocks, offset by the skew marked between them. The third is the data. The shaded band before the capture edge is the setup window; the one after the earlier edge is the hold window. Every symbol on this drawing appears in the algebra in the text and means the same thing. It is not claiming the windows are this wide relative to a period — they are drawn large enough to be read.
Read the setup check off the drawing. The data leaves the launching register when the launch edge arrives, which is at Tlaunch. The register takes Tck→q to put the value on its output, and the logic and wires take Tdata after that. The capturing register's deadline is its own clock edge one period later, at Tcapture + Tperiod, brought forward by its setup requirement and by whatever uncertainty was budgeted.
clock arrival at the launching register's clock pin
time units
Tck→q
the launching register's clock-to-output delay
time units
Tdata
total delay through the combinational cloud, cells and nets together
time units
Tcapture
clock arrival at the capturing register's clock pin
time units
Tperiod
the clock period
time units
Tsetup
the capturing register's library setup requirement
time units
Tuncertainty
the setup uncertainty subtracted from the required time
time units
Derived in this guide from the figure above. The documentation states the check in words at this line and demonstrates it arithmetically in every setup report.
Now read the hold check off the same drawing. The concern is no longer that the data is late; it is that the data is early. The capturing register is supposed to be holding the previous value across its clock edge, and if the new value arrives too soon it overwrites that previous value before it has been sampled. So the new data must not arrive until Thold after the capture edge that belongs to the same cycle as the launch edge.
Derived in this guide from the figure above. From the same waveform. Note there is no Tperiod term for a same-edge hold check: that absence is the whole lesson of the stage.
Look at what is missing from the second inequality. There is no Tperiod in it anywhere. The default hold check compares two things that happen at the same clock edge, so the period never enters the arithmetic.
That absence has a consequence which surprises everybody exactly once. Slowing the clock down relaxes the setup check, because it makes Tperiod larger and there is a Tperiod in the setup inequality. It does nothing at all to the default hold check. A hold failure is a race between two paths — the data path against the clock path — rather than a race against a deadline, and slowing both runners down does not change which one wins.
The half-cycle case is worth a paragraph because it is the one a first interview reaches for. If the launching register samples on the rising edge and the capturing register on the falling edge, the capture edge sits half a period after the launch, and the hold check lands on the falling edge half a period before it. The period is now in the hold requirement, and a longer period makes that check easier rather than leaving it alone. The setup check, meanwhile, has only half a period to work in, which is why opposite-edge paths are tight for setup and relaxed for hold — the exact reverse of the intuition you have just built.
FIGURE 41 — A HALF-CYCLE PATH, DRAWN
When launch and capture are on opposite edges, the period is inside the hold requirement after all.
Read it: Read the three markers left to right: the falling edge before the launch, which is what hold is measured against; the rising launch edge; and the falling capture edge half a period later. The figure is not claiming the default hold check contains a period term — it does not, and the figure beside it shows that. It is showing the case that does.
Duty cycle matters here too. The guide has treated the clock as symmetric throughout, and a half-cycle path on a clock that is high for 40 per cent of its period has 40 per cent of a period for setup, not 50. That is a real source of surprise on a design with a deliberately asymmetric clock.
FIGURE 42 — WHY SLOWING THE CLOCK CANNOT FIX HOLD
The period doubled and the hold window did not move.
Read it: Both rows show the same path with the period changed. The shaded hold window sits in the same place in both, because it is measured from the edge that launched the data. The figure is not claiming hold is unfixable — it is claiming that this particular fix, which works for setup, does nothing here.
The fixes follow from the inequalities. Setup fails when the left side is too large, so the fixes reduce Tdata or increase what is on the right: bigger cells, fewer stages, a longer period, or a clock arrangement that pushes the deadline later. Hold fails when the left side is too small, so the fix is to make it larger, which means adding delay into the data path deliberately.
FIGURE 43 — THE TWO FIXES POINT IN OPPOSITE DIRECTIONS
Setup wants the path faster; hold wants it slower; each fix can break the other check.
Read it: The two lists are the usual moves, and the arrows between them are the interference. The figure is not claiming every setup fix creates a hold violation — most do not. It is claiming you cannot know without re-running, which is why the loop in Stage 14 exists.
The two fixes point in opposite directions on the same path, and each one can create the other's violation. That is why closure is a loop rather than a checklist, and why an implementation tool fixes setup first and hold afterwards: hold is the easier one to fix at the end, and a setup fix applied afterwards would put the hold problem back.
Setup and hold are the two you will spend your time on, and they are not the only checks a register needs. It is worth knowing the others exist now, because they appear by name in the coverage report in Stage 11 and an interviewer will expect at least the first pair.
Check
What it asks
recovery
an asynchronous release — of a reset, say — settled early enough before the clock edge. It is setup for an asynchronous pin.
removal
that release was held long enough after the clock edge. It is hold for an asynchronous pin.
minimum pulse width
the clock pulse itself was wide enough for the register to respond to it. A gated or divided clock can produce a sliver that is technically an edge and physically nothing.
minimum period
successive edges were far enough apart.
clock-gating setup and hold
the enable signal on a gating cell settled before the edge it must not chop, and stayed settled after it. Stage 7 said clock gating is everywhere; this is the check it creates.
FIGURE 44 — MINIMUM PULSE WIDTH, AND MINIMUM PERIOD
Two checks about the clock itself rather than about a path through the logic.
Read it: The upper trace is a healthy clock and the lower one the same clock after a gating cell has clipped one pulse. The sliver is drawn wider than a real one would be so that it can be seen at all. Neither of these checks appears in a setup or hold report; both appear in the constraint or coverage report.
Recovery and removal are the pair worth being able to talk about. They are exactly setup and hold, applied to the release of an asynchronous signal rather than to data, and they are checked against the same clock edge in the same way. A design with an asynchronous reset has as many of them as it has registers.
FIGURE 45 — RECOVERY AND REMOVAL, DRAWN AS WINDOWS
Setup and hold, applied to the release of an asynchronous signal instead of to data.
Read it: The shaded windows sit either side of the clock edge exactly as the setup and hold windows do, because they are the same two questions. The reset is drawn active low, which is the common convention and not a requirement. The figure is not claiming a design must have an asynchronous reset.
There is also a fourth family, which the guide treats at awareness depth only: latch-based timing. A latch is transparent while its enable is active rather than sampling on an edge, so data arriving slightly late can flow straight through and borrow time from the next stage. The name for that is time borrowing, and the time available to borrow is the width of the transparent window. It makes the arithmetic above considerably harder, and it is why most designs use edge-triggered registers unless they have a reason not to.
FIGURE 46 — TIME BORROWING, AS THE WINDOW IT BORROWS FROM
A latch is open for a while, so data arriving late can flow straight through.
Read it: The shaded band is the transparent window and the arrow is the part of it the late data consumed. This is awareness depth: the figure is not the arithmetic of latch-based timing, which is considerably harder than anything else in this guide. It is what the words mean.
One more consequence, and it closes the circle back to Stage 1. Setup is worst when everything is slow, which is the slow corner. Hold is worst when everything is fast, which is the fast corner. The same path can therefore be failing both checks, at two different corners, requiring two fixes that undo each other.
One caveat on “fast means cold”, because it is stated as physics far too often. On older processes at nominal voltage, lower temperature does mean faster cells: carrier mobility rises as the die cools. On advanced nodes at low voltage the threshold voltage's temperature dependence wins instead and the cells get slower as they cool. That reversal is called temperature inversion, and its practical consequence is that the hold corner on such a process can be the hot one. Never reason from “cold is fast”; read the corner list the project gives you, which is where the answer actually lives.
FIGURE 47 — BOTH CHECKS FAILING ON ONE PATH
The same path, failing setup at one corner and hold at another.
Read it: Two scenarios, one path, two different failures and two different fixes that pull against each other. Slack values are illustrative. The figure is not claiming this is common — it is claiming it is possible, and that neither scenario alone would have shown it.
FROM THE TOOL DOCUMENTATION
For this setup check, the tool considers the longest possible delay along the data path and the shortest possible delay along the clock path between FF1 and FF2.
EIn the tool
The two checks are two options on one command.
report_timing -delay_type max the setup check
report_timing -delay_type min the hold check
Maximum delay analysis is the setup check, because setup is the one that fails when delays are large. Minimum delay analysis is the hold check. Running the first and forgetting the second is a mistake that the report itself gives no hint about, because a maximum-delay report is complete and correct about maximum delay.
Separate values for the two checks are normal, because what they are standing in for is different. Setup uncertainty usually carries jitter and a margin against future degradation. Hold uncertainty usually carries skew that has not been built yet.
FThe traps
If the clock is slow enough, any design will work.
Any setup violation can be fixed by slowing the clock. No hold violation can. There is no frequency at which a hold-violating path becomes correct, which is why hold is a tapeout-blocking issue in a way that setup is not.
Hold violations are rare because paths are usually long enough.
They are common wherever a path is very short, which means wherever two registers sit next to each other with almost no logic between them. Shift registers, scan chains and pipeline stages with a single gate are full of them. They are also created by fixing setup, which is why they are chased last.
Setup and hold are checked against the same clock edge.
Setup is checked against the capture edge one period after the launch edge. Hold is checked against the capture edge belonging to the same cycle as the launch. Confusing the two produces an inequality that is right about the shape and wrong about the answer.
The setup requirement is a property of the path.
It is a property of the capturing register, read from the library, and it varies with that register's own input transition and clock transition. It appears in the report as a single subtracted line, which makes it look like a constant, and it is not.
GCheck yourself
1
Compute it. Period 2.00, launch clock arrival 0.30, capture clock arrival 0.34, clock-to-output 0.12, data path delay 1.40, library setup 0.09, setup uncertainty 0.05. Work out the arrival time, the required time and the slack, and say whether the check passes.
2
Compute it again, this time for hold, on the same path. Library hold is 0.06 and hold uncertainty is 0.03. Then shrink the whole path — clock arrivals included — to 60 per cent, and finally replace the data path with 0.05, which is two registers side by side.
3
Explain, in writing, to somebody who has not read this stage, why adding a buffer to a data path can fix a hold violation and break a setup violation on the same path. Two or three sentences.
4
Draw the setup and hold windows on a timeline from memory, and then write the two inequalities underneath using the same symbols you drew. Check that every symbol on the drawing appears in one of the two lines.
Answers
1 Arrival is 0.30 + 0.12 + 1.40 = 1.82. Required is 0.34 + 2.00 − 0.09 − 0.05 = 2.20. Slack is 2.20 − 1.82 = +0.38, so it passes. Now redo it with the period at 1.80 and watch which of the three numbers moves.
2 The hold requirement is 0.34 + 0.06 + 0.03 = 0.43 against an arrival of 1.82, so hold passes with 1.39 to spare. Scale everything to 60 per cent and the arrival is 0.18 + 0.072 + 0.84 = 1.09 against a requirement of 0.204 + 0.06 + 0.03 = 0.294; still comfortable, because the data path is long. Now set the data path to 0.05: the arrival is 0.18 + 0.072 + 0.05 = 0.302 against 0.294, which passes by 0.008 — barely. Everything scaled together, so the margin scaled with it; what actually kills these paths is skew, which does not scale away. The next question is that case.
3 The buffer adds delay, which pushes the data's arrival later. Hold wanted the data later, so that check improves. Setup wanted the data earlier, so that check gets worse by the same amount. Whether the path survives depends on whether it had enough setup margin to spend.
4 Compare against the main figure of this stage. The commonest mistakes are putting a period term in the hold inequality, and drawing the hold window after the capture edge that setup uses rather than after the earlier one. If both of those are right, you have the stage.
HWhat this unlocks
Stage 9, which is how you tell the tool everything the two inequalities need. Without this stage the constraint commands are arbitrary; with it, every one of them is filling in a term.
IHow long this takes
Four evenings, and do not rush them. This is the stage the rest of the guide is arranged around.
Complete STA Handbook
Master Signoff-Ready Static Timing Analysis
Get the complete 10-chapter STA handbook covering setup/hold margins, clock modeling, OCV/POCV, crosstalk noise, and PrimeTime closure.
It sits here because Stage 8 produced two inequalities full of terms, and most of those terms are things the tool cannot work out for itself. This stage is how they get supplied.
BWhat you will be able to do
Group the constraint commands by the question each one answers, rather than reciting them alphabetically
Say what input and output delay describe and why they cannot be derived
Name the four kinds of exception and say what each one removes from the analysis
Explain why a wrong exception is invisible in every report that follows it
Say where a multicycle setup exception moves the hold check, and write the companion exception that moves it back
CPrerequisites
Stage 8 for the inequalities, Stage 7 for the clock, Stage 6 for the electrical limits.
DThe concept
A netlist says what the design is. It does not say what the design is supposed to do, and timing analysis needs both. The constraint file is where the second half is written down, and it is worth approaching it by the questions it answers rather than as a list of commands to memorise.
FIGURE 48 — WHICH CONSTRAINT ANSWERS WHICH QUESTION
The constraint set, grouped by what you were trying to say.
Read it: Find the question in the left of a band and the commands that answer it beside it. The figure is not claiming these are all the commands there are, nor that the four questions are the only ones — they are the four that account for nearly every line in a first constraint file.
The first group is the clock, which Stage 7 covered. The second is the boundary. You are almost never timing a whole chip; you are timing one block, and the registers that launch data into it and capture data out of it belong to somebody else. The tool cannot see them, so their timing has to be asserted.
FIGURE 49 — WHAT INPUT AND OUTPUT DELAY DESCRIBE
The parts of the path that are outside the block you are timing.
Read it: The dashed boundary is your block. The faded registers beyond it belong to someone else and are not in your netlist, so their timing has to be asserted. The figure is not claiming these numbers are guesses: they come from a budget or from the neighbouring block's own analysis, and getting them wrong makes every boundary path wrong quietly.
An input delay of 4.5 relative to a ten-unit clock says that by the time the signal reaches your port, 4.5 of the period has already been spent elsewhere, leaving you 5.5. An output delay says the same thing about the other end. Getting either number wrong makes every boundary path wrong, and it makes them wrong quietly, because nothing about a wrong assertion looks different from a right one.
These lines live in a file, and the file has a name: SDC, the constraint format the industry settled on. It is Tcl, so it is a program rather than a table, and a constraint file that loops over a list of ports is entirely ordinary. That is worth knowing before you open your first one and find it is three hundred lines of script.
The boundary group also carries two commands about electrical conditions rather than time. A port has no driving cell inside your block, so the edge rate arriving there has to be described; and a port has no load inside your block, so what it is driving outside has to be described.
The third group is the electrical limits from Stage 6. The fourth group is the one to be careful with, and the rest of this stage is about it.
The first three groups tell the tool about the design. The fourth tells the tool to stop looking at parts of it. That is a different kind of statement and it deserves a different level of care.
There are four things you can say in that fourth group. You can say a path is never taken, so do not time it at all. You can say a path is allowed more than one cycle. You can say a pin is held at a constant value, which prunes everything that constant makes unreachable. And you can say a specific timing arc should be ignored.
What you want to say
How you say it
What leaves the analysis
This path is never functionally taken
set_false_path
the path, entirely
This path is allowed N cycles
set_multicycle_path
nothing, but the deadline moves
This path has an absolute budget rather than a clock-relative one
Now the warning, stated plainly because it is the single most consequential thing in this stage. An exception removes paths from the analysis, and once they are gone no report mentions them. A timing report is a report about what was analysed. It has no section headed “things you asked me not to look at”.
FIGURE 50 — AN EXCEPTION REMOVES A PATH SILENTLY
Before and after, with the failing path gone and the report clean.
Read it: The upper set is three analysed paths, one failing. The lower set is the same three after the middle one is declared false. Nothing in the second report mentions it. The figure is not claiming exceptions are wrong — they are necessary, and most are correct. It is claiming that a wrong one leaves no trace in the place you would look.
One specific case is worth drawing because it catches everyone once, and because the mechanism is the opposite of what most people assume. Relaxing a path to two cycles for setup moves the capture edge one period later. The hold check does not stay where it was: it follows.
FROM THE TOOL DOCUMENTATION
Changing the setup relationship implicitly changes the hold relationship as well because all hold relationships are based on the valid setup relationships. PrimeTime verifies that the data launched by the setup launch edge is not captured by the previous capture edge.
Read that carefully, because it is the whole of the trap. The hold check is always anchored to the capture edge before the one setup uses. Move the setup capture edge out to two periods and the hold check moves with it, to the edge one period after the launch. The path is now required to take more than a whole clock period — which is a far stricter lower bound than the design ever needed, and it is why a path given a multicycle setup exception on its own so often develops enormous hold violations that were not there before.
FIGURE 51 — A MULTICYCLE PATH, AND WHERE THE HOLD CHECK GOES
Relaxing setup to two cycles drags the hold check forward with it; the companion exception brings it back.
Read it: Three rows, the same clock. The first is the default: setup at one period, hold beside the launch. The second relaxes setup to two periods, and the shaded hold window has travelled a whole period with it, because the hold relationship is anchored to the capture edge before the one setup uses. The third adds the hold multiplier and returns it. The figure is not claiming the tool is wrong to do this — the behaviour is documented and deliberate. It is claiming that the setup exception on its own is an incomplete instruction.
The fix is a second exception that moves the hold capture edge back.
FROM THE TOOL DOCUMENTATION
it is better to use another set_multicycle_path command to move the capture edge for the hold relationship backward by one clock cycle.
With both in place the setup check has two cycles and the hold check is back beside the launch edge, where the design expects it. The rule of thumb is that a setup multiplier of N wants a hold multiplier of N − 1, and that a multicycle setup exception written without its companion is an incomplete instruction rather than a compact one.
EIn the tool
Constraints are written, and then they are checked. The checking is the half people skip.
That command reports what the constraint set failed to say: ports with no arrival time asserted, clocks still ideal, registers with no clock reaching them at all. It answers a question the timing report structurally cannot, and it costs one line.
And that one shows every constraint that is violated, including the electrical limits from Stage 6, in a compact form.
FThe traps
A false path and a multicycle path are roughly the same thing.
A false path removes the check. A multicycle path keeps the check and moves its deadline. Using the first where you meant the second removes a real requirement from the analysis permanently and silently.
If the exception is wrong the report will look odd.
The report will look clean, which is the problem. An exception's effect on a report is subtraction, and subtraction leaves no residue.
Relaxing setup to N cycles leaves the hold check where it was.
It moves with the setup relationship, to the capture edge before the one setup now uses. That is the point of the companion exception: not to move a check that stayed put, but to move back one that travelled further than you wanted. A setup multiplier of N without a hold multiplier of N − 1 demands that the path take more than N − 1 whole periods.
Input and output delays can be worked out from the netlist.
They describe logic that is not in the netlist. They come from a budget agreed between blocks, or from the neighbouring block's own analysis, and if nobody has agreed one then the honest answer is that the boundary is unconstrained rather than that it is fine.
GCheck yourself
1
Take a constraint file, your own or anybody's, and find every exception in it. For each one, write a single sentence saying why it is correct. Any exception you cannot justify in one sentence is the one to ask about.
2
A path from FF4 to FF5 is given two cycles for setup and nothing else. Draw the launch edge, both candidate capture edges, and the hold check, and say what requirement the path now has. Then draw where a companion hold exception puts it.
3
Name the four questions the constraint groups answer, and for each one give the single command you would reach for first.
Answers
1 There is no model answer, and that is the exercise. The useful discovery is usually that at least one exception is inherited from a previous project and nobody currently on the team knows what it was for. That is a normal finding and it is exactly what the exercise is for.
2 Launch at zero, the original capture edge one period later, the relaxed capture edge two periods later. The hold check sits at the capture edge before the one setup uses, so it has moved to one period after the launch. The path is now required to take more than a whole period, which is far stricter than intended. A hold multiplier of one moves that check back a cycle, to the launch edge, which is where the design wanted it.
3 What is my clock: create_clock. What happens at my boundary: set_input_delay. What are the electrical limits: set_max_transition. What should not be checked normally: set_false_path, and then a pause to ask whether you really meant it.
HWhat this unlocks
Part Four, which runs an analysis end to end for the first time. Skipping this stage means running that analysis on a design that has not been told what it is supposed to do, and the numbers will be confident and meaningless.
IHow long this takes
Four evenings, and one of them spent reading somebody else's constraint file is worth two spent reading about constraint files. This is the second-heaviest stage in the guide, and it is heavy because constraints are what you will be handed on your first day.
IV
PART FOUR
Running it, and what comes after
What does the whole thing look like when it is actually done?
Five stages that put the parts together. One analysis end to end, then the grid from Stage 1 done properly, then two sources of uncertainty at awareness depth, then what happens when a report says something is wrong. The last stage is where a roadmap stops being useful and practice takes over.
The stages in this part
What it covers
Stage 10
Your first analysis, end to end
Stage 11
MMMC, properly
Stage 12
Variation and pessimism
Stage 13
Signal integrity
Stage 14
Closure, change orders and signoff
What this part gives you
A session you could run, and a report you could read to somebody else.
The scenario machinery, with everything it needs now explained.
What signoff means beyond a clean number, and the five questions a clean number cannot answer about itself.
What to expect
Eleven evenings. Stages 12 and 13 are awareness depth and move quickly; Stage 10 is worth slowing down for if you have a tool.
FIGURE 52 — PART FOUR AT A GLANCE
Running an analysis, and everything that follows one.
Read it: Five stages rather than three. The last two of them are awareness depth, which the strip does not show — see the roadmap figure, where that is marked.
10
STAGE 10
Your first analysis, end to end
AWhere you are
Stage 9 → Stage 10 → Stage 11
It sits here because the previous nine stages built every idea an analysis needs. This stage runs one, in the order the tool documentation itself lays out, and then reads the output line by line.
BWhat you will be able to do
Recite the shape of the analysis flow without looking it up, and say which steps a first run needs
Run a minimal session from netlist to timing report
Read a timing report line by line and say what each section is
Find out what any command does without asking anybody
CPrerequisites
Stages 3, 8 and 9 are the ones you will feel the absence of. The others help.
DThe concept
The tool documentation opens with a table of the typical flow, and it is worth reproducing because it is the tool's own account of its own order. It has fifteen steps. Several of them are optional or advanced, and a first analysis uses fewer than half.
FIGURE 53 — THE ANALYSIS FLOW
Fifteen steps, grouped by what each group is for.
Read it: The steps and their commands are the tool documentation's own, reproduced in its order. The four bands are this guide's grouping, added to make the shape visible. The figure is not claiming every run uses all fifteen: steps 8 to 11 are optional or advanced, and a first analysis is steps 1 to 6, then 12 and 13.
Strip that to what a first run actually needs and five commands remain, in an order that is not negotiable. You cannot link before you read, constrain before you link, or report before the design has been constrained.
FIGURE 54 — A FIRST SESSION
Five commands, in the only order they work in.
Read it: Each box is a step and the line beneath says what it accomplished. The figure is not claiming this is enough to sign off: it is enough to see a number, which is a different and much earlier milestone.
Linking is the step that is easy to skip past and worth understanding. The netlist names cells; linking binds each name to an actual cell in an actual library. If a cell cannot be found, everything downstream of it is unknown, and the resulting report will be confidently wrong about a design with holes in it.
Two commands make the rest of this learnable without help. One shows every option a command takes. The other opens the manual page for a command, a variable, or a message identifier — which means a warning code you have never seen is itself a searchable question.
help -verbose command_name
man command_variable_or_message_name
Before reporting anything, there is a step worth taking that most people discover late. The analysis will happily report on a design that is largely unconstrained, and the report will look perfectly healthy, because a report describes the paths it analysed and says nothing about the ones it did not.
FIGURE 55 — CHECK BEFORE YOU REPORT
A clean report means nothing until you know what was checked.
Read it: The upper sequence is the one everybody writes first. The lower one adds a step that asks what was not analysed. The figure is not claiming the upper sequence produces wrong numbers — the numbers are right about the paths they describe. The question is which paths those are.
Now the report itself. Here is a complete one, reproduced unedited from the tool documentation, for a path from one register to another.
Startpoint: LD1 (rising edge-triggered flip-flop clocked by CLK)
Endpoint: LD2 (rising edge-triggered flip-flop clocked by CLK)
Path Group: CLK
Path Type: max
Point Incr Path
--------------------------------------------------------
clock CLK (rise edge) 0.00 0.00
clock network delay (propagated) 1.40 1.40
LD1/CP (FD2) 0.00 1.40 r
LD1/Q (FD2) 0.60 2.00 f
U1/z (AN2) 3.20 5.20 f
data arrival time 5.20
clock CLK (rise edge) 6.00 6.00
clock network delay (propagated) 1.16 7.16
clock reconvergence pessimism 0.16 7.32
clock uncertainty 0.00 7.32
LD2/CP (FD2) 7.32 r
library setup time -0.20 7.12
data required time 7.12
--------------------------------------------------------
data required time 7.12
data arrival time -5.20
--------------------------------------------------------
slack (MET) 1.92
It has two blocks and a conclusion. The first block is the data's journey: when the launch edge arrived, how long the clock took to reach the launching register, that register's own delay, and then each cell along the path. It ends with the arrival time. The second block is the deadline being worked out: the capture edge, the clock's journey to the capturing register, the adjustments, and then the required time. The last three lines subtract one from the other.
FIGURE 56 — A TIMING REPORT, ANNOTATED
Every line of a real report, and what each one is telling you.
Read it: The report on the left is re-set in columns from the report printed above, with two labels shortened to fit the measure. Each callout points at the line beside it. Read the upper block as the data's journey and the lower block as the deadline being worked out, then read the last three lines as the subtraction. It is not claiming every report has these exact lines — a path with no reconvergence, or an ideal clock, has fewer.
Read the two blocks against each other and the arithmetic of Stage 8 is all visible. Notice in particular that the clock network delay differs between the two blocks, 1.40 on the launch side and 1.16 on the capture side. That is not an inconsistency; it is the tool taking the longest clock path to the launching register and the shortest to the capturing one, which is the pessimistic combination for a setup check.
Line
Value
What it is
clock CLK (rise edge)
0.00 then 6.00
the launch edge, then the capture edge one period later
clock network delay (propagated)
1.40 / 1.16
the clock's journey, computed rather than asserted, and different at each end
LD1/Q (FD2)
0.60
the launching register's clock-to-output delay
U1/z (AN2)
3.20
one combinational cell, and the net into it
data arrival time
5.20
the sum of the first block
clock reconvergence pessimism
0.16
pessimism given back, because the two clock paths share a segment
clock uncertainty
0.00
the budgeted margin, zero here
library setup time
−0.20
the capturing register's own requirement, subtracted
data required time
7.12
the sum of the second block
slack (MET)
1.92
required minus arrival
EIn the tool
The reporting commands you will use most, and what each one is for.
Two numbers summarise a whole run, and you will hear both in every status meeting.
FROM THE TOOL DOCUMENTATION
The worst negative slack (WNS) is the slack at the endpoint of the worst violating path. The path can be a single segment or throughpath. If there are no violating paths, the WNS is zero.
Worst negative slack, which everybody says as WNS, is the single worst number in the design, and it tells you how far you are from closing. Total negative slack — TNS — is the sum of every endpoint's negative slack, and it tells you how much work that will be. A design with a worst of −0.4 and a total of −0.8 has two problems; one with the same worst and a total of −300 has a systemic one. The count of failing endpoints is the third number people quote, for the same reason. Stage 14 leans on exactly this distinction.
every violated constraint, including the electrical limits
check_timing
what was never checked at all
report_clock
what the tool thinks the clocks are
update_timing -full
recompute everything, rather than incrementally
Reporting commands run the timing update for you if it is out of date, so the explicit update is usually unnecessary. Running it yourself is worth doing when you want the warnings separated from the numbers, and when you want to know how long the update actually takes.
FThe traps
A clean first report means the setup was correct.
A clean first report on an unconstrained design is the expected outcome, because almost nothing was checked. The order that protects you is: constrain, check what is missing, then report.
Linking is a formality that always succeeds.
It fails whenever a library is missing from the search path, whenever a cell name has changed between library versions, and whenever a black box has no model. Each failure leaves a hole, and the timing around a hole is not reported as suspect.
The report's clock network delay should be the same on both sides.
It should not, for a setup check on a real clock tree. Different values at the two ends are the tool being pessimistic on purpose, and identical values usually mean the clock is still ideal.
GCheck yourself
1
Take the report reproduced in this stage and verify its arithmetic yourself. Add the first block, add the second, subtract, and confirm the slack.
2
The same design is reported again after the clock is changed from propagated to ideal. Say which lines of the report would change, and in which direction the slack would move.
3
Without looking it up, write down the five commands of a minimal session in order, and beside each one write what would go wrong if you ran it one step too early.
Answers
1 First block: 0.00 + 1.40 + 0.00 + 0.60 + 3.20 = 5.20. Second block: 6.00 + 1.16 + 0.16 + 0.00 − 0.20 = 7.12. Slack: 7.12 − 5.20 = 1.92, which matches. Doing this once by hand is worth more than reading three explanations of it.
2 The two clock network delay lines would become equal, probably both zero or both whatever was asserted. The reconvergence pessimism line would disappear, because with no propagation there is no shared segment being derived two ways. The slack would move upward, because the pessimism the propagated analysis was applying is gone, along with the real skew it was measuring.
3 Read, link, constrain, update, report. Linking before reading has nothing to link. Constraining before linking cannot find the objects the constraints name. Updating before constraining computes a design with no requirements. Reporting before updating either triggers the update anyway or reports stale numbers, depending on the command.
HWhat this unlocks
Stage 11, which takes the single analysis you just ran and multiplies it by the grid from Stage 1.
IHow long this takes
Two evenings if you have a tool in front of you, three if you are working from the reports alone.
11
STAGE 11
MMMC, properly
AWhere you are
Stage 10 → Stage 11 → Stage 12
It sits here because this is the return promised at the end of Stage 1. Everything that stage described without explaining can now be explained: what a corner needs, why it needs its own libraries, and what running many of them at once involves.
BWhat you will be able to do
List the six things that make up a scenario and say which a mode changes and which a corner changes
Explain why a corner needs its own libraries rather than a scaled version of somebody else's
Say what distributed multi-scenario analysis is for and what the manager and workers each hold
State the rule about when a check counts as untested, and say why merged reporting cannot answer that question alone
CPrerequisites
Stage 1 for the grid, Stage 4 for why a library belongs to one PVT point, Stage 5 for extraction corners, Stage 9 for the constraint set.
DThe concept
FROM THE TOOL DOCUMENTATION
A scenario describes the specific combination of operating conditions and operating modes to use when analyzing the design specified by the configuration.
That is the definition, and it is accurate but thin. In practice a scenario is six things held together, and the useful thing about laying them out is seeing which ones a mode changes and which ones a corner changes.
FIGURE 57 — WHAT A SCENARIO IS MADE OF
Six things, and which of them a mode changes and which a corner changes.
Read it: The top row is what a mode selects; the bottom row is what a corner selects. The netlist is shared by all of them, which is why a shared image is built once. The figure is not claiming every flow separates these six exactly this way, only that all six have to be decided somewhere.
The libraries deserve a paragraph of their own, because Stage 4 explains why. Every delay in a library is a table of measurements taken at one process, voltage and temperature point. Change the voltage and every number in every table is wrong, not by a scale factor that applies uniformly, but by an amount that varies with the cell, with the arc, and with where on the table you are reading.
result = original × (1 + kPΔP + kVΔV + kTΔT)
ΔP, ΔV, ΔT
distance from the characterisation point in process, voltage and temperature
—, volts, °C
kP, kV, kT
the library's scaling coefficients for each. They are signed: for delay, kV is negative, because raising the voltage makes the cell faster
per unit of that axis
From the physical-design reference material. How a library characterised at one point is scaled to another. It is an approximation, which is why a corner that matters is given its own characterised library rather than a scaled one.
A scaling relation like that exists and it is used, mostly for filling in conditions between characterised points. It is an approximation. A corner that a project actually signs off against gets its own characterised library rather than a scaled one, and that is why a library release is a large delivery rather than a single file.
A corner is not a setting you turn. It is a set of files: libraries characterised there, and an extraction of the wires done under the assumptions that belong with it. Adding a corner means obtaining those files, which is why the corner list is negotiated and not merely chosen.
Running the grid one cell at a time works and is how most people start. It stops working when the grid has sixty cells and each takes an hour. The answer is to run them in parallel, which the tool supports with an arrangement worth understanding because its vocabulary appears in every log file.
FIGURE 58 — ONE MANAGER, MANY WORKERS
Each scenario is analysed in its own process and the answers are combined.
Read it: You type at the manager. It hands work down, collects answers back, and can merge them into one report. Four workers are drawn for space; there is no fixed number, and there are usually more scenarios than hosts. It is not claiming the manager holds the design — it holds none of it, which is why this scales.
Term
What it means
scenario
Specific combination of operating conditions and operating modes.
session
Current set of scenarios selected for analysis.
command focus
Current set of scenarios to which analysis commands are applied. The command focus can consist of all scenarios in the session or just a subset of those scenarios.
manager
Process that manages the distribution of scenario analysis processes.
worker
Process started and controlled by the manager to perform timing analysis for one scenario; also called a worker process.
baseline image
Image that is produced by combining the netlist image and the common data files for a scenario.
The last of those is where the efficiency comes from. The netlist is the same in every scenario, so it is read once and shared, and each scenario adds only what is specific to it. This is also why the constraint scripts are split into a common part and a specific part when scenarios are defined.
Reporting across a grid raises a question that does not arise with one run. When four scenarios disagree about a path, what does the report say? A merged report gives you one line, the worst across the grid, which is the right answer for tracking progress. It is the wrong answer when you are fixing something, because it does not tell you which corner broke it.
FIGURE 59 — MERGED REPORTING AGAINST PER-SCENARIO
One number is right for a status meeting and wrong for a fix.
Read it: The four rows are one path's slack in four scenarios, including one where it was not analysed at all. The panels below say what each style of report does with them. Slack values are illustrative. The figure is not claiming merged reporting is a bad idea — it is claiming that a check counts as untested only if it was untested in every scenario, and a merged report cannot tell you that on its own.
There is a command whose whole job is that question, and it produces the single most useful page in a signoff review.
Read it as a census rather than a report. Every kind of check the tool makes has a row, and each row says how many of that kind exist and how many were actually tested. The setup and hold rows in that example are at sixty per cent, which would stop a review on the spot: forty per cent of the checks in the design were never made, and nothing in a timing report would have said so.
The rows also answer a question Stage 8 raised. The checks are not just setup and hold: recovery and removal for asynchronous releases, minimum pulse width and minimum period for the clock itself, the clock-gating pair, and the two boundary checks at output ports. Ten kinds, all counted, all capable of being silently absent.
Which brings the practical question: how does a team decide which scenarios are worth running? The honest answer is by argument, informed by a few rules of thumb. Every mode that ships needs at least one corner. Setup needs the slow corners and hold needs the fast ones, so neither end can be dropped. Corners that have never produced a unique violation across several projects are candidates for removal, and removing one is a decision that gets written down rather than made quietly.
EIn the tool
Scenarios are created by name, from scripts, and then selected.
Narrowing the focus to one scenario makes every subsequent command apply to that one alone, which is how you interrogate a single corner without rebuilding anything. Widening it again restores the whole session.
If you want this topic at the depth a production flow needs, rather than the depth a roadmap can give it, the question set on the MMMC track at pdverse.net/mmmc is where to go next.
FThe traps
A corner is just a voltage and a temperature setting.
It is a set of characterised libraries and a matching extraction. The voltage and temperature are the labels on those files, not the mechanism. This is why you cannot invent a corner by typing different numbers.
More scenarios is always safer.
Each one costs runtime, licences and the time it takes to explain the extra report to somebody. A scenario that has never produced a unique violation is consuming budget that a genuinely different corner could use. The judgement is real and it belongs to the team, not to a default.
If the merged report is clean, the design is clean.
The merged report is clean about the paths that were analysed somewhere. Whether every path was analysed somewhere is a different question, answered by looking at coverage per scenario rather than at the merged slack.
GCheck yourself
1
List the six components of a scenario from memory, then mark each one as mode-dependent, corner-dependent, or shared.
2
A design has 3 modes and 5 corners. A colleague proposes dropping the fast corner from the scan mode on the grounds that scan runs slowly. Give the argument for and the argument against.
3
Explain, to somebody who has only ever run single-scenario analyses, what the manager process holds and what each worker holds, and why that division makes the arrangement scale.
Answers
1 Netlist: shared. Case and mode settings: mode. Constraint set: mode, usually. Operating conditions: corner. Libraries: corner. Parasitics: corner. If you marked the constraint set as shared, ask yourself what period a low-power mode runs at.
2 For: scan shifts at a low frequency, so setup at the fast corner is comfortable and the mode is only used in a test rig. Against: hold does not care about frequency at all, and a scan chain is the densest collection of short register-to-register paths in the design, which is exactly where hold violations live. The against argument usually wins, and a team that drops it should write down why.
3 The manager holds no design data. It holds the list of scenarios, decides who does what, and combines answers. Each worker holds one complete scenario. Because the manager holds nothing large, adding scenarios adds worker processes rather than growing one enormous process, and the shared netlist image means each new worker costs less than a full session would.
HWhat this unlocks
Stage 12, which is about the pessimism sitting inside every one of these runs and how much of it is real.
IHow long this takes
Three evenings. You are returning to familiar ground with better tools, so it moves faster than Stage 1 did.
12
STAGE 12
Variation and pessimism
MIXED DEPTH — working depth on the parts called out below, awareness depth on the rest
AWhere you are
Stage 11 → Stage 12 → Stage 13
It sits here because Stage 11 established that a corner is a set of characterised files. This stage asks what happens to two cells on the same die, at the same corner, that still do not behave identically.
BWhat you will be able to do
Say why one delay number per cell per corner is not enough
Explain what derating does and why the launch and capture sides get different factors
Say what advanced on-chip variation adds, and why depth earns a gentler factor
Explain what clock reconvergence pessimism is and why removing it is not optimism
CPrerequisites
Stage 8 for why the tool takes the worst of each, and Stage 7 for the clock paths that most of this applies to.
DThe concept
A corner says the whole die came out slow, or the whole die came out fast. Neither is quite true. Within one die, process gradients, temperature differences across the chip and voltage drop along the supply network mean two cells a short distance apart can behave measurably differently. A single number per cell per corner does not capture that.
The crudest response is to derate: multiply delays by a factor, and choose the factor so that the arrangement is pessimistic for whichever check is being made. For a setup check the launch clock and the data are made slower and the capture clock is made faster, which is the worst combination available.
FIGURE 60 — FLAT DERATING
The launch side is made slower and the capture side faster, on purpose.
Read it: The shaded regions are what each derate factor applies to for a setup check; for hold the two swap. The two factors are the cell-delay early and late values from the documentation's own derating example. The figure is not claiming this combination can physically happen — it is claiming the tool assumes it anyway, and the next two ideas exist to give part of it back.
That is one example from the documentation, printed whole. Notice that the three kinds of delay get different factors: cells, nets, and the library's own setup and hold requirements, which are the -cell_check pair. A flow that derates cells and forgets the checks is giving back margin it thinks it has kept.
A flat factor is blunt, because it applies the same fraction whether a path has one stage or twenty. Variation across many stages partly cancels, in the way that many small independent errors do, so a deep path deserves a gentler factor than a shallow one.
FIGURE 61 — WHY DEPTH EARNS A GENTLER DERATE
Variation across many stages partly cancels; across one stage it does not.
Read it: The two rows have the same total delay and different stage counts. The figure is not claiming the cancellation is complete or that it follows a simple rule — the relationship comes from characterised tables, not from this picture. The picture is why such tables exist.
Advanced on-chip variation — AOCV — makes the factor a function of how many stages the path has and, in some flows, how far apart they are physically. The numbers come from characterised tables rather than from a formula.
Parametric on-chip variation, which everyone calls POCV, goes further. Instead of a multiplier it gives each timing arc its own spread and combines them statistically, which is what lets the cancellation in the figure above be counted properly rather than approximated. The spread is usually expressed as a ratio to the delay rather than as a bare standard deviation, and on modern libraries it is not a single number per cell but a table indexed by slew and load, in the same way the delay itself is. That table format has a name you will hear constantly: LVF, the Liberty Variation Format.
FROM THE TOOL DOCUMENTATION
LVF can model variation for delay timing arcs, setup and hold constraints, recovery and removal constraints, minimum pulse width, minimum period, and clock-gating checks.
Read the list in that sentence against the check types in Stage 11's coverage report and you will see they are the same list. Variation applies to every kind of check, not only to delay.
Then there is a specific and satisfying piece of pessimism which is definitely not real. When the launch and capture clock paths share a segment near the source, the analysis can give that shared segment two different delays at the same instant.
Three separate things cause it, and it is worth being able to name all three. Analysing with minimum and maximum operating conditions does it on its own: the documentation's own worked example generates the pessimism that way, with no variation analysis switched on at all. On-chip-variation derating does it, which is the case drawn below and the one people usually think of. And reconvergent clock logic — a clock that fans out and comes back together — does it even when neither of the first two is in play. Saying only "derating" is the common half-answer.
FROM THE TOOL DOCUMENTATION
Clock reconvergence pessimism is an accuracy limitation that occurs when two different clock paths partially share a common physical path segment and the shared segment is assumed to have a minimum delay for one path and a maximum delay for the other path.
FIGURE 62 — CLOCK RECONVERGENCE PESSIMISM
One buffer cannot be fast and slow at the same instant, but flat derating assumes it is.
Read it: The shaded segment is shared by both clock paths. Derating gives it two different delays at once. The amount given back is the difference. The numbers are the documentation's own worked example. The figure is not claiming this makes the analysis optimistic: removing an impossible assumption can only move slack upwards, and a design clean without it stays clean with it.
clock reconvergence pessimism = latest arrival at the common point − earliest arrival at the common point
common point
the last cell output shared by the launch and capture clock paths
—
latest / earliest arrival
the maximum and minimum delay computed for that shared segment
time units
Stated in the tool documentation. Demonstrated with numbers: one cell given 0.64 and 0.80 at once, “resulting in a pessimistic analysis in the amount of 0.16”.
The amount by which the shared segment was double-counted is given back: added to the required time on a setup check, subtracted from it on a hold check, so that in both cases the slack improves. This is not the analysis becoming optimistic; it is the removal of an assumption that was never physically possible. One buffer cannot be both fast and slow at the same moment.
FROM THE TOOL DOCUMENTATION
Applying CRPR reduces pessimism, so it can only increase the reported slack. Therefore, if the design has no violations with CRPR disabled, it will also have no violations with CRPR enabled.
EIn the tool
set_operating_conditions \
-analysis_type on_chip_variation \
-min MIN -max MAX
report_timing -delay_type min
report_timing -delay_type max
That analysis type is what allows the two sides of a check to use different delays at all. Without it there is one delay per arc and the whole subject of this stage does not arise.
The first reads a variation file, the second reads the single-parameter form of one, and the third sets a coefficient on one library cell by hand. One more command, set_ocvm_table_group, decides which table group applies where; the documentation names it without ever showing it in use, so this guide names it and prints no invocation either.
FThe traps
Removing reconvergence pessimism is a way of making the numbers look better.
It removes an assumption that cannot physically hold. A design clean without it is clean with it, so it cannot hide a violation. The numbers do look better, and they are also more nearly true.
Advanced variation is a more accurate flat derate.
It is a derate that depends on the path, which is a different kind of object. A single number cannot depend on anything, which is the whole reason the tables exist.
Derating and corners are two ways of doing the same job.
Corners cover variation between dies. Derating covers variation within one die. Both are needed and neither substitutes for the other.
GCheck yourself
1
Explain, in two sentences, why a setup check derates the launch path late and the capture path early, and say what a hold check does instead.
2
A path shows a clock reconvergence pessimism line of 0.16. Say what that number physically represents and what the slack would have been without it.
3
Somebody says their team is moving from flat derating to a statistical flow and expects to recover margin. Say where that margin was, in one sentence, and name one thing the move requires that they may not have.
Answers
1 A setup check fails when the data is late relative to the deadline, so the pessimistic assumption is the slowest possible data and the earliest possible deadline. A hold check fails when the data is early, so it assumes the fastest possible data and the latest possible deadline, which is the same two factors swapped.
2 It is the difference between the maximum and minimum delay the derating assigned to the segment of clock tree shared by both paths. Without it the slack would be 0.16 lower, because the analysis would have been charging the path for an impossibility.
3 The margin was in the flat factor applied to deep paths, where independent variation partly cancels and a uniform multiplier over-charges for it. The move requires libraries that carry per-arc variation data, which is a library delivery rather than a tool setting.
HWhat this unlocks
Stage 13, which is a different kind of uncertainty: not how fast a cell is, but what its neighbours are doing to it.
IHow long this takes
Three evenings. Working depth on derating and reconvergence pessimism, awareness depth on the rest.
13
STAGE 13
Signal integrity
AWARENESS DEPTH — know the terms and when they are used, rather than how to run the flow
AWhere you are
Stage 12 → Stage 13 → Stage 14
It sits here because it needs extracted parasitics from Stage 5 and the idea of delay as a function of context from Stage 4. It is also the last source of delay the guide introduces.
BWhat you will be able to do
Say what coupling capacitance is and why it does not exist in the netlist
Explain why a neighbour can make a net faster or slower depending on which way it switches
Distinguish a delay effect from a noise effect and say why they are reported separately
Say why this analysis is enabled separately and what it costs
CPrerequisites
Stage 5 for extraction, Stage 4 for what load does to delay.
DThe concept
Two wires running beside each other have capacitance between them. That capacitance is not in the netlist, because the netlist describes connections and these two wires are not connected. It appears only after routing, in the extracted parasitics, and only if the extraction was asked to keep it separate rather than folding it into each net's capacitance to ground.
FIGURE 63 — AGGRESSOR AND VICTIM
Two nets connected by nothing but the fact that they run side by side.
Read it: The capacitors between the two wires are the coupling. Nothing in the netlist creates them; they appear only in extracted parasitics after routing. Five are drawn for legibility; extraction produces many. The figure is not claiming either net is at fault — which one is the aggressor depends on which is switching, and both roles can swap.
When the aggressor switches, it pushes charge through that coupling onto the victim. If the victim is switching the same way at the same time, the push helps and the victim arrives sooner. If it is switching the other way, the push opposes and the victim arrives later. Both outcomes are real and both appear in reports, as a delta delay with a sign.
FIGURE 64 — DELTA DELAY, BOTH DIRECTIONS
A neighbour switching the same way speeds the victim; the opposite way slows it.
Read it: In each panel the dashed trace is the victim on its own and the solid one is the victim with its neighbour switching. The delta values are illustrative. The figure is not claiming the effect is symmetric in size — it usually is not — only that it has both signs, so crosstalk can help one check while hurting the other.
Crosstalk can improve a path as easily as it can damage one, which makes it awkward in a way that most delay effects are not. The setup check wants to assume the slowing case and the hold check wants to assume the speeding one, and both assumptions are about the same pair of wires.
There is a second effect, unrelated to timing, on a victim that is not switching at all. The push from the aggressor produces a bump on a net that was supposed to be holding a steady value. If the bump is large enough and lasts long enough, the gate downstream reads it as a real transition and passes it on.
FIGURE 65 — A NOISE BUMP
A net that was not supposed to move at all, moving enough to be believed.
Read it: The victim is holding a steady level and the bump is induced by a neighbour. The dashed line is the level at which the next gate would read it as a transition. The figure is not claiming every bump causes a failure: the library states how tall a bump of a given width a receiver tolerates, and most are well inside it.
That is a functional failure rather than a slow path, and no amount of timing margin prevents it. It is checked against a characterised tolerance: the library states, for a bump of a given width, how tall it may be before the receiver is at risk. Wider bumps are tolerated at lower amplitude and narrow ones at higher.
What sets the height is a ratio, and it is worth having in your head because it explains every mitigation anyone will offer you.
Vn = Vdd · Cx / (Cx + Cv)
Vn
peak noise voltage induced on the quiet net
volts
Vdd
the voltage the aggressor swings through
volts
Cx
coupling capacitance between the two nets
farads
Cv
the victim net's capacitance to ground
farads
From the physical-design reference material. The charge-sharing limit, valid when the aggressor's resistance is small beside the victim's. It says the bump is set by a ratio, not by an absolute coupling value.
The bump is set by how much of the victim's total capacitance is coupling rather than by the coupling on its own. So increasing the spacing helps because it reduces the numerator; and a stronger driver on the victim helps for a reason this simplified form hides, which is that it holds the net down against the injected charge. Both of the usual fixes fall straight out of the ratio.
All of this costs runtime, because the tool has to work out which nets can switch at the same moment as which others, and that is an iterative question: changing one net's delay changes when it switches, which changes who it overlaps with. So the analysis is enabled deliberately, and it is enabled late, once the routing exists.
EIn the tool
Enabling it is two steps: a variable, and an extraction that kept the coupling.
Without the second of those the coupling capacitance has already been folded into each net's total, and there is nothing left for the analysis to work with. Reading the parasitics again with the right option is the fix, and it is a common thing to have to do twice.
That one lists the victim nets contributing most delta delay, ordered, which is where you start rather than with individual paths.
FThe traps
Crosstalk always makes things slower.
It has both signs. A neighbour switching the same way speeds the victim up, which is a hold problem rather than a setup one. Treating it as a one-directional effect leaves you surprised by hold failures that appear only after the analysis is enabled.
Crosstalk can be predicted from the netlist.
It depends entirely on which wires ended up next to which, which is a routing outcome. Two runs of the router on the same netlist can produce different coupling.
A noise bump is a small timing error.
It is not a timing error at all. It is a value appearing on a net that was meant to be quiet, and if it propagates the design computes the wrong answer. Slack has nothing to do with it.
GCheck yourself
1
Explain why the same pair of coupled nets produces a pessimistic assumption for setup and a different pessimistic assumption for hold.
2
A path's delay increases by 0.09 when crosstalk analysis is enabled and by nothing at all on a neighbouring path of similar length. Give two explanations.
3
Say why enabling this analysis is not simply left on all the time.
Answers
1 Setup fails when data is late, so the pessimistic assumption is that the aggressor switches in the direction that slows the victim. Hold fails when data is early, so the pessimistic assumption is the direction that speeds it up. The same physical situation is assumed to break two different ways depending on which check is being made.
2 The first path runs alongside a net that switches often and strongly, and the second does not run alongside anything active. Or the first path's victim net has a weak driver, so the same coupling produces a larger effect. Driver strength on the victim matters as much as the coupling itself.
3 It costs significant runtime, because determining which nets can switch together is iterative. It also needs extraction that kept the coupling, which is a larger parasitic file. Before routing there is nothing to analyse, so for most of a project it would be computing nothing at real expense.
HWhat this unlocks
Stage 14, the last one, which is about what you do once a report tells you something is wrong.
IHow long this takes
Two evenings, awareness depth again.
14
STAGE 14
Closure, change orders and signoff
AWhere you are
Stage 13 → Stage 14 → practice
It sits last because it uses everything. A violation is triaged with Stage 8, fixed with Stage 6, re-checked with Stage 11, and believed or not believed on the strength of Stage 9.
BWhat you will be able to do
Triage a violation: which check, how many, how large, and what that implies
Name the usual fixes for each check and say which one you would try first
Explain why a fix is not finished until the parasitics have been extracted again
Say what signoff means beyond a clean report, and name the questions a clean report cannot answer about itself
CPrerequisites
Stages 8, 9 and 11 particularly. This stage assumes the whole guide.
DThe concept
A report with a negative number in it is the start of a decision, not the end of one. The first three questions are always the same: which check is it, how many paths are failing, and by how much.
FIGURE 66 — WHAT TO DO WITH A VIOLATION
Which check, how many, how large, and does the fix break something else.
Read it: Follow the branches from the top. The two panels are the questions worth asking before touching anything. The figure is not claiming this is a complete procedure — it is the first three decisions, and the last box is the one people skip.
The count matters more than beginners expect. One failing path is usually a local problem with a local fix. Several hundred failing paths, all ending in the same region or all in the same clock domain, is not a cell-sizing problem. It is a constraint that is wrong, or a floorplan that put two things too far apart, or a clock that has not been built the way the constraints assumed.
For setup, the fixes come from Part Two: make the cells bigger so they drive their loads faster, buffer the long nets so the square term stops hurting, take stages out of the logic where the structure allows, swap to a faster transistor flavour where the library has one, or arrange for the capture clock to arrive slightly later and borrow margin from the neighbouring path.
For hold, there is essentially one fix: add delay to the data path. Small violations can be handled by adding load rather than a whole buffer, which is less likely to overshoot. Large hold violations are usually a symptom of something else, most often a clock tree whose skew is larger than the constraints assumed, and fixing the symptom rather than the cause tends to produce a great many delay cells.
FIGURE 43 — THE TWO FIXES POINT IN OPPOSITE DIRECTIONS (first printed in Stage 8)
Setup wants the path faster; hold wants it slower; each fix can break the other check.
Read it: The two lists are the usual moves, and the arrows between them are the interference. The figure is not claiming every setup fix creates a hold violation — most do not. It is claiming you cannot know without re-running, which is why the loop in Stage 14 exists.
The changes themselves do not stay in the timing tool. They are written out as a list of edits, applied by the implementation tool to the real layout, and the result is extracted again. Only then does a timing run on the new parasitics say whether the fix worked.
FIGURE 67 — THE CHANGE LOOP
A fix leaves timing, goes through implementation, and comes back as new parasitics.
Read it: Read clockwise from the top left. The loop closes only where it started. The figure is not claiming one pass is usual: several rounds are normal, and each one has to be extracted again before it counts.
Which leaves the last question of the guide. What does it mean for timing to be signed off? A clean report is necessary and it is not sufficient, because a report describes what was analysed and cannot comment on what was not.
FIGURE 68 — WHAT SIGNOFF ACTUALLY ASKS
Five questions that decide whether a clean report is believable.
Read it: Each row is a question with an answer that has to exist somewhere. The figure is not claiming these five are a complete signoff checklist — a real one is much longer and specific to the project. These are the five that a clean timing report cannot answer about itself.
Those five questions are the bridge between a number and a decision. Each of them has an owner, an answer and usually a report of its own, and a review that asks them is the difference between a project that tapes out and one that tapes out and works. The discipline of asking them systematically is a subject in its own right, and it is where this roadmap ends and practice begins.
EIn the tool
The change-order commands. Each one takes a type or a strategy rather than running on its own, which is the first thing to know about them.
Notice that the timing fixer insists on being told which check to fix. There is no combined mode, and the reason is the ordering below: setup and hold want opposite changes, so a single pass could only ever make one of them worse.
Command
What it is for
set_eco_options
how changes may be made, and what may be touched
fix_eco_timing
propose changes that fix setup or hold
fix_eco_drc
propose changes that fix the electrical limits
fix_eco_power
propose changes that recover power
write_changes
write the proposals out for the implementation tool
save_session
keep the analysis so it need not be rebuilt
The order those are usually run in is worth knowing, because it is not arbitrary and because getting it wrong means doing the same work twice.
FIGURE 69 — THE ORDER THE FIXES GO IN
Five passes, and each one is allowed to disturb the passes after it and not the ones before.
Read it: Read left to right. The arrow beneath is the rule the ordering enforces. The figure is not claiming every project runs all five passes, nor that one round of each is enough — the loop in the next figure usually goes round several times.
FThe traps
Hold violations should be fixed as soon as they appear.
They should be fixed last, because setup fixes create them. Fixing hold early means fixing it twice.
A clean report is signoff.
A clean report is one of the inputs to signoff. The others are all about whether the report describes the design you think it does.
The estimate the tool gives for a proposed fix is the answer.
It is a good guide for choosing between options and it is not a result. Nothing is a result until the layout has changed and the wires have been measured again.
A large number of failing paths means a large amount of work.
It often means one wrong line in a constraint file. Check the count and the shape of the failures before starting to size cells: hundreds of failures with similar slack, all in one domain, is a signature, not a workload.
GCheck yourself
1
A block reports 340 failing setup paths, all ending in registers in one corner of the floorplan, with slacks between −0.4 and −0.5. Say what you would investigate before proposing any cell changes.
2
A hold violation of 4 picoseconds and a hold violation of 400 picoseconds on the same design. Say why you would treat them differently.
3
Write down the five signoff questions from memory, and beside each one write which stage of this guide answers it.
Answers
1 The tight clustering of the slacks suggests a single common cause rather than 340 independent problems. Look at what those registers share: one clock branch, one source of data, one region of the floorplan. Check whether the clock reaches that corner much later than elsewhere, and whether the data comes from a long way away. A floorplan or a clock tree answer is far more likely than a sizing answer.
2 The small one is a local matter that a small added load will absorb without disturbing setup. The large one is too big to be explained by a short data path alone and points at skew: the capture clock is probably arriving much later than the launch clock on that path. Adding 400 picoseconds of delay cells would work and would be treating a symptom.
3 Was every path analysed: Stage 9 and Stage 10. Did an exception remove something real: Stage 9. Is a clock still ideal: Stage 7. Does the grid agree: Stages 1 and 11. Do implementation and signoff correlate: this stage. If you can map all five, the roadmap has done what it was for.
HWhat this unlocks
Nothing in this guide. What comes next is a real design, a real constraint file somebody else wrote, and the first report you have to explain to another person.
IHow long this takes
Two evenings, and this stage keeps paying back long after you have read it.
The twelve-week plan
THE STUDY PLAN
Two or three evenings a week, with one stage as the unit of progress. This is the pace that works if you have a job.
The column on the right is the test. If you cannot do the thing named there by the end of the week, the honest move is to repeat the week rather than to carry the gap forward, because every later stage assumes it.
Week
Stages
What you should be able to do by Friday
1
1
Draw the scenario grid and say how many analyses a given mode and corner list implies
2
2 and 3
Draw a timing path from memory and define slack without looking it up
3
4
Explain why one gate has two different delays in the same design
4
4 again
Read a delay table and say whether an operating point is interpolated or extrapolated
5
5
Say why the estimate and the extraction disagree most on the nets that matter
6
6
Compute whether cutting a given wire in three is worth two buffers
7
7
Explain source against network latency, and ideal against propagated, to somebody else
8
8
Write both inequalities from memory with every term named
9
8 again
Derive both from a waveform, and explain why hold has no period term
10
9
Group the constraint commands by question, and say where a multicycle exception moves the hold check
10½
9 again
Write a boundary constraint with both -min and -max, and say what a single value would have cost
11
10 and 11
Read a timing report line by line, and list the six components of a scenario
12
12, 13 and 14
Hold a conversation about variation and crosstalk, and triage a violation
Two weeks are spent twice on the same stage, which is not padding. Stage 4 and Stage 8 are where people stall, and giving each of them a fortnight up front is cheaper than discovering it in week nine. Stage 9 carries a half-week of its own for the same reason: it is the stage whose material you will be handed on your first day.
The six-week intensive
THE STUDY PLAN
Roughly full time. The same material, the same order, with the repetition weeks removed and the awareness stages compressed.
Week
Stages
What you should be able to do by Friday
1
1, 2 and 3
Draw the path, define the three quantities, and explain the grid
2
4 and 5
Explain both halves of a delay number and where each comes from
3
6 and 7
Explain the chain, the three limits, and everything the clock contributes
4
8
Both inequalities, derived, with the consequences of each term
5
9 and 10
Constrain a block and read its report end to end
6
11 to 14
The grid properly, variation and crosstalk at awareness depth, and triage
This pace works if you have a tool in front of you and nothing else to do. Without a tool, week five becomes reading rather than running, and it takes about the same time but sticks less well.
Where people stall
THE STUDY PLAN
Two stages take about twice as long as anybody plans for, and a third is close behind. Budgeting for it is cheaper than discovering it.
FIGURE 70 — WHERE PEOPLE STALL
Two stages reliably take about twice as long as anyone plans for.
Read it: Each bar is one stage; the dashed line is the time a study plan usually allows. The proportions are illustrative, drawn from how much material each stage carries and which ideas depend on several others at once. The figure is not claiming these are measured averages across real students.
Stage 4 is the first. The difficulty is not the table; it is giving up the belief that a gate has a delay. Until that belief goes, every later explanation sounds like a complication of something simple, and the cure is to stop reading and work through the interpolation by hand until the two axes feel like two axes rather than two caveats.
Stage 8 is the second. The algebra is not hard. What is hard is that the two inequalities look nearly identical and behave completely differently, and the difference is a missing term that is easy to read past. Drawing the waveform yourself, twice, with the windows marked, is worth more than rereading the derivation.
Stage 7 is the third and it stalls people for a different reason. It introduces six terms that are all about the clock and are all different from each other: source latency, network latency, ideal, propagated, skew, uncertainty. They are not difficult individually and they are easy to blur together. Writing a one-line definition of each, from memory, is the exercise that separates them.
If you are stuck for more than two evenings on one idea, the procedure below is more useful than continuing to read.
Say the thing you do not understand out loud, in one sentence, as a question. Half the time the sentence will not form, which tells you the confusion is one level further back than you thought.
Find the figure in the relevant stage and reproduce it on paper from memory. Wherever you hesitate is the actual gap.
Go back to the prerequisite stage named at the top of the one you are stuck on and check you can do its self-tests. The stall is usually there rather than here.
Change the numbers in a worked example and redo it. Understanding survives a change of numbers; memorisation does not.
Ask somebody, having done the first four. You will now be able to ask a question specific enough to get a useful answer.
The order to revise in
THE STUDY PLAN
It is not the order to learn in, and the difference is worth naming.
FIGURE 71 — TWO DIFFERENT ORDERS
The order to learn in is not the order to revise in.
Read it: The left column is dependency order: each idea needs the one above it. The right column is frequency order: what an interview reaches for first. The figure is not claiming the right column is a shortcut through the left one — revising in that order only works once the left column has been done.
Learning has to follow dependency. You cannot understand the setup inequality before you know what a clock arrival is, and you cannot care about a clock arrival before you have seen a path. That is why the stages are numbered as they are.
Revision has to follow frequency. The evening before an interview, the question is not what depends on what; it is what you will be asked. Setup and hold come first because nearly every conversation starts there. The path comes second because it is the object every answer refers to. The clock comes third because the follow-up question is almost always about skew.
The self-test bank
ASK YOURSELF
66 questions, tagged by stage, of three kinds. Every stage carries at least three. Cover the answer before you read the question.
Each card has the same three parts. The answer is what you would say out loud. Underneath is what is really going on, and it is where a follow-up question will go. The trap is the wrong answer that sounds right, which is worth knowing because you will hear other people give it.
Stage 1 — The destination: modes, corners and scenarios
1EXPLAIN ITWhat is the difference between a mode and a corner?
The answer. A mode is a configuration of the logic: functional, scan, a low-power state. It changes which paths are real and often what period they run at. A corner is a set of physical conditions: process, voltage, temperature and extraction. It changes how fast every cell and wire in the design is. They are independent, which is why they form a grid.
Underneath. The follow-up is usually whether the two ever interact, and they do: a low-power mode runs at a lower voltage, so it drags a corner along with it.
The trap. Saying a corner is “a PVT setting” and stopping. The extraction axis is part of it, and forgetting that is how people end up with libraries and parasitics that do not belong together.
2COMPUTE ITTwo functional modes, one scan mode, three process points, two extraction variants. How many scenarios, and how many checks?
The answer. Three modes times three process points times two extraction variants gives eighteen scenarios. Each is checked for setup and hold, so thirty-six checks.
Underneath. The point of the arithmetic is that the grid grows by multiplication. Adding one mode to that list adds six scenarios, not one.
The trap. Forgetting that each scenario carries two checks, which halves the answer.
3EXPLAIN ITWhy can a design that closes at one corner fail at another?
The answer. Because a corner scales every delay in the design. At the slow corner the data takes longer and can miss its deadline, which is a setup failure. At the fast corner it arrives sooner and can overrun the edge before it, which is a hold failure. The two live at opposite ends of the same axis, so neither run can see the other's problem.
Underneath. A good answer names which check fails at which end without being asked.
The trap. Saying “because the numbers change” without saying which direction each check breaks in.
4DRAW ITDraw the scenario grid for two modes and three corners, and mark which cells you would expect setup failures in and which hold failures.
The answer. A two-by-three grid, six cells. Setup failures cluster in the slow-corner column and hold failures in the fast-corner column, in both mode rows.
Underneath. The typical corner in the middle usually shows neither, which is exactly why running only typical is the mistake this figure exists to prevent.
The trap. Marking failures by mode rather than by corner. The mode decides which paths exist; the corner decides which check they break.
Stage 2 — What static timing analysis is, and what it is not
5EXPLAIN ITWhat does static timing analysis do that simulation does not?
The answer. It covers every path in the design without needing any stimulus. Simulation covers the sequences you wrote and is silent about the rest. Static analysis walks the structure, sums delays along every path, and compares each total against the constraint.
Underneath. The complement is worth volunteering: it is blind to function, so it cannot tell you the logic is wrong, and both methods are run on every project.
The trap. Presenting it as a replacement for simulation rather than a different question.
6EXPLAIN ITName two things static timing analysis cannot tell you.
The answer. Whether the logic computes the right answer, because it does not track values. And whether a structurally present path can ever actually be exercised, because sensitisation is a question about values too.
Underneath. A third worth adding: anything you told it to ignore, which disappears from every report afterwards with no trace.
The trap. Treating these as tool limitations rather than as consequences of the method. A different tool would have the same blindness.
7DRAW ITDraw the four kinds of timing path.
The answer. Input port to register, register to register, register to output port, input port to output port. Each drawn with a combinational cloud in the middle and the clock reaching whichever registers are present.
Underneath. Register to register is the one that dominates any real design, because the register count is much larger than the port count.
The trap. Forgetting the fourth, which has no register at all and therefore needs both boundary constraints to be checked at all.
Stage 3 — The timing path
8EXPLAIN ITDefine slack.
The answer. Slack is the margin by which a check is met. For a setup check it is the data required time minus the data arrival time at the endpoint; for a hold check the subtraction is the other way round, arrival minus required. Positive means the check passes, zero means it passes exactly, negative means it fails and the magnitude is how much time you need to find.
Underneath. Volunteering that it is a duration in library time units, not a ratio, separates people who have read a report from people who have read about one.
The trap. Getting the subtraction the wrong way round, which flips every sign.
9DRAW ITDraw a register-to-register path and mark the startpoint and endpoint.
The answer. Two flip-flops with a combinational cloud between them and one clock line reaching both clock pins. The startpoint is the launching register's clock pin; the endpoint is the capturing register's data pin.
Underneath. Drawing the clock reaching both registers is what most people leave out, and it is the half of the picture that Stage 7 is about.
The trap. Marking the startpoint at the launching register's Q pin. The path's time origin is the clock edge, not the data.
10EXPLAIN ITWhy is the check anchored at the endpoint?
The answer. Because the requirement belongs to the capturing register. Its library data says how early the data must be stable, and its clock edge sets the deadline. Many startpoints can share one endpoint, but only the endpoint has a requirement to compare against.
Underneath. A neat way to put it is that arrival is accumulated and required is imposed, and imposition happens where the register is.
The trap. Answering “because that is where the data ends up”, which is true and does not explain anything.
11COMPUTE ITArrival 4.82, required 4.30. What is the slack and what would fix it?
The answer. Slack is 4.30 minus 4.82, which is −0.52. Fixing it means either reducing the arrival, which means a faster path, or increasing the required time, which means a longer period, a relaxed constraint, or a later capture clock.
Underneath. Naming all three routes to a larger required time is what distinguishes a considered answer from a memorised one.
The trap. Offering only “make the path faster”. Half the available fixes are on the other side.
12COMPUTE ITA path has clock arrival 0.22 at the launch register, clock-to-output 0.15, and three cells of 0.40, 0.65 and 0.30 with nets of 0.05, 0.12 and 0.08. What is the arrival time at the endpoint?
Underneath. Break it down: cells 1.35, about 69 per cent; clock arrival and clock-to-output 0.37, about 19 per cent; nets 0.25, about 13 per cent. On a modern process the net share climbs steeply and can overtake the cells on a long path, which is Stage 5's whole point.
The trap. Forgetting the clock arrival at the launch register, which is not part of the data path and is very much part of the arrival time.
Stage 4 — Cell delay
13EXPLAIN ITWhere does a cell's delay number come from?
The answer. From a table in the logic library, indexed by the input transition time and the output load capacitance, measured during characterisation by transistor-level simulation. The tool interpolates between the table's entries for the actual operating point.
Underneath. Volunteer that there is one table per timing arc per transition direction per corner, which is why a library is a large delivery.
The trap. Saying the tool measured it. The measurement was the characterisation, once, in the foundry's simulator. At run time a table model is a lookup plus an interpolation, and a current-source model is an iterative solve against the actual load — so "it just looks it up" is only half true, and the wrong half in a signoff conversation.
14EXPLAIN ITWhy does input transition time affect a cell's delay?
The answer. While the input is drifting slowly through the middle of its range, both the pull-up and pull-down devices conduct at once, so the cell fights itself rather than driving its output. The slower the input edge, the longer that interval lasts and the later the output crosses its threshold.
Underneath. The same mechanism is why short-circuit power goes up with slow inputs, which is a useful connection to make if the conversation turns to power.
The trap. Answering only in terms of the table, which describes the effect rather than explaining it.
15COMPUTE ITTransition 0.06, load 0.09, against a table with rows 0.01, 0.04, 0.10, 0.25 and columns 0.02, 0.05, 0.12, 0.30. Which entries are used?
The answer. The transition falls between rows 0.04 and 0.10; the load falls between columns 0.05 and 0.12. So the four surrounding entries are used and the answer is interpolated between them.
Underneath. Follow up with a load of 0.45 and the answer changes character: that is past the last column, so the tool extrapolates and the number is no longer supported by a measurement.
The trap. Picking the single nearest entry rather than the four surrounding ones.
16EXPLAIN ITWhat is a non-unate timing arc and why does it matter?
The answer. An arc where the direction of the output transition depends on the values of the other inputs, as in an XOR gate. It matters in clock networks, because the tool cannot then say whether a rising edge at the clock source is still a rising edge at a register's clock pin.
Underneath. A clock passing through a clock-gating structure or a multiplexer is the usual real case.
The trap. Treating it as an exotic case. Clock gating is everywhere and so is this.
17EXPLAIN ITWhat problem do current-source models solve?
The answer. The table model treats a cell's output as a voltage source driving one lumped capacitance. That stops describing the situation when the wire's own resistance is large enough to hide part of its capacitance from the driver. A current-source model describes what the cell can deliver and lets the wire keep its shape.
Underneath. Worth adding that signoff libraries ship these now and that every intuition about cell delay is still built on the table.
The trap. Claiming the table model is obsolete. It is what the explanation rests on and it is accurate whenever the wire is not resistive.
Stage 5 — Net delay
18EXPLAIN ITWhy does a wire have a delay?
The answer. Because it has resistance along its length and capacitance to everything around it, and changing the voltage at one end means charging that capacitance through that resistance.
Underneath. The useful second sentence is that the capacitance near the driver is charged through almost no resistance and the capacitance at the far end through all of it, which is why the far end is disproportionately slow.
The trap. Talking about the speed of light. At these distances that is not the mechanism.
19EXPLAIN ITWhy does delay grow with the square of wire length?
The answer. Doubling the length roughly doubles both the resistance and the capacitance, and the delay involves their product. So the delay goes up by about four.
Underneath. This single fact is behind buffer insertion, repeater planning and most of why long nets are treated as a different kind of object.
The trap. Reasoning about wires linearly, which makes every estimate optimistic on exactly the nets that were going to fail.
20COMPUTE ITA wire of length L has delay 0.9. Cut into three with two buffers of 0.06 each. New total?
The answer. Each third has about one ninth the delay, so 0.1, and three of those is 0.3. Two buffers add 0.12. The total is 0.3 + 0.12 = 0.42 against 0.9.
Underneath. Four segments is better still: 0.9 ÷ 4 = 0.225 of wire plus three buffers, so 0.225 + 0.18 = 0.405. Five comes back up: 0.18 + 0.24 = 0.42. The curve is flat around its minimum, which is why nobody argues about one buffer either way, and Stage 6 works the same numbers through.
The trap. Forgetting to add the buffer delays, which makes buffering look unreasonably good.
21EXPLAIN ITWhy does a design close after synthesis and open after routing?
The answer. Synthesis works from estimated wire delays, and the estimate agrees well on short nets and badly on long ones. Long nets are the ones that were going to fail, so the correction lands exactly where the margin was thinnest.
Underneath. Teams carry deliberate margin through synthesis for precisely this reason, which is worth saying because it shows you know it is expected rather than surprising.
The trap. Presenting it as a failure of the flow. It is the flow working as designed.
22EXPLAIN ITWhat is an extraction corner and why is it separate from a PVT corner?
The answer. It is an assumption about how the metal came out of the fab: narrower or wider than drawn, which changes both resistance and coupling. It is separate because the transistors and the metal are made in different process steps, so a slow-transistor die can carry either fast or slow metal.
Underneath. Follow-up: why not run the full cross product of PVT and extraction corners? Because most combinations are not physically plausible and the runtime is finite.
The trap. Folding it into the PVT corner, which is the commonest simplification and loses the reason there is a separate axis at all.
23COMPUTE ITA three-segment wire has R1 = 20, R2 = 30, R3 = 50 and C1 = 4, C2 = 6, C3 = 10, in consistent units. Compute the Elmore delay to the far end.
Underneath. Notice that the last term is three quarters of the total. The far capacitance dominates because it is charged through everything, which is the whole intuition of the expression.
The trap. Using R3 alone for the third term instead of the sum of all three.
Stage 6 — Transition, load and the chain
24EXPLAIN ITWhy does transition time propagate down a path?
The answer. Because a cell's output transition is itself a function of its input transition and its load. A slow input produces a slow output, which is the next cell's slow input, and so on. The degradation compounds rather than staying where it started.
Underneath. This is why the limit is set per pin rather than per path: the damage is not confined to the pin where the mistake was made.
The trap. Describing it as a one-stage effect.
25EXPLAIN ITName the three design rule constraints and say where their violations appear.
The answer. Maximum transition, maximum capacitance and maximum fanout. Their violations appear in the constraint report, not in the timing report, because they are properties of pins rather than of paths.
Underneath. A design can have perfect slack everywhere and violate all three, which is the reason both commands belong in the same routine.
The trap. Assuming a clean timing report covers them.
26EXPLAIN ITWhy is a transition violation more serious than it looks?
The answer. Because it means some cell is being evaluated outside the range its library was characterised for, so the delays reported downstream are extrapolations rather than interpolations. The timing numbers on that path are not slightly wrong; they are unsupported.
Underneath. The right order is to fix the violation and then read the timing.
The trap. Calling it cosmetic.
27EXPLAIN ITWhy does sizing a cell up not always help?
The answer. A larger cell drives its load faster and presents a larger input capacitance to whatever drives it. Sizing up moves delay from one stage to the stage before. If the slack is upstream, the path gets worse.
Underneath. This is why optimisation looks at the whole path rather than at the worst cell.
The trap. Treating drive strength as a free improvement.
28COMPUTE ITA cell drives four inputs of 2 units each plus a wire of 9 units. Its library table's largest load column is 15 units. Is the delay interpolated or extrapolated?
The answer. The total load is 8 + 9 = 17, which is past the last column at 15, so the delay is extrapolated and is not supported by any measurement.
Underneath. This is exactly what a maximum capacitance limit exists to prevent, and it is why a capacitance violation matters more than it looks.
The trap. Counting only the fanout and forgetting the wire, which is usually the larger of the two.
Stage 7 — The clock
29EXPLAIN ITDistinguish source latency from network latency.
The answer. Source latency is the time from the clock's ideal waveform origin to the point where the clock is defined in the design. Network latency is from that definition point to a register's clock pin. The latency at a register clock pin is the sum of the two.
Underneath. The boundary between them is wherever the clock was declared, which means it is a modelling choice rather than a physical one.
The trap. Treating source latency as off-chip and network latency as on-chip. That is often true and it is not the definition.
30EXPLAIN ITWhat is the difference between an ideal and a propagated clock, and when is each correct?
The answer. An ideal clock has its latency asserted, the same value for every register, and no skew. A propagated clock has its latency computed by walking the real buffers and wires. Ideal is correct before clock tree synthesis, when there is nothing to walk. Propagated is correct after it.
Underneath. Leaving a clock ideal after the tree is built produces a report with zero skew and silicon that still has it. It is a standard review question.
The trap. Calling ideal “wrong”. It is correct at the right point in the flow.
31EXPLAIN ITWhy does skew help one check and hurt the other?
The answer. If the capture clock arrives later than the launch clock, the deadline for the data moves later, which gives the setup check more room. The edge the data must not overrun also moves later, which gives the hold check less. One shift, two checks, opposite signs.
Underneath. Deliberately arranging this is a real optimisation, and its cost is always paid in hold margin.
The trap. Saying skew is simply bad. It is a shift with a sign.
32EXPLAIN ITWhat does clock uncertainty stand in for?
The answer. Jitter from the clock source, skew that has not been computed yet because the tree does not exist, and whatever margin the team decided to carry for effects not otherwise modelled. One number for three ideas.
Underneath. It is subtracted from the required time for setup and added for hold, so it always costs margin in both directions.
The trap. Describing it as only jitter, which misses most of what is in the number before clock tree synthesis.
33EXPLAIN ITWhy declare a divided clock as generated rather than with create_clock?
The answer. Because a generated clock stays tied to its master, so the tool knows the two are phase-related and can time paths between them against real edge pairs. Declaring it independently cuts that relationship and the analysis between the domains stops being meaningful.
Underneath. It also means the generated clock inherits its master's source latency rather than needing its own assertion.
The trap. Thinking the distinction is bookkeeping. It changes which edges are compared.
34COMPUTE ITSource latency 0.8, network latency 1.6 at the launch register and 1.9 at the capture register. What is the skew, and which check does it help?
The answer. The arrivals are 2.4 and 2.7, so the skew is 0.3 with the capture clock later. That helps setup, because the deadline moved later, and hurts hold by the same amount.
Underneath. The source latency is common to both and cancels, which is a useful thing to notice: only the network parts differ.
The trap. Subtracting the two total latencies the wrong way round and concluding it helps hold.
Stage 8 — Setup and hold, with the arithmetic
35EXPLAIN ITState the setup check.
The answer. The data launched by one clock edge must arrive at the capturing register before the next capture edge, by at least the register's setup requirement, after allowing for the clock arrival at each end and for uncertainty. In symbols, launch arrival plus clock-to-output plus data delay must not exceed capture arrival plus period minus setup minus uncertainty.
Underneath. The period term is the thing to point at, because it is what the next question is about.
The trap. Reciting it without being able to say which side each term sits on.
36EXPLAIN ITWhy can hold not be fixed by slowing the clock?
The answer. Because the default hold inequality contains no period term. The check compares the data's arrival against the capture edge belonging to the same cycle as the launch, so the period never enters it. A hold failure is a race between the data path and the clock path, and slowing both down does not change which one wins.
Underneath. Say “default” and mean it, because there are exceptions and the interviewer may well go there: a half-cycle path puts the capture edge half a period away and the period is back in the requirement; two clocks of different periods make the governing edge pair depend on both; and a multicycle hold exception introduces one deliberately.
The trap. Stating it absolutely — “at every frequency including direct current”. It is true of the single-cycle same-clock case and a half-cycle path ends the topic.
The answer. Arrival is 0.30 + 0.12 + 1.40 = 1.82. Required is 0.34 + 2.00 − 0.09 − 0.05 = 2.20. Slack is +0.38.
Underneath. Redo it with the period at 1.80 and the slack becomes +0.18, which shows exactly which term the period lives in.
The trap. Adding the setup requirement rather than subtracting it.
38COMPUTE ITSame path, library hold 0.06, hold uncertainty 0.03. Does hold pass?
The answer. The hold requirement at the endpoint is 0.34 + 0.06 + 0.03 = 0.43. The arrival is 1.82, well past it, so hold passes with 1.39 to spare.
Underneath. Shortening the data path alone does not break it: at 0.05 the arrival is 0.47 against 0.43, which still passes, just. What breaks a short path is skew — the capture clock arriving later than the launch clock pushes the requirement up while the arrival stays put. The next card is that case.
The trap. Using the period anywhere in this calculation, and assuming a short data path fails hold on its own. It needs skew to help it.
39DRAW ITDraw the setup and hold windows on one timeline.
The answer. Launch clock, capture clock offset by the skew, and the data below both. The setup window sits immediately before the capture edge one period after the launch. The hold window sits immediately after the capture edge belonging to the same cycle as the launch.
Underneath. Label the terms of both inequalities on the drawing so the algebra and the picture use the same symbols.
The trap. Drawing the hold window after the same edge as setup, which is the commonest error and makes the whole picture inconsistent.
40EXPLAIN ITWhy is setup fixed with speed and hold with delay?
The answer. Setup fails when the data is too late, so the fixes reduce the data path delay or push the deadline later. Hold fails when the data is too early, so the only fix is to make it arrive later, which means adding delay deliberately.
Underneath. Each fix can create the other's violation on the same path, which is why closure is a loop and why setup is fixed first.
The trap. Not saying that they interfere, which is the part that makes the ordering matter.
41EXPLAIN ITHow can one path fail both checks?
The answer. At different corners. At the slow corner everything is at its slowest and the data misses its deadline, so setup fails. At the fast corner everything is at its fastest and the data overruns the previous edge, so hold fails. Same path, same netlist, two scenarios.
Underneath. This is the argument for the grid arriving from the other direction, and it is worth naming the connection.
The trap. Assuming a path that fails setup has comfortable hold margin by definition.
42COMPUTE ITTwo registers side by side. Clock-to-output 0.09, one inverter of 0.04, net delays negligible. Launch clock 0.50, capture clock 0.66, library hold 0.05. Does hold pass?
The answer. Arrival is 0.50 + 0.09 + 0.04 = 0.63. The hold requirement is 0.66 + 0.05 = 0.71. Arrival is earlier than required, so hold fails by 0.08.
Underneath. The failure comes from the 0.16 of skew, not from the logic, which is why a large hold violation usually points at the clock tree.
The trap. Introducing the period. There is no period in this calculation and putting one in makes the check pass when it should fail.
Stage 9 — Constraining the design
43EXPLAIN ITWhat do input and output delay describe?
The answer. The parts of a path that are outside the block being timed. Input delay says how much of the period was already spent before the signal reached your port; output delay says how much the next block still needs after yours.
Underneath. They come from a budget agreed between blocks, or from the neighbour's own analysis, and they cannot be derived from your netlist because the logic they describe is not in it.
The trap. Guessing a plausible number. A wrong assertion makes every boundary path wrong quietly.
44EXPLAIN ITWhat is the danger of a timing exception?
The answer. It removes paths from the analysis, and no subsequent report mentions them. A wrong exception produces a clean report that looks exactly like a correct one, because the effect of an exception on a report is subtraction and subtraction leaves no residue.
Underneath. This is why a separate family of checks exists whose whole purpose is to ask what was never analysed.
The trap. Saying exceptions are bad. They are necessary and most are correct; the danger is the invisibility, not the mechanism.
45EXPLAIN ITWhat does a multicycle setup exception do to the hold check?
The answer. It moves it. The hold relationship is anchored to the capture edge before the one setup uses, so relaxing setup to N cycles drags the hold check forward to N − 1 periods after the launch. The path is then required to take more than N − 1 whole periods, which is far stricter than anyone intended, and a companion hold multiplier of N − 1 moves it back to the launch edge.
Underneath. The direction is the whole answer. Most people assume the hold check stays put and that the companion exception is therefore optional; it is the opposite, and a setup exception written alone is the commonest cause of large hold violations appearing from nowhere.
The trap. Saying the hold check does not move. It does, and believing otherwise makes the companion exception look like belt-and-braces rather than the other half of the instruction.
46EXPLAIN ITDistinguish a false path from a multicycle path.
The answer. A false path removes the check entirely; the tool stops timing that path. A multicycle path keeps the check and moves its deadline. Using the first where you meant the second removes a real requirement permanently and silently.
Underneath. If somebody has used a false path to make a violation disappear, that is the case to ask about.
The trap. Treating them as two strengths of the same idea.
47DRAW ITDraw a path with a multicycle setup exception of 2, marking the launch edge, both candidate capture edges and the hold check — first with the setup exception alone, then with its companion.
The answer. Launch at time zero. The default capture edge sits one period later and the relaxed one two periods later. The hold check is anchored to the capture edge before the one setup uses, so with the setup exception alone it moves forward to one period after the launch, and the path is suddenly required to take more than a whole clock period. Add set_multicycle_path -hold 1 and that capture edge moves backward by one cycle, to the edge beside the launch, which is where the design expected it.
Underneath. Draw the two pictures side by side and the rule falls out: a setup multiplier of N wants a hold multiplier of N − 1. The second drawing is not decoration; without it the first one is a constraint nobody asked for.
The trap. Leaving the hold check beside the launch edge in the first drawing. That is where it ends up only after the companion exception has been written.
Stage 10 — Your first analysis, end to end
48EXPLAIN ITWhat is the minimal sequence to get a timing number?
The answer. Read the netlist, link the design against its libraries, constrain it with at least a clock, update the timing, and report. The order is not negotiable.
Underneath. Worth adding that a check of what was not constrained belongs between the constraining and the reporting, because a report on an unconstrained design looks healthy.
The trap. Skipping the link step in the description, which is where missing libraries show up.
49EXPLAIN ITWhy are the two clock network delay lines in a setup report different?
The answer. Because the tool takes the longest clock path to the launching register and the shortest to the capturing one, which is the pessimistic combination for a setup check. Identical values usually mean the clock is still ideal.
Underneath. For a hold check the choice is reversed, which is a good thing to volunteer.
The trap. Reading it as an inconsistency in the report.
The answer. Arrival is 5.20. Required is 7.12. Slack is 1.92, met.
Underneath. The 0.16 is reconvergence pessimism being added back, and being able to say what that line is doing is what the question is really testing.
The trap. Subtracting it. On this setup check it is added to the required time. On a hold check it is subtracted from the required time, so the direction is worth stating rather than memorising.
Stage 11 — MMMC, properly
51EXPLAIN ITWhat makes up a scenario?
The answer. The netlist, which is shared; the case and mode settings and the constraint set, which the mode determines; and the operating conditions, the libraries and the parasitics, which the corner determines.
Underneath. The shared netlist is why a baseline image is built once and every scenario starts from it, and why adding a scenario costs less than it appears to.
The trap. Leaving out the parasitics, which is the component people most often forget belongs to the corner.
52EXPLAIN ITWhy does a corner need its own libraries?
The answer. Because every delay in a library is a table of measurements taken at one process, voltage and temperature point. Changing the conditions makes every entry wrong by an amount that varies with the cell and with where on the table you are reading, so a scaling factor is an approximation. Corners that a project signs off against get characterised libraries.
Underneath. Scaling relations do exist and are used for filling in between characterised points, which is worth acknowledging.
The trap. Believing a corner is a setting you turn rather than a set of files you obtain.
53EXPLAIN ITWhen does a check count as untested?
The answer. Only when it was untested in every scenario. One scenario skipping a path tells you nothing, because that mode may not exercise it. Every scenario skipping it means something is wrong with the constraints.
Underneath. A merged report cannot distinguish those two cases on its own, which is why coverage is examined per scenario.
The trap. Applying the rule per scenario, which produces a very long list of things that are not problems.
54COMPUTE ITFour modes, four PVT corners, two extraction corners, but scan mode runs at only two of the PVT corners and the low-power mode at one. How many scenarios?
The answer. Two full modes at four PVT corners is eight, scan at two is two, low power at one is one, giving eleven mode-corner pairs; each times two extraction corners is twenty-two.
Underneath. The pruning is where the engineering judgement lives, and each pruned combination is a decision somebody should be able to defend.
The trap. Multiplying the full cross product, which gives thirty-two and assumes no judgement was applied.
Stage 12 — Variation and pessimism
55EXPLAIN ITWhat is on-chip variation and why does a corner not cover it?
The answer. A corner describes how the whole die came out. Within one die, process gradients, temperature differences and voltage drop mean two cells close together still differ. A single number per cell per corner cannot express that, so a derating factor is applied on top.
Underneath. The launch and capture sides get different factors so that the assumed arrangement is the worst available for whichever check is running.
The trap. Conflating it with the corner itself, which loses the distinction between die-to-die and within-die.
56EXPLAIN ITWhat is clock reconvergence pessimism and why is removing it safe?
The answer. When two clock paths share a segment, the analysis can give that shared segment a maximum delay for one path and a minimum for the other at the same instant, which is physically impossible. Three things cause it: min/max operating conditions, on-chip-variation derating, and reconvergent clock logic — and the third needs no variation analysis at all, so the pessimism does not go away when derating is switched off. Removing the difference can only increase the reported slack, so a design that was clean without the removal stays clean with it.
Underneath. That last clause is the reason it can be enabled without re-verifying anything, and it is the part interviewers listen for.
The trap. Describing it as making the analysis optimistic.
57EXPLAIN ITWhat does advanced on-chip variation add over a flat derate?
The answer. It makes the factor depend on how many stages the path has, and in some flows on how far apart they are, because variation across many stages partly cancels. A flat factor over-charges deep paths for variation that averages out.
Underneath. The factors come from characterised tables rather than a formula, which is another library delivery.
The trap. Describing it as a more accurate single number. A single number cannot depend on the path.
58COMPUTE ITA shared clock segment is derated to 0.90 and 1.08 of a nominal 0.75. How much pessimism is removed?
The answer. The two derived delays are 0.675 and 0.81, so the difference is 0.135, and that is added back to the required time.
Underneath. Slack can only improve by that amount, never worsen, which is why enabling the removal needs no re-verification.
The trap. Taking the difference of the factors rather than of the resulting delays.
Stage 13 — Signal integrity
59EXPLAIN ITWhat is delta delay and why does it have two signs?
The answer. It is the change in a net's delay caused by a neighbouring net switching through the coupling capacitance between them. A neighbour switching the same way helps the victim and reduces its delay; switching the other way it opposes and increases it.
Underneath. Setup analysis assumes the slowing case and hold analysis the speeding one, so the same pair of wires is assumed to break two different ways.
The trap. Assuming crosstalk only ever slows things down, which leaves hold failures unexplained.
60EXPLAIN ITHow is a noise bump different from a delay effect?
The answer. A noise bump appears on a net that is not switching at all. If it is tall enough and lasts long enough the receiving gate reads it as a real transition and propagates it, which is a functional failure. No amount of timing margin prevents it.
Underneath. The library states how tall a bump of a given width a receiver tolerates, and the check is against that curve.
The trap. Treating it as a small timing error.
61EXPLAIN ITWhy is crosstalk analysis enabled separately rather than always on?
The answer. It costs significant runtime, because determining which nets can switch simultaneously is iterative: changing a net's delay changes when it switches, which changes who it overlaps with. It also needs an extraction that kept the coupling separate, which is a larger parasitic file. Before routing there is nothing to analyse.
Underneath. The second half of that is worth volunteering: reading parasitics without keeping the coupling leaves nothing for the analysis to work with.
The trap. Answering only “it is slow” and missing the data requirement.
62DRAW ITDraw a coupled pair and mark, on the victim, both the faster and the slower outcome.
The answer. Two parallel nets with coupling capacitors between them. On the victim, one trace shifted earlier for a same-direction aggressor and one shifted later for an opposite-direction one, with the isolated case dashed between them.
Underneath. Marking which of the two a setup check assumes and which a hold check assumes completes the answer.
The trap. Drawing only the slowing case, which is the half most people remember.
Stage 14 — Closure, change orders and signoff
63EXPLAIN ITYou have 340 failing setup paths clustered in one region with similar slacks. What do you do first?
The answer. Look for a common cause rather than 340 independent ones. Tightly clustered slacks in one region point at a single shared problem: a clock branch arriving late, a constraint that is wrong, or a floorplan that put two communicating blocks far apart. Sizing cells is the wrong first move.
Underneath. The count and the shape of the distribution are diagnostic information, and most people go straight to the worst path instead.
The trap. Starting with the worst path, which is one of 340 symptoms.
64EXPLAIN ITWhy is setup fixed before hold?
The answer. Because a setup fix can create a hold violation, so hold fixed first would have to be redone. Every implementation tool orders it this way for that reason.
Underneath. Hold is also the easier of the two to fix late, since adding delay is a local change, which is the other half of the argument.
The trap. Presenting it as a convention rather than a consequence.
65EXPLAIN ITWhat does signoff mean beyond a clean report?
The answer. That the clean report is believable. Was every path analysed? Did an exception remove something real? Is any clock still ideal that should not be? Does the whole scenario grid agree, or only one cell of it? Do the implementation and signoff views correlate?
Underneath. Each of those has an owner and a report of its own, and none of them can be answered by the timing report itself.
The trap. Equating signoff with a number, which is the gap the five questions exist to close.
66EXPLAIN ITWhy is a proposed fix not a result?
The answer. Because the tool's estimate does not know everything the change will do. A resized cell changes the load on its driver and may have been moved to fit, and both of those change delays the estimate did not account for. The loop closes only on freshly extracted parasitics.
Underneath. Estimates are still worth having for choosing between options, which is worth saying so the answer does not sound dismissive.
The trap. Treating the estimate as the answer, which is how a closure loop turns into an endless one.
More questions of the same kind, with the follow-ups, live on the STA track at pdverse.net/sta.
Glossary
THE WORDS
45 terms, each defined where it is used. There is no index: this guide is read in order, and a term you half remember is better served by a definition than by a page number.
advanced on-chip variation
Derating whose factor depends on the path's depth, and sometimes its physical span, because variation across many stages partly cancels. Stage 12.
aggressor
The switching net in a coupled pair, which pushes charge onto its neighbour. Which net is the aggressor depends on which is switching. Stage 13.
arrival time
When the data actually reaches a point on the path, accumulated forwards from the launch edge. Stage 3.
capture edge
The clock edge at which the receiving register samples. Stage 3.
cell delay
The delay of one timing arc through one cell, read from a characterised table indexed by input transition and output load. Stage 4.
characterisation
The transistor-level simulation campaign that produces a library's delay tables, done once per corner. Stage 4.
clock groups
A declaration that two clocks are exclusive or asynchronous, so that paths between them are not timed as though they were related. Stage 7.
corner
One named set of physical conditions: a process point, a voltage, a temperature and an extraction assumption. Stage 1, then Stage 11.
coupling capacitance
Capacitance between two neighbouring nets, absent from the netlist and present in extracted parasitics. Stage 13.
CRPR
Clock reconvergence pessimism removal. Gives back the pessimism created by deriving a shared clock segment two ways at once — which min/max operating conditions, derating and reconvergent clock logic can each do on their own. Added to the required time on a setup check, subtracted from it on a hold check. Stage 12.
current-source model
A cell model that describes the driver's output current rather than treating it as a voltage source into a lumped load. Stage 4.
delta delay
The change in a net's delay caused by a neighbour switching through the coupling between them. It has both signs. Stage 13.
derating
Multiplying delays by a factor to account for variation within one die, with different factors on the launch and capture sides. Stage 12.
design rule constraint
A limit on transition time, capacitance or fanout that every pin must respect whatever path it lies on. Stage 6.
distributed multi-scenario analysis
Running many scenarios in parallel worker processes coordinated by a manager. Stage 11.
Elmore delay
A first-moment approximation of wire delay in which each capacitance is weighted by the resistance upstream of it. Stage 5.
endpoint
The data pin of the capturing register, where the check is made. Stage 3.
exception
A statement that some path should not be checked normally: false path, multicycle path, or an absolute delay budget. Stage 9.
extraction
Walking a routed layout to measure each net's resistance and capacitance. Stage 5.
false path
A declaration that a structurally present path is never functionally taken, so it is not timed at all. Stage 9.
generated clock
A clock created inside the design from another clock, declared so that the relationship between the two is preserved. Stage 7.
hold check
The requirement that data must not arrive so early that it overwrites a value the capturing register was still holding. The default single-cycle, same-edge check contains no period term; a half-cycle path, two clocks of different periods and a multicycle hold exception each put one back. Stage 8.
ideal clock
A clock whose latency is asserted rather than computed. Correct before clock tree synthesis. Stage 7.
interpolation
Reading a value between a delay table's entries. Trustworthy inside the table; outside it the tool extrapolates instead. Stage 4.
jitter
Variation in a clock source's own edge positions over time. Stage 7.
latency
The time a clock edge takes to arrive, split into a source part before the definition point and a network part after it. Stage 7.
launch edge
The clock edge that causes the sending register to put a new value on its output. Stage 3.
mode
A configuration of the logic: functional, test, a low-power state. It changes which paths are real. Stage 1.
multicycle path
A declaration that a path is allowed more than one clock cycle. It moves the setup deadline, and the hold check follows to the capture edge before it, so a companion hold multiplier is needed to bring that back. Stage 9.
net delay
The delay contributed by a wire, growing with the square of its length. Stage 5.
noise bump
A disturbance on a net that is not switching, which can be read as a real transition by the gate downstream. Stage 13.
on-chip variation
Differences between cells on the same die at the same corner, caused by gradients in process, temperature and supply. Stage 12.
parasitics
The resistance and capacitance of the wires, estimated before layout and measured after it. Stage 5.
propagated clock
A clock whose latency is computed by walking the real tree. Correct after clock tree synthesis. Stage 7.
required time
The latest the data may arrive at the endpoint and still be captured correctly, worked backwards from the capture edge. Stage 3.
scenario
One mode paired with one corner, together with everything that implies: constraints, libraries and parasitics. Stage 1, then Stage 11.
setup check
The requirement that data arrive before the capture edge by at least the register's setup time. Contains the period. Stage 8.
skew
The difference in clock arrival between registers. It improves one check and worsens the other. Stage 7.
slack
The margin by which a check is met. Required minus arrival for setup, arrival minus required for hold; negative means the check fails either way. Stage 3.
startpoint
The clock pin of the launching register, where the path's time origin sits. Stage 3.
transition time
How quickly a signal moves between its levels. One axis of the delay table, and contagious down a path. Stages 4 and 6.
unateness
Whether a rising input causes a rising output, a falling one, or something that depends on the other inputs. Stage 4.
uncertainty
One number standing in for jitter, uncomputed skew and deliberate margin. Subtracted for setup, added for hold. Stage 7.
victim
The net receiving the disturbance in a coupled pair. Stage 13.
wire-load model
A statistical estimate of a net's parasitics indexed by how many pins it connects, used before a layout exists. Stage 5.
The last word
WHERE THIS ENDS
What the roadmap was for, what it deliberately left out, and what to do on Monday.
Fourteen stages ago this guide claimed that a student who followed them in order would be able to sit a first interview and hold a conversation about any of them. That was the whole goal, and it is a narrower goal than it sounds. Holding a conversation is not the same as closing a block, and nothing in a roadmap can substitute for the first time you have to explain a violation to somebody who is waiting for the answer.
What the guide deliberately did not do is worth naming. It did not document commands, because the tool's own manual pages do that better and are always current. It did not teach a flow, because flows are specific to a company and a technology and change every eighteen months. And it did not pretend that the two awareness-depth stages could be made working knowledge in an evening each.
FIGURE 1 — THE ROADMAP (first printed in The roadmap)
Fourteen stages in four parts, and the order to take them in.
Read it: Read left to right inside a part, then down to the next part. The numbers are the stages, not a difficulty rating. This is not claiming the stages take equal time — Stage 8 alone is worth two of most of the others, and the study plan says which.
What to do next depends on what you have access to. If there is a tool in front of you, constrain a small block yourself and break it deliberately: remove an input delay and see what the coverage check says, leave a clock ideal after the tree is built and watch the skew disappear, add a false path and notice how little the report changes. Deliberate breakage teaches faster than careful correctness, because it shows you what a failure looks like from the inside.
If there is no tool, read somebody else's constraint file. Any real one will do. Find every exception in it and try to justify each in a single sentence. The ones you cannot justify are the ones worth asking about, and asking about them is how the useful conversations start.
There are two tracks on the site that go further than a roadmap can. The STA track at pdverse.net/sta carries the interview questions in depth, and the MMMC track at pdverse.net/mmmc goes into the scenario machinery that Stage 11 could only outline. Both are the natural next step from here.
Where to go next
THE REST OF THE LIBRARY
This guide is one track. These are the others it hands off to, in the order a reader usually wants them.
The STA track — More questions of the kind in the self-test bank, with the follow-ups the cards stop short of.
Constraints — Stage 9 in more depth: what each command asserts, and what the tool does when you leave it out.
MMMC — Stage 11 in more depth: scenarios, distributed analysis and the merged report.
Low power — Power intent, clock gating and multivoltage - the constraints Stage 12 only names.
Signoff academy — Stage 14 as a practice: what has to be true before numbers leave your desk.
Design planning — The floorplan the clock tree in Stage 7 is built into.