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

文中提到的仿真器默认是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
相关推荐
8K超高清19 小时前
CCBN展会多图回顾
人工智能·算法·fpga开发·接口隔离原则·智能硬件
小眼睛FPGA19 小时前
【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程5-DDR3 读写实验例程
fpga开发
unicrom_深圳市由你创科技20 小时前
如何做FPGA的功耗优化?动态功耗管理怎么实现?
fpga开发
不会武功的火柴20 小时前
SystemVerilog语法(9)-验证基础与简单Testbench
嵌入式硬件·fpga开发·fpga·systemverilog·硬件描述语言·rtl·uvm验证
kaizq20 小时前
MuleRun助力MakerChip-FPGA在线编程模拟仿真操练
fpga开发·verilog·龙虾机器人·mulerun·makerchip·在线模拟仿真
c-u-r-ry3020 小时前
vivado处理硬件设计差分对布线极性翻转的问题
经验分享·fpga开发
XINVRY-FPGA20 小时前
XC7Z020-2CLG484I Xilinx Zynq-7000 SoC FPGA
嵌入式硬件·fpga开发·云计算·硬件工程·fpga
小眼睛FPGA20 小时前
【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程2-基于紫光FPGA 的键控流水灯实验例程
fpga开发
XMAIPC_Robot20 小时前
电力设备RK3568/RK3576+FPGA,多系统混合部署Linux+RTOS RT-THREAD,强实时性
linux·运维·fpga开发
XMAIPC_Robot20 小时前
RK3588 PLC AMP 核隔离配置 + RT‑Thread 实时优化 + FPGA 接口定义 + CODESYS 工程
人工智能·嵌入式硬件·深度学习·fpga开发