Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Язык описания оборудования очень похож на язык программирования, такой как C или ALGOL ; это текстовое описание, состоящее из выражений, утверждений и управляющих структур. Одним из важных различий между большинством языков программирования и HDL является то, что HDL явно включают понятие времени.

HDL являются неотъемлемой частью систем автоматизации проектирования электроники (EDA), особенно для сложных схем, таких как специализированные интегральные схемы , микропроцессоры и программируемые логические устройства .

Мотивация [ править ]

Из-за стремительно растущей сложности цифровых электронных схем с 1970-х годов (см . Закон Мура ) разработчикам схем требовалось, чтобы описания цифровой логики выполнялись на высоком уровне без привязки к конкретной электронной технологии, такой как ECL , TTL или CMOS . HDL были созданы для реализации абстракции на уровне передачи регистров , модели потока данных и синхронизации цепи. [1]

Существует два основных языка описания оборудования: VHDL и Verilog . В них есть разные типы описания: «поток данных, поведенческое и структурное». Пример потока данных VHDL:

БИБЛИОТЕКА  IEEE ; ИСПОЛЬЗУЙТЕ  IEEE.STD_LOGIC_1164. ВСЕ ;ENTITY  not1  ЕСТЬ  ПОРТ (  a  :  IN  STD_LOGIC ;  b :  OUT  STD_LOGIC ;  ); КОНЕЦ  not1 ;АРХИТЕКТУРА  поведенческая  OF  not1  IS НАЧАТЬ  б  <=  НЕ  ; КОНЕЦ поведенческий ; 

Структура HDL [ править ]

HDL - это стандартные текстовые выражения структуры электронных систем и их поведения во времени. Как и языки параллельного программирования , синтаксис и семантика HDL включают явные обозначения для выражения параллелизма . Однако, в отличие от большинства языков программирования , HDL также включают явное понятие времени, которое является основным атрибутом оборудования. Языки, единственная характеристика которых заключается в выражении связности цепей между иерархией блоков, должным образом классифицируются как языки списков соединений, используемые в электрическом автоматизированном проектировании.. HDL может использоваться для выражения проектов в архитектурах структурного, поведенческого или регистрового уровня для тех же функциональных возможностей схемы; в последних двух случаях синтезатор определяет архитектуру и схему логического элемента.

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

Сравнение с языками управления потоком [ править ]

Конечно, можно представить семантику оборудования с использованием традиционных языков программирования, таких как C ++ , которые работают с семантикой потока управления, а не с потоком данных , хотя для функционирования как такового программы должны быть дополнены обширными и громоздкими библиотеками классов . Однако, как правило, языки программирования программного обеспечения не включают в себя никаких возможностей для явного выражения времени и, следовательно, не могут функционировать как языки описания оборудования. До появления System Verilog в 2002 году интеграция C ++ с симулятором логики была одним из немногих способов использования объектно-ориентированного программирования.в аппаратной проверке. System Verilog - первый крупный HDL, предлагающий объектную ориентацию и сборку мусора.

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

История [ править ]

Первые языки описания оборудования появились в конце 1960-х годов и выглядели как более традиционные языки. [2] Первое, что имело длительный эффект, было описано в 1971 году в тексте « Компьютерные структуры» К. Гордона Белла и Аллена Ньюэлла . [3] В этом тексте представлена ​​концепция уровня передачи регистров , впервые использованная в языке ISP для описания поведения PDP-8 Digital Equipment Corporation (DEC) . [4]

Этот язык получил более широкое распространение с появлением модулей RT-уровня DEC PDP-16 (RTM) и книги, описывающей их использование. [5] За этим последовали как минимум две реализации базового языка ISP (ISPL и ISPS). [6] [7] ISPS хорошо подходил для описания отношений между входами и выходами проекта и был быстро принят коммерческими группами в DEC, а также рядом исследовательских групп как в США, так и среди их союзников по НАТО. .

Продукты RTM так и не получили коммерческого распространения, и DEC прекратила их продажу в середине 1980-х годов, поскольку новые методы и, в частности, очень крупномасштабная интеграция (VLSI) стали более популярными.

Отдельная работа, проделанная примерно в 1979 году в Университете Кайзерслаутерна, привела к созданию языка под названием KARL («язык передачи регистров Кайзерслаутерна»), который включал в себя функции языка расчетного проектирования, поддерживающие планирование этажей микросхем СБИС ( жаргон ) и структурированный дизайн оборудования. Эта работа была также основой интерактивного графического родственного языка KARL ABL, название которого было инициализмом для «языка блок-схем». [8] ABL была внедрена в начале 1980-х годов Centro Studi e Laboratori Telecomunicazioni ( CSELT) в Турине, Италия, на производстве графического редактора дизайна СБИС ABLED. В середине 1980-х годов международный консорциум, финансируемый Комиссией Европейского Союза, внедрил структуру проектирования СБИС вокруг KARL и ABL. [9]

К концу 1970-х годов стало популярным проектирование с использованием устройств с программируемой логикой (PLD), хотя эти конструкции в основном ограничивались проектированием конечных автоматов . В 1980 году в Data General использовались те же устройства для разработки Data General Eclipse MV / 8000 , и начала расти коммерческая потребность в языке, который мог бы хорошо им соответствовать. К 1983 году компания Data I / O представила ABEL, чтобы удовлетворить эту потребность.

В 1985 году, когда дизайн перешел на VLSI, Gateway Design Automation представила Verilog , а Intermetrics выпустила первую завершенную версию языка описания оборудования VHSIC (VHDL). VHDL был разработан по заказу программы VHSIC Министерства обороны США и основан на языке программирования Ada , а также на опыте, полученном при более ранней разработке ISPS. [10] Первоначально Verilog и VHDL использовались для документирования и моделирования схемных решений, уже записанных и описанных в другой форме (например, схематическойфайлы). Моделирование HDL позволило инженерам работать на более высоком уровне абстракции, чем моделирование на схематическом уровне, и, таким образом, увеличило проектную мощность с сотен транзисторов до тысяч. [ необходима цитата ] В 1986 году при поддержке Министерства обороны США VHDL был спонсирован как стандарт IEEE (IEEE Std 1076), а первая стандартизированная IEEE версия VHDL, IEEE Std 1076-1987, была одобрена в декабре. 1987. Позднее Cadence Design Systems приобрела Gateway Design Automation за права на Verilog-XL, симулятор HDL, который стал де-факто стандартом симуляторов Verilog на следующее десятилетие.

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

В течение нескольких лет VHDL и Verilog стали доминирующими HDL в электронной промышленности, в то время как старые и менее функциональные HDL постепенно перестали использоваться. Однако VHDL и Verilog имеют многие из тех же ограничений, например, что они непригодны для моделирования аналоговых схем или схем со смешанными сигналами . Специализированные HDL (такие как Confluence) были введены с явной целью исправить определенные ограничения Verilog и VHDL, хотя ни один из них никогда не предназначался для их замены.

За прошедшие годы было вложено много усилий в улучшение HDL. Последняя итерация Verilog, официально известная как IEEE 1800-2005 SystemVerilog, представляет множество новых функций (классы, случайные переменные и свойства / утверждения) для удовлетворения растущей потребности в улучшенной рандомизации тестовых стендов, иерархии проектирования и повторном использовании. Будущая версия VHDL также находится в разработке [ когда? ] , и ожидается, что он будет соответствовать улучшениям SystemVerilog.

Дизайн с использованием HDL [ править ]

В результате повышения эффективности, реализованного с использованием HDL, большая часть современных цифровых схем сосредоточена вокруг него. Большинство проектов начинается с набора требований или архитектурной схемы высокого уровня. Структуры управления и принятия решений часто прототипируются в приложениях с блок- схемами или вводятся в редакторе диаграммы состояний . Процесс написания HDL-описания сильно зависит от природы схемы и предпочтений разработчика стиля кодирования. HDL - это просто «язык захвата», часто начинающийся с высокоуровневого алгоритмического описания, такого как математическая модель C ++. Дизайнеры часто используют языки сценариев, такие как Perl.для автоматической генерации повторяющихся схемных структур на языке HDL. Специальные текстовые редакторы предлагают функции для автоматического отступа, синтаксической окраски и расширения объявления объекта / архитектуры / сигнала на основе макросов .

Затем код HDL проходит проверку кода или аудит. При подготовке к синтезу описание HDL подвергается множеству автоматических проверок. Проверяющие сообщают об отклонениях от стандартизированных руководств по коду, выявляют потенциально неоднозначные конструкции кода до того, как они могут вызвать неправильную интерпретацию, и проверяют общие логические ошибки кодирования, такие как плавающие порты или закороченные выходы. Этот процесс помогает устранить ошибки до того, как код будет синтезирован.

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

Моделирование и отладка кода HDL [ править ]

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

Чтобы смоделировать модель HDL, инженер пишет среду моделирования верхнего уровня (называемую испытательным стендом).). Как минимум, тестовый стенд содержит экземпляр модели (называемого тестируемым устройством или DUT), объявления контактов / сигналов для ввода-вывода модели и сигнал тактовой частоты. Код тестовой среды управляется событиями: инженер пишет операторы HDL для реализации (сгенерированного тестовой среды) сигнала сброса, для моделирования транзакций интерфейса (таких как чтение / запись шины хоста) и для мониторинга выходных данных DUT. Симулятор HDL - программа, выполняющая тестовую среду - поддерживает часы симулятора, которые являются эталоном для всех событий в моделировании тестовой среды. События происходят только в моменты, продиктованные тестовым HDL (например, переключатель сброса, закодированный в тестовом стенде), или в реакции (моделью) на стимулы и запускающие события. Современные симуляторы HDL имеют полнофункциональный графический пользовательский интерфейс., в комплекте с набором инструментов отладки. Это позволяет пользователю останавливать и перезапускать моделирование в любое время, вставлять точки останова симулятора (независимо от кода HDL), а также отслеживать или изменять любой элемент в иерархии модели HDL. Современные симуляторы также могут связывать среду HDL с библиотеками, скомпилированными пользователем, через определенный интерфейс PLI / VHPI . Связывание зависит от системы ( x86 , SPARC и т. Д. Под управлением Windows / Linux / Solaris ), поскольку имитатор HDL и пользовательские библиотеки компилируются и связываются вне среды HDL.

Проверка проекта часто является наиболее трудоемкой частью процесса проектирования из-за несоответствия между функциональной спецификацией устройства, интерпретацией спецификации разработчиком и неточностью [ необходима ссылка ] языка HDL. Большая часть начального цикла тестирования / отладки проводится в среде симулятора HDL , так как на ранней стадии проектирования происходят частые и серьезные изменения схемы. Описание HDL также может быть прототипировано и протестировано в аппаратных средствах - программируемых логических устройствах.часто используются для этой цели. Аппаратное прототипирование сравнительно дороже, чем моделирование HDL, но предлагает реальный взгляд на конструкцию. Прототипирование - лучший способ проверить взаимодействие с другими аппаратными устройствами и аппаратными прототипами. Даже те, которые работают на медленных ПЛИС, предлагают гораздо более короткое время моделирования, чем чистое моделирование HDL.

Проверка дизайна с помощью HDL [ править ]

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

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

Утверждения не моделируют активность схемы, а фиксируют и документируют намерение разработчика в коде HDL. В среде моделирования имитатор оценивает все указанные утверждения, сообщая о местонахождении и серьезности любых нарушений. В среде синтеза инструмент синтеза обычно работает с политикой остановки синтеза при любом нарушении. Верификация на основе утверждений все еще находится в зачаточном состоянии, но ожидается, что она станет неотъемлемой частью набора инструментов проектирования HDL.

HDL и языки программирования [ править ]

HDL очень похож на язык программирования программного обеспечения , но между ними есть существенные отличия. Большинство языков программирования по своей сути являются процедурными (однопоточными) с ограниченной синтаксической и семантической поддержкой для обработки параллелизма . С другой стороны, HDL напоминают языки параллельного программирования своей способностью моделировать несколько параллельных процессов (таких как триггеры и сумматоры ), которые автоматически выполняются независимо друг от друга. Любое изменение входных данных процесса автоматически запускает обновление в стеке процессов симулятора.

И языки программирования, и HDL обрабатываются компилятором (часто называемым синтезатором в случае HDL), но с разными целями. Для HDL «компиляция» относится к логическому синтезу ; процесс преобразования листинга кода HDL в физически реализуемый список соединений ворот . Выходные данные списка соединений могут принимать любую из многих форм: список соединений "моделирования" с информацией о задержке затвора, список соединений "хэндовера" для размещения и маршрутизации на полупроводниковом кристалле после синтеза или стандартный отраслевой формат обмена электронными проектами (EDIF). ) (для последующего преобразования в файл формата JEDEC ).

С другой стороны, программный компилятор преобразует листинг исходного кода в специфичный для микропроцессора объектный код для выполнения на целевом микропроцессоре. Поскольку HDL и языки программирования заимствуют концепции и функции друг у друга, граница между ними становится менее четкой. Однако чистые HDL не подходят для разработки прикладного программного обеспечения общего назначения , [ почему? ] так же, как языки программирования общего назначения нежелательны для моделирования оборудования.

Тем не менее, по мере того, как электронные системы становятся все более сложными, а реконфигурируемые системы становятся все более распространенными, в отрасли растет потребность в едином языке, который мог бы выполнять некоторые задачи как проектирования оборудования, так и программирования программного обеспечения. SystemC является примером такого - встроенное системное оборудование может быть смоделировано как недетализированные архитектурные блоки ( черные ящики с смоделированными входными сигналами и драйверами вывода). Целевое приложение написано на C или C ++ и изначально скомпилировано для системы разработки хоста; в отличие от нацеливания на встроенный ЦП, для чего требуется имитация встроенного ЦП или эмулируемого ЦП на хосте.

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

Синтез высокого уровня [ править ]

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

Такие компании, как Cadence , Synopsys и Agility Design Solutions, продвигают SystemC как способ объединения языков высокого уровня с моделями параллелизма, чтобы обеспечить более быстрые циклы проектирования для FPGA, чем это возможно при использовании традиционных HDL. Подходы, основанные на стандартном C или C ++ (с библиотеками или другими расширениями, позволяющими параллельное программирование), можно найти в инструментах Catapult C от Mentor Graphics и инструментах Impulse C от Impulse Accelerated Technologies.

Пакет CoreFire Design Suite [11] от Annapolis Micro Systems , Inc. и FPGA National Instruments LabVIEW обеспечивают подход с графическим потоком данных для входа в высокоуровневый дизайн, а такие языки, как SystemVerilog , SystemVHDL и Handel-C, стремятся достичь той же цели, но призваны повысить продуктивность существующих инженеров по аппаратному обеспечению, а не сделать FPGA более доступными для существующих инженеров-программистов .

Также возможно проектировать аппаратные модули с помощью MATLAB и Simulink, используя инструмент MathWorks HDL Coder [12] или Xilinx System Generator (XSG) (ранее Accel DSP) от Xilinx . [13]

Примеры HDL [ править ]

HDL для проектирования аналоговых схем [ править ]

HDL для проектирования цифровых схем [ править ]

Двумя наиболее широко используемыми и хорошо поддерживаемыми разновидностями HDL, используемыми в промышленности, являются Verilog и VHDL .


HDL для проектирования печатных плат [ править ]

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

См. Также [ править ]

  • Язык спецификации
  • Язык моделирования
  • Язык проверки оборудования
  • SystemC
  • SystemVerilog
  • Язык спецификации свойств
  • OpenVera
  • Bluespec
  • C в HDL
  • Поток к ЛПВП
  • Rosetta-lang

Ссылки [ править ]

  1. ^ Ciletti, Michael D. (2011). Расширенный цифровой дизайн с Verilog HDL (2-е изд.). Прентис Холл. ISBN 9780136019282.
  2. ^ Барбаччи, М. "Сравнение языков передачи регистров для описания компьютеров и цифровых систем", Университет Карнеги-Меллона, Департамент компьютерных наук, март 1973 г.
  3. ^ Белл, CG; Ньюэлл, А. (1971). Компьютерные структуры: материалы и примеры . Макгроу-Хилл. ISBN 0-07-004357-4.
  4. Перейти ↑ Reilly, ED (2003). Вехи в компьютерных науках и информационных технологиях . Гринвуд Пресс. п. 183 . ISBN 1-57356-521-0.
  5. ^ Белл, CG; Grason, J .; Ньюэлл, А. (1972). Проектирование компьютеров и цифровых систем . Цифровая пресса. LCCN 72-89566 . OCLC 440245727 .  
  6. ^ Barbacci, MC (1976). «Символическое манипулирование компьютерными описаниями: компилятор и симулятор ISPL». Департамент компьютерных наук Университета Карнеги-Меллон. DOI : 10,1184 / R1 / 6610790.v1 . Цитировать журнал требует |journal=( помощь )
  7. ^ Барбаччи, MC; Barnes, GE; Cattell, RGG; Севиорек, Д.П. (1977). "Язык описания компьютеров ISPS". Департамент компьютерных наук Университета Карнеги-Меллон. DOI : 10,1184 / R1 / 6610637.v1 . Цитировать журнал требует |journal=( помощь )
  8. ^ Girardi, G .; Хартенштейн, Р. (1983). Спецификация ABL (Отчет). CSELT и Кайзерслаутернский университет .
  9. ^ a b Hartenstein, Reiner W. (2012) [1993], "KARL and ABL" , в Mermet, J. (ed.), Основы и стандарты в языках описания оборудования , Nato Science Series E, 249 , Springer, стр. 447–, ISBN 9789401119146
  10. ^ Барбаччи, MC; Затирка, S .; Lindstrom, G .; Мэлони, член парламента (1984). «Ада как язык описания оборудования: начальный отчет». Департамент компьютерных наук Университета Карнеги-Меллон. CiteSeerX 10.1.1.938.8003 . DOI : 10,1184 / R1 / 6602984.v1 .  Цитировать журнал требует |journal=( помощь )
  11. ^ "Программный инструмент для программирования ПЛИС на основе VHDL" . Аннаполис Микро Системс, Инк . Проверено 1 декабря 2018 .
  12. ^ "Код VHDL - HDL Coder - MATLAB и Simulink" . Mathworks.com. 2011-04-30 . Проверено 11 августа 2012 .
  13. ^ "Системный генератор для DSP" . Xilinx.com. Архивировано из оригинала на 2012-07-12 . Проверено 11 августа 2012 .
  14. ^ История Haskell: лень с классом §12.4.2
  15. ^ "Среда аппаратного компилятора Chisel / FIRRTL" .
  16. ^ «Язык высшего уровня COLAMO | НИЦ супер-ЭВМ и нейрокомпьютеров» .
  17. ^ Eurich, JP; Рот, Г. (1990). «EDIF растет». IEEE Spectrum . 27 (11): 68–72. DOI : 10.1109 / 6.62219 .
  18. ^ Янбин Ли; Лизер, М. (1995). «HML: инновационный язык описания оборудования и его перевод на VHDL». Труды ASP-DAC'95 / CHDL'95 / VLSI'95 с EDA Technofair . С. 691–696. DOI : 10.1109 / ASPDAC.1995.486388 . ISBN 4-930813-67-0.
  19. ^ Чалмерс Лава
  20. ^ Xilinx Лава
  21. ^ Канзасская лава
  22. Йоркская лава

Внешние ссылки [ править ]

  • Технический подкомитет Verilog-AMS
  • HCT - инструмент HDL Complexity, используемый для определения сложности дизайна.