У меня есть файл data.txt, содержащий 1200 строк, каждая из которых представляет собой 16-битную двоичную строку, например следующую.
"0001111111000000"
Я пытаюсь написать тестовый стенд с использованием Icarus Verilog, который читает каждую строку файла и отправляет каждую строку в файл .v, который будет запускать несколько простых операторов if в каждой строке файла (простой алгоритм классификации).
Мой код ниже.
// Verilog test bench for generate.v
`timescale 1ns/100ps
`include "generate.v"
module generate_tb;
$display('running test bench')
integer data_file ; // file handler
integer scan_file ; // file handler
logic signed [21:0] captured_data;
`define NULL 0
initial begin
$dumpfile("generate.vcd");
$dumpvars(0, generate_tb);
data_file = $fopen("./data.txt", "r");
if (data_file == `NULL) begin
$display("data_file handle was NULL");
$finish;
end
end
always @(posedge clk) begin
scan_file = $fscanf(data_file, "%b\n", captured_data);
if (!$feof(data_file)) begin
generate the_circuit(output, captured_data); // HERE
end
end
$finish;
endmodule
и мой файл generate.v:
module generate(actual_class, data_row);
output actual_class;
input data_row;
wire stby_flag ;
wire [0:15] vect;
reg [0:1] classe;
assign vect = data_row;
always @(posedge clk) begin
if (vect[3] == 0) begin
classe = 2'b10;
end
if (vect[11] == 0) begin
classe = 2'b01;
end
if (vect[8] == 1 && vect[4] + vect[5] + vect[6] + vect[7] >= 3) begin
classe = 2'b00;
end
if (vect[0] + vect[1] + vect[2] + vect[3] + vect[4] + vect[5] + vect[6] + vect[7] + vect[8] + vect[9] + vect[10] + vect[11] + vect[12] + vect[13] + vect[14] + vect[15] <= 1) begin
classe = 2'b11;
end
end
assign actual_class = classe;
endmodule
Я застрял на этой части кода. Я не знаю, как вызвать файл generate.v для каждой строки файла.
if (!$feof(data_file)) begin
generate the_circuit(output, captured_data); // HERE
end
Лучшим способом сделать это было бы сохранить мои данные и использовать $ readmemb, но я надеюсь сделать это таким образом.
Любой совет очень ценится.
generate
. - person Serge   schedule 03.01.2018