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