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

Test-benchи на большие объемы входных данных

Интересен как "ученые мужи" :) пишущие на VHDLе подходят к вопросу тестирования дизайна когда нужно гнать большие объемы входных данных через test-bench.

В более приземленом плане - есть дизайн в области видео, нужно его прогонять объемами входных данных хотя-бы на несколько кадров что е реалиях будет немалое кол-во данных (скажем сигналы синхронизации, данные и т.д. на несколько кадров, в каждом кадре около 300 строк, в каждой строке - около 1600 побайтовых единиц инфы (т.е. около 1600 клоков).

Т.е. на кадр входных данных получается более 400 000 тест векторов.

 

Я так понимаю что в таком случае наверно работают с текстовыми файлами векторов которые читаются в test bench, так ?

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


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

Интересен как "ученые мужи" :) пишущие на VHDLе подходят к вопросу тестирования дизайна когда нужно гнать большие объемы входных данных через test-bench.

В более приземленом плане - есть дизайн в области видео, нужно его прогонять объемами входных данных хотя-бы на несколько кадров что е реалиях будет немалое кол-во данных (скажем сигналы синхронизации, данные и т.д. на несколько кадров, в каждом кадре около 300 строк, в каждой строке - около 1600 побайтовых единиц инфы (т.е. около 1600 клоков).

Т.е. на кадр входных данных получается более 400 000 тест векторов.

 

Я так понимаю что в таком случае наверно работают с текстовыми файлами векторов которые читаются в test bench, так ?

 

Именно так.

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


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

Пример VHDL испытательного стенда (VHDL Test Bench)

VHDL испытательный стенд - программа VHDL, которая описывает ввод моделирования, использующего процедуры языка

стандартного VHDL. Данный пример VHDL испытательного стенда позволяет читать из текстового файла и записывать

результаты моделирования в текстовый файл, находящиеся в папке проекта. Код рабочий!!! Файлы для записи и чтения должны находится в папке проекта

Извините код правильно не вставил - получилось и к тому же спешил

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.numeric_std.ALL;

use ieee.std_logic_arith.all;

use std.textio.all;

LIBRARY UNISIM;

USE UNISIM.Vcomponents.ALL;

ENTITY shema_shema_sch_tb IS

END shema_shema_sch_tb;

ARCHITECTURE behavioral OF shema_shema_sch_tb IS

COMPONENT shema

PORT( Clock : IN STD_LOGIC;

DOOR : IN STD_LOGIC_VECTOR (11 DOWNTO 0);

I : OUT STD_LOGIC_VECTOR (9 DOWNTO 0);

J : OUT STD_LOGIC_VECTOR (9 DOWNTO 0);

PIXEL : OUT STD_LOGIC_VECTOR (11 DOWNTO 0);

Reset : IN STD_LOGIC;

W : OUT STD_LOGIC;

constt : IN STD_LOGIC_VECTOR (11 DOWNTO 0);

xx : OUT STD_LOGIC_VECTOR (2 DOWNTO 0);

c1 : OUT STD_LOGIC;

c2 : OUT STD_LOGIC;

c3 : OUT STD_LOGIC;

c4 : OUT STD_LOGIC;

z1 : OUT STD_LOGIC;

z2 : OUT STD_LOGIC;

z3 : OUT STD_LOGIC;

z4 : OUT STD_LOGIC;

ih : OUT STD_LOGIC;

jh : OUT STD_LOGIC;

jl : OUT STD_LOGIC;

ssjl : OUT STD_LOGIC_VECTOR (9 DOWNTO 0);

cchk : OUT STD_LOGIC);

END COMPONENT;

SIGNAL Clock : STD_LOGIC;

SIGNAL DOOR : STD_LOGIC_VECTOR (11 DOWNTO 0);

SIGNAL PIXEL : STD_LOGIC_VECTOR (11 DOWNTO 0);

SIGNAL Reset : STD_LOGIC;

SIGNAL constt : STD_LOGIC_VECTOR (11 DOWNTO 0);

SIGNAL z1 : STD_LOGIC;

SIGNAL z2 : STD_LOGIC;

SIGNAL z3 : STD_LOGIC;

SIGNAL z4 : STD_LOGIC;

SIGNAL I : STD_LOGIC_VECTOR (9 DOWNTO 0);

SIGNAL J : STD_LOGIC_VECTOR (9 DOWNTO 0);

SIGNAL xx : STD_LOGIC_VECTOR (2 DOWNTO 0);

SIGNAL c1 : STD_LOGIC;

SIGNAL c2 : STD_LOGIC;

SIGNAL c3 : STD_LOGIC;

SIGNAL c4 : STD_LOGIC;

SIGNAL w : STD_LOGIC;

SIGNAL ih : STD_LOGIC;

SIGNAL jh : STD_LOGIC;

SIGNAL jl : STD_LOGIC;

SIGNAL ssjl : STD_LOGIC_VECTOR (9 DOWNTO 0);

SIGNAL cchk : STD_LOGIC;

BEGIN

UUT: shema PORT MAP(

Clock => Clock,

DOOR => DOOR,

PIXEL => PIXEL,

Reset => Reset,

constt => constt,

z1 => z1,

z2 => z2,

z3 => z3,

z4 => z4,

I => I,

J => J,

w => w,

xx => xx,

c1 => c1,

c2 => c2,

c3 => c3,

c4 => c4,

ih => ih,

jh => jh,

jl => jl,

ssjl =>ssjl,

cchk => cchk );

 

read_from_file: process(Clock)

variable indata_line: line;

variable indata: integer;

file input_data_file: text open read_mode is "DATA.txt";

begin

if rising_edge(Clock) then

readline(input_data_file,indata_line);

read(indata_line,indata);

DOOR <= conv_std_logic_vector(indata,12);

if endfile(input_data_file) then

report "end of file -- looping back to start of file";

file_close(input_data_file);

file_open(input_data_file,"DATA.txt");

end if;

end if;

end process;

 

write_to_file: process(Clock)

variable outdata_line: line;

variable outdata: integer :=0;

file output_data_file: text open write_mode is "vhdl_output.txt";

begin

if rising_edge(Clock) then

outdata :=

1*CONV_INTEGER(To_X01Z(z1))+2*CONV_INTEGER(To_X01Z(z2))+4*CONV_INTEGER(To_X01Z(z

3))+8

*CONV_INTEGER(To_X01Z(z4));

write(outdata_line,outdata);

writeline(output_data_file,outdata_line);

end if;

end process;

clock_gen: process

begin

Clock <= '0';

wait for 50 ns;

Clock <= '1';

wait for 50 ns;

end process;

reset_gen: process

begin

Reset <= '0';

wait for 10 ns;

Reset <= '1';

wait;

end process;

const_gen: process

begin

constt <= "000000000000";

wait for 10 ns;

constt <= "000000010100";

wait;

end process;

END;

[\code]

Изменено пользователем ZMaverickZ

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


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

Интересен как "ученые мужи" :) пишущие на VHDLе подходят к вопросу тестирования дизайна когда нужно гнать большие объемы входных данных через test-bench.

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

Если в общем случае (какие-то не поддающиеся формализации данные) - то да, из файла. В более приземленном плане - простым циклом генерируется одеяло из цветных квадратов и синхронизация.

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


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

Понял, всем спасибо.

По началу, буду генерировать синхронизацию циклами в benchе, для данных уже буду ломать голову файлом...

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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