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

文中提到的仿真器默认是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的系统函数不必赘述。

FSDBVCD的工具通常在Verdi的安装目录

复制代码
$VERDI_HOME/bin/fsdb2vcd

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

复制代码
fsdb2vcd your.fsdb -o your.vcd -bt 1000ns -et 2000ns
相关推荐
FPGA小徐18 分钟前
[FPGA IP系列] FPGA常用存储资源大全(RAM、ROM、CAM、SRAM、DRAM、FLASH
fpga开发
Szime1 小时前
AD9218 国产替代方向:双通道 10 位 105MSPS ADC 选型支持
单片机·嵌入式硬件·fpga开发·汽车
ALINX技术博客2 小时前
ALINX VD100+Simulink 快速实现 FPGA 图像处理 Sobel 边缘检测
图像处理·人工智能·fpga开发
FPGA小徐2 小时前
FPGA开发中的常用通信协议与通信接口区别与联系
fpga开发
Szime4 小时前
深智微40Gsps高速数据采集系统进入工程化阶段
科技·单片机·嵌入式硬件·fpga开发
2601_9618454221 小时前
2027考研数学大纲|数一数二数三
考研·fpga开发·ar·vr·mr·oneflow
X_xcccc1 天前
2026年嵌入式智能核心,从异构计算到敏捷开发的硬核指南
fpga开发·敏捷流程·zynq-7000·fpga板卡定制
9527华安1 天前
FPGA实现GTX Transceivers Wizard传输2路视频,基于aurora 8b10b编解码架构,提供4套工程源码和技术支持
fpga开发·aurora·gtx·高速接口·高速收发器·transceivers
ALINX技术博客1 天前
【黑金云课堂】FPGA技术教程Linux开发:摄像头GPU渲染显示/Qt OpenGLES使用
linux·qt·fpga开发·gpu
S&Z34631 天前
SZ901下载器烧写国产Flash指南
fpga开发