Files
magnus919_agent-skills/fpga-development/templates/rtl-contract.md
T
Magnus HedemarkandGitHub f605e807f3 feat(fpga-development): add design and verification methodology (#512)
* feat(fpga-development): add design and verification methodology

* feat(fpga-development): integrate electronics verification routing
2026-09-14 18:37:01 -04:00

45 lines
1.5 KiB
Markdown

# RTL module contract and review
## Intent
- Module and purpose:
- Invariants:
- Clock/reset ownership:
- Input legal domain and illegal-input behavior:
## Interface
| Signal | Width/signedness | Clock domain | Meaning | Stability/handshake |
|---|---|---|---|---|
| | | | | |
- Latency:
- Throughput:
- Backpressure / loss policy:
- Overflow, saturation, rounding, and truncation policy:
- Fixed-point format, binary point, intermediate ranges, explicit casts:
## Synthesis hypothesis
- Expected LUT/FF/BRAM/DSP/PLL resources:
- Expected inferred structure:
- Simulation-only constructs excluded:
- Vendor-specific constructs and portability boundary:
- Parameter legality checks:
## Evidence and disposition
- Lint command/version/result:
- Elaboration command/version/result:
- Synthesis warnings and disposition:
- Resource report:
- Changes required before simulation or implementation:
## Review instructions
For each arithmetic expression record operand widths before evaluation, result width, cast point, rounding, and overflow policy. For each process record sensitivity/clock, reset behavior, assignment style, and driver owner. Compare the hypothesis with elaboration and synthesis reports. Treat a changed latency or inferred memory shape as an interface change.
## Example decision
`HOLD`: synthesis infers a latch for `data_valid`, while the contract requires a one-cycle registered pulse. Add complete combinational assignments or redesign the register boundary, then rerun lint and synthesis.