practice_templates/basic_01/sv_basics/README.md

基础实践 1-3: SystemVerilog 面向对象与验证基础

📚 知识点

知识点 说明
class 类 SV 面向对象编程,封装数据和方法
rand 随机化 rand/randc 关键字 + constraint 约束
继承 extends 类的继承和方法重写
interface 信号接口的封装
assertion (SVA) 即时断言和并发断言

🎯 任务目标

你需要补全 3 个练习:

1. sv/packet_class.sv — 补全数据包类

  • 定义 Packet 类,包含 addr, data, cmd 字段
  • 添加约束:addr 对齐到 4 字节、cmd 合法值范围
  • 实现 display()compare() 方法

2. sv/constraint_exercise.sv — 约束练习

  • 补全各种约束写法
  • 包括范围约束、分布约束、条件约束、数组约束

3. sv/sva_exercise.sv — SVA 断言练习

  • 为一个简单 FIFO 补全断言
  • 检查 overflow、underflow、data integrity

📁 文件结构

├── sv/
│   ├── packet_class.sv         ← ⭐ TODO: 补全数据包类
│   ├── constraint_exercise.sv  ← ⭐ TODO: 补全约束
│   └── sva_exercise.sv         ← ⭐ TODO: 补全断言
├── tb/
│   └── tb_sv_basics.sv         ← 测试平台(完整)
├── Makefile
└── README.md

✅ 验收标准

  • 编译无错误
  • 仿真输出 "ALL TESTS PASSED"
  • 断言在正常情况下不触发,在错误注入时能捕获

📝 考核方式

考核项 分值 说明
Packet 类实现 30 分 字段定义、约束、方法
约束练习 35 分 各类约束写法正确
SVA 断言 35 分 断言逻辑正确,能捕获错误
合计 100 分

通过标准:≥ 70 分