在UVM环境怎么检查RTL中间信号(小白视角)

Q:在UVM环境中,怎么判断RTL输出没问题的?

A:相同激励发送到RTL和参考模型两端,然后通过monitor观测RTL接口上的输出信号,传到UVM的Scoreboard中,和参考模型(C_model)的输出结果对比,如果对比一致,则判定RTL输出没有问题。

在UVM环境中,我们通常是检查RTL接口信号的正确性。在验证过程中,某些特殊配置情况下,最终的输出信号是对的,但该信号输出前的中间信号是错的。

所以,想要把部分RTL的中间信号也使用scoreboard做对比,这是验证要求,怎么实现呢?

有几个问题:

Q1)UVM平台和RTL是通过Interface接口连接的,中间信号没有在接口上,怎么拿到这些中间信号?

Q2)怎么把中间信号传到Scoreboard中?

Q3)可以通过打印文件来对比吗?

问题分析&回答

A1:不用接口的话,UVM平台怎么和接口连接?这是拿到这个需求的时候最疑惑的问题

        因为在UVM学习过程中,有一个概念,想要把UVM平台和RTL连接起来的话,必须要定义Interface接口,然后通过config_db把Interface传到uvm_test_top,再传到env,然后实例化Interface后驱动/观测接口中的信号。

        中间信号不在接口上,也不能为了验证,让设计在RTL上加接口,那怎么才能拿到这些中间信号,其实在《UVM实战》上引出Interface接口之前,也调用RTL输出信号,方法就是使用绝对路径,在top层会实例化RTL的hdl_top模块,直接在top层写绝对路径调用RTL中的信号就好了。

例如,hdl_top.i_ctrl.i_cal.test_out  //通过绝对路径调用test_out信号

在top层定义一个信号a;

logic a;

assign a = hdl_top.i_ctrl.i_cal.test_out;

这样就把RTL中的中间信号传到了top层的a信号上。

其实是最原始的做法,但是因为学UVM过程中思路僵化了,觉得不用接口就不能连接平台和RTL了。

回头想想最开始为什么要引入Interface?因为在top层是实例化了RTL的顶层hdl_top和验证平台的顶层hvl_top,两个顶层是相同层级,是为了防止接口信息变化,RTL绝对路径变化时导致需要重复修改的情况,引入了Interface接口,有修改的话只要改接口文件就好,增强了可移植性。

在该需求中,是额外的验证需要,且不能把中间信号放到RTL接口上,就只能通过绝对路径拿到需要检查的中间信号。

A2:拿到中间信号后,怎么把中间信号传导scoreboard对比呢?

对于接口上的输出信号,我们是通过config_db把Interface传到平台中

那我们可以通过config_dbb把信号传到平台中吗?

可以的,config_db是啥,configration database,配置数据库啊,他干的就是传送数据的工作。

具体用法可以参考我的另一篇文章《UVM验证架构——1)TOP》

那我们要一个个的把中间信号传到平台中吗?

可以,但是麻烦了,我们还是把所有信号都定义到一个Interface文件中,然后传输这个包含中间信号的接口文件更简洁一点,在内部需要观测中间信号的时候,通过Interface调用具体的信号就可以了。

Interface传到env层后,要写一个monitor类来采集有效期间的中间信号,采集到的有效信号通过ap.write写到fifo中,然后在env层 mon.ap.connect(scoareboard.mon_fifo.analysis_export),至此中间信号就连接到scoareboard了。

 A3:可以通过打印文件来对比吗?

可以 ,但是我领导不让。。

直接在top层拿到RTL的中间信号后,按照在有效期间打印中间信号到文件中,参考模型中也按照相同格式打印中间信号到文件中,这个最简单的。

但是。

需要手动对比打印文件,(也可以仿真结束后自动执行脚本来自动对比)

而且要仿真结束后打印文件生成了才能对比。

对比不过的话,定位也比较麻烦,

而且如果都这么对比的话,那还要scoareboard干啥。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值