文章目录
RTL自动验证
- 背景:c语言通过高层次综合(HLS)综合为相应的硬件RTL语言。再此之前进行了c的仿真,相应的硬件优化,然后下面需要进行c与RTL的协同仿真、RTL仿真及RTL输出
- 执行C仿真,并且将顶层功能或被测设备(DUT)的输入保存为“输入向量”
- 使用由Vivado HLS创建的RTL在RTL模拟中使用“输入向量”。 RTL的输出另存为“输出向量”
- 将RTL仿真中的“输出矢量”应用于综合功能后的C测试台,以验证结果是否正确。 C测试台执行结果验证
在C/RTL协同综合条件
要成功使用C / RTL协同仿真功能,需要满足以下条件:
- 测试台必须进行自我检查,如果测试通过,则返回O值;如果测试失败,则返回非零值
- 必须选择正确的接口综合选项
- 任何第三方模拟器必须能在路径中被找到
- 任何不能被优化指令优化的数组和结构体设计接口都必须在Unsupported Optimizations for Cosimulation中指出
Test Bench的要求
要验证RTL设计产生的结果与原始C代码相同,请使用自检测试台执行验证。下面的代码示例显示了自检测试平台的重要功能:
int main ()
{
int ret=0;
//Execute (DUT) Function
//Write the output results to a file
//Check the results
ret = system("diff --brief -w output.dat output.golden.dat");
if(ret !=0)
{
printf("Test failed !!! \n");
ret = 1;
}
else printf