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

文中提到的仿真器默认是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小c鸡8 小时前
【FPGA深度学习加速】RNN与LSTM硬件加速完全指南:从算法原理到硬件实现
rnn·深度学习·fpga开发
Aaron15889 小时前
通信灵敏度计算与雷达灵敏度计算对比分析
网络·人工智能·深度学习·算法·fpga开发·信息与通信·信号处理
博览鸿蒙14 小时前
IC 和 FPGA,到底区别在哪?
fpga开发
思尔芯S2C14 小时前
FPGA原型验证实战:如何应对外设连接问题
fpga开发·risc-v·soc设计·prototyping·原型验证
Flamingˢ14 小时前
FPGA实战:VGA成像原理、时序详解与Verilog控制器设计与验证
fpga开发
FPGA_小田老师14 小时前
xilinx原语:OSERDES2(并串转换器)原语详解
fpga开发·lvds·xilinx原语·oserdese·并串转换
Blossom.11815 小时前
从数字大脑到物理实体:具身智能时代的大模型微调与部署实战
人工智能·python·深度学习·fpga开发·自然语言处理·矩阵·django
漂洋过海的鱼儿1 天前
HLS (High-Level Synthesis)对比PS运行速度
fpga开发
Aaron15881 天前
无线信道下的通信链路设计分析
大数据·网络·人工智能·算法·fpga开发·硬件工程·射频工程
碎碎思1 天前
当 FPGA 遇上 Python:Glasgow 如何玩转数字接口(开源硬件 & 软件)
fpga开发