Skip to main content

chronon::sender::PhasedTickableUnit

More...

#include <PhasedTickableUnit.hpp>

Inherits from chronon::sender::TickableUnit, chronon::sender::Unit

Inherited by chronon::sender::factory::PhasedAutoRegisteredUnit< Derived >

Public Functions

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

Protected Functions

Name
template <ValidPhase P>
void
tickPhase()

Additional inherited members

Public Functions inherited from chronon::sender::TickableUnit

Name
virtual~TickableUnit() =default
virtual boolisCompleted() const
Return true to signal the simulation can stop.
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.
TickableUnit(std::string name)

Protected Functions inherited from chronon::sender::TickableUnit

Name
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)

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)
Triggers registration of all pending ports to PortDirectory.
voidsetTickInterval(uint32_t interval)
voidregisterPort(PortBase * port)
const std::vector< PortBase * > &ports() 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
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()
Called after run() completes or simulation is stopped.
voidenableActivityScheduling()
uint8_tcrashNameLen() const
const char *crashName() const
voidaddPendingPortRegistration(std::function< void(const std::string &)> registration)
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)
voidsetId(uint32_t id)
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::PhasedTickableUnit;

CRTP base for units using phase-aware pipeline registers.

Eliminates the boilerplate phase-dispatch code. Override tickPhase

() instead of tick().

class MyUnit : public PhasedTickableUnit<MyUnit> {
StageReg<Data> reg_;
public:
MyUnit() : PhasedTickableUnit("my_unit") {}
template<ValidPhase P>
void tickPhase() {
if (reg_.valid<P>()) process(reg_.get<P>());
reg_.set<P>(new_data);
}
};

Public Functions Documentation

function tick

inline virtual void tick() override

Per-cycle behavior. Must complete synchronously.

Reimplements: chronon::sender::TickableUnit::tick

function PhasedTickableUnit

inline explicit PhasedTickableUnit(
std::string name
)

Protected Functions Documentation

function tickPhase

template <ValidPhase P>
inline void tickPhase()

Updated on 2026-07-06 at 09:03:33 +0000