МАРСОХОД

Open Source Hardware Project

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА: Как писать тесты?

Как писать тесты? 2 года 1 мес. назад #6516

  • Yuris
  • Yuris аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 12
  • Спасибо получено: 0
Здравствуйте!
Более или менее разобрался как пользоваться базовыми функциями Quartus II 13, даже заливал конфигурацию в свой marsohod2, но пока думаю отлаживать свои творения в симуляторе.
Немного разобрался как запускать ModelSim, но ничего не понял, как симулировать?
Везде написано только как работать с симулятором, нагло предполагая, что новичёк уже тесты написал.
Соответственно вопрос, как писать (или описать) эти самые тестбенчи?
Ткните в инструкцию.

P.S. Скорее всего на VHDL, т.к. книга по нему есть.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Как писать тесты? 2 года 1 мес. назад #6518

Я моделирую в ActiveHDL.
Там же пишу тестбенчи.
Вот пример тестбенча для моего DDC приемника.
library ieee;
use ieee.std_logic_1164.all;

	-- Add your library and packages declaration here ...

entity ddcsim_tb is
end ddcsim_tb;

architecture TB_ARCHITECTURE of ddcsim_tb is
	-- Component declaration of the tested unit
	component ddcsim
	port(
		CLK_100MHZ : in STD_LOGIC;
		RX : in STD_LOGIC;
		ADCCLK : out STD_LOGIC;
		AUDI : out STD_LOGIC;
		AUDQ : out STD_LOGIC;
		TX : out STD_LOGIC;
		HL : out STD_LOGIC_VECTOR(3 downto 0) );
	end component;

	-- Stimulus signals - signals mapped to the input and inout ports of tested entity
	signal CLK_100MHZ : STD_LOGIC;
	signal RX : STD_LOGIC;
	-- Observed signals - signals mapped to the output ports of tested entity
	signal ADCCLK : STD_LOGIC;
	signal AUDI : STD_LOGIC;
	signal AUDQ : STD_LOGIC;
	signal TX : STD_LOGIC;
	signal HL : STD_LOGIC_VECTOR(3 downto 0);

	-- Add your code here ...

begin

	-- Unit Under Test port map
	UUT : ddcsim
		port map (
			CLK_100MHZ => CLK_100MHZ,
			RX => RX,
			ADCCLK => ADCCLK,
			AUDI => AUDI,
			AUDQ => AUDQ,
			TX => TX,
			HL => HL
		);

	-- Add your stimulus here ...

stimulus: process
begin
	RX <= '1';
    wait for 500 ns;
---	RX <= '0';
    wait for 200 ns;
	RX <= '1';
    wait for 200 ns;

---	wait;
end process;

clk_gen: process
begin
		CLK_100MHZ <= '0';
		wait for 5 ns;
		CLK_100MHZ <= '1';
		wait for 5 ns;
end process;

end TB_ARCHITECTURE;

configuration TESTBENCH_FOR_ddcsim of ddcsim_tb is
	for TB_ARCHITECTURE
		for UUT : ddcsim
			use entity work.ddcsim(ddcsim);
		end for;
	end for;
end TESTBENCH_FOR_ddcsim;

Николай.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Как писать тесты? 2 года 1 мес. назад #6519

  • Yuris
  • Yuris аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 12
  • Спасибо получено: 0
Словно китайская грамота:)

Тут просто описываем модуль как обычно (с временными задержками) только порты наружу?
В чём соль-то?

Допустим, есть описание триггера
library IEEE;
use IEEE.STD_LOGIC_1164.all;

entity my_ff_code is
     port(
         R : in STD_LOGIC;
         S : in STD_LOGIC;
         Q : out STD_LOGIC
         );
end my_ff_code;

architecture my_ff_code_arch of my_ff_code is
begin
    Q <= '1' when S='1' else
         '0' when R='1' and S='0';
end my_ff_code_arch;

Как теперь для него тестбенч писать?
(предположим, хочу последовательно подать сигналы с задержкой 1мс S->R->S->R-> S одновременно с R -> снять сигналы и закончить симуляцию)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Yuris.

Как писать тесты? 2 года 1 мес. назад #6520

library ieee;
use ieee.std_logic_1164.all;

	-- Add your library and packages declaration here ...

entity my_ff_code_tb is
end my_ff_code_tb;

architecture TB_ARCHITECTURE of my_ff_code_tb is
	-- Component declaration of the tested unit
	component my_ff_code
	port(
		R : in STD_LOGIC;
		S : in STD_LOGIC;
		Q : out STD_LOGIC );
	end component;

	-- Stimulus signals - signals mapped to the input and inout ports of tested entity
	signal R : STD_LOGIC;
	signal S : STD_LOGIC;
	-- Observed signals - signals mapped to the output ports of tested entity
	signal Q : STD_LOGIC;

	-- Add your code here ...

begin

	-- Unit Under Test port map
	UUT : my_ff_code
		port map (
			R => R,
			S => S,
			Q => Q
		);

	-- Add your stimulus here ...
stimulus: process
begin
	S <= '1';
	R <= '0';
    wait for 1 ms;
	S <= '0';
	R <= '1';
    wait for 1 ms;
	S <= '1';
	R <= '0';
    wait for 1 ms;
	S <= '0';
	R <= '1';
    wait for 1 ms;
	S <= '0';
	R <= '0';
    wait;

end process;

end TB_ARCHITECTURE;

configuration TESTBENCH_FOR_my_ff_code of my_ff_code_tb is
	for TB_ARCHITECTURE
		for UUT : my_ff_code
			use entity work.my_ff_code(my_ff_code_arch);
		end for;
	end for;
end TESTBENCH_FOR_my_ff_code;

Под строчкой -- Add your stimulus here ...
напишите свой процесс.

Николай.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Ynicky.

Как писать тесты? 2 года 1 мес. назад #6521

  • Yuris
  • Yuris аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 12
  • Спасибо получено: 0
Спасибо, примерно понял - попробую в ModelSim собрать.

entity my_ff_code_tb is
end my_ff_code_tb;

Интерфейс описывать не надо?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Как писать тесты? 2 года 1 мес. назад #6522

Этот тестбенч мне сгенерил ActiveHDL.
Я только добавил входные воздействия (stimulus) и промоделировал.
Для вашего простого триггера больше ничего описывать не нужно.

Николай.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Как писать тесты? 2 года 1 мес. назад #6523

  • Yuris
  • Yuris аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 12
  • Спасибо получено: 0

Ynicky пишет: Этот тестбенч мне сгенерил ActiveHDL.

О! Надо покопаться, может и ModelSim умеет генерировать.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Как писать тесты? 2 года 1 мес. назад #6527

  • Yuris
  • Yuris аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 12
  • Спасибо получено: 0
Нашёл цикл статей, где есть статья про моделсим и как писать тестбенчи. Правда по верилогу.
www.kit-e.ru/articles/circuit/2008_3_161.php

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Как писать тесты? 2 года 1 мес. назад #6532

Ссылка битая.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Как писать тесты? 2 года 1 мес. назад #6537

  • Yuris
  • Yuris аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 12
  • Спасибо получено: 0
Всё путём. У них просто сайт падал.
Вот сайт автора этих статей. Это iosifk на electronix.ru, кажется
iosifk.narod.ru/hdl_coding/verilog.htm

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
Время создания страницы: 0.187 секунд

facebook  GitHub  YouTube  Twitter