Тестирование с испытательным стендом 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 изменить постфиксный вектор символов.

Похожие темы