"Modelsim是一款强大的仿真工具,其代码覆盖率功能可以帮助工程师评估设计的测试质量。本文将详细介绍如何在Modelsim中设置和查看代码覆盖率,包括statement、branch、condition、expression、toggle和fsm等不同类型的覆盖率指标。"
在VHDL或Verilog的设计中,代码覆盖率是衡量测试是否充分的重要指标。Modelsim提供了多种覆盖率类型,帮助开发者识别未充分测试的部分,以提升验证的完整性。
1. **代码覆盖率类型**:
- **Statement(语句覆盖率)**:衡量设计中每条语句被执行的程度。
- **Branch(分支覆盖率)**:关注条件语句(如if-else,case等)的各个分支是否都被执行过。
- **Condition(条件覆盖率)**:测量条件表达式的真值表覆盖率,确保所有可能的真值组合都已被测试。
- **Expression(表达式覆盖率)**:追踪复杂表达式的覆盖率,确保它们的每个子表达式都被覆盖。
- **Toggle(信号翻转覆盖率)**:检查设计中信号的翻转情况,以确保信号的所有状态都被测试。
- **FSM(有限状态机覆盖率)**:衡量状态机所有状态是否都已通过至少一次转换到达。
2. **设置编译选项**:
在Modelsim的工作区(Workspace)中,选中要分析的文件,然后右键选择“compile -> compile properties”。在弹出的“Coverage”选项中,勾选需要的覆盖率类型(如上文所述的几种),然后点击“OK”。
3. **编译与仿真**:
使用工具栏中的编译图标进行编译。在仿真阶段,确保不启用优化,并在“Others”选项中选择“Enable code coverage”。
4. **观察结果**:
仿真完成后,代码覆盖率窗口会自动打开。主要有两个关键的观察窗口:
- **Workspace窗口**:在“Files”标签页下,可以看到设计文件的覆盖率汇总统计信息。每个文件的覆盖率情况以百分比形式显示,未达到的覆盖率会被标记出来。
- **Missed Coverage(未覆盖到对象列表窗)**:这个窗口显示未被执行的语句、分支、条件、表达式或未翻转的信号。选择不同的文件,该窗口会更新对应的信息。
通过这些窗口,开发者可以定位未被充分测试的代码部分,进而改进测试向量,提高设计验证的质量。在源代码窗口中,未被执行的语句或分支会被高亮显示,便于快速定位问题。
Modelsim的代码覆盖率功能是系统验证过程中的重要辅助工具,它帮助开发者量化和优化测试覆盖率,确保设计的健壮性和可靠性。正确理解和使用这些功能,能够显著提高设计验证的效率和准确性。