Ich benutze Icarus iVerilog, um meinen Code zu synthetisieren und zu testen, aber ich bekomme unbekannte Werte, wenn logisch 1's erscheinen sollten. Hier ist ein Beispiel für das, was ich versuche zu tun.Ausgabe von "for" ist unbekannt in Verilog
reg [8:0] a = 000110100;
wire [8:0] b = 0;
generate
genvar i;
for (i = 8; i > -1; i = i - 1)
begin:loop
assign b[i] = |a[8:i];
end
endgenerate
Dies sollte nicht
000111111
Ich erhalte ich kann
000xxxxxx
tatsächlich
b[8] = a[8];
b[7] = a[8] | a[7];
b[6] = a[8] | a[7] | a[6];
b[5] = a[8] | a[7] | a[6] | a[5];
...
Meine erwartete Ausgabe ist es, einige Tore in Form produzieren Finde irgendeinen Grund für die x's und bin es Ich vermute, dass es ein Problem mit iVerilog ist.
Unterstützt Ihr Synthese-Tool die Initialisierung von Variablendeklarationen? –
Ich könnte das morgen in einem anderen Tool ausprobieren, aber zwei Dinge, die du jetzt ausprobieren könntest: 1) benutze 'i> = 0' anstatt' i' -1, und 2) Zähle vorwärts von 0 statt rückwärts von 8 – Teajay