Введение

Эмуляция аппаратных устройств в проектировании интегральных схем

Эмуляция аппаратного обеспечения другим аппаратным обеспечением

В проектировании интегральных схем аппаратная эмуляция – это процесс имитации поведения одного или нескольких аппаратных устройств (как правило, разрабатываемой системы) другим аппаратным устройством, обычно специализированной системой эмуляции. Модель эмуляции обычно создается на основе исходного кода языка описания аппаратуры (например, Verilog), который компилируется в формат, используемый системой эмуляции. Основная цель – отладка и функциональная верификация разрабатываемой системы. Часто эмулятор достаточно производителен, чтобы быть подключенным к рабочей целевой системе вместо еще не изготовленной микросхемы, что позволяет отлаживать всю систему с использованием реальных данных. Это частный случай внутрисхемной эмуляции. Иногда аппаратную эмуляцию путают с аппаратными устройствами, такими как платы расширения с аппаратными процессорами, которые помогают в функциях программной эмуляции, например, старые дочерние платы с чипами x86, позволяющие операционным системам x86 работать на материнских платах с процессорами других семейств.

Введение

Большая часть повторных итераций и шагов разработки кремниевых интегральных схем обусловлена, по крайней мере частично, функциональными ошибками и дефектами, непреднамеренно внесенными на этапе RTL процесса проектирования. Таким образом, всесторонняя функциональная верификация является ключевым фактором для снижения затрат на разработку и своевременной поставки продукта. Функциональная верификация проекта чаще всего выполняется с использованием логического моделирования и/или прототипирования на программируемых вентильных матрицах (FPGA). У каждого подхода есть свои преимущества и недостатки, и часто применяются оба. Логическое моделирование простое, точное, гибкое и экономичное. Однако моделирование часто недостаточно быстро для больших проектов и почти всегда слишком медленное для запуска прикладного программного обеспечения на аппаратной конструкции. Прототипы на основе FPGA быстрые и недорогие, но время, необходимое для реализации крупного проекта в несколько FPGA, может быть значительным и подвержено ошибкам. Изменения для исправления дефектов проекта также требуют много времени для реализации и могут потребовать изменения разводки печатной платы. При использовании традиционных средств разработки прототипы FPGA обладают ограниченными возможностями отладки, зондирование сигналов внутри FPGA в реальном времени очень затруднено, а перекомпиляция FPGA для перемещения зондов занимает слишком много времени. Ситуация меняется с появлением более продвинутых инструментов отладки прототипов FPGA, устраняющих ограничения на видимость сигналов. Обычно используют моделирование на ранних этапах процесса верификации, когда ошибки и исправления возникают часто, и прототипирование в конце цикла разработки, когда проект в основном завершен и требуется скорость для проведения достаточного количества тестов с целью выявления любых оставшихся системных ошибок. Прототипирование FPGA также популярно для тестирования программного обеспечения. Ускорение моделирования может в определенной степени компенсировать недостатки производительности моделирования. В этом случае проект отображается на аппаратный ускоритель для значительно более быстрой работы, а тестовая среда (и любой код поведенческого описания) продолжает выполняться на симуляторе на рабочей станции. Высокоскоростной канал с низкой задержкой соединяет рабочую станцию с ускорителем для обмена данными между тестовой средой и проектом. В соответствии с законом Амдаля, скорость работы определяется самым медленным элементом в цепочке. Обычно это тестовая среда в симуляторе. При использовании высокоэффективной тестовой среды (написанной на C или на основе транзакций) канал может стать узким местом. В некоторых случаях тестовая среда на уровне транзакций способна подавать в эмулируемый проект столько же данных, сколько и "живой" стимул. Эмуляция в схеме несколько улучшает время реализации прототипов FPGA и обеспечивает всесторонние и эффективные возможности отладки. Эмуляция достигается за счет снижения скорости работы и высокой стоимости (более 1 млн долларов США) по сравнению с прототипами FPGA (75 тыс. долларов США). Рассматривая эмуляцию с другой стороны, она повышает производительность ускорения, заменяя моделируемую тестовую среду "живым" стимулом. Этот стимул может поступать от целевой системы (разрабатываемого продукта) или от испытательного оборудования. Благодаря скорости в 10 000–100 000 раз превышающей скорость моделирования, эмуляция позволяет тестировать прикладное программное обеспечение, обеспечивая при этом всестороннюю среду отладки аппаратного обеспечения.

Эмуляция и логика двух состояний

Еще одно различие между моделированием, ускорением и эмуляцией связано с тем, что ускорители используют аппаратную реализацию – у них только два логических состояния, отражающих поведение кремния после изготовления. Это означает следующее:

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

Эмуляция против прототипирования

Ключевое традиционное различие между эмулятором и системой прототипирования на FPGA заключалось в том, что эмулятор предоставляет развитую среду отладки, а система прототипирования практически не имеет средств отладки и в основном используется после отладки проекта для создания нескольких экземпляров для анализа системы и разработки программного обеспечения. Однако появляются новые инструменты, обеспечивающие полную видимость сигналов RTL с минимальным влиянием на ресурсы LUT FPGA, глубокую глубину захвата данных и возможность анализа многочиповых и многодоменных тактовых сигналов, что позволяет проводить эффективную отладку, сопоставимую с эмулятором.