chop147的个人空间 https://blog.eetop.cn/1468735 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

测试文件答疑【汇总贴】

已有 312 次阅读| 2022-5-26 07:01 |个人分类:FPGA学习汇总贴|系统分类:芯片设计| FPGA

【问题1】这是出了什么问题?din输入的值出问题了?

答:这种情况的错误提示,如果是三态门(inout)管脚例化时,请按如下方法进行:

1.如果是初级入门,可以看测试文件编写、和测试文件模板视频;
2、如果要提高,可以看测试文件训练等资料,里面包括随机数等产生方法;
3、如果更高级的,可以看高级测试技巧的公开课,该课程讲述了高级的测试文件,其主要是自动对比仿真的技巧。



【问题2】
 


 

答:情况1:该问题经常出现在仿真时添加了其他模块辅助仿真。
例如:对于串口接收,我们在编写testbench仿真接收模块时,使用了串口发送模块来产 生测试数据, 而串口发送模块并不包含在Quartus 的RTL逻辑中,因此不会自动参与编译,无法得到仿 真数据库;按键消抖时,设计了一个按键模型,该模型仅用作仿真,也不会被Quartus自动交付给Modelsim编译。
解决方案:需要在设置NativeLink的时候手动添加该文件。如下图可以看到,我们设置时 不仅添加了tb文件,还添加了key_model文件,这样Moselsim才会根据该设置去编译key_model文件。


 情况2:在做前仿真正常,在做后仿真的时候会遇到这个问题,这种情况主要考虑当前的工 程中是否包含了该模块。
例如一个二选一多路器的实验,因为误把testbench文件设置为了工程顶层文件,导致在后仿真时候因为没有对二选一多路器的逻辑内容进行全编译,导致找不到库, 此种情况也出现在对IP核进行仿真测试的时候,例如FIFO、PLL、RAM等。解决方案:记得一定要将被测试的逻辑设置为quartus的工程顶层文件才能进行全编译得到时序网表文件,才能进行正常的后仿真。




【问题3】仿真时如何通过参数例化缩短仿真的时间?

\答:假设设计文件中有一参数TIME_1S=50000000,在仿真时,可以在测试文件中模块例化部分来修改这个参数,如下图所示:top_mdyOneLed模块中的参数TIME_1S在仿真的时候,就会变成100



【问题4】当不符合“波形图规则”,或者对着代码,明明符合条件但就是没有执行的情况。
答:这由于信号的变化沿和时钟上升沿同时有效了。软件有时候会误认为是数据先变化然后时钟才变化,这是不符合实质情况的。解决方法,在测试文件中,产生信号的那个initial里,先加1个单位的延时。 如下图(目标是让en和clk的变化沿有差异):



点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 7

    粉丝
  • 1

    好友
  • 4

    获赞
  • 2

    评论
  • 420

    访问数
关闭

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

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

GMT+8, 2024-5-2 08:43 , Processed in 0.028957 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部