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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 11094|回复: 15

[求助] 关于用Testbench搭建验证环境的问题!?

[复制链接]
发表于 2011-5-18 21:55:41 | 显示全部楼层 |阅读模式

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

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

x
帮我解释一下,如何用Testbench搭建一个验证环境,比如:我现在有DUT的RTL(10个小模块)、BFM(对应着RTL有10个小模块)、Testbench、和Testcase。利用这些文件怎样在Modelsim下对DUT模块进行验证呢?
是不是将DUT(10个小模块)、BFM(对应着RTL有10个小模块)loading到Modelsim进行编译,然后将Testbench loading到Modelsim中编译,最后添加信号开始仿真,再看波形呢??求解!
发表于 2011-5-19 13:04:39 | 显示全部楼层
你是说的SV还是纯粹的hdl?应该需要在仿真的时候指定你的testcase。最好是把你的具体环境描述一下。
 楼主| 发表于 2011-5-19 17:40:49 | 显示全部楼层
回复 2# gaurson


    单纯的verilog写的啊,要用Modelsim进行仿真,整个project有10个RTL模块,对应着10个BFM模块,还有testbench
和testcase,仿真的步骤是怎样的呢?
发表于 2011-5-20 13:28:07 | 显示全部楼层
定义一个最顶层的test-top,把所有的东西都包括起来,然后做连接,这个test_top是一个无端口的module。或者你的testcase就是这个test_top,里面应该包含了testbench,而testbench就是各种bfm和dut的连接关系吧。是不是这样?
发表于 2011-5-21 07:01:03 | 显示全部楼层
如果你已经按4楼说的做好了,那么,你建立一个Projec.f的文件,里面把你所有的文件,包括RTL代码和BFM和验证顶层都放进去,把"-f Project.f"加载进去就OK了,
 楼主| 发表于 2011-5-21 13:48:53 | 显示全部楼层
本帖最后由 ztspac 于 2011-5-21 13:51 编辑





    好像不是的,我的testcase里面是:
INITIAL;                              
   $readmemh("../data/v5.txt",mem);
   ch_msg = $fopen("../log/tc_v5.txt");
   vector_num = 10;
   for(i = 0;i < vector_num;i = i + 1)begin
        CLK_IN(mem[19:4],mem[2],mem[1],mem[0]);
   end
STOP(4000);
这样的code。 怎么回事呢?这是project的文件列表截图:

文件列表

文件列表
发表于 2011-5-21 21:37:17 | 显示全部楼层
哎,你只截了TESTCASE里面最没用的这段,我想看是你的是TESTCASE定义成了PROGRAM还是MODULE,定义成什么名字,比如定义成这样:
program test;
xxx;
xxx;
initial begin
end
endprogram
这样的话,肯定还会有一个文件把你的test和DUT顶层包起来,
那个文件才是最高的顶层。

回到你最开始的问题,我认为,你只要把所有的文件都加载进去,就应该是OK了,
因为看你的截图像是一个DEMO,直接就可以用的。
 楼主| 发表于 2011-5-21 22:52:30 | 显示全部楼层


哎,你只截了TESTCASE里面最没用的这段,我想看是你的是TESTCASE定义成了PROGRAM还是MODULE,定义成什么名字 ...
seeming 发表于 2011-5-21 21:37




    tast.jpg
有三个testcase文件第二个是:
INITIAL;                              
   $readmemh("../data/v5.txt",mem);
   ch_msg = $fopen("../log/tc_v5.txt");
   vector_num = 10;
   for(i = 0;i < vector_num;i = i + 1)begin
        CLK_IN(mem[19:4],mem[2],mem[1],mem[0]);
   end
STOP(4000);

第三个是:
INITIAL;                                //开始count1为000,即时间正常显示
    ch_msg = $fopen("../log/tc_v4.txt");
    CLK_IN(10000,1,0,0);                   //count1变为001,即日期设置,且高两位闪烁
    CLK_IN(4,0,0,0);
    CLK_IN(10000,1,0,0);                    //count1变为010,即时间设置,且高两位闪烁
    CLK_IN(4,0,0,0);
    CLK_IN(10000,1,0,0);                    //count1变为011,即秒表设置,秒表开始记时
    CLK_IN(4,0,0,0);
    CLK_IN(10000,1,0,0);                    //count1变为100,即闹钟设置,且高两位闪烁,低两位灭
    CLK_IN(4,0,0,0);
    CLK_IN(10000,1,0,0);                    //count1变为000,即时间显示,跑完一个循环
    CLK_IN(4,0,0,0);
STOP(1000);
发表于 2011-5-23 10:24:49 | 显示全部楼层
顶!!!!
发表于 2011-5-23 10:27:13 | 显示全部楼层
我顶!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

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

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