Язык описания оборудования

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

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

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

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

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

Содержание
  • 1 Мотивация
  • 2 Структура HDL
    • 2.1 Сравнение с языками управления потоком
  • 3 История
  • 4 Дизайн с использованием HDL
  • 5 Моделирование и отладка кода HDL
  • 6 Проверка проекта с помощью HDL
  • 7 HDL и языки программирования
  • 8 Синтез высокого уровня
  • 9 Примеры HDL
    • 9.1 HDL для проектирования аналоговых схем
    • 9.2 HDL для проектирования цифровых схем
    • 9.3 HDL для проектирования печатных плат
  • 10 См. Также
  • 11 Ссылки
  • 12 Внешние ссылки
Мотивация

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

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

БИБЛИОТЕКА IEEE; ИСПОЛЬЗУЙТЕ IEEE.STD_LOGIC_1164.ALL; ENTITY not1 ЕСТЬ ПОРТ (a: IN STD_LOGIC; b: OUT STD_LOGIC;); КОНЕЦ not1; АРХИТЕКТУРА поведение not1 IS BEGIN b <= NOT a; END behavioral;
Структура HDL

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

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

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

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

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

История

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

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

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

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

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

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

Введение логического синтеза для 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 вентильная матрица, ASIC стандартная ячейка ) HDL могут играть или не играть значительную роль в фоновом потоке. В общем, по мере того, как процесс проектирования переходит в физически реализуемую форму, база данных проекта становится все более загруженной специфической для технологии информацией, которую нельзя сохранить в общем описании HDL. Наконец, интегральная схема изготавливается или программируется для использования.

Моделирование и отладка кода HDL

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

Для моделирования HDL-модели инженер создает среду моделирования верхнего уровня (называемую испытательным стендом ). Как минимум, тестовый стенд содержит экземпляр модели (называемого тестируемым устройством или DUT), объявления контактов / сигналов для ввода / вывода модели и сигнал тактовой частоты. Код тестовой среды управляется событиями: инженер пишет операторы HDL для реализации (генерируемого тестовой средой) сигнала сброса, для моделирования транзакций интерфейса (таких как чтение / запись шины хоста) и для мониторинга выходных данных DUT. Симулятор HDL - программа, выполняющая тестовую среду - поддерживает часы симулятора, которые являются эталоном для всех событий в симуляции тестовой среды. События происходят только в моменты, продиктованные тестовым HDL (например, переключатель сброса, закодированный в тестовом стенде), или в реакции (моделью) на стимулы и запускающие события. Современные симуляторы HDL имеют полнофункциональные графические пользовательские интерфейсы с набором инструментов отладки. Они позволяют пользователю останавливать и перезапускать моделирование в любое время, вставлять точки останова симулятора (независимо от кода HDL) и отслеживать или изменять любой элемент в иерархии модели HDL. Современные симуляторы также могут связывать среду HDL с библиотеками, скомпилированными пользователем, через определенный интерфейс PLI /. Связывание зависит от системы (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 как способ объединения языков высокого уровня с моделями параллелизма, чтобы ускорить циклы проектирования для ПЛИС, чем это возможно при использовании традиционных HDL. Подходы, основанные на стандарте C или C ++ (с библиотеками или другими расширениями, допускающими параллельное программирование), можно найти в инструментах Catapult C из Mentor Graphics и инструменты Impulse C от Impulse Accelerated Technologies.

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

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

Примеры HDL

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

ИмяОписание
Язык описания аналогового оборудованияи откройте аналоговое оборудование язык описания
SpectreHDLсобственный язык описания аналогового оборудования
Verilog-AMS (Verilog для аналоговых и смешанных сигналов)открытый s стандартное расширение Verilog для аналогового и смешанного аналогово-цифрового моделирования
VHDL-AMS (VHDL с расширением аналогового / смешанного сигнала)стандартизованный язык для смешанного аналогового / цифрового моделирования
проприетарный язык описания аналогового оборудования

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

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

ИмяОписание
Расширенный язык логических выражений (ABEL)
Язык описания оборудования Altera (AHDL)собственный язык от Altera
AHPL Язык аппаратного программирования
Bluespec HDL высокого уровня на основе Haskell (не встроен DSL )
(BSV)на основе Bluespec, с синтаксисом Verilog HDL от Bluespec, Inc.
Конвертер из C в Verilog
Chisel (Создание оборудования на встроенном языке Scala)на основе Scala (встроенный DSL )
Clash Clash Современный, функциональный ional, язык описания оборудованияClash - это функциональный язык описания оборудования, который заимствует свой синтаксис и семантику из языка функционального программирования Haskell
COLAMO (Common Oriented Language for Architecture of Multi Objects)проприетарный язык от ООО «Центр исследований суперкомпьютеров и нейрокомпьютеров»
функциональный HDL; прекращено производство
CoWareCHDL на основе C от CoWare. В настоящее время прекращено в пользу SystemC
CUPL (компилятор для универсальной программируемой логики)проприетарный язык из
ELLA , который больше не используется
ESys.net .NET. framework написанный на C #
Handel-C C-подобный язык проектирования
Hardcaml (Создание оборудования на встроенном языке Ocaml)на основе OCaml (встроенный DSL). Попробуйте онлайн.
на основе Haskell (встроенный DSL).
(HJJ)на основе Присоединиться к Java
HML (Hardware ML)на основе Standard ML
Hydraна основе Haskell
Impulse C другой C-подобный HDL
Исходный HDL из CMU, больше не используемый
(Parallel C ++)kusu, расширенный с помощью стиля HDL многопоточность и связь для параллельного программирования задач
JHDL на основе Java
KARL KAiserslautern Register Language (глава в), паскалийском аппаратном описательном языке, который больше не используется.
на основе Haskell (встроенный DSL).
Lola простой язык, используемый для обучения
HDL из Mentor Graphics
MyHDL на основе Python (встроенный DSL )
PALASM для устройств Programmable Array Logic (PAL)
PyMTL на основе Python, от Корнельского университета
(Оптимизирующий компилятор Riverside для конфигурируемых вычислений)Бесплатная программа с открытым исходным кодом C в HDL
на основе языка программирования Ruby
Ruby (язык описания оборудования)
SystemC стандартизованный класс библиотек C ++ для высокоуровневого поведенческого моделирования и моделирования транзакций цифрового оборудования на высоком уровне абстракции, то есть на уровне системы
SystemVerilog надмножество Verilog с улучшениями для проектирования и проверки на уровне системы
SpinalHDLНа основе Scala (встроенный DSL)
SDL на основе Tcl.
(шаблонный HDL на основе C ++)расширение VHDL с наследованием, расширенными шаблонами и классами политик
TL-Verilog (Verilog на уровне транзакций)Расширение Verilog / SystemVerilog с конструкциями для конвейеров и транзакций.
Verilog Одно из наиболее широко используемые и хорошо поддерживаемые HDL
VHDL (VHSIC HDL)Один из наиболее широко используемых и хорошо поддерживаемых HDL

HDL для печатных плат дизайн платы

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

ИмяОписание
(PCB HDL)Бесплатный HDL с открытым исходным кодом для определения возможности подключения печатных плат
EDAsolverHDL для решения схематические проекты на основе ограничений
SKiDL Модуль Python с открытым исходным кодом для проектирования электронных схем
См. также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-22 13:36:41
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте