Unterschied zwischen Verhaltens -, RTL-und gate-Level
Ich versuche, zu verstehen, die Unterschiede zwischen den Abstraktionsebenen von Verilog, ich bekommen, was die Beschreibung jeder Ebene sagt, aber ich kann immer noch nicht bekommen auf das Spiel.
Für diesen Fall, werde ich fügen Sie einige Verilog-codes und was ich über Sie denken:
-
Den folgenden code in Verhaltensebene.
always @ (a or b or sel) begin y = 0; if (sel == 0) begin y = a; end else begin y = b; end end
-
Diese (nur ein Beispiel) ist in der Gate-Ebene
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
-
Ich weiß nicht, ob dieser code in RTL-oder Gate-Level ( ich erwarte, dass die immer keyword machen, das RTL und nicht auf Gate-Ebene )
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
Weiß ich schon, dass initial begin
und end
sind nicht synthesizeable und nur für die Tests verwendet. Jetzt habe ich 2 Fragen
-
Dritten (und zweiten) code ist RTL oder Gate-Leve? Was wäre eine gute RTL-code Beispiel? Ich fand diese RTL-Code Beispiel aber ist das wirklich RTL? Für mich sieht es aus wie Verhaltens-Ebene.
-
Was bedeutet Verilog-Netzliste? Es ist die gleiche wie die gate-Ebene oder Sie haben ein Kontext-base-definition?
Ich bin verwirrt, weil in einigen websites, die ich weiß nicht, ob Sie sagen: 'dies ist ein Verilog-code, der mit Hilfe der Logik-gates' oder 'dies ist ein Verilog-code in Gatter-Ebene'
Werde ich sehr glücklich sein, wenn jemand, der erklären will mehr details zu diesem Thema 🙂
InformationsquelleAutor lcjury | 2015-04-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
RTL : Register-Transfer-Ebene, die eine Abstraktion der hardware-Funktionalität geschrieben mit
always
Blöcke undassign
Aussagen, die synthetisierte (kann übersetzt werden in die gate-Ebene). Reine RTL nicht instanziieren sub-Module. RTL könnte enthalten sub-Module Handbuch der synthesizer. Strukturelle RTL (oftmals noch unter dem Namen RTL) ist ein Modul, welches die anderen RTL-Module. Beispiel: FSM (Finite-State-Maschine)Behavioral : Ahmt die gewünschte Funktionalität der hardware, aber nicht unbedingt synthetisierte. Es gibt keine strengen Regeln, solange der code erzeugt das gewünschte Verhalten. Leitlinie ist es einfach zu halten und lesbar sind. Verhaltensstörungen werden oft verwendet, um darzustellen, analoge block -, Platz-holder code (RTL/Gatter nicht fertig ist), und testbench-code. Beispiel: clock generator, Verzögerung Zellen.
Der wesentliche Unterschied zwischen RTL und Verhaltens ist die Fähigkeit, zu synthetisieren. Es ist behavioral, wenn Sie sehen
#
Verzögerungwait
Aussagenwhile
Schleifenforce
/release
Aussagen, oder hierarchischen Verweis. Technisch gibt es einige seltene entschuldbar Ausnahmen, aber das ist out of scope, wenn diese Frage.Gate-Level - (auch Strukturellen) : Logik, beschrieben durch die Tore und-Module nur. Keine
always
Blöcke oderassign
Aussagen. Dies ist ein Vertreter der real-Tore in der hardware.Verilog Netzliste ist eine Sammlung von Verilog-Module, die in der Konstruktion verwendet. Es können eine oder mehrere Dateien. Es kann eine Mischung aus der RTL -, Verhaltens-und Strukturelle. In der Regel ist es meist Strukturelle, vor allem für große designs.
Es ist ein bisschen vage-Bereich ohne den kompletten Kontext des Designs. Nur so ist: würde ich es nennen, strukturellen; nicht oft ist es nur eine Modul-Instanz. Aufgrund der Modul-name
test
ist, impliziert dies ist eine Testumgebung, die fällt mehr in die Verhaltens-definition.InformationsquelleAutor Greg
Die testbench, die die als Verhaltens -, auch wenn es verwendet, RTL-Codierung zu instanziieren Sie das Modul ist geprüft auf die regs und Drähte, die die testbench Laufwerke:
Der unit under test (UUT) getestet, das es ein Modul wie dieses (und das ist eindeutig ein RTL-level -gate-Ebene tatsächlich - Modul):
Es ist mein Verständnis, dass ein RTL-Ebene-Modul ist ein Modul, in dem die Logik-Gleichungen sind ausdrücklich gegeben. Behavioral Modul Prozesse (in Verilog mit
always
blockiert, obwohl die Logik-Gleichungen können verwendet werden, in denen die Blöcke). Jede nicht-triviale Verilog-design haben beide.(Ich habe Deutsch Probleme 😉 ) Diese Art der Implementierung wäre eine gate-Ebene-Implementierung, die dazu dienen können als Netzliste
InformationsquelleAutor mcleod_ideafix