Электронная библиотека диссертаций и авторефератов России
dslib.net
Библиотека диссертаций
Навигация
Каталог диссертаций России
Англоязычные диссертации
Диссертации бесплатно
Предстоящие защиты
Рецензии на автореферат
Отчисления авторам
Мой кабинет
Заказы: забрать, оплатить
Мой личный счет
Мой профиль
Мой авторский профиль
Подписки на рассылки



расширенный поиск

Разработка моделей и алгоритмов функциональной верификации при проектировании программируемых логических интегральных схем Дьячков Юрий Владимирович

Разработка моделей и алгоритмов функциональной верификации при проектировании программируемых логических интегральных схем
<
Разработка моделей и алгоритмов функциональной верификации при проектировании программируемых логических интегральных схем Разработка моделей и алгоритмов функциональной верификации при проектировании программируемых логических интегральных схем Разработка моделей и алгоритмов функциональной верификации при проектировании программируемых логических интегральных схем Разработка моделей и алгоритмов функциональной верификации при проектировании программируемых логических интегральных схем Разработка моделей и алгоритмов функциональной верификации при проектировании программируемых логических интегральных схем Разработка моделей и алгоритмов функциональной верификации при проектировании программируемых логических интегральных схем Разработка моделей и алгоритмов функциональной верификации при проектировании программируемых логических интегральных схем Разработка моделей и алгоритмов функциональной верификации при проектировании программируемых логических интегральных схем Разработка моделей и алгоритмов функциональной верификации при проектировании программируемых логических интегральных схем Разработка моделей и алгоритмов функциональной верификации при проектировании программируемых логических интегральных схем Разработка моделей и алгоритмов функциональной верификации при проектировании программируемых логических интегральных схем Разработка моделей и алгоритмов функциональной верификации при проектировании программируемых логических интегральных схем
>

Диссертация - 480 руб., доставка 10 минут, круглосуточно, без выходных и праздников

Автореферат - бесплатно, доставка 10 минут, круглосуточно, без выходных и праздников

Дьячков Юрий Владимирович. Разработка моделей и алгоритмов функциональной верификации при проектировании программируемых логических интегральных схем : диссертация ... кандидата технических наук : 05.13.12 / Дьячков Юрий Владимирович; [Место защиты: Воронеж. гос. техн. ун-т].- Воронеж, 2010.- 140 с.: ил. РГБ ОД, 61 10-5/1517

Содержание к диссертации

Введение

1. Анализ систем и средств автоматизации проектирования и избыточного тестирования современных программируемых логических интегральных схем 12

1.1. Этапы проектирования цифровых устройств на базе ПЛИС в САПР 12

1.2. Анализ современных средств автоматизированной верификации и избыточного тестирования ПЛИС 21

1.3. Особенности построения среды функциональной верификации и генерации тестов 30

1.4. Цель и задачи исследования 37

2. Разработка математического обеспечения процесса функциональной верификации програм мируемых логических интегральных схем 40

2.1. Построение структурной схемы процесса функциональной верификации ПЛИС 40

2.2. Формирование тестовых последовательностей для верификации ПЛИС на основе стандарта IEEE - 43

2.3. Построение графовой модели верификационного окружения ПЛИС 55

2.4. Основные выводы второй главы 64

3. Создание алгоритмов всеобщего и поэлементного тестирования программируемых логических интегральных схем 66

3.1. Конструктивные особенности основных структурных элементов плис 66

3.2. Построение алгоритмов поэлементного тестирования функциональной модели ПЛИС 72

3.3. Алгоритмы автоматизированной генерации тестовых последовательностей 77

3.4. Основные выводы третьей главы 82

4. Разработка программного обеспечения полного функционального тестирования программируемых логических интегральных схем 83

4.1. Инструментальная среда реализации верификационного окружения ПЛИС 83

4.2. Структурно-функциональная организация программного комплекса верификации 88

4.3. Использование разработанного программного обеспечения для верификации ПЛИС и анализ его эффективности 95

4.4. Основные выводы четвертой главы 109

Заключение 110

Список использованных источников 112

Приложения 122

Введение к работе

Актуальность темы. Программируемые логические интегральные съемы (ПЛИС) все больше завоевывают рынок микроэлектроники, вытесняя микросхемы с фиксированной логикой. Современные образцы ПЛИС, выполненные по 0,22-микронной технологии, способны работать на частотах до 300 МГц и реализуют до 10 млн. эквивалентных логических вентилей. Столь резкое увеличение мощности ПЛИС позволяет использовать их не только для реализации простых контроллеров и интерфейсных узлов, но и для цифровой обработки сигналов, сложных интеллектуальных контроллеров и нейрочипов. Одним из важных этапов автоматизированного проектирования ПЛИС является функциональная верификация, позволяющая еще на этапе компиляции схемы на уровне формирования ее RTL-модели обнаружить все несоответствия работы схемы и локализовать ошибки с высокой степенью точности.

Постоянное совершенствование и увеличивающаяся сложность производимых ПЛИС приводит к разрыву между технологией их изготовления и возможностями современных САПР ПЛИС. Существующие в настоящее время системы верификации ПЛИС имеют ряд недостатков, связанных ограничениями при моделировании, которые накладываются международным стандартом арифметики с плавающей точкой IEEE-754. Стандартные верификационные платформы, обладая высокой степенью универсальности, характеризуются сложностью адаптации к особенностям проектируемых объектов. Кроме того, применение стандартных платформ не позволяет в полной мере локализовать и оперативно устранять ошибки в процессе тестирования, так как выявление неисправностей осуществляется после завершения полной функциональной верификации всего проекта.

В связи с этим возникает задача разработки методов и средств функциональной верификации ПЛИС с возможностью выявления ошибок в реальном масштабе времени и продолжения моделирования после их устранения без возврата к началу проекта. При этом важным требованием к разрабатываемому верификационному окружению является наличие средств направленной автоматической генерации тестов, а также совместимость с современными САПР ПЛИС.

Таким образом, актуальность диссертационной работы определяется необходимостью разработки математического и программного обеспечения для решения задач полной функциональной верификации ПЛИС любой степени интеграции, позволяющего повысить степень локализации ошибок и сократить затраты времени на проведение тестирования.

Работа выполнена в соответствии с одним из основных научных направлений ГОУ ВПО «Воронежский государственный технический университет» «САПР и системы автоматизации производства», а также в рамках ГБ НИР 2004.17 «Методы исследования и повышения надежности и качества при проектировании радиоэлектронных устройств и систем».

Цель и задачи исследования. Целью диссертационного исследования является разработка моделей, алгоритмов и программных средств функциональной верификации программируемых логических интегральных схем и создание на их основе тестового окружения ПЛИС, обеспечивающего повышение скорости верификации на ранних этапах проектирования.

Для достижения поставленной цели необходимо решить следующие основные задачи: провести анализ методов и средств функциональной верификации ПЛИС на различных этапах создания проекта, рассмотреть место и роль процедур верификации при автоматизированном проектировании ПЛИС; разработать методику всеобщего и поэлементного тестирования с учетом конструктивных особенностей ПЛИС; сформировать математические модели создания тестовых последовательностей для верификации ПЛИС и входящих в них блоков; построить алгоритмы функционального тестирования ПЛИС и процедуры автоматизированного управления генерацией тестов; разработать верификационное программное обеспечение ПЛИС и средства его интеграции со стандартными САПР.

Методы исследования. При выполнении работы использованы принципы системного анализа, методы математического моделирования ПЛИС, элементы теории обработки и математического моделирования цифрового сигнала, элементы теории чисел с плавающей арифметикой, автоматизированного проектирования, элементы теории тестирования и верификации сложных программируемых логических интегральных схем. При разработке программных средств применялись методы системного программирования.

Научная новизна результатов исследования. В работе получены следующие результаты, характеризующиеся научной новизной: методика безвозвратного избыточного тестирования ПЛИС, позволяющая проводить функциональную верификацию на разных уровнях детализации объекта проектирования, осуществлять локализацию ошибок с высокой степенью точности и вносить изменения в проект на любом этапе без проведения повторной верификации; модель верификационного окружения ПЛИС обеспечивающая возможность многократного прогона тестов для разных типов ПЛИС и позволяющая проводить моделирование на уровне транзакций, верификацию интерфейсов различных подсистем одновременно с их проектированием; математические модели формиррвания тестовых последовательностей для верификации ПЛИС и их элементов, обеспечивающие полноту покрытия верификационными тестами функциональной модели проектируемой схемы и позволяющие выявлять несоответствия RTL-кода спецификации на уровне транзакций с возможностью многократного использования сгенерированных тестов в других проектах; алгоритмы функционального тестирования ПЛИС, отличающиеся наличием процедур автоматизированного управления генерацией тестов и позволяющие проводить структурную, поэлементную и всеобщую верификацию в реальном масштабе времени при отсутствии жестких ограничений на размерность проекта (количество блоков, плотность и особенности топологии); верификационное тестовое окружение ПЛИС, характеризующееся использованием технологии компонентно-модульного синтеза тестируемых блоков, и обеспечивающее совместимость со стандартными средствами проектирования ПЛИС, а также оперативный доступ к информации о . сравниваемых схемах и результатах сравнения.

Практическая ценность. На основе предложенных моделей и алгоритмов разработан программный комплекс, позволяющий производить функциональную верификацию программируемых логических интегральных схем и их элементов посредством автоматизированного создания тестовых векторов (тестбенчей) и сравнения отклика на них с .эталонными данными, с ведением протокола в реальном времени, что исключает участие человека. Использование этого программного комплекса позволяет значительно ускорить процесс верификации программируемых логических интегральных схем и других проектов глубоко-субмикронной техники, а также выявлять ошибки на ранних стадиях проектрірования, быстро и безошибочно, по протоколу, определять точное местоположение дефектного модуля любого уровня разукрупнения, а также проводить верификацию без постоянного участия человека.

Основные положения диссертации в виде автоматизированного программного комплекса внедрены в ОАО Концерн «Созвездие» и в учебный процесс ГОУ ВПО ВГТУ, на кафедре конструирования и производства радиоаппаратуры.

Апробация работы. Основные положения и результаты диссертационной работы докладывались и обсуждались на следующих конференциях, совещаниях и семинарах: Международной конференции «Системные проблемы надежности, качества, информационных и электронных технологий» (Сочи 2006-2009); Всероссийской научно- технической конференции молодых ученых «Современные проблемы радиоэлектроники» (Красноярск, КГТУ, 2006-2009); ежегодных научно-технических конференциях ГОУ ВПО «Воронежский государственный технический университет» и научно-методических семинарах кафедры конструирования и производства радиоаппаратуры (2006-2009).

Публикации. По теме диссертации опубликовано 18 печатных работ, в том числе 1 - в издании, рекомендованном ВАК РФ

В работах, опубликованных в соавторстве и приведенных в конце автореферата, лично соискателю принадлежат: алгоритмы верификации ПЛИС [30]; методы и алгоритмы верификационного окружения ПЛИС [31,32,48,49,81]; математические модели модулей, входящих в состав ПЛИС [50,51,73,109,112]; методика оценки эффективности верификации [82,89,111]; математические модели виртуальных прототипов и анализ эффективности применения общего языка описания аппаратуры [74,88,90,110].

Структура и объем работы. Диссертационная работа состоит из введения, четырех глав, заключения, списка использованных источников, включающего 113 наименования, приложений. Основная часть работы изложена на 110 страницах, содержит 36 рисунков и 11 таблиц.

В первой главе работы проведен анализ систем и средств автоматизации проектирования современных ПЛИС. Рассмотрена единая среда проектирования, от системного уровня до уровня регистровых передач и вентильного уровня с поддержкой языков С, C++, SystemC уровней 1.0 и 2.0 и языков описания аппаратуры Verilog и VHDL. Проведен анализ средств верификации и избыточного тестирования мировых производителей САПР ПЛИС. Дано описание и сравнение программ моделирования и верификационных платформ ведущих производителей САПР Mentor Graphics и Cadence с указанием их достоинств и недостатков. Рассматриваются основные модели разработки тестов и технологии их повторного использования.

На основе проведенного анализа определяются цель и задачи исследования.

Во второй главе рассматривается методика структурной, поэлементной и всеобщей верификации ПЛИС. Предлагается структурная схема процесса верификации ПЛИС, позволяющая проводить автоматическую генерацию тестов, их многократное использование в других проектах, высокую степень локализации ошибок, и возможность их исправления в реальном масштабе времени, с запуском верификации из точки остановки. Рассмотрены особенности стандарта IEEE-754, на основе которого реализуются все современные ПЛИС. Создана графовая модель верификации блоков, входящих в состав ПЛИС, которая позволяет обеспечить автоматическую генерацию тестов, их прогон и многократное использование, а также благодаря применению редукции упрощать верифицируемую модель, что позволяет сократить время тестирования.

Разработаны математические модели создания тестовых последовательностей для верификации входящих в состав ПЛИС: умножителя, сумматора, ОЗУ, ПЗУ.

Разработана модель создания тестовых векторов умножителя и сумматора, создания тестбенча проверки адекватности функционирования модели ОЗУ и ПЗУ. Разработанные модели создания системных тестов позволяют проводить моделирование на уровне транзакций, верификацию интерфейсов различных подсистем одновременно с их проектированием, т.е. возможность верификации, системы, отдельные блоки которой представлены на разных уровнях абстракции. Предлагаемый подход к оптимальному решению заключается в комбинации обоих названных подходов.

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

Разработанные алгоритмы и математические модели для разрабатываемого программного комплекса соответствуют следующим требованиям: алгоритмы обеспечивают высокое покрытие верифицируемого кода, поскольку это один из главных показателей качества верификации; модели обладают достаточной адекватностью и универсальностью; алгоритмы и модели экономически оправданы с точки зрения затрат времени и средств на их реализацию. высокое быстродействие, так как для полной верификации устройств на плавающей арифметике стандарта IEEE-754, необходим прогон порядка 10 млн. тестовых векторов; независимость от среды моделирования, поддержка верификационных платформ основных производителей.

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

Разработанное программное средство в автоматическом режиме производит генерацию тестовых последовательностей для ПЛИС, для умножителей и сумматоров на плавающей арифметике. Затем сгенерированные тестовые последовательности подаются в качестве стимулов на входные интерфейсы модуля на тестировании, а результаты на выходе сравниваются с эталонными, вычисленными программным средством, все расхождения протоколируются в специальный файл-лог. Запуск симуляции осуществляется путем исполнения скриптов автоматизации BASH (наиболее распространенная в настоящее время версия Unix shell). Это обеспечивает многократный прогон тестов без непосредственного участия человека.

Разработанные средства верификации поддерживают все стандартные языки проектирования и верификации - VHDL, Verilog, VHDL-AMS, Verilog-А, Spice, С, C++, SystemC, System Verilog, MATLAB, PSL assertions и др.

В заключении представлены основные результаты диссертационной работы.

В приложениях представлен фрагмент листинга генератора тестов, а также структурно-функциональные модели ОЗУ и ПЗУ.

1 АНАЛИЗ СИСТЕМ И СРЕДСТВ АВТОМАТИЗАЦИИ

ПРОЕКТИРОВАНИЯ И ИЗБЫТОЧНОГО ТЕСТИРОВАНИЯ

СОВРЕМЕННЫХ ПРОГРАММИРУЕМЫХ ЛОГИЧЕСКИХ ИНТЕГРАЛЬНЫХ СХЕМ

Анализ современных средств автоматизированной верификации и избыточного тестирования ПЛИС

Компания Mentor Graphics является одним из мировых лидеров САПР любых интегральных устройств на мировом рынке, включая ПЛИС. И предлагает разработчикам большой набор средств верификации. Базовой средой является система ModelSim /9,10,71/. При верификации цифровых подсистем, по мере увеличения объема проекта и повышения требований к производительности моделирования, могут применяться аппаратные

эмуляторы VStation Pro и VStation ТВХ, а также система формальной верификации Formal Pro. В области аналоговых и смешанных подсистем весь спектр задач решает комплекс программ ADVance MS, который включает не только аналоговое SPICE-подобное (Eldo Analog Design Station) и смешанное аналого-цифровое моделирование (собственно ADVance MS), но и динамическое моделирование на транзисторном уровне (Mach ТА), а также СВЧ-моделирование (Eldo RF Design Station) /34,36,40,43/. Для верификации встроенного ПО предназначена система программно-аппаратной верификации Seamless CVE, инструмент программной отладки XRAY, а также уже упоминавшиеся средства аппаратной эмуляции VStation Pro и VStation ТВХ. Весь комплекс верификации поддерживается собственными ОС РВ VRTX и Nucleus, библиотекой IP-блоков Inventra IP и средой проектирования и верификации ПЛИС на базе IP-блоков Platform Express. delSim позволяет начинать верификацию уже на уровне спецификации системы, используя модели высокого уровня с последующей их детализацией /46,48,49/. Недостатком этой системы является то, что по мере детализации проекта и перехода на уровень RTL скорость программной симуляции резко падает.

VStation Pro, VStation ТВХ обеспечивает максимальную скорость верификации. Эта система поддерживает проекты объемом до 120 млн. эквивалентных вентилей, обеспечивает реальную скорость эмуляции с тактовой частотой до 2 МГц и скорость компиляции более 5 млн. вентилей в час /47/. Но современные ПЛИС работают уже на тактовой частоте более 3 МГц, что не позволяет полно использовать данный продукт без его дорогостоящей доработки. Причем, входное описание может быть на вентильном или RTL-уровнях на языках VHDL, Verilog или их сочетании. Система обладает мощными отладочными возможностями и обеспечивает 100%-ную визуализацию всех сигналов.

Расширением VStation Pro в область более высокого уровня абстракции является эмулятор VStation ТВХ. Он может компилировать не только вентильные и RTL-описания, но и поведенческие модели (С, C++, SystemC, SystemVerilog, Verisity є), в том числе - модели уровня транзакций. Наиболее эффективно модели высокого уровня используются для создания тестовых моделей, которые совместно с верифицируемым объектом компилируются в одну эмулирующую систему /49,51/. Это позволяет существенно ускорить процесс верификации проекта и создать среду верификации системного уровня, в которой можно решать такие задачи, как загрузка встроенной операционной системы, запуск и выполнение встроенных приложений, мультипакетная потоковая обработка, обработка видео- и радиосигналов. Система аппаратной эмуляции VStation ТВХ поддержана обширной библиотекой моделей на уровне транзакций, например моделей стандартных протоколов USB, PCI, Ethernet, моделей памяти САМ, DDR, Flash и др. Как VStation Pro, так и VStation ТВХ полностью интегрированы с системой программно-аппаратной верификации Seamless CVE и средой ModelSim /66,67,78,80/.

Formal Pro применяется по мере продвижения проекта от концептуального уровня до этапа реализации. Часто возникает задача так называемого регрессионного тестирования, т.е. последовательного прогона большого объема повторяющихся тестов. Подобная задача возникает, например, при интеграции мелких функциональных блоков в более крупные, при выполнении операций логического и физического синтеза, размещения и трассировки кристалла, при внесении изменений в схему проекта и т.п. Причем по мере приближения проекта к завершению его объем и детализация растет, вместе с ними увеличивается объем тестов и время их выполнения /71,72,89/. Данная проблема с успехом решается методом контроля эквивалентности или методом формальной верификации, реализуемым системой Formal Pro.

Формирование тестовых последовательностей для верификации ПЛИС на основе стандарта IEEE 754

При формировании математических моделей генерации тестовых последовательностей в работе использован стандарт IEEE (Institute of Electrical and Electronics Engineers). Он используется для представления действительных чисел (чисел с плавающей точкой) в двоичном коде. Наиболее используемый стандарт для вычислений с плавающей точкой, используется многими микропроцессорами и логическими устройствами, а также программными средствами. Стандарт IEEE существует в следующих вариантах: - IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985); - IEEE стандарт для двоичной арифметики с плавающей точкой (ANSI/IEEE Std 754-1985); Название стандарта в международной электротехнической комиссии IEC: - IEC 60559:1989, Binary floating-point arithmetic for microprocessor systems - IEC 60559:1989 двоичная арифметика с плавающей точкой для микропроцессорных систем - (IEC 559:1989 - старое обозначение стандарта) В августе 2008 года ассоциация IEEE выпустила стандарт IEEE 754-2008, который включил в себя стандарт IEEE 754-1985. Стандарт IEEE 754-1985 определяет: - способы представления нормализованных положительных и отрицательных чисел с плавающей точкой; - представление денормализованных положительных и отрицательных чисел с плавающей точкой; - представление нулевых чисел; - представление специальных величин бесконечность (Inflniti); - представление специальной величину "Не число" (NaN или NaNs) - четыре режима округления - пять исключений IEEE 753-1985 определяет четыре формата представления чисел с плавающей запятой: - с одинарной точностью (single-precision) 32 бита - с двойной точностью (double-precision) 64 бита - с одинарной расширенной точностью (single-extended precision) =43 бит (редко используемый) - с двойной расширенной точностью (double-extended precision) = 79 бит (обычно используют 80 бит) Основное применение в технике и программирование получили форматы 32 и 64 бита. Например в основных логических языках VB и С используют типы данных single и double. Далее, более подробно, рассмотрим формат single, так как double является просто увеличенной копией single. Возьмем, к примеру, десятичное число 155.625. Представим это число в нормализованном экспоненциальном виде : 1.55625 10Л2 =1,55625е+2. Число 1,55625е+2 состоит из двух частей: мантиссы М=1.55625 и экспоненты е =+2 Если мантисса находится в диапазоне 1 =М 2 то число считается нормализованным. Экспонента представлена основанием системы исчисления (в данном случае 10) и порядком (в данном случае +2). Порядок экспоненты может иметь отрицательное значение, например число 0,0155625=1,55625е-2. Рассмотрим преобразование десятичного числа в двоичное с плавающей точкой. Задача сводится к представлению десятичного числа с плавающей точкой, в двоичное число с плавающей точкой в экспоненциальном нормализованном виде: 155.625 = 10011011.101 - число в двоичной системе с плавающей точкой 1.55625е+2=1.0011011101е+111-число в нормализованном экспоненциальном виде В результате мы получили в двоичном коде: М=1.0011011101 (мантисса) е= +111 (экспонента по основанию 2) Преобразование двоичного числа с плавающей точкой в 32 битный формат ІЕЕЕ754: 1. Число может быть +/- . Поэтому отведем 1 бит для обозначения знака числа: 0-положительное, 1-отрицательное (этот бит будет самый старший в 32 битной последовательности) 2. Далее пойдут биты экспоненты, для этого выделим 1 байт (8 бит), но экспонента тоже может быть +/- Для определения знака экспоненты, чтобы не вводить ещё один бит знака, добавим смещение к экспоненте + 127(0111 1111 - это половина пространства отведенного под экспоненту). То есть, если экспонента = +7 (+111 в двоичной), то смещенная экспонента = 7+127=134. А если бы наша экспонента была -7 , то смещенная экспонента 127-7 =120. Смещенную экспоненту мы и будем записывать в отведенные 8 бит. При этом, когда нам будет нужно получить экспоненту, мы просто отнимем 127 от этого байта. 3. Оставшиеся 23 бита отводятся для мантиссы. Но у нормализованной двоичной мантиссы первый бит всегда равен 1, так как число лежит в диапазоне 1 =М 2. Нет смыла, записывать единицу в отведенные 23 бита, поэтому в отведенные 23 бита мы запишем остаток от мантиссы.

Построение алгоритмов поэлементного тестирования функциональной модели ПЛИС

Для реализации процесса функционально поэлементного тестирования ПЛИС, разработаны алгоритмические схемы, позволяющие осуществлять локализацию несоответствия RTL-кода спецификации, оперативно исправлять ошибки использую стандартные средства моделирования, и возобновлять верификацию с момента устранения ошибки не начиная верификацию с начала проекта.

Алгоритм функции умножения над операндами с плавающей точкой в формате IEEE-754 представлен на рис. 3.5. Как видно из схемы алгоритм перед произведением вычислений значения результата (пункты 21, 24, 25, 27 и вычисление знака результата в пункте 4) производит проверку, является ли операнды нормализованными и вообще числами. Для этого сначала производится проверка, того является ли операнды числом, последовательно для первого и второго операнда (пункты 2, 3, 5, 8, 11, 12, 15 и 6, 7, 9, 10, 13, 14, 16 соответственно), для чего производится определение значения экспоненты, и в случае если экспонента одного из операндов равна OxFF (пункты 2 и 6) и экспонента второго операнда также равна OxFF, а выражение aSig (( ЬЕхр = OxFF ) && bSig больше 0 производится передача операндов функции propagateFloat32NaN (пункты 5 и 10), которая предназначена для вычисления значения результата операции в случае, когда один или оба операндов не являются числом (Not a Number - NaN). Также производится проверка правильности операндов (пункты 8, 9) и в случае если один из них равен нулю производится инициализация исключения и возвращается NaN по умолчанию (пункты 14, 16), иначе результат бесконечность, знак которой определен раннее (пункт 4) и значение OxFF для экспоненты и 0 для мантиссы передается специальной функции packFloat32 (пункты 11, 13), которая производит упаковку этих значений и возвращает результат типа float32.

В случае если ни один из операндов не NaN, производится проверка являются ли они нормализованными и производится нормализация если это необходимо (пункты 17, 18, 19, 20 и 22, 23, 26, 28 для первого и второго операнда соответственно). Признаком ненормализованного числа является равная нулю экспонента (пункты 17 и 22), в этом случае вызывается функция normalizeFloat32Subnormal которой передаются указатели на нормализованный операнд. Также в процессе проверки нормализованности числа производится проверка является ли один из операндов нулем, то есть не равна нулю кроме экспоненты еще и мантисса (пункты 18 и 23). В этом случае результат ноль, поэтому в функцию packFloat32 (пункты 20 и 26) передаются нули для экспоненты и мантиссы и знак (вычисленный в пункте 4). Собственно вычисление произведения двух нормализованных чисел производится следующим образом (пункт 21), вычисляется значение экспоненты результата, складываются экспоненты операндов, при этом учитывается смещение -127 с которым хранятся экспоненты. Затем производится вычисление значения мантиссы результата и ее приближение путем коррекции экспоненты (пункты 24, 25). Полученная для результата экспонента и мантисса передается в функцию roundAndPackFloat32, где округляется и представляется в формате float32.

Алгоритм функции сложения над операндами с плавающей точкой в формате IEEE-754 представлена на рис. 3.6. При вычислении суммы может возникнуть три различных ситуации: когда разность экспонент операндов положительна (пункты 6, 3, 7, 8, 10, 11,12, 15, 17, 18), когда разность экспонент операндов отрицательна (пункты 1, 5, 9, 13, 14, 16, 19, 20, 21, 23) и когда равна нулю (пункты 22, 24, 25,27, 28, 31). Для каждого из вариантов производится проверка на NaN (пункты 8, 5 , 22 соответственно) в случае успешности которой операнды передаются для вычисления специальной функции.

Структурно-функциональная организация программного комплекса верификации

Функциональная схема тестового окружения для верификации модели ОЗУ представлена на рис. 4.4. Стрелками обозначены направления движения потока данных в системе. Тестбенч генерирует адрес произвольной ячейки и ее содержание, затем производит операцию записи в эту ячейку, после чего повторяет этот процесс для 16384 ячеек памяти. Как только процесс записи завершен, система считывает содержимое записанных ячеек и сравнивает результаты с эталонными. Все расхождения протоколируются в специальный файл, что позволяет проводить верификацию в автоматическом режиме без участия человека. Функциональная схема тестового окружения для верификации front-end модели ПЗУ представлена на рис. 4.5. Принцип работы аналогичен используемому для тестирования модели ОЗУ, за исключением того, что запись не производится, а из модели ПЗУ считываются определенные ячейки с заранее известными эталонными значениями. Результаты также протоколируются в файл.

Функциональная схема тестового окружения при тестировании сумматоров и умножителей представлена на рис. 4.6. Генератор тестовых векторов testgen4ieee754 создает тестовые векторы и вычисляет эталонное значение для каждой пары векторов с помощью вызова функции библиотеки ieee754float, представляющей собой программную реализацию стандарта IEEE-754 /14,15,16,21,23,37,38/, триады чисел: первый операнд, второй операнд, эталонный результат, записываются в текстовый файл в двоичном представлении с символом перевода строки в качестве разделителя.

Тестбенч последовательно читает тестовые триады и использует оба операнда в качестве стимулов для модуля умножителя или сумматора. После получения результатов от модели производится сравнение с эталонными результатами, все случаи расхождения протоколируются в специальный файл.

Функциональная схема тестового окружения для верификации ПЛИС представлена на рис. 4.7. Сгенерированный в MATLAB файл тестовых векторов считывается системной моделью ПЛИС, которая производит его преобразование в эталонный спектр, и дамп файл использованных при преобразовании коэффициентов. Из дампа с помощью генератора front-end модели создается модель ПЗУ которая затем подключается к RTL модели ПЛИС.

Затем производится моделирование RTL модели, при котором в качестве входных данных выступает исходный файл временной функции, после чего тестбенч производит сравнение данных полученных в RTL модели с эталонным спектром, протоколируя различия в специальный текстовый файл.

Программный комплекс состоит из тестбенчей на VHDL и исходных кодов вспомогательных программных средств, которые перед применением требуют компиляции на целевой системе. В исполняемом состоянии функции тестового окружения реализуют файлы hex2rom, testgen4ieee754, библиотека ieee754float, ряд тестбенчей на VHDL, набор скриптов тестирования.

При разработке программного комплекса использована среда проектирования на основе текстового редактора GNU Emacs, коллекции компиляторов GNU, средств управления проектами GNU make и контроля версий Subversion, а для тестбенчей еще и среда моделирования Cadence Incisive Unified Simulator. Структура каталогов тестового с кратким описанием представлена в таблице 4.1, назначение VHDL файлов тестбенчей собраны в таблице 4.2, назначение исполняемых файлов в таблице 4.3, в таблице же 4.4 представлены BASH скрипты автоматизации.

Похожие диссертации на Разработка моделей и алгоритмов функциональной верификации при проектировании программируемых логических интегральных схем