Checker Reference¶
All 55 OVL 2.8.1 checkers, A–Z. Every checker also takes the shared parameters in
Shared Parameters and Ports and drives the 3-bit fire output described there.
Only the parameters specific to each checker are listed here.
Defaults named OVL_* are Verilog macros from std_ovl/std_ovl_defines.h
(used with a leading backtick in Verilog); the value they resolve to is shown after the arrow.
Status key: whether the checker has plain-Verilog logic that runs on Icarus
(-DOVL_VERILOG), and whether AsFigo has pass/fail tests for it in af_tests/.
ovl_always¶
test_expr must be true at every active clock edge.
Status: Upstream Verilog logic, pass/fail tested
Parameters: shared parameters only.
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
output |
|
ovl_always_on_edge¶
test_expr must be true whenever sampling_event shows the edge selected by edge_type.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
output |
|
ovl_arbiter¶
Grants on gnts must follow requests on reqs under the selected arbitration rule, priority and latency limits.
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
input |
|
|
output |
|
ovl_bits¶
The number of asserted (or deasserted) bits in test_expr must stay within [min, max].
Status: AsFigo Icarus logic, pass/fail tested (see AsFigo-Enhanced Checkers)
Name |
Default |
|---|---|
|
|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_change¶
After start_event, test_expr must change within num_cks cycles.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_code_distance¶
When test_expr1 changes, its Hamming distance to test_expr2 must be within [min, max].
Status: AsFigo Icarus logic, pass/fail tested (see AsFigo-Enhanced Checkers)
Name |
Default |
|---|---|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
output |
|
ovl_coverage¶
Reports when test_expr is true. This is a coverage point, not a design rule.
Status: AsFigo Icarus logic, pass/fail tested (see AsFigo-Enhanced Checkers)
Parameters: shared parameters only.
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
output |
|
ovl_crc¶
The checker computes a CRC over test_expr while valid is high, restarting on initialize. When compare is asserted, the value on crc must match.
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
1 |
|
output |
|
ovl_cycle_sequence¶
The bits of event_sequence must occur on consecutive cycles. necessary_condition sets what starts the check: the first bit, or all bits except the last (the default).
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_decrement¶
When test_expr changes, it must decrease by exactly value.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_delta¶
When test_expr changes, the size of the change must be within [min, max].
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_even_parity¶
test_expr must have an even number of 1 bits.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_fifo¶
FIFO enqueue/dequeue rules: no overflow or underflow, correct full/empty flags, and optional data checks.
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
1 |
|
input |
|
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_fifo_index¶
The FIFO fill level tracked from push/pop must never exceed depth or drop below zero.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
output |
|
ovl_frame¶
After start_event, test_expr must become true no earlier than min_cks and no later than max_cks cycles.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
output |
|
ovl_handshake¶
req/ack handshake: no ack without req, no new req while one is pending, and ack within [min_ack_cycle, max_ack_cycle]. Optional rules cover req staying high until ack (req_drop), req dropping after ack (deassert_count), and maximum ack length (max_ack_length).
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
|
|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
output |
|
ovl_hold_value¶
When test_expr equals value, it must keep that value for a number of cycles within [min, max].
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
output |
|
ovl_implication¶
Whenever antecedent_expr is true, consequent_expr must be true in the same cycle.
Status: Upstream Verilog logic, not yet tested
Parameters: shared parameters only.
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
output |
|
ovl_increment¶
When test_expr changes, it must increase by exactly value.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_memory_async¶
Address-range, initialisation and read/write rules for an asynchronous memory.
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
input |
1 |
|
input |
|
|
input |
|
|
input |
1 |
|
input |
|
|
input |
|
|
output |
|
ovl_memory_sync¶
Address-range, initialisation, conflict and read/write rules for a synchronous memory with separate read and write clocks.
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
output |
|
ovl_multiport_fifo¶
FIFO rules for a FIFO with several enqueue and dequeue ports.
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
input |
|
|
input |
|
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_mutex¶
At most one bit of test_expr may be asserted (or deasserted, with invert_mode).
Status: AsFigo Icarus logic, pass/fail tested (see AsFigo-Enhanced Checkers)
Name |
Default |
|---|---|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_never¶
test_expr must never be true at an active clock edge.
Status: Upstream Verilog logic, pass/fail tested
Parameters: shared parameters only.
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
output |
|
ovl_never_unknown¶
When qualifier is true, test_expr must not contain X or Z.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_never_unknown_async¶
test_expr must never contain X or Z; checked without a clock.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_next¶
num_cks cycles after start_event, test_expr must be true.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
output |
|
ovl_next_state¶
When test_expr equals curr_state, it must move to one of the next_state values, within the hold limits.
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
input |
|
|
output |
|
ovl_no_contention¶
Shared bus with num_drivers drivers: at most one bit of driver_enables high at a time, no X or Z on test_expr while a driver is enabled, and between min_quiet and max_quiet idle cycles when the bus changes driver.
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
output |
|
ovl_no_overflow¶
A counter on test_expr must not go past max.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_no_transition¶
When test_expr equals start_state, it must not change to next_state.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
input |
|
|
output |
|
ovl_no_underflow¶
A counter on test_expr must not go below min.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_odd_parity¶
test_expr must have an odd number of 1 bits.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_one_cold¶
Exactly one bit of test_expr must be 0; inactive sets whether an all-0 or all-1 value is also allowed.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_one_hot¶
Exactly one bit of test_expr must be 1.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_proposition¶
test_expr must always be true; checked combinationally, without a clock.
Status: Upstream Verilog logic, not yet tested
Parameters: shared parameters only.
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
output |
|
ovl_quiescent_state¶
When sample_event occurs, state_expr must equal check_value.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
input |
1 |
|
output |
|
ovl_range¶
test_expr must be within [min, max].
Status: Upstream Verilog logic, pass/fail tested
Name |
Default |
|---|---|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_reg_loaded¶
After start_event, dest_expr must be loaded with src_expr within the window set by start_count/end_count or end_event.
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
output |
|
ovl_req_ack_unique¶
Each req must get exactly one ack within [min_cks, max_cks] cycles.
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
output |
|
ovl_req_requires¶
A request started by req_trigger must be followed by req_follower, then the resp_leader/resp_trigger response.
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
output |
|
ovl_stack¶
Stack push/pop rules: no overflow or underflow, correct full/empty flags, latency and data checks.
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
1 |
|
input |
|
|
input |
1 |
|
input |
1 |
|
output |
|
ovl_time¶
After start_event, test_expr must stay true for num_cks cycles.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
output |
|
ovl_transition¶
When test_expr leaves start_state, it must move to next_state.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
input |
|
|
output |
|
ovl_unchange¶
After start_event, test_expr must not change for num_cks cycles.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|
ovl_valid_id¶
Each returned_id must match an outstanding issued_id and return within [min_cks, max_cks], with flush and instance-count limits.
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
1 |
|
input |
|
|
input |
1 |
|
input |
|
|
input |
|
|
output |
|
ovl_value¶
test_expr must match one of the values in vals (or, with disallow, must not match any of them).
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
input |
1 |
|
output |
|
ovl_value_coverage¶
Coverage of the values test_expr takes, leaving out the values in is_not.
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
output |
|
ovl_width¶
When test_expr goes true, it must stay true for between min_cks and max_cks cycles.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
output |
|
ovl_win_change¶
Between start_event and end_event, test_expr must change.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
1 |
|
output |
|
ovl_win_unchange¶
Between start_event and end_event, test_expr must not change.
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
1 |
|
output |
|
ovl_window¶
Between start_event and end_event, test_expr must stay true.
Status: Upstream Verilog logic, not yet tested
Parameters: shared parameters only.
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
output |
|
ovl_xproduct_bit_coverage¶
Cross-product coverage of the bits of test_expr1 and test_expr2.
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
output |
|
ovl_xproduct_value_coverage¶
Cross-product coverage of the values of test_expr1 and test_expr2.
Status: No plain-Verilog logic yet: elaborates on Icarus but never fires
Name |
Default |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
input |
|
|
input |
|
|
input |
|
|
output |
|
ovl_zero_one_hot¶
At most one bit of test_expr may be 1 (all-0 is allowed).
Status: Upstream Verilog logic, not yet tested
Name |
Default |
|---|---|
|
|
Name |
Direction |
Width |
|---|---|---|
|
input |
1 |
|
input |
1 |
|
input |
1 |
|
input |
|
|
output |
|