practice_templates/basic_03/eda_compile_sim/README.md

基础实践 3-2: EDA 工具编译与仿真实践

📚 知识点

知识点 说明
VCS 编译 vcs 命令行选项、文件列表、编译流程
仿真运行 ./simv 运行参数、日志控制
波形转储 $dumpfile/$dumpvarsfsdb 格式
编译错误定位 语法错误、路径错误、宏定义错误
Makefile 自动化 EDA 流程自动化

🎯 任务目标

任务 1: VCS 基础编译 (20 分)

补全 Makefile 中的编译命令:
- [ ] 正确设置 VCS 编译选项 (sverilog, timescale, UVM)
- [ ] 正确指定文件列表 (-f filelist.f)
- [ ] 正确设置 include 路径
- [ ] 编译成功生成 simv

任务 2: 仿真运行控制 (20 分)

补全仿真运行相关配置:
- [ ] 设置 UVM 测试名称 (+UVM_TESTNAME=xxx)
- [ ] 设置日志输出 (-l sim.log)
- [ ] 设置波形转储 (-ucli -do dump.tcl)
- [ ] 设置超时控制 (+timeout=10000ns)

任务 3: 文件列表编写 (20 分)

补全 filelist.f:
- [ ] 正确列出 RTL 文件路径
- [ ] 正确设置 include 目录 (+incdir+)
- [ ] 正确设置宏定义 (+define+)
- [ ] 理解文件编译顺序

任务 4: 编译错误修复 (20 分)

rtl_with_errors/ 目录下有 3 个包含编译错误的文件:
- [ ] error1.sv — 语法错误 (缺少分号、括号不匹配等)
- [ ] error2.sv — 类型错误 (位宽不匹配、未声明信号)
- [ ] error3.sv — 模块连接错误 (端口名、位宽)

找出并修复所有错误,使编译通过。

任务 5: 仿真结果分析 (20 分)

运行仿真后分析:
- [ ] 从 sim.log 中提取 UVM 报告摘要
- [ ] 分析是否有 UVM_ERRORUVM_FATAL
- [ ] 总结测试 PASS/FAIL 状态
- [ ] 编写简单的日志分析脚本 scripts/analyze_log.sh

📁 文件结构

├── rtl/
│   └── simple_alu.sv            ← 简单 ALU (完整)
├── env/
│   ├── alu_if.sv                ← 接口 (完整)
│   ├── alu_transaction.sv       ← Transaction (完整)
│   ├── alu_driver.sv            ← Driver (完整)
│   ├── alu_monitor.sv           ← Monitor (完整)
│   ├── alu_env.sv               ← 环境 (完整)
│   └── alu_test.sv              ← 测试 (完整)
├── rtl_with_errors/
│   ├── error1.sv                ← ⭐ TODO: 修复语法错误
│   ├── error2.sv                ← ⭐ TODO: 修复类型错误
│   └── error3.sv                ← ⭐ TODO: 修复连接错误
├── scripts/
│   └── analyze_log.sh           ← ⭐ TODO: 补全日志分析脚本
├── filelist.f                   ← ⭐ TODO: 补全文件列表
├── dump.tcl                     ← 波形转储脚本 (完整)
├── Makefile                     ← ⭐ TODO: 补全编译仿真命令
├── top_tb.sv                    ← Testbench 顶层 (完整)
└── README.md

✅ 验收标准

  • 编译成功 (无 Error)
  • 仿真输出 "TEST PASSED"
  • 错误文件全部修复并编译通过
  • 日志分析脚本可正常运行

📝 考核方式

考核项 分值 评估方法
VCS 编译配置正确 20 分 Makefile compile 目标可用
仿真运行控制 20 分 仿真可运行 + 波形输出
文件列表正确 20 分 filelist.f 内容正确
编译错误修复 20 分 3 个错误文件全部修复
日志分析脚本 20 分 脚本可运行 + 输出正确
合计 100 分

通过标准:≥ 60 分

考核流程

  1. 学员演示编译、仿真流程
  2. 检查 Makefile 和 filelist.f
  3. 验证编译错误的修复
  4. 运行日志分析脚本
  5. 提问 VCS 常用选项的含义