Pipeline Registers
Chronon provides stage-level pipeline register abstractions for tick-based units.
Quick Selection
| Type | Entries | Best For |
|---|---|---|
StageReg<T, N> | N parallel pipes | Superscalar pipeline stages (e.g., 4-wide addr/data pipes) |
SingleStageReg<T> | 1 | Single-entry stages (fill pipeline, snoop pipeline) |
StagePipeline<S...> | Group | Batch 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 registerPipelineRegMulti<T, N>— manual tick-based multi-entry registerPipelineControl—PipelineStallControllerandPipelineFlushControllerTrackedPipelineReg<T>/TrackedPipelineRegArray<T, N>— write-tracking wrapperspipeline_tick(),pipeline_reset(),pipeline_tick_with_stall()— helper functions
Related Docs
- Stage Registers — full
StageReg/SingleStageRegAPI and forwarding helpers - Units and Simulation —
TickableUnitand phase dispatch - API Reference — full API listing
- Changelog — breaking changes and migration notes