7.8 KiB
7.8 KiB
Fall 2026 DV Onboarding Test Plan
NOTE: THIS IS A TEMPLATE FOR YOU TO FOLLOW. THIS IS NOT A COMPREHENSIVE TESTPLAN. YOU NEED TO EXTEND IT.
Document information
| Field | Value |
|---|---|
| Verification engineer | Dylan Benzi, benziboy, dbenzi3 |
| Plan revision | Initial |
| Date | 2026-09-26 |
Revision history
| Revision | Date | Changes |
|---|---|---|
| Initial | 2026-09-26 | Initial planned tests |
| Final | YYYY-MM-DD |
1. Functional tests
Functional-test summary
| Test ID | Test name | Functionality being tested | Expected result | Status |
|---|---|---|---|---|
| 1.1 | test_name |
Planned | ||
| 1.2 | Planned | |||
| 1.3 | Planned |
Functional-test details
1.1 — test_name
Functionality:
Initial state:
- Registers:
- Data memory:
- Other setup:
Program:
prog = '{
// asm_instr(.op(...), .rd(...), .rs1(...), .rs2(...), .imm(...)),
EBREAK_WORD
};
Expected result:
| Register or memory word | Expected value | Calculation or explanation |
|---|---|---|
x__ |
32'h________ |
|
dmem[__] |
32'h________ |
Pass criteria:
Final result:
2. Constrained-random tests
Instruction constraints
| Constraint | Provided, partial, or open | Behavior and purpose | Final implementation summary |
|---|---|---|---|
c_opcode |
Provided | No member change | |
c_reg_bias |
Provided | No member change | |
c_imm_range |
Partial | ||
c_mem_align |
Open | ||
c_imm_unused |
Provided | No member change | |
c_branch_target |
Partial | ||
c_no_branch_at_end |
Provided | No member change | |
c_branch_taken_bias |
Open |
External-port constraints
| Constraint | Provided, partial, or open | Behavior and purpose | Final implementation summary |
|---|---|---|---|
c_align |
Provided | No member change | |
c_valid_window |
Partial | ||
c_reg_read_only |
Provided | No member change | |
c_data_corners |
Open |
Random-program test
| Item | Plan |
|---|---|
| Number of programs per seed | |
| Program-length range | |
| Information logged for reproduction | Numeric SVSEED, iteration, and complete generated program |
Implementation outline:
// Write the intended loop and lifecycle using seqr.gen_program(...).
3. Assertions
Assertion summary
| Assertion ID/name | Behavior checked | When it is sampled/disabled | Activating test |
|---|---|---|---|
4.1 / PROPERTY_NAME |
|||
4.2 / PROPERTY_NAME |
4.1 — PROPERTY_NAME
Timing requirement in words:
PROPERTY_NAME:
assert property (@(posedge clk) disable iff (rst)
/* property expression */)
else assertion_fail("descriptive failure message");
Evidence that it detects a violation:
4.2 — PROPERTY_NAME
Timing requirement in words:
PROPERTY_NAME:
assert property (@(posedge clk) disable iff (rst)
/* property expression */)
else assertion_fail("descriptive failure message");
Evidence that it detects a violation:
4. Encrypted CPU Bug Hunt
Random discovery
| Field | Evidence |
|---|---|
| Discovery command | make bug_hunt SEED=random |
Numeric SVSEED |
|
| Failing iteration | |
| First failure message | |
| Reproduction command | make bug_hunt SEED=________ |
| Reproduces consistently? | Yes / No |
Original failing program:
prog = '{
// Paste original generated sequence
EBREAK_WORD
};
Expected vs. actual
| Instruction / event | Expected | Actual | Cycle/time |
|---|---|---|---|
First architectural divergence:
Minimization
Minimized reproducer:
prog = '{
// Smallest sequence that still fails
EBREAK_WORD
};
Waveform evidence
Include a screenshot showing the offending instruction and the first incorrect architectural result.
Conclusion
Trigger:
Expected behavior:
Observed behavior:
Behavioral characterization: