一、c/rtl协同仿真
## run all
////////////////////////////////////////////////////////////////////////////////////
// Inter-Transaction Progress: Completed Transaction / Total Transaction
// Intra-Transaction Progress: Measured Latency / Latency Estimation * 100%
//
// RTL Simulation : "Inter-Transaction Progress" ["Intra-Transaction Progress"] @ "Simulation Time"
////////////////////////////////////////////////////////////////////////////////////
// RTL Simulation : 0 / 1 [0.00%] @ "113000"
// RTL Simulation : 10 / 1 [251.00%] @ "311033000"
////////////////////////////////////////////////////////////////////////////////////
上述测试 RTL Simulation : 10 / 1 [251.00%] @ "311033000"
都251.00%了,仿真还没结束,这个是什么问题?
二、上述设计C仿真
1.C仿真是OK的,说明基本逻辑是没有问题的;
2.但是rtl仿真不ok
三、C仿真ok,rtl仿真不ok,仿真迟迟仿真不完成?
1.这个说明了rtl设计和C仿真设计出现了差异,主要是一个顺序执行和并行执行的差异;
2.c仿真只能保证你顺序执行时候的功能是正确的,无法保证你rtl的并行设计的正确性;
3.首先要保证c仿真正确,然后再进行rtl仿真,这个时候如果不正确,大概率就是约束指令和代码逻辑存在问题,这里说的代码逻辑存在问题,指的是并行代码问题。