搭建验证环境总结
1、验证框架
1)仿真的代码文件一定是自己目录下的库上的文件
2、reference model
1)在算法中,要保证sat&round的一致,有无符合数,是否饱和,是否关于原点对称。在无符号数和有符号数同时参与运算时,建议将无符号数转换成有符号数(高位固定为0)。
2)截取多位宽的几位时,可以采用[a+:4],表示从第a位到高a 4位的范围的数值。
3)对于DUT的时序要求,要按照算法或LRS的为标准,要保证RM中的时序与其一致,不要为了自动比对通过,而使得RM里的时序与DUT不一致。
4)在xaction中数据包的粒度是在driver怎么发送激励,决定数据包在时序上的切换动作;在suquence中的数据包,是通过sequencer中的发送次数来决定数据包的发送动作,数据包的具体数值是由seed值决定的。
5)sequence中的变量要在sequencer中定义。
6)可以采用计数(cnt)的方式,来仿照DUT的打拍。
7)关于自动比对,要在check_phase里加入防止伪pass的检查。
8)尽量少使用whlie语句块嵌套while语句块,减少条件判断的层数。
9)减少使用DUT内部的中间信号,作为RM中的正确的中间信号,存在隐患。
10)在等待某个数据的有效沿,应该使用cb的时钟信号。
3、interface
1)使用clock block(cb)的方式来driver和monitor数据。
2)可以在interface里完成一些打拍逻辑和组合逻辑的数据通路。
3)harness的信号,可以在interface中声明,同样是对全组件可见。
4)注意区分信号在connect中直接通过harness的信号驱动,还是通过interface中的信号驱动
5)在例化interface的虚类时,要做build_phase中进行uvm_config_db…set()。
4、driver
1)event可以控制多个信号之间的前后关系。可以用来构造一些时序严格的信号关系。
2)
5、monitor
1)
搭建验证环境总结
于 2023-10-04 14:59:39 首次发布