Перейти к содержанию
    

вывод в файл результатов моделирования

Хочу из тестбенча (VHDL) вытащить результат вычислений в файл,

как это сделать по проще? А то, переписывать с экран результаты придётся дня два :blink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хочу из тестбенча (VHDL) вытащить результат вычислений в файл,

как это сделать по проще?  А то, переписывать с экран результаты придётся дня два  :blink:

поройте в сети есть либы - функции вывода Си -> VHDL

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно ещё заглянуть на http://www.gaisler.com/ слить исходники леона.Там будет пакедж debug вроде называется.Можно посмотреть,как это делается, чтобы это удобно юзать было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можо таким компонентом:

 

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_arith.all;

USE ieee.std_logic_textio.all;

USE ieee.std_logic_unsigned.all;

LIBRARY std;

USE std.textio.all;

 

ENTITY print_result IS

GENERIC(

file_name : string := "D:/file_name";

d_width : natural := 8

);

PORT(

clock : IN std_logic;

we : IN std_logic;

result : IN std_logic_vector (d_width-1 DOWNTO 0)

);

END print_result ;

 

ARCHITECTURE rtl OF print_result IS

BEGIN

-- pragma synthesis_off

hi_clk_wr : process(we,clock)

file vectorw_file : text open write_mode is file_name & ".txt" ;

variable l , l2 : line ;

variable q , p : integer := 0 ;

variable count : integer := 1 ;

begin

if (we = '1') then

if(clock='1' and clock'event) then

q := d_width - 1 ;

count := count + 1 ;

for p in 1 to d_width loop -- data from RAM

write(l2 , result(q)) ;

q := q - 1 ;

end loop ;

q := d_width - 1 ;

writeline(vectorw_file , l2) ;

end if ;

end if ;

end process ;

-- pragma synthesis_on

END rtl;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хочу из тестбенча (VHDL) вытащить результат вычислений в файл,

как это сделать по проще? А то, переписывать с экран результаты придётся дня два :blink:

Я делаю это так

 

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

 

entity write2binfile is

port(

CLK : in STD_LOGIC;

EN : in STD_LOGIC;

DATAIN : in STD_LOGIC_VECTOR(7 downto 0);

DATAFILE : in STRING

);

end write2binfile;

 

architecture behav of write2binfile is

TYPE char_file IS FILE OF character;

function byte2ch ( constant data : in std_logic_vector(7 downto 0))

return character

is

variable n : integer;

variable c : character;

begin

n := conv_integer(data); -- конвертация std_logic_vector(7 downto 0) в integer

c := character'VAL(n); -- найти значения символа по номеру в перечисляємом типе /конвертация integer -> character/

return c;

end function;

function ch2byte ( constant ch : in character)

return std_logic_vector

is

variable n : integer;

variable data : std_logic_vector(7 downto 0);

begin

n := character'POS(ch);

data := CONV_STD_LOGIC_VECTOR(n,8);

return data;

end function;

begin

 

--pragma translate_off

process(CLK)

FILE data_file : char_file IS OUT DATAFILE; -- виходний файл символов

variable din : character; -- переменная типа символ

begin

if rising_edge(CLK) then

if EN = '1' then

write(data_file, byte2ch(DATAIN));

end if;

end if;

end process;

--pragma translate_on

end behav;

 

Если описать переменную как

FILE data_file : char_file IS IN DATAFILE; -- входний файл символов

то из этого файла можно считывать данные в тестбенч функцией read(DATAFILE,din) :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...