Улучшенный Учебник Испытательного стенда - Содержание

Введение (Introduction)

Создание Нового Проекта (Creating New Design)

Генерация Испытательного стенда (Generating Test Bench)

Выполнение Макрокоманды Испытательного стенда (Running Test Bench Macro)

Временное моделирование (Timing Simulation)

Корректировка Файла Вектора Теста (Adjusting Test Vector File

Введение

Цель этого продвинутого учебника испытательного стенда состоит в том, чтобы познакомить Вас с методами автоматического генерирования WAVES-based испытательных стендов. Базисный учебник испытательного стенда, который Вы прошли рассказывает об одиночных (single) испытательных стендах процесса. Одиночный испытательный стенд процесса может только управлять входами объекта ИСПЫТЫВАЕМОГО УСТРОЙСТВА, в то время как WAVES-based испытательный стенд одновременно управляет входами и сравнивает ответ с предварительно сохраненным образцом. Тестовые векторы, используемые для стимулирования объекта ИСПЫТЫВАЕМОГО УСТРОЙСТВА размещены во внешнем файле (*. VEC) основанный на текстовом формате, определенном стандартом WAVES. Дополнительные процедуры сравнивают выходные сигналы объекта ИСПЫТЫВАЕМОГО УСТРОЙСТВА с векторами образца. Расхождения будут сообщены в журнале. Мастер Испытательного стенда генерирует файл вектора теста (*. VEC) из файла формы сигнала (*. AWF) созданный с помощью Редактора Формы сигнала. Он также проверяет, совместимы ли имена порта объекта ИСПЫТЫВАЕМОГО УСТРОЙСТВА с именами сигнала, сохраненными в файле формы сигнала.

Как только пользователь сгенерировал испытательный стенд и подготовил технические требования векторов теста, испытательный стенд может использоваться много раз, чтобы выполнить автоматическую проверку последовательных изменений проекта VHDL. Кроме того, тот же самый испытательный стенд может использоваться с различными файлами вектора теста, при условии, что они определяют синхронизацию тех же самых сигналов. Мастер - не единственный инструмент, который генерирует файлы вектора теста в формате WAVES. Active-VHDL обеспечивает команду Export Waveform, которая может использоваться, чтобы преобразовывать файлы формы сигнала (*. AWF) в формат файлов векторов теста WAVES (*. VEC).

 

Создание Нового Проекта

В учебнике, Вы создадите простой проект. Чтобы сохранить время, Вы будете повторно использовать VHDL код из проекта Loadable_counter, поставляемого вместе с Active-VHDL.

1. Запустите Active-VHDL. Если откроется диалог Getting Started, нажмите Cancel.

2. Выбирает New Design из меню File. Откроется New Design Wizard.

3. Введите L_counter в качестве имени проекта, затем использует кнопку Browse, чтобы определить расположение нового каталога проектов, и затем нажимать Next.

4. Вы будете использовать существующий VHDL исходный файл из Loadable_counter. Выберите опцию Add existing resource files и нажмите Next.

5. Нажимает кнопку Add files, чтобы открыть диалог Add Files to Design.

В диалоге, выберите исходный файл counter.vhd из src папки каталога проектов Loadable_counter.

Выберите переключатель Make local copy и затем нажмите Add чтобы скопировать counter.vhd файл в ваш каталог проектов. Затем нажмите Next.

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

Выберите переключатель Compile source files after creation и затем нажмите Finish.

Проект будет создан, и counter.vhd файл будет откомпилирован. После этой операции, окно Design Browser выглядеть как показано ниже:

 

Генерация Испытательного стенда

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

1. Выберете опцию Add files to design из меню Design.

2. В диалоговом окне Add Files to Design ввыберете All files из списка Files of type, затем выберите Functional.awf файл формы сигнала из src папки проекта Loadable_counter, и затем нажимите Add.

3. В Окне Design Browser нажмите пиктограмму слева от counter.vhd.

4. Нажимает на объекте проекта COUNTER(COUNTER_BEHAV) правой кнопкой мыши, и затем выберете choose Generate Test Bench из подручного меню, чтобы запустить Test Bench Wizard.

5. Появится первый диалог Мастера Испытательного стенда, в котором Вы должны выбрать желаемый тип испытательного стенда.

 

6. Выберете опцию WAVES Based, и затем нажмите Next .

7. Выберете переключатель Test vectors from file, чтобы мастер использовал предварительно сохраненный файл формы сигнала. Затем, нажмите кнопку Browse, чтобы отобразить доступные файлы формы сигнала. Выберите Functional.awf файл формы сигнала в диалоге Open, и затем нажмите Open.

Блок Ports found in file отобржает входы, найденные в определенном файле формы сигнала, и блок UUT entity ports отобразит входы объекта COUNTER. Обратите внимание, что объект СЧЕТЧИКА - объект ИСПЫТЫВАЕМОГО УСТРОЙСТВА. Щелкните на кнопке Next.

8. Следующий диалог мастера позволяет Вам определять имена объекта испытательного стенда, архитектуры и VHDL исходного файла. Мастер автоматически предлагает заданные по умолчанию имена. Нажмите Next.

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

Файлы:

Выберите переключатель Generate, чтобы сгенерировать факультативный файл конфигурации, и затем нажмите Finish.

Мастер сгенерирует файлы испытательного стенда и поместит их в проект в специальной папке, WAVES. Обратите внимание, что Design Browser использует специальную пиктограмму для исходных файлов испытательного стенда, чтобы отличить их от регулярных источников. Counter_tb. vhd файл откроется в HDL Редакторе окно. Просмотрите исходный текст, чтобы увидеть, как испытательный стенд был создан мастером.

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

10. Нажмите пиктограмму слева от папки WAVES на вкладке Files. Содержание папки WAVES показывается на рисунке ниже:

 

Выполнение Макрокоманды Испытательного стенда

В предыдущем параграфе Вы сгенерировали WAVES-based испытательный стенд для вашего проекта. Теперь Вы можете выполнить макрокоманду испытательного стенда, чтобы рассмотреть результаты функционального моделирования проекта. Обратите внимание, что сгенерированная форма волны будет содержать не только фактические синхронизации результата вашего проекта но также и ожидаемых синхронизации. Форма волны будет также содержать ERR_STATUS дополнительный сигнал, чье значение 0 указывает, что никакие расхождения не были обнаружены между ожидаемыми и фактическими синхронизациями.

Макрокоманда испытательного стенда выполняет следующие операции:

Все, что Вы должны сделать, чтобы выполнить тест проекта - выполнить макрокоманду и рассмотреть результаты моделирования. Если значение сигнала ERR_STATUS равняется 0, то результаты таккие же как ожидалось получить. Если было обнаружено расхождение то значение сигнала ERR_STATUS будет равняться 1. Детали обнаруженных расхождений регистрируются в counter_report.log.

1. Выберите макрокоманду Counter_TB_runtest.do на вкладке Files окна Design Browser.

2. Нажмите правую кнопку мыши и выберитет Execute из подручного меню.

Дождитесь показанного ниже окна сообщения, затем нажмите OK.

Вы должны получить формы сигнала как показано на рисунке ниже.

3. Закончите моделирование, выбрав End Simulation из меню Моделирования.

 

Временное моделирование

 Конечная стадия процесса разработки проекта - проверка поведения проекта после реализации. Инструментальные средства реализуют структурный VHDL. Такой код обычно обеспечивается SDF файлами с информацией синхронизации. Так что полученный исходный файл может быть проверен с тем же самым испытательным стендом, что использовалось для функционального моделированияВы не должны запускать программное обеспечение самостоятельно. Вместо этого, Вы используете файлы реализации из первоначального типового проекта Loadable_counter соответственно изменяя их для потребностей временного моделирования.

1. Выберете Add Files to Design из меню Design. В диалоге Add Files to Design выберете папку src, размещенную в папке Loadable_counter, и затем выберете следующие два файла:

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. Дважды щелкните counter_TB_runtest.do макрокоманду на вкладке Files. Файл откроется в HDL Редакторе. Отредактируйте следующим образом:
    1. In the #Compiling UUT entity design files section, replace the line
      vcom $DSN\src\counter.vhd with the line:
      vcom $DSN\src\counter_tim.vhd
    2. In the #Compiling timing configuration section, uncomment the line
      vcom $DSN\src\WAVES\counter_TB_tim_cfg.vhd
    3. In the #Run simulation section replace the line
      vsim TESTBENCH_FOR_counter with the line
      vsim TIMING_FOR_counter -sdftyp /UUT=$DSN\SRC\counter_tim.sdf

5. Сохраните файл counter_TB_runtest.do. Теперь, макрокоманда готова для выполнения. Макрокоманда компилирует исходные файлы реализации, инициализирует моделирование и запускает испытательный стенд.

6. Выберите макро метку на вкладке Files окна Design Browser. Нажмите правую кнопку мыши, и затем выберите Execute из выпадающего меню. Дождитесь показанного ниже сообщения, затем нажмите OK.

7. Просмотрите результаты временного моделирования в Редакторе Формы сигнала и сравните их с результатами функционального моделирования.

Поскольку частота 125 МГЦ была выбрана для входного сигнала CLK, который является слишком высоким для реальной синхронной реализации счетчика, значение сигнала вывода ACTUAL_Q не изменяется как ожидается. Обратите внимание, что значение сигнала ERR_STATUS равно 1, указывая расхождения между сигналами ACTUAL_Q и EXPECT_Q. Просмотрите журнал, чтобы увидеть, как представляются в нем расхождения.

Чтобы сделать так, перейдите к вкладке Resource Окна просмотра Проекта, нажмите пиктограммуi слева от папки Logs, и затем дважды щелкните метку файла src\WAVES\counter_report.log.

 

Корректировка Файла Вектора Теста

 

В этом параграфе Вы будете редактировать форму сигнала так, чтобы временное моделирование могло бы успешно выполниться. Первая вещь, которую Вы должны сделать, отмасштабировать форму сигнала, чтобы получить частоту сигнала 12.5 МГЦ входа CLK, который должен быть приемлем реализацией проекта. Вы будете использовать команду Stretch, которая является доступной из подручного меню после выбора области формы сигнала, который нужно масштабировать.

 1. Выберите End Simulation из меню Simulation.

2. Откройте оригинальный файл формы сигнала Functional.awf, который использовался для генерации испытательных стендов.

  1. Выберите целую область формы волны:

A. В Waveform Editor, включите режим Редактирования, щелкнув кнопку на инструментальной панели.

    1. Подведите указатель над областью формы волны, которая будет выбрана. Нажмите и задержите кнопку мыши. Указатель примет новую форму: .
    2. Перемещайте мышь, чтобы выбрать желаемую область. Выбор должен содержать все формы сигналов.
    3. Отпустите кнопку мыши.

4. Нажмите правую кнопку мыши, затем выберите команду Stretch из подручного меню. Откроется диалог, показанный ниже:

5. В блоке Scale введите 1000 %, и затем нажмите OK. Это изменит CLK частоту на 12.5 МГЦ.

6. Сохраните файл формы сигнала, щелкнув кнопку .

7. Выберите Export Waveform из меню Waveform. Откроется следующий диалог:

Выберите Waves vectors (*.VEC) из блок Save as type, выберите файл Functional.vec из папки \\src\WAVES, и затем нажмите Save. Нажмите Yes когда спрашивается, если Вы хотите заменить существующий файл.

8. Выберите библиотеку L_counter на вкладке Files, нажмите правую кнопку мыши, и затем выбирают Empty из подручного меню.

Обратите внимание, что vsim TIMING_FOR_counter -sdftyp /UUT=$DSN\SRC\counter_tim.sdf информирует моделирующее устройство, чтобы применить задержки из файла counter_tim.sdf. С целью функционального моделирования использовалось значение по умолчанию WND_BEGIN_DEFAULT и WND_END_DEFAULT параметры окна. Соответствующие объявления могут быть найдены в файле counter_tb_declaration. vhd:

constant WND_BEGIN_DEFAULT: EVENT_TIME := 1 ps;
constant WND_END_DEFAULT: EVENT_TIME := 0 ps;

Те значения не могут использоваться для временного моделирования. Вы должны отредактировать counter_tb_declaration. vhd файл, чтобы обеспечить соответствующие значения оконных фреймов. Как показано на рисунке ниже, параметр WND_BEGIN_DEFAULT для проекта, действующего с синхросигналом 12.5 МГЦ, должен быть больший чем 26. Рисунок показывает синхронизации для WND_BEGIN_DEFAULT, равного 30 ns, и WND_END_DEFAULT, равного 40 ns.

9. Дважды щелкните на counter_tb_declaration. vhd на вкладке Files, чтобы открыть файл для редактирования. В окне редактирования, введите WND_BEGIN_DEFAULT в блок Find. Затем, нажмите кнопку Find Next, и затем замените значения в постоянных объявлениях как показано ниже:

constant WND_BEGIN_DEFAULT: EVENT_TIME := 30 ns;
constant WND_END_DEFAULT: EVENT_TIME := 40 ns;

Нажмите кнопку .

10. Дважды щелкните counter_tb_runtest.do макро метку на вкладке Files, чтобы заменить линию:

run 400. ns линией

run 4000. ns

Сохраните макрокоманду, щелкнув кнопку .

11. Выберите counter_tb_runtest.do макро метку на вкладке Files окна Design Browser. Нажмите правую кнопку мыши, и затем выберите Execute из подручного меню.

Дождитесь показанного ниже сообщения, затем нажмите OK.

Результаты должны быть как показано на изображении ниже.