Saya menggunakan Icarus iVerilog untuk mensintesis dan menguji kode saya, tetapi saya mendapatkan nilai yang tidak diketahui padahal secara logika angka 1 seharusnya muncul. Berikut ini contoh dari apa yang saya coba lakukan.
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
Ini akan menghasilkan beberapa gerbang dalam bentuk
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];
...
Hasil yang saya harapkan adalah
000111111
Saya benar-benar mengerti
000xxxxxx
Saya tidak dapat menemukan alasan apa pun untuk tanda x tersebut, dan saya mulai curiga ini adalah masalah dengan iVerilog.
i>=0
alih-alihi>-1
, dan 2) menghitung maju dari 0, bukan mundur dari 8. - person teadotjay   schedule 01.08.2016