【问题标题】:verilog flop RTL simulationverilog flop RTL 仿真
【发布时间】:2017-04-26 17:00:38
【问题描述】:

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

为了更难, 如果 data_in 和时钟连接到同一根线。触发器的输出应该是什么?一直为零?还是一直一个?

我在 ModelSim 中尝试了最后一种情况,我得到输出一直是 1,而我希望它是 0。 我希望 RTL​​ 模拟中的触发器应该模拟时钟沿之前的值。

【问题讨论】:

    标签: verilog simulation modelsim register-transfer-level event-simulation


    【解决方案1】:

    当您使用模拟时,您会看到结果取决于此案例在模拟器中的解释方式。

    正如您在模拟中所写的 t_setup = 0,这意味着您不需要在上升(或下降)之前的某个时间将信号保持在那个水平(触发器应该捕捉到的)时钟信号的边沿,但可以与时钟的上升(或下降)边沿完全同时应用。

    因为您在触发器的输出上看到了模拟'1' 的所有时间

    【讨论】:

    • 在verilog模拟中通常是之前的值,但是取决于调度器。我在模拟器上进行原型设计,发现模拟器之后总是有价值。在这种情况下,verilog 模拟从供应商那里掩盖了行为内存模型中的错误。输入数据不应该在该时钟沿发生变化。
    猜你喜欢
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多