当我们做后仿时我们究竟在仿些什么(二)

文中提到的仿真器默认是VCS.

初始化寄存器的值

有时候后仿中因为各种正确和不正确的原因,有些寄存器希望能有一个明确的初始值。那么可以准备一个类似下面内容的文件

复制代码
#initial_to_0_regs.ucli
force -deposit test_bench.u_dut.enable_reg 0

如果需要初始化的寄存器比较多,那么可以在PrimeTime或者其它工具里把网表中所有的触发器都遍历写出来,生成上面格式的文件,然后酌情做一些删减。

还需要准备一个编译时选项需要调用的列表,里面包含了上面初始化寄存器文件中所涉及的寄存器例化时所用到的reference单元,内容类似下面这样。这个文件的目的就是告诉仿真器,在编译的时候需要特殊处理这些标准单元,以便运行时可以做某些操作。

复制代码
acc+=wn:DFF0BWHVT

在仿真的零时刻用下面的方式加载这个文件

复制代码
ucli% source ./initial_to_0_regs.ucli

当然别忘了启动vcs的时候加上-debug等选项,打开ucli功能。

关闭某些寄存器的时序检查

后仿过程中可能有一些不必要或者不想检查的时序,尤其是两级同步的第一级DFF,通常不关心它们是否有时序违例。可以准备一个类似下面的文件

复制代码
#async.list
instance { u.reg1, u.reg2 } { noTiming };

在仿真的时候用下面的选项加载这个文件,这样在后仿过程中将不对这些寄存器做时序检查,避免不必要的时序问题引起X态传递。

复制代码
vcs +optconfigfile+async.list

生成VCD文件

芯片实现的一些流程需要后仿写出波形文件,比较常用的就是VCD格式的文件。VCD是个不压缩的文本格式,因为兼容性好的原因一直得到各种流行工具的支持。当然它的特点也决定了它的缺点,那就是文件太大,会拖累本来就慢的后仿速度。

可以变通的一个方案是,后仿先写出压缩比好的FSDB文件,再利用工具转成VCD。并且转换过程中可以指定起止时间,这样一次后仿,就可以为不同的应用生成不同的VCD文件。

仿真中写出FSDB的系统函数不必赘述。

FSDB转VCD的工具通常在Verdi的安装目录

复制代码
$VERDI_HOME/bin/fsdb2vcd

基本的用法大概是这样的,-bt是begin time,-et是end time

复制代码
fsdb2vcd your.fsdb -o your.vcd -bt 1000ns -et 2000ns
相关推荐
码农小韩4 小时前
FPGA学习(二)——LED闪烁
fpga开发·verilog·fpga·led·组合逻辑·分频设计
9527华安1 天前
FPGA纯verilog实现DP视频接口,支持2K60帧分辨率,提供3套工程源码和技术支持
fpga开发·音视频·dp
ChaseVLSI1 天前
FPGA与ASIC的区别详解:内部结构、开发成本与适用场景,项目选型到底该选哪个
嵌入式硬件·fpga开发·硬件架构·硬件工程
9527华安2 天前
FPGA实现ARINC818总线协议,基于GT Transceivers Wizard高速收发器,提供7套工程源码和技术支持
fpga开发·transceivers·arinc818
小蘇的FPGA2 天前
fpga-wide-data-crc32
fpga开发
落雨无风3 天前
fpga板级调试常见问题
fpga开发
码农小韩3 天前
FPGA学习(一)——LED点灯与开发流程
学习·fpga开发·入门·环境配置·仿真·点灯
FPGA小迷弟3 天前
FPGA 与千兆以太网:各类物理接口的形式、区别、使用方法与应用场景详解
tcp/ip·macos·fpga开发·udp·fpga
NamoAmitabha1283 天前
Zynq 的 AXI GPIO,是“ARM 通过一条国际标准高速公路(AXI 总线),去遥控 FPGA 里的一个寄存器”。---deepseek
fpga开发·zynq--ps
NamoAmitabha1283 天前
ARM 不懂寄存器,它只懂内存地址---deepseek
fpga开发·zynq--ps