# Clockless timers Not every design has a clock to wait on. `Delay` advances absolute simulation time on its own, so a combinational or purely time-driven model needs no clock registration at all: ```sh uv run --frozen cpptb build --project examples/timer_only --build-dir build ``` Two independent cadences share one fixed semantic workload and are joined by the registered test: ```cpp constexpr uint32_t kCadenceSamples = 9; Task timer_only_test(Dut dut, TestContext& test) { co_await Join{fast_cadence(dut, test), slow_cadence(dut, test)}; test.expect_eq("timer-only final absolute time", test.now().in_picoseconds(), static_cast(kCadenceSamples) * 11'000u + 1u); } CPPTB_REGISTER_TEST(timer_only_test); ``` Each write is followed by an explicit `Delay{1_ps}` before sampling. The write itself does not advance simulation time. The pure SV peer mirrors `kCadenceSamples = 9` and the same `#1ps` settle points. ```sh make cpp-dpi-timer-only-run make cpp-dpi-timer-only-sv-run ```