Тестирование с испытательным стендом HDL

Рабочий процесс для тестирования с испытательным стендом HDL

Генерация HDL-кода фильтра и испытательного стенда

Используйте пользовательский интерфейс Filter Design HDL Coder™ или интерфейс командной строки, чтобы сгенерировать HDL-код для вашего проекта фильтра и испытательного стенда. Пользовательский интерфейс генерирует файл испытательного стенда VHDL или Verilog, в зависимости от вашего выбора языка для сгенерированного HDL-кода. Можно задать различный язык испытательного стенда путем выбора опции Test bench language в панели Test Bench диалогового окна Generate HDL. Вы не можете задать различный язык испытательного стенда при использовании интерфейса командной строки.

Следующие данные показывают настройки для генерации фильтра (VHDL) и испытательный стенд (Verilog) файлы MyFilter.vhd и MyFilter_tb.v. Диалоговое окно также задает местоположение для сгенерированных файлов, в этом случае, папки hdlsrc под текущей рабочей папкой.

После того, как вы нажимаете Generate, информация о прогрессе отображений кодера, подобная следующему в Командном окне MATLAB®:

### Starting VHDL code generation process for filter: MyFilter
### Generating: C:\Work\sl_hdlcoder_work\hdlsrc\MyFilter.vhd
### Starting generation of MyFilter VHDL entity
### Starting generation of MyFilter VHDL architecture
### HDL latency is 2 samples
### Successful completion of VHDL code generation process for filter: MyFilter

### Starting generation of VERILOG Test Bench
### Generating input stimulus
### Done generating input stimulus; length 3429 samples.
### Generating Test bench: C:\Work\sl_hdlcoder_work\hdlsrc\MyFilter_tb.v
### Please wait ...
### Done generating VERILOG Test Bench

Примечание

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

Если вы вызываете функцию generatehdl от интерфейса командной строки, устанавливаете код и опции генерации испытательного стенда с парами значения и именем свойства. Можно также использовать функциональный generatetbstimulus, чтобы возвратить стимул испытательного стенда для переменной рабочей области.

Запуск средства моделирования

После того, как вы сгенерируете свой фильтр и файлы HDL испытательного стенда, запустите свое средство моделирования. Когда вы запускаете средство моделирования Mentor Graphics® ModelSim®, отображение на экране, подобное следующему, появляется:

После запуска средства моделирования, набор текущая папка к папке, которая содержит ваши сгенерированные файлы HDL.

Компиляция сгенерированных файлов фильтра и испытательного стенда

Используя ваш выбор компилятора HDL, скомпилируйте сгенерированный фильтр и файлы HDL испытательного стенда. В зависимости от языка сгенерированного испытательного стенда и средства моделирования вы используете, вам, вероятно, придется завершить некоторую настройку перед компиляцией. Например, в средстве моделирования Mentor Graphics ModelSim, вы можете принять решение создать библиотеку проекта, чтобы сохранить скомпилированные сущности VHDL, пакеты, архитектуру и настройки.

Следующая последовательность команды Mentor Graphics ModelSim изменяет текущую папку на hdlsrc, создает библиотеку work проекта и компилирует код испытательного стенда фильтра и фильтра VHDL. Команда vlib создает библиотеку проекта, работают, и команды vcom инициируют компиляции.

cd hdlsrc
vlib work
vcom MyFilter.vhd
vcom MyFilter_tb.vhd

Примечание

Для кода испытательного стенда VHDL, который имеет (двойную) реализацию с плавающей точкой, используйте компилятор, который поддерживает VHDL-93 или VHDL-02. Например, в средстве моделирования Mentor Graphics ModelSim, задайте команду vcom с опцией -93. Не компилируйте сгенерированный код испытательного стенда с компилятором VHDL-87. Испытательные стенды VHDL с помощью типов данных с двойной точностью не поддерживают VHDL-87. Код испытательного стенда использует атрибут изображения, который доступен только в VHDL-93 или выше.

Следующее отображение на экране показывает эту последовательность команды и информационные сообщения, отображенные во время компиляции.

Выполнение симуляции испытательного стенда

Если ваши сгенерированные файлы HDL скомпилированы, загружают и запускают испытательный стенд. Процедура отличается в зависимости от средства моделирования, которое вы используете. В средстве моделирования Mentor Graphics ModelSim вы загружаете испытательный стенд для симуляции с командой vsim. Например:

vsim work.MyFilter_tb

Следующее отображение показывает результаты загрузки work.MyFilter_tb с командой vsim.

Если проект загружается в средство моделирования, рассмотрите открытие окна экрана для контроля симуляции, когда испытательный стенд запускается. Например, в средстве моделирования Mentor Graphics ModelSim, можно использовать команду add wave *, чтобы открыть окно wave, чтобы просмотреть результаты симуляции как формы волны HDL.

Чтобы начать запускать симуляцию, дайте команду средства моделирования запуска. Например, в средстве моделирования Mentor Graphics ModelSim, можно запустить симуляцию с команды run -all.

Следующее отображение показывает команду add wave *, используемую, чтобы открыть окно wave и команду -run all, используемую, чтобы запустить симуляцию.

Когда ваша симуляция испытательного стенда запускается, см. за сообщениями об ошибке. Если сообщения об ошибке появляются, интерпретируют их, когда они принадлежат вашему проекту фильтра и опциям генерации кода, вы применялись. Например, некоторые опции оптимизации HDL могут привести к числовым результатам, которые отличаются от результатов, приведенных исходным объектом фильтра. Для испытательных стендов HDL сравнены ожидаемые и фактические результаты. Если они отличаются (исключая заданный допуск на погрешность), сообщение об ошибке, подобное следующему, возвращено:

Error in filter test: Expected xxxxxxxx Actual xxxxxxxx

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

Примечание

Сообщение отказа, которое появляется в предыдущем отображении, не отмечает ошибка. Если сообщение включает текст Test Complete, испытательный стенд выполнение до завершения, не сталкиваясь с ошибкой. Часть Failure сообщения связывается к механизму использование кодера, чтобы закончить симуляцию.

Следующее окно wave показывает результаты симуляции формами волны HDL.

Включение генерации испытательного стенда

Включить генерацию испытательного стенда HDL:

  1. Выберите панель Test Bench в диалоговом окне Generate HDL.

  2. Выберите опцию HDL test bench, как показано в следующей фигуре.

  3. Нажмите Generate, чтобы сгенерировать код испытательного стенда и HDL.

Совет

По умолчанию HDL test bench выбран.

Альтернатива командной строки: Используйте функцию generatehdl со свойством GenerateHDLTestBench сгенерировать испытательный стенд HDL.

Переименование испытательного стенда

Кодер выводит имя файла испытательного стенда путем добавления постфиксного _tb к имени квантованного объекта фильтра. Расширение типа файла зависит от типа испытательного стенда, который генерируется.

Если испытательный стенд...Расширение...
Файл VerilogЗаданный полем Verilog file extension в подпанели General панели Global Settings диалогового окна Generate HDL
Файл VHDLЗаданный полем VHDL file extension в панели Global Settings диалогового окна Generate HDL

Файл помещается в папку, заданную опцией Folder в панели Target диалогового окна Generate HDL.

Чтобы задать имя испытательного стенда, введите имя в поле Name панели Test bench settings, как показано в следующей фигуре.

Примечание

Если вы вводите вектор символов, который является зарезервированным словом VHDL или Verilog, кодер исправляет идентификатор путем добавления постфикса зарезервированного слова к вектору символов.

Альтернатива командной строки: Используйте свойство generatehdl TestBenchName, чтобы задать имя для вашего испытательного стенда.

Разделение кода испытательного стенда и данных в отдельные файлы

По умолчанию кодер генерирует один файл испытательного стенда, содержа функции помощника испытательного стенда, данные и код испытательного стенда. Можно разделить эти элементы в отдельные файлы путем выбора опции Multi-file test bench в подпанели Configuration панели Test Bench диалогового окна Generate HDL.

Когда вы выбираете опцию Multi-file test bench, опция Test bench data file name postfix включена. Имена файлов испытательного стенда затем выведены с имени испытательного стенда и постфиксной установки, TestBenchName_TestBenchDataPostfix.

Например, если именем испытательного стенда является my_fir_filt, и выходной язык является VHDL, имена файлов испытательного стенда по умолчанию:

  • my_fir_filt_tb.vhd: код испытательного стенда

  • my_fir_filt_tb_pkg.vhd: помощник функционирует пакет

  • my_fir_filt_tb_data.vhd: блок данных

Если именем фильтра является my_fir_filt, и выходным языком является Verilog, имена файлов испытательного стенда по умолчанию:

  • my_fir_filt_tb.v: код испытательного стенда

  • my_fir_filt_tb_pkg.v: помощник функционирует пакет

  • my_fir_filt_tb_data.v: данные об испытательном стенде

Альтернатива командной строки: Используйте свойства generatehdl MultifileTestBench, TestBenchDataPostfix и TestBenchName, чтобы сгенерировать и назвать отдельные функции помощника испытательного стенда, данные и файлы кода испытательного стенда.

Конфигурирование часов

На основе настроек по умолчанию кодер конфигурирует часы для испытательного стенда фильтра, таким образом что это:

  • Часы сил включают входные сигналы к активному, высокому (1).

  • Утверждает, что часы включают такт сигнала 1 после deassertion сигнала сброса.

  • Силы синхронизируют входные сигналы низко (0) на срок 5 наносекунд и высоко (1) на срок 5 наносекунд.

Изменить эти параметры конфигурации часов:

  1. Нажмите Configuration в панели Test bench диалогового окна Generate HDL.

  2. В панели Test Bench выберите подпанель Configuration.

  3. Сделайте следующие изменения конфигурации, как описано в следующей таблице:

    Если вы хотите...Затем...
    Отключите принуждение часов, включают входные сигналыОчистите Force clock enable.
    Отключите принуждение входных сигналов часовОчистите Force clock.
    Сбросьте номер наносекунд, что испытательный стенд управляет входными сигналами часов низко (0)Задайте положительное целое число или дважды (имеющий до 6 значительных цифр после десятичной точки) в поле Clock low time.
    Сбросьте номер наносекунд, что испытательный стенд управляет входными сигналами часов высоко (1)Задайте положительное целое число или дважды (имеющий до 6 значительных цифр после десятичной точки) в поле Clock high time.
    Изменитесь время задержки протекло между deassertion сигнала сброса, и утверждение часов включают сигнал.Задайте положительное целое число в поле Clock enable delay.

    Следующая фигура подсвечивает применимые опции.

Альтернатива командной строки: Используйте свойства generatehdl ForceClock, ClockHighTime, ForceClockEnable и TestBenchClockEnableDelay, чтобы реконфигурировать часы испытательного стенда.

Конфигурирование сброса

На основе настроек по умолчанию кодер конфигурирует сброс для испытательного стенда фильтра, таким образом что это:

  • Силы сбрасывают входные сигналы к активному, высокому (1). (Установите уровни на входе сброса испытательного стенда с опцией Reset asserted level).

  • Утверждает входные сигналы сброса на срок 2 тактов.

  • Применяет время задержки 2 наносекунд для входных сигналов сброса.

Время задержки является количеством времени, испытательный стенд содержит входные сигналы сброса мимо часов возрастающее ребро. Данные показывают приложение времени задержки (thold) для входных сигналов сброса в активных высоких и активных низких случаях. Испытательный стенд утверждает сброс после некоторых начальных тактов, заданных опцией Reset length. Reset length по умолчанию 2 тактов показывают.

Примечание

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

Следующая таблица обобщает параметры конфигурации сброса,

Если вы хотите...Затем...
Отключите принуждение входных сигналов сбросаОчистите Force reset в панели Test Bench диалогового окна Generate HDL.
Измените отрезок времени (за такты), во время которого утверждается сбросУстановите Reset length (in clock cycles) на целое число, больше, чем или равный 0. Эта опция расположена в панели Test Bench диалогового окна Generate HDL.
Измените значение сброса на активный, низкий (0)Выберите Active-low из меню Reset asserted level в панели Global Settings диалогового окна Generate HDL (см. Установку Утверждаемого Уровня для Входного сигнала Сброса),
Установите время задержкиЗадайте положительное целое число или дважды (имеющий до 6 значительных цифр после десятичной точки), представляя наносекунды, в поле Hold time. Когда Hold time изменяется, значение Setup time (ns) обновляется. Значение Setup time (ns), вычисленное как (clock period - HoldTime) в наносекундах. Эти опции находятся в панели Test Bench диалогового окна Generate HDL.

Следующие фигуры подсвечивают применимые опции.

Примечание

Настройки времени задержки и времени установки также применяются к сигналам ввода данных.

Альтернатива командной строки: Используйте свойства generatehdl ForceReset, ResetLength и HoldTime, чтобы реконфигурировать сброс испытательного стенда.

Установка времени задержки для сигналов ввода данных

По умолчанию кодер применяет время задержки 2 наносекунд для сигналов ввода данных фильтра. Время задержки является количеством времени, что сигналы ввода данных состоят в том, чтобы считаться мимо часов возрастающим ребром. Следующие данные показывают приложение времени задержки (thold) для сигналов ввода данных.

Изменить настройки времени задержки,

  1. Кликните по вкладке Test Bench в диалоговом окне Generate HDL.

  2. В панели Test Bench выберите подпанель Configuration.

  3. Задайте положительное целое число или дважды (имеющий до 6 значительных цифр после десятичной точки), представляя наносекунды, в поле Hold time. В следующей фигуре время задержки установлено в 2 наносекунды.

    Когда Hold time изменяется, обновления значения Setup time (ns). Кодер вычисляет значение Setup time (ns) как (clock period - HoldTime) в наносекундах. Setup time (ns) является полем только для отображения.

Примечание

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

Альтернатива командной строки: Используйте свойство generatehdl HoldTime, чтобы настроить время задержки, устанавливая.

Установка допуска на погрешность для оптимизированного кода фильтра

Индивидуальные настройки, которые обеспечивают оптимизацию, могут сгенерировать код испытательного стенда, который приводит к числовым результатам, которые отличаются от результатов, приведенных исходным объектом фильтра. Эти опции включают:

  • Optimize for HDL

  • Набор FIR adder style к Tree

  • Add pipeline registers для КИХ, асимметричного КИХ и симметричных КИХ-фильтров

Чтобы составлять различия в числовых результатах, рассмотрите установку допуска на погрешность для сгенерированного испытательного стенда. Допуск на погрешность является количеством младших значащих битов, которые испытательный стенд игнорирует при сравнении результатов. Установить допуск на погрешность:

  1. Выберите панель Test Bench в диалоговом окне Generate HDL.

  2. В панели Test Bench выберите подпанель Configuration.

  3. Для фильтров фиксированной точки начальное поле Error margin (bits) имеет значение по умолчанию 4. Чтобы изменить допуск на погрешность, введите целое число в поле Error margin (bits). В следующей фигуре допуск на погрешность установлен в биты 4.

Альтернатива командной строки: Используйте свойство generatehdl ErrorMargin, чтобы задать количество битов терпимой ошибки.

Устанавливание начального значения для входных параметров испытательного стенда

По умолчанию начальным значением, управляемым на входных параметрах испытательного стенда, является (неизвестный) 'X'. Также можно указать, что начальным значением, управляемым на входных параметрах испытательного стенда, является 0, можно следующим образом:

  1. Выберите панель Test Bench в диалоговом окне Generate HDL.

  2. В панели Test Bench выберите подпанель Configuration.

  3. Чтобы установить начальное входное значение испытательного стенда 0, выберите опцию Initialize test bench inputs.

    Чтобы установить начальное входное значение испытательного стенда 'X', очистите опцию Initialize test bench inputs.

Альтернатива командной строки: Используйте свойство generatehdl InitializeTestBenchInputs, чтобы установить начальное входное значение испытательного стенда.

Установка стимулов испытательного стенда

По умолчанию кодер генерирует испытательный стенд фильтра, который включает стимулы, которые соответствуют данному типу фильтра. Однако можно настроить настройки стимулов или задать пользовательские стимулы при желании.

Чтобы изменить стимулы, включенные в испытательный стенд, выберите один или несколько типов ответа на подпанели Stimuli вкладки Test bench диалогового окна Generate HDL. Фигура подсвечивает эту панель диалогового окна.

Если вы выбираете User defined response, задаете выражение или функцию, которая возвращает вектор значений, которые будут применены к фильтру. Значения, заданные в векторе, квантуются и масштабируются на основе настроек квантования фильтра.

Альтернатива командной строки: Используйте свойства generatehdl TestBenchStimulus и TestBenchUserStimulus, чтобы настроить настройки стимулов.

Установка постфикса для ссылочных имен сигнала

Ссылочные данные сигнала представлены как массивы в сгенерированном коде испытательного стенда. Вектор символов, заданный Test bench reference postfix, добавлен к сгенерированным именам сигнала. Значением по умолчанию является '_ref'.

Можно установить постфикс на значение кроме '_ref'. Изменить этот параметр:

  1. Выберите панель Test Bench в диалоговом окне Generate HDL.

  2. В панели Test Bench выберите подпанель Configuration.

  3. Введите новый вектор символов в поле Test bench reference postfix, как показано в следующую фигуру.

Альтернатива командной строки: Используйте свойство generatehdl TestBenchReferencePostfix, чтобы изменить постфиксный вектор символов.

Похожие темы