Skip to main content

Pipeline Registers

Chronon provides stage-level pipeline register abstractions for tick-based units.

Quick Selection

TypeEntriesBest For
StageReg<T, N>N parallel pipesSuperscalar pipeline stages (e.g., 4-wide addr/data pipes)
SingleStageReg<T>1Single-entry stages (fill pipeline, snoop pipeline)
StagePipeline<S...>GroupBatch beginCycle / flushIf / reset across multiple stages

See Stage Registers for the full API documentation, examples, and forwarding helpers.


Internal Implementation

StageReg and SingleStageReg use two-slot ping-pong buffers internally. The phase template parameter (Phase0 / Phase1) selects read/write slots at compile time, eliminating pointer indirection.


Removed Types (2026-03)

The following types were removed after the migration to StageReg / SingleStageReg:

  • PipelineReg<T> — manual tick-based single-entry register
  • PipelineRegMulti<T, N> — manual tick-based multi-entry register
  • PipelineControlPipelineStallController and PipelineFlushController
  • TrackedPipelineReg<T> / TrackedPipelineRegArray<T, N> — write-tracking wrappers
  • pipeline_tick(), pipeline_reset(), pipeline_tick_with_stall() — helper functions