前言
在RTL验证过程中,有可能会用到多个VIP,不同的VIP,有可能会要求用到不同的timescale,那么如何在同一个仿真环境中,将这些不同的timescale进行统一呢。
一、将仿真中的多个不同的timescale进行统一
每个VIP都会有几个在testbench顶层需要包含进去的文件,这些文件包括宏定义、接口interface、以及env的主体。如果将这些文件都放到testbench去include,那么testbench自身、以及不同VIP的include文件之间的timescale设置就会有冲突,可以通过下面的方法来将不同的timescale进行统一。
首先,将不同的VIP需要包含的文件拎出来;
其次,建议一个单独的文件,按照不同的VIP需要的timescale进行设置,中间加入`resetall这个宏;
最后,将这个文件加到仿真编译的选项里边去。
二、举个例子
举个例子:有个验证环境,用到了USB和SDIO的VIP,USB的VIP需要的timescale是1ps/1ps,SDIO的VIP需要的timescale是1ns/1ps,testbench用到的timescale是1ns/1ps。
对于上述场景,
首先,在testbench中设置1ns/1ps的timescale。
其次,建立一个tb_vip.sv的文件,在该文件中分别加入USB和SDIO的VIP需要包含的文件。
//tb_vip.sv
//=========USB VIP==================
`timescale 1ps/1ps
`include "svt_usb_if.sv"
`include "svt_usb_pkg.sv"
`resetall
//=========SDIO VIP==================
`timescale 1ns/1ps
`include "nvs_sd_if.sv"
`include "nvs_sd_inc.sv"
最后,在编译选项中直接将这个文件加进去。
irun tb_vip.sv
三、VCS timescale问题查找
vcs仿真timescale问题查找选项
-diag timescale
总结
本文主要记录一下,仿真过程中,如何处理多个timescale共存的问题。