我想为OR
门设计5个行为模型。这些型号有什么区别?每个模型都实现了哪些延迟(惯性延迟和传输延迟)以及原因是什么?
模型1:LHS阻止
#4 O = (A | B);
模型2:LHS非阻塞
#4 O <= (A | B);
模型3:RHS阻止
O = #4 (A | B);
模型4:RHS非阻塞
O <= #4 (A | B);
模型5:连续分配
assign #4 O = (A | B);
答案 0 :(得分:2)
Clifford E. Cummings有一篇非常好的论文“Correct Methods For Adding Delays To Verilog Behavioral Models”,你可以在这里找到一些关于在Verilog中使用不同延迟模型的提示:
阻止分配延迟模型:
建模指南:不要在LHS上设置延迟 阻止模型组合逻辑的赋值。这个 是一种糟糕的编码风格 测试平台指南:在LHS上设置延迟 因此,阻止测试平台中的分配是合理的 延迟只是用于时空连续输入 刺激事件。
RHS阻塞延迟:
建模指南:不要在RHS上设置延迟 阻止模型组合逻辑的赋值。这个 是一种糟糕的编码风格 Testbench指南:不要在RHS上设置延迟 阻止测试平台中的分配 一般准则:延迟任何RHS 阻止分配既困惑又编码不好 样式。应避免使用Verilog编码实践。
非阻塞分配延迟模型:
建模指南:不要在LHS上设置延迟 模块组合逻辑的非阻塞分配。 这是一种糟糕的编码风格 测试平台指南:非阻塞分配较少 有效模拟而不是阻止任务;因此, 一般来说,在非阻塞的LHS上放置延迟 建模或测试平台生成的分配是 气馁。
RHS非阻塞延迟:
推荐应用:使用此编码样式 模型行为延迟线逻辑 建模指南:在RHS上设置延迟 仅在尝试建模时进行非阻塞分配 传输输出传播行为。这种编码风格 将准确地模拟延迟线和组合逻辑 纯粹的运输延误;然而,这种编码风格 通常会导致模拟速度变慢 Testbench指南:这种编码风格经常用于 当必须在未来安排刺激时的测试平台 时钟边沿或设定延迟后,同时不阻塞 在后者中分配后续刺激事件 程序性阻碍。
连续分配延迟模型:
RHS延迟模型在连续分配时是非法的
前面提到的模型遵循延迟模型: