2017-04-26 79 views
-2

假设我们有一个D触发器。 在RTL仿真(这里没有t_hold和t_setup),如果它的数据输入和clk同时发生变化,输出应该是什么? clk上升之前的值或之后的值?verilog flop RTL simulation

为了让它更难, 如果data_in和时钟连接到相同的线。应该是翻牌的输出是什么?所有时间都为零?还是一次?

我试过ModelSim中的最后一种情况,我得到输出为1,而我预期它为0. 我期望RTL仿真中的触发器应该模拟时钟沿之前的值。

回答

0

当你使用模拟时,你会看到结果取决于这个案例在模拟器中如何解释你所使用的。

正如你在模拟中写道t_setup = 0,这意味着你不需要保持信号在该水平(哪些应该由触发器被抓)一段时间上升(或下降)的时钟信号的上升沿之前,但可以在时钟的上升沿(或下降沿)的同一时间完全应用。

因为你看到的模拟'1'的所有时间触发器的输出

+0

通常它会用Verilog仿真前值,但是它取决于调度。我在模拟器上进行原型设计,发现模拟器之后总是有价值的。在这种情况下,Verilog仿真掩盖了供应商行为记忆模型中的一个错误。输入数据在该时钟边沿不应该改变。 – JDQ