我試圖完全理解Verilog的抽象級別之間的差異,我得到每個級別的描述,但我仍然無法在遊戲中獲得它。行爲,RTL和門級之間的區別
對於這種情況,我會貼一些的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或門級(我期望總是關鍵詞讓這個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
不可合成,僅用於測試。現在我有兩個問題
第三個(和第二個)代碼是RTL還是Gate-Leve?什麼是一個很好的RTL代碼示例?我發現這RTL Code Example,但這真的是RTL?對我來說,它看起來像行爲水平。
Verilog網表是什麼意思?它與門級相同還是具有上下文基礎定義?
我很困惑,因爲在一些網站,我不知道,如果他們說「這是使用邏輯門一個Verilog代碼」或「這是門級一個Verilog代碼」
我會很高興,如果誰願意別人解釋這個話題:)
soo,從我所示的例子中,第二個代碼將是門級? – lcjury
這是一個沒有設計完整背景的模糊區域。只有這樣:我會稱之爲結構性的;並不是經常只有一個模塊實例。由於模塊名稱「test」暗示這是一個測試工具,它更多地落在行爲定義中。 – Greg