Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutRoadmapCareersInternshipsFAQContactPrivacyTerms
Skip to lesson

Course contents

  • Logic Synthesis Glossary
  • Logic Synthesis Cheatsheet
  • Synthesis Foundations14
  • Logic Optimisation and Mapping20
  • Constraints and Timing15
    • SDC for Synthesis
    • Delay Models and Slack
      • Arrival, Required Time and Slack
      • Setup, Hold and Clock-to-Q
      • Cell Delay Models
      • Wire Delay at Synthesis Time
      • A Static Timing Calculator
    • Timing-Driven Synthesis
  • Sequential, FSM and Memory19
  • Datapath Synthesis14
  • Area, Power and Test14
  • Verification, ECO and Handoff15
  • Flows and Debugging15
  • Interview and Judgment11
Loading lesson

←Constraints and Timing
  1. Topics
  2. Logic Synthesis
  3. Constraints and Timing
  4. Delay Models and Slack

Part 3 of 9Part 3 of 9/Constraints and TimingIntermediate

Delay Models and Slack

Arrival, required time, slack, and the critical path over a cell DAG.

  • 5topics
  • 5lessons

Slack is the one number that says whether a clock is fast enough, and every later timing argument spends it. Without a shared path to spend it on, each lesson's numbers float free.

After this lesson you can: trace arrival, required time and slack along one recorded flop-to-flop path, and predict which lesson moves when a table, a load or a cover changes.

Synthesis scores every timing path with two numbers: when the signal arrives and when it is required. Their difference is the slack, and the path with the worst slack is the critical path. This topic hangs all five lessons on one running example so the numbers stay comparable across pages.

The example is a small block called vipexp: a launching flop, four combinational stages (NAND2, then NOR2, then XOR2, then XNOR2), and a capturing flop, with one tap output per stage. The taps exist for one honest reason: without them ABC would merge the chain into fewer cells, and the four-stage path the lessons price would disappear. Every lesson maps the same RTL against the teaching library course.lib with the same output load, so a number learnt on one page still holds on the next.

Term

Meaning

Arrival time

When the signal actually reaches a point, adding clock-to-Q, cell and net delays along the path.

Required time

When the signal must reach a point, set by the capturing clock edge minus margins.

Slack

Required minus arrival. Positive means margin; negative means the path fails.

Critical path

The path with the worst (smallest) slack. It sets the maximum speed of the block.

Cell delay

Delay through a gate, read from the library delay tables for the stage slew and load.

Net delay

Delay along a wire, estimated at synthesis time and known only after layout.

How arrival, required time, slack and the critical path relate.
Arrival and required time give slack; the worst slack names the critical path.

Lesson

What it covers

Arrival, Required Time and Slack

Arrival, required and slack on the shared path, with the recorded ABC delay.

Setup, Hold and Clock-to-Q

Launch and capture edges, setup and hold checks, and a worked pair.

Cell Delay Models

Table versus linear cell models at the same loads, with the fit error charted.

Wire Delay at Synthesis Time

The same path under two output loads, and what a wire estimate hides.

A Static Timing Calculator

A runnable Python calculator over the recorded path, checked against ABC.

Check yourself Arrival is 0.78 ns and required time is 0.94 ns. What is the slack, and does the path meet timing?

Slack is 0.94 minus 0.78, which is plus 0.16 ns. Positive slack means the path meets timing with margin to spare.

Why does every lesson reuse the same vipexp block?

Weak: so the numbers match across pages. Strong: the taps pin all four stages in the recorded cover, so the ABC combinational delay names the same circuit on every page; without shared loads a stage delay learnt on one page would not apply on the next. Follow-up: the load quadruples. What breaks first?

Answer: the cover: ABC inserts one BUF per stage, the recorded arrival roughly doubles, and any model of the old cover goes stale.

  • Slack is required minus arrival on a stated path: positive meets, negative fails by that magnitude.

  • One running example (launch flop, NAND2, NOR2, XOR2, XNOR2, capture flop, one tap per stage) carries every lesson, so arrivals, tables and loads stay comparable.

  • Recorded ABC numbers are the verdict on a cover; hand-derived model numbers are labelled model wherever they appear.

Rule of thumb: name the path and the load before quoting any arrival.

How this was checked

The hub runs nothing; its diagram sketches the lesson structure. The evidence for each claim sits on the five lesson pages, each recorded with Yosys and ABC through the course checker (scripts/tools/run-rtl-testbenches.mjs with COURSE=synth).

  • Interview: run a mock interview on this topic

PreviousNext: Arrival, Required Time and Slack

Up next

Up nextArrival, Required Time and Slack

Sign in to save progress

Practice this lessonPrevious lessonReport an error

See also

  • SDC for Synthesis
  • Timing-Driven Synthesis