Skip to main content

chronon::sender::factory::PhasedAutoRegisteredUnit

AutoRegisteredUnit variant with automatic Phase0/Phase1 dispatch. More...

#include <SenderFactory.hpp>

Inherits from chronon::sender::PhasedTickableUnit< Derived >, chronon::sender::TickableUnit, chronon::sender::Unit

Public Functions

Name
PhasedAutoRegisteredUnit(std::string name)

Protected Functions

Name
PhasedAutoRegisteredUnit(std::string name, bool )

Additional inherited members

Public Functions inherited from chronon::sender::PhasedTickableUnit< Derived >

Name
virtual voidtick() override
Per-cycle behavior. Must complete synchronously.
PhasedTickableUnit(std::string name)

Protected Functions inherited from chronon::sender::PhasedTickableUnit< Derived >

Name
template <ValidPhase P>
void
tickPhase()

Public Functions inherited from chronon::sender::TickableUnit

Name
virtual~TickableUnit() =default
virtual voidtick() =0
Per-cycle behavior. Must complete synchronously.
virtual boolisCompleted() const
Return true to signal the simulation can stop.
TickableUnit(std::string name)

Protected Functions inherited from chronon::sender::TickableUnit

Name
template <ValidPhase P>
void
tickPhase()
voidrequestTermination(TerminationReason reason, int32_t exit_code =0, std::string_view message ="")
voidrequestTermination(TerminationReason reason, int32_t exit_code, uint64_t cycle, std::string_view message)
voidrequestExitSyscall(int32_t exit_code)
voidrequestError(std::string_view message)
voidexecuteTickAlwaysActive()
Hot path for units that have not opted into activity scheduling.
voidexecuteTick()
Inlined hot path executed millions of times per second.
voidadvanceIdleTick(uint64_t delta)
Batched inactive-cycle advance used when an entire cluster is idle.

Friends inherited from chronon::sender::TickableUnit

Name
classTickSimulation

Public Functions inherited from chronon::sender::Unit

Name
virtual~Unit() =default
voidwakeAt(uint64_t cycle)
Wake the unit no later than cycle. Safe for cross-thread producers.
boolusesActivityScheduling() const
voiduseFastCycleCounter()
Default mode. Eliminates atomic overhead (~80% of tight-loop time).
voiduseAtomicCycleCounter()
tree::TreeNode *treeNode() const
uint32_ttickInterval() const
UnitStatestate() const
voidsleepUntil(uint64_t cycle)
voidsleepForever()
Disable the tick body until an external wakeAt() or port arrival wakes it.
boolshouldRunTickAt(uint64_t cycle) const
voidsetTreeNode(tree::TreeNode * node, PortDirectory & directory =PortDirectory::instance())
Triggers registration of all pending ports to PortDirectory.
voidsetTickInterval(uint32_t interval)
voidregisterPort(PortBase * port)
voidregisterCyclePreparedPort(PortBase * port)
const std::vector< PortBase * > &ports() const
SimTimephysicalTime() const
Unit &operator=(const Unit & ) =delete
Unit &operator=(Unit && ) =delete
uint64_tnextRunnableCycleAtOrAfter(uint64_t cycle) const
uint64_tnextActiveCycle() const
const std::string &name() const
uint64_tlocalCycle() const
boolisClockEdgeExecuting() const
virtual voidinitialize()
Called after all connections are made, before run() starts.
uint32_tid() const
std::stringfullPath() const
Returns the tree path if a TreeNode is set, else the unit name.
virtual voidfinalize()
voidenableActivityScheduling()
uint8_tcrashNameLen() const
const char *crashName() const
observe::ClockTraceStream *clockTraceStream() const
boolclockTopologyFrozen() const
voidclockEvent(observe::ClockEventKind kind, uint64_t transaction =0, uint64_t value =0)
ClockDomainIdclockDomainId() const
Edge number in this Unit's hardware domain, never a cross-domain timestamp.
const ClockDomain &clockDomain() const
voidaddPendingPortRegistration(std::function< void(const std::string &, PortDirectory &)> registration)
uint64_tactivitySchedulingGeneration() const
boolacceptsPortWakeups() const
Unit(std::string name)
Unit(const Unit & ) =delete
Unit(Unit && ) =delete

Protected Functions inherited from chronon::sender::Unit

Name
voidsetLocalCycle(uint64_t cycle)
voidsetInstanceName_(std::string name)
voidsetId(uint32_t id)
voidprepareCyclePorts_()
uint64_tlocalCycleAtomic() const
voidfinishActiveTick_()
voidbeginActiveTick_()
voidadvanceLocalCycle(uint64_t delta =1)
Fast path: ~0.3ns increment. Slow path (atomic): ~15ns.

Public Attributes inherited from chronon::sender::Unit

Name
uint64_tNEVER_ACTIVE

Friends inherited from chronon::sender::Unit

Name
classTickSimulation

Detailed Description

template <typename Derived >
class chronon::sender::factory::PhasedAutoRegisteredUnit;

AutoRegisteredUnit variant with automatic Phase0/Phase1 dispatch.

For units that combine YAML factory registration with phase-aware pipeline registers. Subclasses implement tickPhase<P>() instead of [tick()](/docs/api/Classes/classchronon_1_1sender_1_1PhasedTickableUnit#function-tick) — dispatch boilerplate is supplied by PhasedTickableUnit.

Public Functions Documentation

function PhasedAutoRegisteredUnit

inline explicit PhasedAutoRegisteredUnit(
std::string name
)

Protected Functions Documentation

function PhasedAutoRegisteredUnit

inline PhasedAutoRegisteredUnit(
std::string name,
bool
)

Updated on 2026-09-20 at 14:23:38 +0000