Я пытаюсь прочитать строки шестнадцатеричных байтов из текстового файла, используя хэд. Например:
00 00 C0 AF 12
D1 00 55 E2 34
.
.
Компилируется нормально, но когда Я пытаюсь симулировать, я продолжаю получать эту ошибку:
ncsim: * E, TRTEXTIO: ошибка TEXTIO. ЛИНИЯ длиной 0 на READ типа CHARACTER
/ incisive_15.20.069 / tools / inca / files / IEEE.src / std_logic_textio.vhd: 344 чтения (l, c);
File: /apps/incisive_15.20.069/tools/inca/files/IEEE.src/std_logic_textio.vhd, line = 344, pos = 6
Scope: @ieee.std_logic_textio:HREAD
Time: 250 NS + 1
Это относится к этой процедуре в std_logic_textio.vhd, но не уверен почему.
процедура HREAD (L: inout LINE; VALUE: out BIT_VECTOR; GOOD: out BOOLEAN)
Я смог чтобы сделать это, используя READ вместо HREAD, но тогда все данные стимула из текстового файла должны быть в десятичном формате (вместо шестнадцатеричного). Мне нужно использовать hex. Я перепробовал много изменений безрезультатно. Например, изменение файла .csv, изменение формата данных (т. Е. Использование x "" вокруг каждого байта), использование std_ulogic_vector вместо std_logic_vector для типа поля VALUE. Хотите знать, может ли быть проблема с моей версией Simvision? Буду признателен за любые идеи.
ОК, добавив больше подробностей:
read_stimulus_data_file: process (clk, reset_n)
file my_input : TEXT open READ_MODE is "test_trial_" & integer'image(TEST_CASE) & ".txt";
type integer_array is array (0 to MAX_NO_COMMANDS - 1) of std_logic_vector(7 downto 0);
variable data_serial_type : integer_array;
variable my_input_line : LINE;
variable good : boolean;
begin
if (reset_n = '0') then
data_serial_type := (others => (others => '0'));
message_to_decipher <= (others => (others => '0'));
elsif (rising_edge(clk)) then
if (enable = '1') then -- enable determined elsewhere
if (not endfile(my_input)) then
readline(my_input, my_input_line);
for k in 0 to MAX_NO_COMMANDS - 1 loop
hread(my_input_line, data_serial_type(k), good);
message_to_decipher(k ) <= data_serial_type(k) ;
end loop;
end if;
end if;
завершение процесса read_stimulus_data_file;