Skip to main content

chronon::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.
voidexecuteTick()
Inlined hot path executed millions of times per second.
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
voiduseFastCycleCounter()
Default mode. Eliminates atomic overhead (~80% of tight-loop time).
voiduseAtomicCycleCounter()
tree::TreeNode *treeNode() const
UnitStatestate() const
voidsetTreeNode(tree::TreeNode * node)
Triggers registration of all pending ports to PortDirectory.
voidregisterPort(PortBase * port)
const std::vector< PortBase * > &ports() const
Unit &operator=(const Unit & ) =delete
Unit &operator=(Unit && ) =delete
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.
uint8_tcrashNameLen() const
const char *crashName() const
voidaddPendingPortRegistration(std::function< void(const std::string &)> registration)
Unit(std::string name)
Unit(const Unit & ) =delete
Unit(Unit && ) =delete

Protected Functions inherited from chronon::sender::Unit

Name
voidsetState(UnitState state)
voidsetLocalCycle(uint64_t cycle)
voidsetId(uint32_t id)
uint64_tlocalCycleAtomic() const
voidadvanceLocalCycle(uint64_t delta =1)
Fast path: ~0.3ns increment. Slow path (atomic): ~15ns.

Friends inherited from chronon::sender::Unit

Name
classTickSimulation

Detailed Description

template <typename Derived >
class chronon::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> {
SingleStageReg<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-05-26 at 05:42:32 +0000