Verilog Block Statements meistern: Sequenzielle & Parallele Ausführung
Statement-Gruppen, syntaktisch äquivalent zu einzelnen Statements: Block Statements. Zwei Arten: Sequential und Parallel.
Sequentiell (Sequential)
Umgeben von begin/end. Ausführung in Reihenfolge, nacheinander. Delay-Werte relativ zur Ausführungszeit des vorherigen Statements. Nach letztem Statement → Control Flow weiter.
module design0;
bit [31:0] data;
initial begin
#10 data = 8'hfe; // Zeit 10
$display("[Time=%0t] data=0x%0h", $time, data);
#20 data = 8'h11; // Zeit 30 (10+20 relativ zum vorherigen)
$display("[Time=%0t] data=0x%0h", $time, data);
end
endmodule
Simulationslog: Time=10 → 0xfe, Time=30 → 0x11.
Parallel (Parallel)
Statements laufen concurrent. Delay-Control für Time-Ordering. Umgeben von fork/join.
initial begin
#10 data = 8'hfe;
fork
#20 data = 8'h11; // Start bei Zeit 10+20=30
#10 data = 8'h00; // Start bei Zeit 10+10=20 → executes FIRST
join
end
Fork-Join Launch bei Zeit 10. Statement mit #10 (→ Zeit 20) führt zuerst aus, dann #20 (→ Zeit 30).
Verschachtelung: begin-end in fork-join
initial begin
#10 data = 8'hfe;
fork
#10 data = 8'h11; // Zeit 20
begin // Sequential Block IN Parallel Block
#20 data = 8'h00; // Zeit 30 (relativ zu Fork-Launch bei 10? Nein: relativ zu Block-Start bei 10+20=30)
#30 data = 8'haa; // Zeit 60 (30+30)
end
join
end
Ausführung: 8'h11 bei 20, 8'h00 bei 30, 8'haa bei 60.
Blöcke benennen
Sowohl begin als auch fork können benannt werden: begin : name_seq, fork : name_fork. Referenzierbar in disable Statement.
begin : name_seq [statements] end
fork : name_fork [statements] join
Verilog
- Insight-Generierung durch automatisierte Datenvorbereitung beschleunigen
- Verilog meistern: Komplettes Tutorial für digitales Schaltungsdesign
- Verilog Concatenation meistern: Praktischer Leitfaden
- Verilog Essentials: Kurzer Überblick
- Verilog Assignments verstehen: Typen, Syntax und Best Practices
- Verilog Blocking vs. Non-Blocking: Wichtige Unterschiede erklärt
- Verilog Control Flow meistern: IF-ELSE, Case, Loops und mehr
- Verilog Functions meistern für effizientes RTL-Design
- Verilog Scheduling Semantics verstehen: Timing, Events und Ausführungsreihenfolge
- S&OP, Daten und Planungsysteme für zukünftigen Erfolg modernisieren