【发布时间】:2015-04-23 06:15:15
【问题描述】:
我正在尝试完全理解 Verilog 抽象级别之间的差异,我了解每个级别的描述,但我仍然无法在剧本中得到它。
对于这种情况,我将粘贴一些 Verilog 代码以及我对它们的看法:
-
以下代码处于行为级别。
always @ (a or b or sel) begin y = 0; if (sel == 0) begin y = a; end else begin y = b; end end -
这(只是一个例子)在门级
module test(clk, ready, next, Q); input clk, enable, next; output Q; \**SEQGEN** reg_1 (.clear(1'b0), .next_state(next), .clocked_on(clk), .Q(Q), .synch_enable(enable) ); endmodule -
我不知道这段代码是在 RTL 还是门级(我希望 always 关键字使这个 RTL 而不是门级)
module dff_from_nand(); wire Q,Q_BAR; reg D,CLK; nand U1 (X,D,CLK) ; nand U2 (Y,X,CLK) ; nand U3 (Q,Q_BAR,X); nand U4 (Q_BAR,Q,Y); // Testbench of above code initial begin $monitor("CLK = %b D = %b Q = %b Q_BAR = %b",CLK, D, Q, Q_BAR); CLK = 0; D = 0; #3 D = 1; #3 D = 0; #3 $finish; end always #2 CLK = ~CLK; endmodule
我已经知道initial begin 和end 不可合成,仅用于测试。现在我有 2 个问题
第三(和第二)代码是 RTL 还是 Gate-Level?什么是好的 RTL 代码示例?我找到了这个RTL Code Example,但这真的是 RTL 吗?对我来说,这看起来像是行为水平。
什么是 Verilog 网表?它与门级相同还是具有上下文基础定义?
我很困惑,因为在某些网站中,我不知道他们是在说“这是使用逻辑门的 Verilog 代码”还是“这是门级的 Verilog 代码”
如果有人想解释有关此主题的更多详细信息,我将非常高兴:)
【问题讨论】:
标签: verilog