Covers first: does the environment work?
Before asserting anything, ask the tool to show you that the timer can do its job. Each cover is a question of the form "can this happen?" and the answer comes with a waveform.
// ---------------------------------------------------------------- covers
c_running: cover property (running);
c_irq: cover property (irq);
c_two_irqs: cover property (irq ##[1:$] irq); // periodic, not one-shot
c_stop_hold: cover property (running && stop ##1 running && stop);
c_reload_while_running: cover property (running && load);Expected results:
| Cover | Expected | Shortest trace |
|---|---|---|
c_running | covered | reset, load period ≥ 2 → running one cycle later |
c_irq | covered | load period 2 → count 2, 1 → irq (about 4 cycles from reset) |
c_two_irqs | covered | the second irq exactly one period after the first |
c_stop_hold | covered | stop held for two cycles while running |
c_reload_while_running | covered | software restarts the timer mid-period |