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

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • RTL Foundations36
  • Combinational Design25
  • Sequential Design27
  • FSM & Control27
  • Timing & Clocking39
    • STA Foundations
    • Setup, Hold and Slack
    • Skew and Variation
    • Timing Exceptions
    • Clock Gating
    • RTL for Timing
    • Clock Architecture
      • Clock-Domain Plan
      • Glitch-Free Clock Mux
      • Generated and Virtual Clocks
      • PLL Lock and Reset Coordination
      • Source-Synchronous Interfaces
      • DVFS Transition Protocol
      • Clock Constraint Examples
  • Reset & CDC34
  • Memory & Buses57
  • Advanced RTL28
  • Senior & Interview76
  • Glossary and Notation
Loading lesson

‹Clock Architecture
  1. Topics
  2. RTL Design
  3. Timing & Clocking
  4. Clock Architecture
  5. Generated and Virtual Clocks

Part 5 · Timing & Clocking · Intermediate

Generated and Virtual Clocks

Describe divided, multiplied, gated, and forwarded clock relationships so STA checks the intended edges.

Why this matters

A toggling register can give a clean divided clock in simulation while every path behind it is unconstrained in STA. Recreate that clock as an unrelated primary clock and the tool loses its edge relationship to the parent.

After this lesson you can: choose between a primary, generated, virtual and forwarded clock, and say what each tells STA about edges.

Clock

Purpose

Typical constraint

Primary

External/root waveform

create_clock

Generated

Derived by a divider (needed); optionally at a mux output to name each source

create_generated_clock from master/source

Virtual

External launch/capture reference with no design pin

create_clock on no object

Forwarded

Clock/strobe sent with data

Generated clock at output port

Primary clocks at ref_clk_i and dbg_clk_i; a generated times-four clock at the PLL output; generated clocks at the mux output, one per source; the ICG propagates without a new clock; generated clocks at the divide-by-four output and at a forwarded clock output port; a virtual clock ext_io_clk stands alone with no pin.
The clock types placed on the worked tree. Only the virtual clock has no object in the design.

Read the chart from the top: each label says which SDC command owns that point.

  • Primary clocks sit on ports where a waveform enters: create_clock.

  • Every box below a primary is generated from it, so STA keeps the edge relationship. The ICG adds no clock at all.

  • The virtual clock stands alone: it describes the external device for input and output delays.

A generated clock preserves phase and frequency relationship to its master. Recreating it as an unrelated primary clock loses that relationship and can cause incorrect cross-domain analysis.

Virtual clocks model the external device for input and output delays without pretending the clock physically enters the block.

In the worked tree, the divide-by-four peripheral clock needs a generated clock. Clocks propagate through ICGs and muxes automatically, so the gated core clock needs no definition of its own; a generated clock at the mux output is optional, used to name each source for exclusivity. The PLL output is defined per the PLL model: create_clock at the PLL output, or a generated clock with -multiply_by. The debug clock is a separate primary source, while the external forwarded-strobe interface uses its own boundary model.

Common pitfall

RTL clock dividers need both functional review and generated-clock constraints. A toggling register may create a clean waveform in simulation while every downstream path remains unconstrained in STA.

Check yourself Why not declare a divide-by-two clock as a new primary clock?

Because STA would lose its edge relationship to the parent. A generated clock tells the tool which parent edges create child edges.

Remember

  • A generated clock keeps the phase and frequency relationship to its master. A divider needs one.

  • Clocks propagate through ICGs and muxes, so a gated clock needs no definition of its own.

  • A virtual clock models the external device for input and output delays with no design pin.

Rule of thumb: every RTL clock divider needs a generated-clock constraint as well as a functional review.

Keep going

  • Interview: run a mock interview on this topic

Related topics

  • STA constraints and IO timing

  • PLL lock and reset coordination

Previous

150 / 350

Next: PLL Lock and Reset Coordination

Up next

Up nextPLL Lock and Reset Coordination

Sign in to save progress

Practice this lessonReport an error

See also

  • Clock-Domain Plan
  • Source-Synchronous Interfaces
  • DVFS Transition Protocol