J'ai rencontré un banc d'essai qui peut essentiellement être réduit à l'exemple ci-dessous: l'horloge et les signaux sont modifiés dans le même pas de temps avec des affectations de blocage. Je crois que cela provoque une condition de course entre l'horloge et les deux signaux ctrlX, mais je n'ai pas pu prouver dans le terrain de jeu de l'EDA (je comprends que c'est hors de mon contrôle). Ai-je raison de dire qu'il y a une condition de concurrence? (EDA lien Playground: https://www.edaplayground.com/x/5yDX#&togetherjs=gkG5xewfNN)Condition de course entre les signaux
module tb_example;
reg clk = 1;
reg [3:0] dff1,dff2;
reg [3:0] ctrl1 = 'd0;
reg [3:0] ctrl2 = 'd0;
initial begin
#10 ctrl1 = 'd1;
#20 ctrl1 = 'd2;
#10 ctrl1 = 'd3;
#100 $finish;
end
always begin
#5 clk = !clk;
end
initial begin
$dumpfile("dump.vcd");
$dumpvars(0,tb_example);
end
initial begin
#10 ctrl2 = 'd1;
#20 ctrl2 = 'd2;
#10 ctrl2 = 'd3;
#100 $finish;
end
always @ (posedge(clk)) begin
dff1 <= ctrl1;
end
always @ (posedge(clk)) begin
dff2 <= ctrl2;
end
endmodule