Je suis en train de mettre en œuvre le code suivant:Verilog conflit avec signal suivant
reg [7:0] next_busy;
always @* begin
next_busy = busy; //default assignment
if (condition determined by module input) begin
next_busy[0]= 1'b1;
end
end //always @*
always @(posedge clock) begin
if (reset) begin
busy <= 8'b0;
end else begin
busy <= next_busy;
end
end //always @(posedge clock)
Cela fonctionne bien en simulation, mais dans la synthèse il semble y avoir une sorte de discorde pour le signal next_busy. C'est-à-dire, si occupé n'est pas 1 (disons que le cycle précédent avait une réinitialisation), alors il sort un x (si les conditions d'entrée sont remplies). Cependant, si occupé était déjà 1 (et que les conditions d'entrée sont remplies), next_busy est assigné 1 correctement. Je me demande donc s'il y a une bonne façon de faire ce que j'essaie de faire pour que cela fonctionne également en synthèse?
Votre code semble bien pour moi. Où voyez-vous la contention, dans la simulation au niveau de la porte? Affectez-vous à 'next_busy' n'importe où ailleurs dans ce module? Y at-il des messages d'avertissement dans le journal de synthèse qui mentionnent ce signal. – Marty