Я пытаюсь написать простой тестовый стенд, используя txt-файл для чтения чисел в моем тестовом стенде.
У меня есть следующий тестовый стенд
temp_tb.v
module temp_tb();
logic clk;
logic rst;
logic [0:31] data [639:0];
logic output_valid;
logic [0:31] output_data_r [63:0];
logic [0:31] output_data_i [63:0];
top_level t0(
.clk(clk),
.rst(rst),
.data(data),
.output_valid(output_valid),
.output_data_r(output_data_r),
.output_data_i(output_data_i));
// set up clock
// tests
initial begin
$readmemb("song.mem", data);
// put your tests here
$vcdpluson;
rst = 1'b0;
clk = 1'b0;
#100
clk = 1'b1;
#100
clk = 1'b0;
#100
clk = 1'b1;
#100
rst = 1'b1;
clk = 1'b0;
#100
clk = 1'b1;
#100
clk = 1'b0;
#100
clk = 1'b1;
#100
rst = 1'b0;
for (int i = 0; i < 999; i++) begin
clk = ~clk;
#100;
end
$finish;
end
endmodule
И файл кода song.mem, который читается
00000000000000000000010000000000
00000000000000000000010000000000
00000000000000000000010000000000
00000000000000000000010000000000
00000000000000000000010000000000
00000000000000000000010000000000
00000000000000000000010000000000
// etc etc etc etc
Однако, когда я запускаю этот тестовый стенд с помощью VCS, он не выдает никаких ошибок, однако форма сигнала выглядит следующим образом.
Все файлы кода и память находятся в этой папке.
Раньше у меня была неправильная ширина логики данных, и она отображалась в журнале. Однако я не вижу ошибок в журнале прямо сейчас. Возможно ли, что это должно быть [31:0], а не [0:31] Я видел это в другом месте, но не уверен, что это значит. Цель состоит в том, чтобы иметь 640 целых чисел.