VCS仿真器对零延时的行为

在时序逻辑中,譬如x1<=x0;那么x1的值一般是在x0的上一个周期的值。时钟在x0有效后才会对其采样。但是如果x0和时钟的采样沿同时有效,那么情况可能就有些不一样了。
一般来讲同时有效分两种情况,第一种经过前级寄存器采样后的数据可能会和采样沿同时有效,但是这种并不是零延时,在仿真器看来,这样的数据在时隙上是比采样沿晚的。第二种,是真正的零延时,譬如时钟去采样自己,或者去采样经过pll,bufg或者组合逻辑等后相位为差为0的时钟信号。
第一种情况的仿真结果会确实如我们期望的,x1的值在下一个周期等于当前x0
的值。第二种情况就不一样了,x1的值会和x0的值同步(在仿真器的时隙上看x1比x0晚)。
举个例子
always @(posedge x0 or negedge rst_n) begin
if(~rst_n) begin
x1 <= 1’b0 ;
x2 <= 1’b0;
end
else begin
x1 <= x0 ;
x2 <= x1;
end
end
在rst_n解除后,从波形上看x1和x0是一样的,但是x2比x1晚一个周期。

VCS仿真器是一种常用的硬件描述语言仿真工具,用于验证和调试硬件设计。在VCS仿真器中,dumpfsdb是一种用于生成仿真波形数据的命令。 通过使用dumpfsdb命令,可以将仿真过程中的信号值和时序信息以FSDB(Fast Signal Database)格式保存到文件中。FSDB文件是一种二进制格式,可以被后续的波形查看工具读取和分析。 要使用dumpfsdb命令进行波形数据的生成,需要在仿真脚本中添加相应的代码。通常,需要在仿真过程中指定需要保存的信号,并设置保存的时机和文件名。例如,可以在仿真结束时保存所有信号的波形数据,或者在特定事件发生时保存指定信号的波形数据。 以下是一个示例代码片段,展示了如何在VCS仿真器中使用dumpfsdb命令进行波形数据的生成: ``` // 定义需要保存的信号 reg [7:0] data; reg clk; // 在仿真过程中设置保存时机和文件名 initial begin $dumpfile("waveform.fsdb"); // 设置保存的文件名 $dumpvars(0, top_module); // 设置保存的信号范围 end // 在仿真过程中更新信号值 always begin #10; // 模拟时钟周期 clk = ~clk; data = data + 1; end // 在仿真结束时保存波形数据 initial begin #100; // 仿真时长 $dumpoff; // 停止保存波形数据 $finish; // 结束仿真 end ``` 通过以上代码,当仿真结束时,VCS仿真器会将信号data和clk的波形数据保存到名为waveform.fsdb的文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值