我正在自学verilog,并试图写一个失败的模型。我在指定部分遇到了以下ck->q延迟弧的建模,但不能理解它到底做了什么。
(posedge CK => (Q : 1'b1))=(0, 0);
有人能给我解释一下它是怎么工作的吗?这是不是就像D=1, CK->Q考虑这些延迟一样?如果是这样,我们是否需要(posedge CK => (Q : 1'b0))=(0, 0);
那么针脚D上的X传播情况如何?
发布于 2014-03-24 20:37:16
Verliog可用于对多个层次进行建模。简单的行为模型,RTL (可合成)模拟数据和控制的传输,或处于逻辑门级的门级( and or,触发器)。通常,只有Gate级别必须知道这些延迟。
RTL中模拟翻转行为的典型方法是:
always @(posedge clk) begin
q <= d;
end发布于 2014-03-25 01:40:08
您引用的是边缘敏感路径。根据IEEE Std 1800-2012的30.4.3节,“它用于对输入到输出延迟的时序进行建模,只有当指定的边沿出现在源信号处时,才会发生这种延迟”。
您的示例中的数据源表达式(D=1'b1)是一个任意表达式,它用作到路径目标的数据流的描述。这种任意的数据路径描述不会影响数据或事件在模型中的实际传播;数据路径源中的事件如何传播到目标取决于模块的内部逻辑。
在你的例子中,(posedge CK => (Q : 1'b1))=(0, 0)或(posedge CK => (Q : 1'b0))=(0, 0)都意味着在CK的正边沿,一个模块路径(又称延迟弧)从CK延伸到Q,它的上升和下降时间为0。
https://stackoverflow.com/questions/22608581
复制相似问题