对比VCS和Xcelium仿真出现了令人费解的现象,请大神们帮忙,感谢!
时间:03-15
整理:3721RD
点击:
同一套代码,如下仿真方式:
1、VCS -debug_pp或debug_access,6分钟左右仿完,生成的fsdb尺寸1.1GB左右;
2、VCS 不加debug选项,将近20分钟仿完,生成的fsdb尺寸有3.8GB左右;
3、xcelium单核或多核,20多分钟仿完,生成的fsdb或shm有将近8GB;
上述1和2的波形里面信号内容都一样,只是1的波形打开、放大和缩小要慢一些(难道尺寸小用了什么特别的压缩算法?debug选项还能控制这个?)重点是3的波形居然少了2ms左右,仿真时间最长、波形数据最大,居然少数据?这个是什么原因,晕了,求大神们帮忙,多谢!系统是VMware下的Centos7。
1、VCS -debug_pp或debug_access,6分钟左右仿完,生成的fsdb尺寸1.1GB左右;
2、VCS 不加debug选项,将近20分钟仿完,生成的fsdb尺寸有3.8GB左右;
3、xcelium单核或多核,20多分钟仿完,生成的fsdb或shm有将近8GB;
上述1和2的波形里面信号内容都一样,只是1的波形打开、放大和缩小要慢一些(难道尺寸小用了什么特别的压缩算法?debug选项还能控制这个?)重点是3的波形居然少了2ms左右,仿真时间最长、波形数据最大,居然少数据?这个是什么原因,晕了,求大神们帮忙,多谢!系统是VMware下的Centos7。
vmware虚拟机都没有任何代表性,单机跑完再来比
重新跑一下吧
always@(*)
begin
if(C1) A = 1;
else if((C2 | C3)) A = 0;
else A <= A_reg;
end
always@(posedge clk)
begin
if(~RST_n) begin
A_reg <= 0;
end
else A_reg <=A;
end
初步找到不一样的原因了,就是上边一段代码两个仿真结果不一样,C1=1的时候,A=1,A_reg应该晚一个周期为1,vcs是这样的,但是xcelium两个信号同时变化,之后一直这样,导致了整个仿真持续的时间不同; C1是testbench里面@(posedge clk); C1=1;这样给的,怀疑是这个地方有问题。
服务器上跑了vcs,OS是CENTOS7,-debug_access比不加要仿真速度快,且fsdb波形文件尺寸小很多。现象是仿真速度和波形文件尺寸有关,但就是不理解为啥加了debug选项反而会仿真速度快呢?文档上是说加debug会拖慢仿真速度
全部在服务器上试了一下,VCS不管加不加debug选项,仿真时间都是5分钟多些,Xcelium的多核版本仿真时间17分钟,但核版本15分钟。不知道是不是我的用法不对
这个结果很有意思
这代码写得有问题,存在race,不同版本或不同的仿真工具结果都可能不一样
嗯,你是说A输出存在race? 用的是A_REG信号,A输出寄存成这个信号了
怎么破解的啊?我有最新的软件,跑不起来