Próbuję w pełni zrozumieć różnice między poziomami abstrakcji Verilog, dostaję to, co opis każdego poziomu mówi, ale wciąż nie mogę go dostać w grze.Różnica między Behavioral, RTL i Gate Level
w tym przypadku, będę wklejać jakieś kody Verilog i co myślę o nich:
Poniższy kod jest w Behavioral Level.
always @ (a or b or sel) begin y = 0; if (sel == 0) begin y = a; end else begin y = b; end end
To (tylko przykład) jest Brama Level
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
ja nie wiem, czy ten kod jest w RTL lub bramy Level (I oczekują, że zawsze kluczowe aby ten RTL i nie Brama Level)
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
już wiem, że initial begin
i end
nie są syntezowalne i używane tylko do testowania. Teraz mam 2 pytania:
Trzeci (i drugi) kod to RTL lub Gate-Leve? Jaki byłby dobry przykład kodu RTL? Znalazłem to RTL Code Example, ale czy to naprawdę RTL? Dla mnie wygląda na poziom behawioralny.
Co oznacza netlista Verilog? Czy jest taki sam jak poziom bramki lub ma definicję podstawy kontekstu?
Jestem zdezorientowany, ponieważ w niektórych witrynach nie wiem, czy oni mówią „to jest kod Verilog, która jest za pomocą bramek logicznych” lub „to jest kod Verilog w bramie poziomie”
będę bardzo szczęśliwy, jeśli ktoś, kto chce wyjaśnić więcej szczegółów na ten temat :)
soo, z przykładów, które pokazuję, drugi kod byłby poziomem bramki? – lcjury
To trochę niewyraźny obszar bez pełnego kontekstu projektu. Tylko tak: nazwałbym to strukturalnym; często nie jest tam tylko jedna instancja modułu. Ze względu na nazwę modułu "test" sugeruje, że jest to uprząż testowa, która bardziej pasuje do definicji behawioralnej. – Greg