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 分