Учебник по Испытательному стенду - Содержание
Введение (Introduction)
Создание Нового Проекта (Creating New Design)
Функциональное Моделирование (Functional Simulation)
Производство Испытательного стенда (Generating Test Bench)
Выполнение Макрокоманды Испытательного стенда (Running Test Bench Macro)
Замена Архитектуры Проекта (Replacing Design Architecture)
Временное моделирование (Timing Simulation)
Цель этого учебника состоит в том, чтобы знакомить Вас с методами автоматического порождения испытательных стендов.
Испытательный стенд - объект проекта (объект испытательного стенда) который служит как ведущая среда для другого проверяемого объекта проекта. Проверяеммый объект называется Испытываемым устройством(ИУ). Архитектура испытательного стенда обеспечивает сигналы, которые отображены в качестве портов объекта ИСПЫТЫВАЕМОГО УСТРОЙСТВА.
В зависимости от сложноти, испытательный стенд может только управлять входами ИСПЫТЫВАЕМОГО УСТРОЙСТВА или одновременно управлять входами и сравнивать ответ вывода с предварительно сохраненным образцом. Проверочные векторы, используемые, чтобы стимулировать объект ИСПЫТЫВАЕМОГО УСТРОЙСТВА, могут быть во внешнем файле или сгенерированы немедленно в архитектуре испытательного стенда.
Как только пользователь сгенерировал испытательный стенд и подготовил тестовые векторы, испытательный стенд может использоваться много раз, чтобы выполнить автоматическую проверку последовательных изменений проекта VHDL.
Active-VHDL
обеспечивает Мастера Испытательного стенда - инструмент, разработанный для автоматического генерирования испытательных стендов.
В учебнике, Вы создадите простой проект. Чтобы сикономить время, Вы будете повторно использовать VHDL код из пробного проекта Synchronous_counter, поставляемый вместе с
Active-VHDL.1. Запустите
Active-VHDL. Если откроется диалог Getting Started, нажмите кнопку Cancel.2. Выбирает
New Design из меню File. Откроется New Design Wizard.3. Вводит Sync_counter в качестве имени проекта и нажмите
Next.4. Используйте существующий исходный файл VHDL из проекта Synchronous_counter. Выберите опцию
Add existing resource files и нажмите Next.5. Нажимает кнопку
Add files чтобы открыть диалог Add Files to Design .6. Выберите исходный файл counter.vhd из папки src каталога проекта Synchronous_counter.
Выберите переключатель
Make local copy, и затем нажмите Add чтобы скопировать файл counter.vhd в ваш каталог проектов.Затем нажмите
Next для отображения последнего диалога мастера.7. Следующий диалог мастера показывает полученные в итоге результаты, чтобы Вы могли просмотреть их прежде, чем проект будет создан.
Выберите переключатель
Compile source files after creation, и затем нажмите Finish.Проект будет создан и counter.vhd файл будет откомпилирован. После этой операции, окно
Design Browser должно выглядеть как показано ниже:
Функциональное моделирование - первый шаг процесса верификации проекта. Обычно, пользователь в этой стадии определяет проверочные векторы, для проверки проекта. Перед инициализацией моделирования, Вы должны выбрать
top-level модуль проекта. Компилируемый проект размещается в библиотеке Sync_counter, которая является рабочей библиотекой проекта по умолчанию.1. В Design Browser, нажмите пиктограмму + слева от Sync_counter, чтобы просмотреть содержание.
2. Нажимает COUNTER (COUNTER_BEHAV) объект проекта правой кнопкой мыши, и затем выберете опцию Set as Top-level из выпавшего меню.
3. Выбирает команду
Initialize Simulation из меню Simulation. Моделирующее устройство начнет обработку проекта. Успешная инициализация будет сообщена в окне Console с сообщением "Simulation has been initialized".Design Browser
автоматически переключится на закладку Simulation. Вы можете просмотреть структуру разработанного проекта. Нажмите Root, чтобы отобразить компоненты в нижней части окна Design Structure.
Проект готов для моделирования.
Теперь, Вы должны создать тестовые векторы.
4. Откройте окно
5. В окне
Waveform, выберите три входных сигнала: CLK, RESET и ENABLE, щелкая каждый из них при нажатой клавише Ctrl. Затем нажмите правую кнопку мыши.Затем, из выпадающего меню, выберите команду
Stimulators. Откроется диалоговое окно Stimulators:6. Выбирает сообщение CLK и определите его стимулятор, выбрав параметры как показано ниже:
Такие параметры настройки определяют сигнал прямоугольного импульса с частотой 20 МГЦ и рабочего цикла 50 %, начинающегося со значения LOW. Он будет использоваться для стимулирования входа CLK синхронного счетчика.
7. Щелкните
8. Теперь, выберите
RESET, и выберите параметры как показано на рисунке ниже:Сигнал RESET
служит как асинхронного сброса входа счетчика. Вы назначили для него вызывающую клавишу stimulator. Каждый раз Вы нажимаете клавишу X в течение моделирования, значение сигнала будет переключаться между значениями 0 и 1.9. Щелкните
10. Теперь, выберите сигнал
ENABLE. Выберите тип Formula для стимулятора, и введите следующую формулу в блок Enter formula:0 0, 1 135 ns, 0 520 ns, 1 580 ns, 0 980 ns, 1 1015 ns
Такие параметры определяют формулу типа стимулятора. Стимулятор управляет часами, которые активизируют вход счетчика при помощи сигнала определенного последовательностью (значений, времени) пары.
11. Щелкните
С так стимулятором, проект готов для моделирования.
12. Нажимает X, чтобы установить значение сигнала
RESET в '0'.15. Нажимает X, чтобы установить значение сигнала
16. Установите 500ns в блоке
Time Step, и затем нажимают кнопку Run For дважды, чтобы увеличить время стимулирования до 1080 ns.
17. Полученные сигналы будут использоваться для генерации испытательного стенда. Перед выполнением, Вы должны закончить моделирование и сохранять тестовые векторы в файле.
18. Выберите
End Simulation из меню Simulation.19. Выбирает
Save As из меню File. В диалоге Save As введите test для имени файла формы сигнала, затем нажмите Save. Если Вы переключитесь на вкладку Resource, Вы выясните, что test.awf файл находится в папке Waveform.
Генерация Испытательного стенда (
Test Bench)
В этом параграфе Вы сгенерируете файлы испытательного стенда для синхронного счетчика, созданного на предыдущих шагах. Вы будете использовать
Test Bench Wizard, инструмент, разработанный, чтобы облегчить процесс создания испытательных стендов.1. Переключитесь на вкладку
2. Нажмите объект проекта
COUNTER(COUNTER_BEHAV) правой кнопкой мыши, и затем выбирете Generate Test Bench из подручного меню, чтобы запустить Test Bench Wizard.3. Появится первый диалог, в котором Вы должны выбрать желаемый тип испытательного стенда.
Имеются два типа:
Single Process и WAVES. Краткое описание каждого типа дано ниже.Single Process
Объект ИСПЫТЫВАЕМОГО УСТРОЙСТВА должен иметь по крайней мере один вход. Исходный файл испытательного стенда содержит процесс, который задает сигнал для входов, проверяемого модуля. Задающий сигнал произведен последовательностью назначений сигнала, сгенерированных мастером на основе уже существующего файла формы сигнала.
WAVES-Based Испытательный стенд.
WAVES-based
испытательные стенды основаны на параллельных процедурах. Одна процедура читает внешний файл вектора теста и производит как входной задающий сигнал так и выходные векторы. Файл вектора теста (*. VEC) основан на текстовом формате, определенном стандартом WAVES. Дополнительные процедуры сравнивают выходные сигналы объекта ИСПЫТЫВАЕМОГО УСТРОЙСТВА с векторами образца. Расхождения будут сообщены в журнале. Мастер генерирует файл тестового вектора (*. VEC) из файла формы волны (*. WFV) созданный при помощи Waveform Editor. Он также проверяет, если имена объекта ИСПЫТЫВАЕМОГО УСТРОЙСТВА совместимы с сигнальными именами, сохраненными в файле формы сигнала. В этом учебнике Вы будете иметь дело с Singl процессами испытательных стендов.4. Выберете опцию
5. Выбирает переключатель
Test vectors from file, чтобы заставить мастер использовать предварительно сохраненный файл формы сигала, чтоб сгенерировать сигналы испытательного стенда. Затем, нажмите кнопку Browse, чтобы отобразить доступные файлы формы сигнала. Выберите test.wvf файл формы сигнала в диалоге Open, и затем нажмите Open.Блок
Ports found in file отобразит входы, найденные в определенном файле формы сигнала, и блок UUT entity ports отобразит входы объекта COUNTER. Обратите внимание, что объект COUNTER - объект ИСПЫТЫВАЕМОГО УСТРОЙСТВА.6. следующий диалог мастера позволяет Вам определять имена объекта испытательного стенда, архитектуры и исходного файла VHDL. Мастер автоматически предлагает заданные по умолчанию имена. Нажмите
7. последний диалог отображает пути файлов, которые будут сгенерированы мастером.
Файлы:
Выберите переключатель Generate, чтобы сгенерировать факультативный файл конфигурации, и затем нажимать Finish.
Мастер сгенерирует файлы испытательного стенда и присоединит их к проекту в специальной папке, TestBench. Обратите внимание, что
Design Browser использует специальную пиктограмму для исходных файлов испытательного стенда, чтобы отличить их от регулярных исходных файлов. Counter_tb. vhd файл откроется в окне HDL Editor. Просмотрите исходный текст, чтобы увидеть, как испытательный стенд был создан мастером.8. Нажмите пиктограмму слева от папки
Выполнение Макрокоманд Испытательного стенда
В предыдущем параграфе Вы сгенерировали файлы испытательного стенда. Один из них - макрокоманда моделирования, которая выполняет следующие операции:
Все, что Вы должны сделать, чтобы выполнить тест проекта - запустить макрокоманду и сравнить результаты моделирования с теми, что вы получили в параграфе Функциональное Моделирование.
1. Выбирает макрокоманду
2. Нажмите правую кнопку мыши и выберите
Execute из подручного меню.Вы должны получить форму сигнала как показано на рисунке ниже.
3. Чтобы закончить моделирование выберите
End Simulation из меню Simulation.
Одна из выгод испытательных стендов - они могут использоваться неоднократно, чтобы проверить последовательные изменения того же самого проекта VHDL.
В этом параграфе, Вы измените объект проекта
Counter, заменив архитектуру. После модификации, тот же самый испытательный стенд будет использоваться, чтобы проверить, изменилась ли операция счетчика. Новая архитектура структурна и основана на FDCE_1 компоненте из XILINX библиотеки (именованной XU). Архитектура доступна в проекте Synchronous_counter, так что Вы должны скопировать соответствующий исходный файл в ваш проект.1. Переключитесь на вкладку
2. Когда появится диалог
Add Files to Design, выберите файл Counter2.vhd из подкаталога src каталога Synchronous_counter. Удостоверитесь, что переключатель Make local copy выбран, и затем нажмите Add.3. Выберите файл
Counter2.vhd на вкладке Files, и затем выберете Compile из подручного меню. Обратите внимание, что файл содержит только тело архитектуры (COUNTER_STRUCT) без повторного объявления объекта. Рабочая библиотека проекта теперь содержит объект COUNTER и два варианта архитектуры: COUNTER_BEHAV и COUNTER_STRUCT.Теперь, Вы будете должны заменить COUNTER_BEHAV архитектуру на COUNTER_STRUCT архитектуру в TESTBENCH_FOR_COUNTER конфигурации. Поскольку она была сохранена внутри counter_tb. vhd файла, Вы должны отредактировать и перетранслировать файл.
4. Дважды щелкните на файле counter_tb. vhd в окне
5. Найдите TESTBENCH_FOR_COUNTER объявление конфигурации и заменяет линию:
use entity work.counter(COUNTER_BEHAV);
линией
:use entity work.counter(COUNTER_STRUCT);
6. Нажмите
Save кнопку на инструментальной панели.7. Дважды щелкает counter_TB_runtest макро метку, чтобы открыть его для редактирования. Закомментируйте первую линию:
vcom "$DSN\src\counter.vhd"
Этот шаг необходим, иначе перетрансляция counter.vhd исходного файла вызвала бы то, что объект
COUNTER будет проанализирован после анализа COUNTER_STRUCT архитектуры.8. Сохраните макро файл.
9. Нажмите на counter_TB_runtest макро файле правой кнопкой мыши, и затем выберете
Execute из подручного меню.10. Подтвердите сообщение моделирующего устройства, затем просмотрите результаты. Окно
Active-VHDL должно выглядеть как показано на рисунке ниже.11. Откройте test.wfv файл формы сигнала и сравните форму сигнала с последними результатами.
Конечная
стадия процесса разработки проекта - проверка поведения проекта после реализации. Инструментальные средства реализуют структурный VHDL. Такой код обычно обеспечивается SDF файлами с информацией синхронизации. Так что полученный исходный файл может быть проверен с тем же самым испытательным стендом, что использовалось для функционального моделированияВы не должны запускать программное обеспечение самостоятельно. Вместо этого, Вы используете файлы реализации из первоначального типового проекта Synchronous_counter, соответственно изменяя их для потребностей временного моделирования.1. Выберете
Counter_tim. vhd - backannotated VHDL структурный код
Counter_tim. sdf - SDF (стандарт формат задержек) файл синхронизации
Удостоверитесь, что переключатель
Make local copy выбран, затем нажмите Add.2.
Переключитесь на вкладку Files .Теперь Вы должны отредактировать
counter_TB_tim_cfg.vhd конфигурацию и counter_TB_runtest.do макрокоманду так, чтобы они могли использоваться для временного моделирования.3. Дважды щелкните counter_tb_cfg. vhd файл на вкладке
Files. Файл откроется в HDL Editor.use entity work.ENTITY_NAME (ARCH_NAME);
Замените ENTITY_NAME и ARCH_NAME объектом и именами архитектуры из backannotated vhdl файле. Линия должна выглядеть следующим образом:
use entity work.COUNTER (STRUCTURE);
4. Сохраняет файл конфигурации синхронизации, щелкнув на кнопке инструментальной панели.
5. Дважды щелкает
counter_TB_runtest.do макрокоманду на вкладке Files. Файл откроется в HDL Редакторе. Отредактируйте то, что необходимо, чтобы получить следующее содержание макрокоманды:6. Сохраните файл
counter_TB_runtest.do. Теперь, макрокоманда готова для выполнения. Макрокоманда компилирует исходные файлы реализации, инициализирует моделирование и запускает испытательный стенд.7. Выберете макро метку на вкладке
Files окна Design Browser. Нажмите правую кнопку мыши, и затем выберите Execute из подручного меню.Ждите, пока сообщение "
Simulation has been stopped "не появляется в Консольном окне.8. Просмотрите результаты временного моделирования в окне
Waveform Editor и сравните их с результатами функционального моделирования.