Аппаратная эмуляция - Hardware emulation - Wikipedia
В конструкция интегральной схемы, аппаратная эмуляция представляет собой процесс имитации поведения одного или нескольких аппаратных средств (обычно разрабатываемой системы) с помощью другого аппаратного обеспечения, как правило, системы эмуляции специального назначения. Модель эмуляции обычно основана на языке описания оборудования (например, Verilog ) исходный код, который компилируется в формат, используемый системой эмуляции. Обычно цель - отладка и функциональная проверка проектируемой системы. Часто эмулятор оказывается достаточно быстрым, чтобы его можно было подключить к работающей целевой системе вместо чипа, который еще предстоит построить, поэтому всю систему можно отлаживать с помощью оперативных данных. Это частный случай внутрисхемная эмуляция.
Иногда аппаратную эмуляцию можно спутать с аппаратными устройствами, такими как карты расширения с аппаратными процессорами, которые помогают выполнять функции программной эмуляции, например, более старые дочерние платы с чипами x86, чтобы операционные системы x86 могли работать на материнских платах с различными семействами процессоров.
Вступление
Самая большая доля кремния Интегральная схема респины и степпинг вызваны, по крайней мере частично, функциональными ошибками и ошибками, случайно появившимися на RTL стадия процесса проектирования. Таким образом, всеобъемлющий функциональная проверка является ключом к снижению затрат на разработку и своевременной доставке продукта. Функциональная верификация дизайна чаще всего выполняется с помощью логическое моделирование и / или прототипирование на программируемых вентильных массивах (ПЛИС). У каждого есть свои преимущества и недостатки, и часто используются оба. Логическое моделирование простое, точное, гибкое и недорогое. Однако моделирование часто оказывается недостаточно быстрым для больших проектов и почти всегда слишком медленным, чтобы запускать прикладное программное обеспечение против проекта оборудования. FPGA прототипы на основе быстрых и недорогих, но время, необходимое для реализации большого проекта в нескольких ПЛИС, может быть очень долгим и подверженным ошибкам. Внесение изменений для исправления недостатков конструкции также требует много времени и может потребовать изменения проводки платы. С традиционными инструментами производителей прототипы FPGA имеют мало возможностей для отладки, зондирование сигналов внутри FPGA в реальном времени очень сложно, а перекомпиляция FPGA для перемещения зондов занимает слишком много времени. Ситуация меняется с появлением более совершенных инструментов отладки прототипов FPGA.[1] снимающие ограничения на видимость сигнала. Обычным компромиссом является использование моделирования на ранних этапах процесса проверки, когда ошибки и исправления часты, и создание прототипа в конце цикла разработки, когда дизайн в основном завершен и требуется скорость, чтобы получить достаточное тестирование для выявления любых оставшихся ошибок системного уровня. . Прототипирование FPGA также популярно для тестирования программного обеспечения.
Ускорение моделирования может в некоторой степени устранить недостатки моделирования. Здесь проект отображается в аппаратный ускоритель, чтобы работать намного быстрее, а тестовая среда (и любой код поведенческого дизайна) продолжает работать на симуляторе на рабочей станции. Канал с высокой пропускной способностью и малой задержкой соединяет рабочую станцию с ускорителем для обмена данными сигналов между испытательным стендом и конструктором. К Закон Амдала, самое медленное устройство в цепочке будет определять достижимую скорость. Обычно это испытательный стенд в симуляторе. С очень эффективным средством тестирования (написанным на C или основанным на транзакциях) канал может стать узким местом. В некоторых случаях тестовая среда на уровне транзакции может передать в эмулируемый дизайн столько данных, сколько «живой» стимул.
Внутрисхемная эмуляция несколько сокращает время реализации прототипов ПЛИС и обеспечивает комплексные и эффективные возможности отладки. Эмуляция делает это за счет скорости работы и высокой стоимости (более 1 миллиона долларов) по сравнению с прототипами FPGA (75 тысяч долларов).[согласно кому? ] Если взглянуть на эмуляцию с другой стороны, то можно сказать, что она улучшает характеристики ускорения за счет замены смоделированного тестового стенда «живым» стимулом. Этот стимул может исходить от целевой системы (разрабатываемого продукта) или от испытательного оборудования. Эмуляция, скорость которой в 10–100 раз превышает скорость моделирования, позволяет тестировать прикладное программное обеспечение, обеспечивая при этом комплексную среду отладки оборудования.
Отладка моделирования и моделирования / прототипирования
Стоит отметить, что моделирование и прототипирование включают два разных стиля исполнения. Моделирование выполняет код RTL последовательно, в то время как прототип выполняется полностью параллельно. Это приводит к различиям в отладке. В симуляции:
- Пользователь может установить точку останова и остановить моделирование, чтобы проверить состояние проекта, взаимодействовать с проектом и возобновить моделирование.
- Пользователь может остановить выполнение «в середине цикла», как если бы выполнялась только часть кода.
- Пользователь может в любое время увидеть любой сигнал в дизайне и содержимое любой ячейки памяти.
- Пользователь может даже резервировать время (если они сохранили контрольно-пропускной пункт (-ы) ) и перезапустите.
С прототипом:
- Пользователь использует логический анализатор для наглядности и поэтому может видеть только ограниченное количество сигналов, которые они определили заранее (путем отсечения зондов). Ситуация меняется с появлением инструментов прототипов FPGA, которые обеспечивают полную видимость 10 000 внутренних сигналов, таких как Certus.[2]
- Цель не останавливается при срабатывании логического анализатора, поэтому каждый раз, когда пользователь меняет датчики или условие срабатывания, он должен сбрасывать среду и начинать заново с самого начала.
- Зонды добавляются непосредственно в конструкцию RTL, чтобы сделать определенные сигналы доступными для наблюдения. Когда система запущена, датчик на основе RTL, подключенный к каждому из инструментованных сигналов, собирает значение сигнала в каждом тактовом цикле. Данные хранятся в буфере трассировки в ОЗУ блока ПЛИС. Анализатор, подключенный к прототипу, загружает информацию, предоставляя пользователю видимость в автономном режиме в систему для эффективной отладки.[3]
Ускорение и эмуляция больше похожи на прототипирование и кремний с точки зрения выполнения и отладки RTL, поскольку весь проект выполняется одновременно, как и в кремнии. Поскольку одно и то же оборудование часто используется как для ускорения моделирования, так и для внутрисхемной эмуляции, эти системы обеспечивают сочетание этих двух очень разных стилей отладки.
Эмуляторы оборудования высокого класса предоставляют среду отладки со многими функциями, которые можно найти в симуляторах логики, а в некоторых случаях даже превосходят их возможности отладки:
- Пользователь может установить точку останова и остановить эмуляцию, чтобы проверить состояние проекта, взаимодействовать с ним и возобновить эмуляцию. Эмулятор всегда останавливается на границах цикла.
- Пользователь видит любой сигнал или содержимое памяти в проекте без необходимости настраивать датчики перед запуском. Хотя видимость предоставляется также для прошлого времени, количество времени, которое она может отображать в прошлом, может быть ограничено в некоторых случаях глубиной памяти трассировки эмулятора.
- Пользователь может даже резервировать время (если они сохранили контрольно-пропускной пункт (-ы) ) и перезапустите.
- Из-за своей высокой стоимости эмуляторы недоступны для многих разработчиков, что привело к появлению передовых платформ для создания прототипов FPGA и инструментов отладки.
Эмуляция и логика с двумя состояниями
Еще одно различие между моделированием, ускорением и эмуляцией - следствие того, что ускорители используют оборудование для реализации - они имеют только два логических состояния - действуют так же, как и кремний при изготовлении. Из этого следует:
- Они бесполезны для анализа инициализации X-состояния.
- Они не могут анализировать разрешение силы, или, по крайней мере, это должно быть сделано статически во время компиляции.
- Эмуляторы не моделируют точную синхронизацию схемы, и, следовательно, они, вероятно, не обнаружат каких-либо условий гонки или нарушений времени установки и удержания.
Эти задачи правильно выполняются во время логическое моделирование или с статический временной анализ инструмент.
Эмуляция против прототипирования
Ключевое традиционное различие между эмулятором и системой прототипирования FPGA заключается в том, что эмулятор предоставляет богатую среду отладки, в то время как система прототипирования практически не имеет возможности отладки и в основном используется после отладки проекта для создания нескольких копий для анализа системы и разработка программного обеспечения. Появляются новые инструменты, которые обеспечивают полную видимость сигнала RTL с небольшим воздействием на FPGA LUT, обеспечивают глубокую глубину захвата и обеспечивают анализ нескольких микросхем и тактовой области, чтобы обеспечить эффективную отладку, сопоставимую с эмулятором.[2]
Смотрите также
- Аппаратная виртуализация
- Эмулятор
- Внутрисхемный эмулятор
- Интерфейс фонового режима отладки
- Примеры:
- Эмулятор микропроцессора HP 64000 (разные процессоры)
Рекомендации
- ^ «Tektronix обновляет прототипирование, встроенное оборудование повышает платы до статуса эмулятора». Электронный инженерный журнал. 30 октября 2012 г.. Получено 30 октября, 2012.
- ^ а б «Tektronix надеется перевернуть прототипы ASIC». EE Times. 30 октября 2012 г.. Получено 30 октября, 2012.
- ^ «Преодолейте узкие места создания прототипов ASIC». 23 октября 2012 г.. Получено 30 октября, 2012.
- Справочник по автоматизации проектирования электроники для интегральных схем, Лаваньо, Мартин и Шеффер, ISBN 0-8493-3096-3 Обзор поля, из которого было получено приведенное выше резюме, с разрешения.