在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4117|回复: 6

[求助] NC和VCS在编译时出现不同的结果

[复制链接]
发表于 2013-8-18 17:22:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x





  1. `timescale 1ns/10ps

  2. program test_dis(input [7:0] data);
  3. initial
  4.    $display("@%0t, PROGRAM : data = %d", $time, data);
  5. endprogram

  6. module tb();
  7.   reg [7:0] data;
  8.   reg clk;

  9. initial
  10.   begin
  11.     #0  clk = 0;
  12.         data = 0;
  13.     #20 $stop;
  14.   end

  15. always #5 clk = ~clk;

  16. always @ (negedge clk)
  17. begin
  18.   data <= $random%128;
  19.   $display("@%0t, DISPLAY : data = %d", $time, data);
  20. end

  21. test_dis u1(data);

  22. endmodule



复制代码

代码如上,利用NC编译,可以得到相应的结果:(PS:如何让仿真时间不在0时刻停止呢?为什么会隐形调用finish呢?)

nc.png


但是利用VCS编译的时候,会有如下error:
vcs.png
发表于 2013-8-18 18:07:27 | 显示全部楼层
只能说明,VCS的语法检查更严格。尽管仿真结果都非预期。
用 program test_dis(input bit[7:0] data); 试试?
 楼主| 发表于 2013-8-18 21:37:40 | 显示全部楼层




   一样的有误。logic一样的会报错。
发表于 2013-8-19 15:37:06 | 显示全部楼层
本帖最后由 tbb2009 于 2013-8-19 15:40 编辑


一样的有误。logic一样的会报错。
sages 发表于 2013-8-18 21:37




    Sorry, I did not see your code carefully before. Yes, SV does supports default bit argument declaration

  And I also checked your code again, it should not be any difference with IRUN and VCS. Actually, it is proved in my site.

The reason why your code did not run is that you used PROGRAM structure but you did not put any timing procedure inside it. The whole testbench will finish after the last initial block of PROGRAM is run. So it means you code will always be done at #0. If you put the code #20 stop inside the initial block of PROGRAM. You problem can be resolved.
发表于 2013-8-19 17:06:00 | 显示全部楼层
工具不同,选项也不一样!如果纯粹为了检查语法及综合性,最好用专门的工具!VCS 和 NC只是一个simulator而已!
 楼主| 发表于 2013-8-19 19:17:19 | 显示全部楼层


Sorry, I did not see your code carefully before. Yes, SV does supports default bit argumen ...
tbb2009 发表于 2013-8-19 15:37




   是的,今天我也发现了这个原因。软件和硬件的描述思维方式确实不一样啊
发表于 2013-8-22 23:08:42 | 显示全部楼层


是的,今天我也发现了这个原因。软件和硬件的描述思维方式确实不一样啊
sages 发表于 2013-8-19 19:17



systemverilog中,program为主进程,当program执行完毕时,会自动finish。你在0ps停止仿真,是因为你program中的initial中,只有1个display它结束你的仿真就结束了。
你vcs用的什么版本的?不同版本的仿真器或者不同的仿真器,对sv的语法结构实现的程度和认可度是不一样的,不能因为这个就说什么仿真器语法检查更为严格。我在vcs2012.09的手册中,看到如下结构:

fa

fa


说明vcs是完全支持这个结构的。

拿ius9.2来说,它还无法支持program带有lifetime参数呢,你能说它语法检查更严格吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-20 00:33 , Processed in 0.023824 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表