Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Test-benchи на большие объемы входных данных
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Саша Z
Интересен как "ученые мужи" smile.gif пишущие на VHDLе подходят к вопросу тестирования дизайна когда нужно гнать большие объемы входных данных через test-bench.
В более приземленом плане - есть дизайн в области видео, нужно его прогонять объемами входных данных хотя-бы на несколько кадров что е реалиях будет немалое кол-во данных (скажем сигналы синхронизации, данные и т.д. на несколько кадров, в каждом кадре около 300 строк, в каждой строке - около 1600 побайтовых единиц инфы (т.е. около 1600 клоков).
Т.е. на кадр входных данных получается более 400 000 тест векторов.

Я так понимаю что в таком случае наверно работают с текстовыми файлами векторов которые читаются в test bench, так ?
tocha
Цитата(Саша Z @ Mar 4 2008, 17:12) *
Интересен как "ученые мужи" smile.gif пишущие на VHDLе подходят к вопросу тестирования дизайна когда нужно гнать большие объемы входных данных через test-bench.
В более приземленом плане - есть дизайн в области видео, нужно его прогонять объемами входных данных хотя-бы на несколько кадров что е реалиях будет немалое кол-во данных (скажем сигналы синхронизации, данные и т.д. на несколько кадров, в каждом кадре около 300 строк, в каждой строке - около 1600 побайтовых единиц инфы (т.е. около 1600 клоков).
Т.е. на кадр входных данных получается более 400 000 тест векторов.

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


Именно так.
Maverick
Пример VHDL испытательного стенда (VHDL Test Bench)
VHDL испытательный стенд - программа VHDL, которая описывает ввод моделирования, использующего процедуры языка
стандартного VHDL. Данный пример VHDL испытательного стенда позволяет читать из текстового файла и записывать
результаты моделирования в текстовый файл, находящиеся в папке проекта. Код рабочий!!! Файлы для записи и чтения должны находится в папке проекта
Извините код правильно не вставил - получилось и к тому же спешил
[code]
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]
DmitryR
Цитата(Саша Z @ Mar 4 2008, 18:12) *
Интересен как "ученые мужи" smile.gif пишущие на VHDLе подходят к вопросу тестирования дизайна когда нужно гнать большие объемы входных данных через test-bench.
В более приземленом плане - есть дизайн в области видео, нужно его прогонять объемами входных данных хотя-бы на несколько кадров что е реалиях будет немалое кол-во данных

Если в общем случае (какие-то не поддающиеся формализации данные) - то да, из файла. В более приземленном плане - простым циклом генерируется одеяло из цветных квадратов и синхронизация.
Саша Z
Понял, всем спасибо.
По началу, буду генерировать синхронизацию циклами в benchе, для данных уже буду ломать голову файлом...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.