1.什么是Test Bench
1. 是一个虚拟的环境
2. 用于验证所设计模型的正确性
3. 用于验证构建的C++函数正确性,即 csim
4. 用于验证RTL设计的正确性,即C/RTL Cosimulation
5. 其用C++语言描述
2. Test Bench的构成
1. Driver / Stimulus: 输入激励
2. Reference Modell: 参考模型(一般作为黄金参考值,即认为该模型为基准)
3. DUT: 待测模型(需要综合的C函数)
4. Monitor: 监视器(非必须)
5. Scoreboard: 将参考模型和待测模型结果进行对比
3. 什么是高效的Test Bench
1. 增加测试的多样性:用于合成的顶层函数是为多个事务执行的
2. 将函数输出与已知的良好值进行比较
3. main()函数的返回值被约定为: 0: 结果正确 非0:结果不正确
4. Test Bench实例
注:左上角是待测模型的.cpp文件; 另外一个是Test Bench的.cpp文件
5. Test Bench 测试激励
(1)测试激励的源
1. 直接定义和初始化变量作为激励
2. 将数据存储在一个数组中作为激励
3. 从外部文件读取数据作为激励
(2)实例:用数组作为激励
(3)实例:从外部文件读取数据作为测试激励
6. Test Bench Scoreboard
(1) 两种比较方式
(2) 将数据写入外部文件
(3) 输出格式的控制
输出格式: setw 、left 、right 、internal
对定点数的输出进行控制
对符点数的输出进行控制
小结
1. 使用system()去比较DUT的输出与黄金值
2. 通过控制输出格式,可以得到更多的有用信息
3. 一般,to_string() 比dec、oct 等更有效和更容易