Как ускорить проектирование систем на кристалле
( https://www.semiwiki.com/forum/content/4965-improve-soc-front-end-design-productivity.html )
О своем опыте разработки микросхем на уровне RTL делится Кан Кибриа, работающий в этой отрасли более 30 лет.
Три фактора: сложность функциональности, нехватка единообразия в проекте и текущие изменения в требованиях являются основными факторами, тормозящими проектирование микросхем.
Составляющие блоки проекта системы на кристалле (СНК) – виртуальные модули (IP), могут поставляться из различных источников. Эти модули, как правило, используются повторно в разных проектах. Но стиль их описания, имена портов и сигналов различаются в зависимости от места их происхождения. Отсутствие единообразия в подобных ситуациях увеличивает потребности в ресурсах и имеет негативное влияние на стоимость.
Как правило, требования к проекту, диктуемые рынком, меняются несколько раз во время его цикла проектирования. И адаптация к ним существенно влияет на сроки и стоимость проекта. Поэтому сейчас работают над средствами проектирования, в которых изменения параметров проекта меньше сказываются на увеличении его сроков и стоимости.
Из-за повышенной сложности функциональности виртуального модуля нужно дополнительное время для его встраивания в систему на кристалле. Включение в систему блока, описанного на уровне регистров – это нетривиальная задача. Вспомним как появилось такое описание на языке описания аппаратуры (HDL) .
Когда появились HDL, многие разработчики неохотно их принимали из-за отсутствия надежных инструментов синтеза логических схем. Но тогда проектирование велось на уровне вентилей и микросхемы были весьма простыми. Работа проектировщика была весьма утомительной и неинтересной. Появившиеся тогда языки Verilog и VHDL имели дстоинства и недостатки, но разработка на уровне регистровых передач дала большие перспективы для творчества. А главное, намного увеличилась производительность проектировщиков.
Теперь история повторяется. Набирает обороты высокоуровневый синтез (HLS), у которого уже много сторонников и который упрощает реализацию сложных алгоритмов. Но сложность функциональности остается фактором, тормозящим проектирование микросхем. Рассмотрим причины этого.
Большое число межсоединений.
Межсоединения пронизывают проект снизу доверху через его уровни иерархии.
Если межсоединения разнородные, то их включение занимает много времени, причем довольно легко совершить ошибку соединения. Правда, группирование соединений в интерфейсы и использование проверенных протоколов связи упрощает этот процесс. Но в сложном проекте таких интерфейсов много и они разнородные, так что невозможно присоединить устройство с одним интерфейсом вместо другого.
В этом вопросе удобно использовать конструкцию record из языка VHDL, чтобы объединить несколько разнородных сигналов в группу, абстрагировавшись от отдельных сигналов. Аналогичные возможности появились в System Verilog и новых средствах высокоуровневого проектирования.
Однако в любой СНК стоит несколько IP, описанные разными языками и разными стилями. Объединение их в систему становится утомительным. Этот процесс можно автоматизировать. Но для IP должен сопровождаться метаданными, описывающими все соединения и протокол обмена данными. Такой подход мог бы существенно повысить производительность разработчиков и уменьшить вероятность ошибок в проекте.
Недавно появился стандарт 1685 IEEE, в котором дается формат IP-XACT, который обеспечивает XML-описание метаданных. Все больше поставщиков средств САПР обеспечивают поддержку IP-XACT. В результате, все большее число продавцов IP также предоставляют IP-XACT-файлы для своих IP.
Формат IP-XACT-вполне всеобъемлющий, но сложный. Он рассматривает широкий спектр потребностей межсоединений, основанных на протоколах. Формат XML предназначен для облегчения машиного чтения спецификаций. Так что IP-XACT — файлы трудно составлять вручную.
Поэтому средствам САПР необходим какой-то другой язык или графические средства для простого описания метаданных к межсоединениям и интерфейсам, с которым удобно было бы работать человеку. Простота является мощным фактором увеличения производительности.
Проектирование дополнительной логики.
Очень часто, чтобы соединить разнородные IP, необходимо добавить дополнительную логику, которая «склеивает» их между собой (glue logic). Разработчики тратят на это очень много времени. Такая логика обычно несложная, но могут быть исключения.
Если бы появились средства САПР, ориентированные на такую логику, то они бы намного ускорили процесс проектирования. Такая логика могла бы внедряться в проект на поведенческом уровне, чтобы иметь возможность промоделировать его на ранних стадиях проектирования. Позже она заменялась бы своей конкретной RTL-реализацией.
Настраиваемые виртуальные модули.
К сожалению сейчас мало используются IP, которые можно настроить под конкретную микросхему. Если бы таких IP было больше, то увеличилось бы число их повторных использований, а значит, уменьшилось время на их освоение и адаптацию. Хотелось бы видеть такие настраиваемые IP, как буферы, подключаемые к выводам микросхем, средства встроенного тестирования.