Выпуск #1/2004
А.Лохов.
Функциональная верификация СБИС в свете решений Mentor Graphics
Функциональная верификация СБИС в свете решений Mentor Graphics
Просмотры: 3161
Степень интеграции современных СБИС, как и постулировал Мур, растет экспоненциально. С переходом к технологическим нормам 0,25 мкм и ниже разработчик СБИС при создании сколь угодно сложных систем уже практически не ощущает недостатка в транзисторах на кристалле. На первый план выходит другой сдерживающий фактор – проблема функциональной верификации СБИС. Особую остроту она приобретает при разработке систем на кристалле, включающих не только цифровые, но и аналоговые, смешанные и даже СВЧ-блоки, а также процессорные ядра со встроенным программным обеспечением.
ПРОБЛЕМЫ ФУНКЦИОНАЛЬНОЙ ВЕРИФИКАЦИИ
К сожалению, возможности средств верификации сегодня заметно отстают от возможностей систем проектирования, не говоря уже о технологических достижениях полупроводникового производства (рис.1) [1]. В то же время затраты на создание комплекта фотошаблонов для субмикронных СБИС настолько высоки, что их повторное изготовление из-за обнаруженных ошибок зачастую недопустимо как с точки зрения задержки выхода изделия на рынок, так и в связи с ростом его конечной стоимости. Поэтому необходим принципиально новый подход к методам верификации СБИС.
Главная проблема традиционного подхода к функциональной верификации – в том, что она строится по схеме: сначала система разрабатывается и лишь затем – тестируется. Но если верификация поглощает более 60–70% времени или трудозатрат при проектировании СБИС, такая последовательность действий недопустима. Другой важный фактор – экспоненциальное увеличение (от объема СБИС) необходимого числа и длины тестовых векторов, а следовательно, размера и сложности средств тестирования. Одновременно усложняется и процесс поиска причины обнаруженной тестом неисправности.
Традиционный подход к проектированию и верификации означает, что проектирование начинается с разработки спецификации на систему в целом с последующим разбиением системы сначала на крупные, а затем на меньшие блоки, реализуемые на уровне RTL-описания. Далее каждый блок проектируется и верифицируется отдельно с последующим объединением в более крупные блоки и их верификацией. На этом этапе проверяется, соответствует ли функционирование каждого блока его спецификации. Процесс завершается интеграцией системы в целом и ее функциональной системной верификацией. Наиболее узкое место данного подхода – верификация, поскольку на каждом уровне интеграции системы приходится заново верифицировать блоки нижнего уровня. Более того, обнаружение ошибки на одном из последних этапов интеграции, в особенности – на уровне системной верификации, приводит к недопустимым затратам времени и ресурсов на внесение изменений.
Процесс верификации усложняется не только с ростом степени интеграции СБИС, но и с увеличением числа и разнообразия реализуемых на ней функций. Например, типичная современная система на кристалле включает один или несколько высокопроизводительных процессоров, мультигигабитные интерфейсы ввода-вывода, встроенную оперативную память, сложную систему синхронизации с множеством асинхронных генераторов, аналоговые, смешанные и СВЧ-блоки, встроенное программное обеспечение (ПО), зачастую работающее под управлением операционной системы реального времени (ОС РВ), специализированные устройства цифровой обработки сигналов и многое другое. Поэтому чрезвычайно важное значение приобретает не столько верификация отдельных блоков, сколько верификация их взаимодействия. Так, проектировщики цифровых устройств должны учитывать поведение аналоговых и СВЧ-схем и их взаимодействие с цифровыми блоками. Отладка многих цифровых блоков невозможна без исполнения встроенного ПО. Применение готовых IP-блоков еще больше усложняет верификацию интерфейсов, поскольку они поставляются, как правило, в виде "черных ящиков", не позволяющих анализировать их внутреннее поведение.
Существует два подхода к решению проблемы верификации. Первый предполагает усовершенствование самих средств верификации. Современные средства должны обеспечивать верификацию во всех возможных областях. Это – имитационное моделирование, аппаратная эмуляция, программно-аппаратная верификация, аналоговое, цифровое и смешанное моделирование, причем, в идеальном случае, с возможностью взаимодействия всех областей между собой. Средства верификации должны поддерживать все стандартные языки проектирования и верификации – VHDL, Verilog, VHDL-AMS, Verilog-A, Spice, C, C++, SystemC, System Verilog, MATLAB, PSL assertions и др. Второй подход заключается в изменении самой методики верификации, а именно – в переносе соответствующих процедур верификации на более ранние этапы проектирования. Это, как правило, подразумевает создание системных тестов, моделирование на уровне транзакций, верификацию интерфейсов различных подсистем одновременно с их проектированием, т.е. возможность верификации системы, отдельные блоки которой представлены на разных уровнях абстракции. Чаще всего оптимальное решение заключается в комбинации обоих названных подходов.
Для исчерпывающей верификации крупной СБИС (10 и более млн. вентилей) желательно иметь в распоряжении полный набор средств верификации, от HDL-моделирования до внутрисхемной эмуляции (рис.2). Сегодня наиболее полный комплект инструментов верификации сложных СБИС включает:
· программный HDL-симулятор (возможно, с реализацией на многопроцессорной системе или с поддержкой аппаратного ускорителя);
· специализированный симулятор для программно-аппаратной верификации систем со встроенным процессорным ядром и программным обеспечением;
· систему моделирования на высоком уровне абстракции (С, С++, SystemC и т.п.), в том числе – на уровне транзакций. Идеальна для имитации внешних воздействий (например, прерываний) на RTL-модель СБИС, исполняемую на аппаратном эмуляторе;
· систему аппаратной эмуляции с поддержкой режима внутрисхемной эмуляции (т.е. с возможностью включать аппаратный эмулятор в реальную систему вместо проектируемого устройства), что позволяет верифицировать поведение СБИС в реальном аппаратном окружении;
· систему формальной верификации (контроль эквивалентности), показывающую, что внесенные в схему изменения (например, цепи сканирования) не влияют на работу СБИС;
· систему аналогового и смешанного моделирования на едином многоязыковом ядре различных с точки зрения функционального поведения и уровня абстракции блоков, – в диапазоне от RTL до транзисторного уровня, с учетом особенностей СВЧ-приложений.
В принципе, каждая из перечисленных систем должна обладать определенной гибкостью и обеспечивать оптимизацию процесса верификации в зависимости от величины и функционального наполнения верифицируемого объекта. Например, регрессионные тесты (тесты больших объемов, зачастую требующие многочисленных повторных прогонов) можно реализовать путем распараллеливания работы программных симуляторов на многопроцессорных или многомашинных системах. Если это распараллеливание проблематично, можно использовать аппаратный эмулятор с модульной структурой, наращиваемой в зависимости от объема проекта и величины теста. Но при совместном использовании аппаратного эмулятора и программного симулятора RTL-модели скорость моделирования резко падает. Такая ситуация может возникнуть, если проверяется взаимодействие разрабатываемого блока и тестового устройства, реализованного в виде RTL-модели. Проблема решается либо компиляцией и переносом тестовой TRL-модели непосредственно в систему аппаратной эмуляции, либо заменой RTL-модели моделью более высокого уровня, например – уровня транзакций.
Смещение верификации на более ранние этапы проектирования означает, что эти процессы должны протекать параллельно. Так, проектирование на системном уровне по существу начинается с создания моделей высокого уровня на основе C, C++, SystemC и System Verilog, оставляя за кадром детали каждого отдельного блока. Такой подход позволяет начинать верификацию системы, не ожидая детальной проработки всех блоков и интерфейсов. Причем интерфейсы между блоками и тестовыми моделями, описанными на разных уровнях абстракции, очень эффективно реализует механизм транзакций.
Поскольку более половины времени верификации тратится на поиск неисправностей и их причин, очень важно иметь мощные отладочные инструменты. Они должны обеспечивать наблюдение и анализ моделируемых функций независимо от границ между системами верификации и различными уровнями абстракции. Например, при программно-аппаратной верификации RTL-блока необходима не только временная диаграмма его работы, но и полная трассировка исполняемой на имитаторе программы с визуализацией состояний регистров процессора в каждой точке. Желательна и возможность выполнения команд в потактном режиме.
Не менее актуальна проблема определения критерия, по которому можно судить о полноте верификации проекта. Традиционные показатели, используемые в программных симуляторах, например "полнота покрытия HDL-кода", вовсе не говорят о полноте верификации. Действительно, на один вывод современной СБИС приходится порядка 104–106 внутренних вентилей. Очевидно, что ошибка переключения некоторых из них в ходе теста совершенно необязательно отобразится на выходе СБИС. Поскольку показатель "100%-ная полнота покрытия кода" говорит лишь о том, что проверено переключение всех внутренних узлов (но, разумеется, не всех их комбинаций), то ложное срабатывание той или иной функции может не повлиять на результат теста, который можно сравнить с эталоном.
Для решения этой проблемы в последнее время успешно применяется механизм так называемых "утверждений" (assertions). Говоря упрощенно, он подразумевает расстановку внутри моделируемого кода "закладок", проверяющих работу тех или иных функций по мере их срабатывания, не дожидаясь распространения следствия данного срабатывания на выход схемы. В результате ошибка идентифицируется значительно быстрее и проще. Причем можно практически мгновенно определить ее истинную причину и в то же время существенно снизить сложность и объем тестовых моделей. Естественно, механизм "утверждений" должен работать, если верифицируемый объект представлен моделями разного уровня абстракции. Анализ показывает, что хотя накладные расходы по написанию и встраиванию assertions составляют 3%, а увеличение времени моделирования – 10%, общий выигрыш во времени верификации может достигать 80% [2].
КОМПЛЕКСНАЯ СИСТЕМА ВЕРИФИКАЦИИ MENTOR GRAPHICS
Компания Mentor Graphics предлагает разработчикам все перечисленные средства верификации (рис.3). Базовой средой и ядром верификации проектируемой системы, а также средой разработки и верификации тестового окружения является система ModelSim. При верификации цифровых подсистем, по мере увеличения объема проекта и повышения требований к производительности моделирования, могут применяться аппаратные эмуляторы VStation Pro и VStation TBX, а также система формальной верификации Formal Pro. В области аналоговых и смешанных подсистем весь спектр задач решает комплекс программ ADVance MS, который включает не только аналоговое SPICE-подобное (Eldo Analog Design Station) и смешанное аналого-цифровое моделирование (собственно ADVance MS), но и динамическое моделирование на транзисторном уровне (Mach TA), а также СВЧ-моделирование (Eldo RF Design Station). Для верификации встроенного ПО предназначена система программно-аппаратной верификации Seamless CVE, инструмент программной отладки XRAY, а также уже упоминавшиеся средства аппаратной эмуляции VStation Pro и VStation TBX. Весь комплекс верификации поддерживается собственными ОС РВ VRTX и Nucleus, библиотекой IP-блоков Inventra IP и средой проектирования и верификации СБИС на базе IP-блоков Platform Express.
ModelSim
Стратегия компании Mentor Graphics в области верификации сочетает тенденцию наращивания возможностей отдельных средств верификации и диапазона их применения со смещением центра тяжести верификации на более высокие уровни абстракции. Соответственно, среда моделирования ModelSim поддерживает все стандартные и вновь появляющиеся языки проектирования – C, C++, Verilog 2001, VHDL, SystemVerilog v3.1, SystemC 2.0.1 (включая библиотеку SystemC Verification Library 1.0), PSL 1.0 assertions, SystemVerilog assertions, Simulink, MATLAB и др. Это позволяет начинать верификацию уже на уровне спецификации системы, используя модели высокого уровня с последующей их детализацией. Важно отметить, что создаваемые на системном уровне тесты могут многократно использоваться на последующих этапах. По мере детализации проекта и перехода на уровень RTL скорость программной симуляции резко падает. Избежать этого позволяет распараллеливание процесса на многопроцессорных или многомашинных системах (simulation farms) или применение специальных аппаратных ускорителей. Помимо высокой производительности и поддержки существующих стандартов, ModelSim обладает уникальными отладочными возможностями, не имеющими аналогов у конкурентов.
VStation Pro, VStation TBX
Максимальная скорость верификации достигается, если RTL-описание проекта компилируется в систему аппаратной эмуляции VStation Pro. Эта система поддерживает проекты объемом до 120 млн. эквивалентных вентилей, обеспечивает реальную скорость эмуляции с тактовой частотой до 2 МГц и скорость компиляции более 5 млн. вентилей в час. Входное описание может быть на вентильном или RTL-уровнях на языках VHDL, Verilog или их сочетании. Система обладает мощными отладочными возможностями и обеспечивает 100%-ную визуализацию всех сигналов.
Расширением VStation Pro в область более высокого уровня абстракции является недавно анонсированный эмулятор VStation TBX. Он может компилировать не только вентильные и RTL-описания, но и поведенческие модели (C, C++, SystemC, SystemVerilog, Verisity e), в том числе – модели уровня транзакций. Наиболее эффективно модели высокого уровня используются для создания тестовых моделей, которые совместно с верифицируемым объектом компилируются в одну эмулирующую систему. Это позволяет существенно ускорить процесс верификации проекта и создать среду верификации системного уровня, в которой можно решать такие задачи, как загрузка встроенной операционной системы, запуск и выполнение встроенных приложений, мультипакетная потоковая обработка, обработка видео- и радиосигналов.
Система аппаратной эмуляции VStation TBX поддержана обширной библиотекой моделей на уровне транзакций, например – моделей стандартных протоколов USB, PCI, Ethernet, моделей памяти CAM, DDR, Flash и др. Как VStation Pro, так и VStation TBX полностью интегрированы с системой программно-аппаратной верификации Seamless CVE и средой ModelSim.
Formal Pro
По мере продвижения проекта от концептуального уровня до этапа реализации часто возникает задача так называемого регрессионного тестирования, т.е. последовательного прогона большого объема повторяющихся тестов. Подобная задача возникает, например, при интеграции мелких функциональных блоков в более крупные, при выполнении операций логического и физического синтеза, размещения и трассировки кристалла, при внесении изменений в схему проекта и т.п. Причем по мере приближения проекта к завершению его объем и детализация растет, вместе с ними увеличивается объем тестов и время их выполнения. Данная проблема с успехом решается методом контроля эквивалентности или методом формальной верификации, реализуемым системой Formal Pro. Система основана на принципе контроля эквивалентности логических функций, не требует генерации и прогона тестовых векторов, может работать как на RTL, так и на вентильном уровне, поддерживает проекты практически неограниченного объема (зависит от размера оперативной памяти) и многопроцессорную обработку.
Seamless CVE
Система на кристалле, как правило, содержит процессорное ядро с встроенным ПО. Спектр ПО может быть довольно широк – ОС РВ, прикладные программы, драйверы устройств, диагностические программы, загрузчики и т.п. Это порождает проблему ускоренной совместной верификации ПО и аппаратного окружения, представленного RTL-моделью. Для ее решения предназначена система Seamless CVE, позволяющая создавать виртуальные прототипы процессорного ядра. Система включает библиотеку интерпретаторов системы команд свыше 100 наиболее распространенных процессоров. Идея заключается в совместном моделировании программы, исполняемой на быстром интерпретаторе системы команд и RTL-моделировании аппаратного окружения на программном симуляторе или аппаратном эмуляторе (ModelSim или VStation, соответственно). Собственно ядро системы Seamless управляет взаимодействием между данными процессами. Причем на внешнюю шину из модели процессора выдаются только сигналы, имеющие непосредственное отношение к RTL-блоку. Команды же, незначимые для моделирования RTL-блока, не передаются для исполнения в RTL-модель. В результате резко повышается общая скорость моделирования при сохранении требуемой точности верификации аппаратной части.
Seamless CVE включает специальный C-интерфейс (C-Bridge), который позволяет подключать модели более высокого уровня абстракции (С, С++, С-transactions и т.д.). Их можно быстро написать и эффективно применить для создания тестов, имитирующих работу периферийных устройств, шинных интерфейсов и т.п. Естественно, данные модели пригодны и для описания блоков самого верифицируемого объекта с последующей их детализацией до уровня RTL- или вентильного описания. Другая важная особенность системы Seamless – встроенный анализатор производительности (Seamless Version 5 Performance Profiler). Он позволяет, например, оценить пропускную способность шины при обращении к памяти в зависимости от используемого алгоритма разрешения конфликтов. Возможно и оперативно изменять этот алгоритм (например, меняя приоритеты), не выходя из сеанса моделирования.
ADVance MS
С ростом доли аналоговых и СВЧ-блоков в системах на кристалле обостряется задача их детального моделирования как в отдельности, так и совместно с цифровыми блоками. Ее решает комплекс программ моделирования ADVance MS. Аналоговое моделирование на основе SPICE-примитивов реализует система Eldo Analog Design Station, обеспечивающая высокую скорость (в три раза быстрее, чем HSPICE) и точность моделирования. Система Eldo RF Design Station является расширением Eldo в область СВЧ-диапазона. Eldo RF использует многочастотные алгоритмы третьего поколения, позволяет определять характеристики сигналов и шумов в установившемся режиме, а также рассчитывать стабильность схемы в локальном частотном или временном диапазоне. Непосредственно для смешанного моделирования предназначена система ADVance MS. Она содержит единое ядро смешанного моделирования и единый пользовательский интерфейс. Существенно, что в ADVance MS реализован единый цикл моделирования аналоговой и цифровой аппаратуры. Система поддерживает языки VHDL, Verilog, VHDL-AMS и Verilog-A.
Для высокоскоростного моделирования на транзисторном уровне предназначен пакет Mach TA. Его очень высокая скорость моделирования (на три порядка выше, чем традиционный SPICE) при сохранении требуемой точности обусловлена использованием табличных моделей. Причем объем проекта ограничен только размером оперативной памяти (2 Гбайт на 10 млн. транзисторов).
ПРИМЕР ИСПОЛЬЗОВАНИЯ
Рассмотрим пример возможного использования комплексной системы верификации Mentor Graphics для сложной системы на кристалле (рис.4). В одном сеансе верификации различные блоки системы могут моделироваться различными средствами. Так, процессорное ядро и блоки памяти реализованы в системе Seamless, контроллер ODMA представлен HDL-кодом и моделируется в среде ModelSim или, если скорости ModelSim не достаточно, компилируется в эмулятор с минимальной конфигурацией VStation 15M. Другие блоки системы представлены моделями более высокого уровня абстракции (С, С++, SystemC) и подключаются к системе Seamless через C-Bridge, а к системе эмуляции – через интерфейс, работающий на уровне транзакций. Верификация всей системы проходит в едином сеансе с полным набором отладочных возможностей, включая трассировку встроенной программы в Seamless, снятие временной диаграммы всех сигналов в VStation 15M, потактную работу и т.д. В процессе детализации отдельных блоков проекта до RTL-уровня практически вся система может быть загружена в эмулятор VStation Pro, а тестовое окружение, в том числе – на C, C++, SystemC и т.п., – в VStation TBX.
Являясь признанным мировым лидером в области средств верификации (34% мирового рынка по данным Dataquest за 2001 год [3]), компания Mentor Graphics предлагает наиболее комплексное и интегрированное решение по всем трем основным направлениям верификации систем на кристалле: цифровые подсистемы, аналоговые и смешанные подсистемы, встроенные процессорные ядра и их программное обеспечение. Средства верификации Mentor Graphics нашли достаточно широкое применение и в России. В особенности это относится к системе ModelSim. Так, Московский центр Спарк технологий (МЦСТ) использует эту систему, а также систему формальной верификации FormalPro в режиме Simulation Farm для верификации СБИС семейства "Эльбрус" [4].
Литература
1. Brian Bailey. The Multiple Dimensions of Scalability that Comprise a System Verification Strategy. – Mentor Graphics Scalable Verification White Paper.
2. Functional Verification of a Multiple-Issue, Out of Order, Superscalar Alpha Processor. – DAC, 1998.
3. 2001 Dataquest Sub-Market Analysis On Combined Verification Technologies. – www.dataquest.com.
4. Рудометов В.В. ModelSim и FormalPro в логической верификации EPIC-процессора. – Доклад на семинаре МИЭМ 02.04.03.
К сожалению, возможности средств верификации сегодня заметно отстают от возможностей систем проектирования, не говоря уже о технологических достижениях полупроводникового производства (рис.1) [1]. В то же время затраты на создание комплекта фотошаблонов для субмикронных СБИС настолько высоки, что их повторное изготовление из-за обнаруженных ошибок зачастую недопустимо как с точки зрения задержки выхода изделия на рынок, так и в связи с ростом его конечной стоимости. Поэтому необходим принципиально новый подход к методам верификации СБИС.
Главная проблема традиционного подхода к функциональной верификации – в том, что она строится по схеме: сначала система разрабатывается и лишь затем – тестируется. Но если верификация поглощает более 60–70% времени или трудозатрат при проектировании СБИС, такая последовательность действий недопустима. Другой важный фактор – экспоненциальное увеличение (от объема СБИС) необходимого числа и длины тестовых векторов, а следовательно, размера и сложности средств тестирования. Одновременно усложняется и процесс поиска причины обнаруженной тестом неисправности.
Традиционный подход к проектированию и верификации означает, что проектирование начинается с разработки спецификации на систему в целом с последующим разбиением системы сначала на крупные, а затем на меньшие блоки, реализуемые на уровне RTL-описания. Далее каждый блок проектируется и верифицируется отдельно с последующим объединением в более крупные блоки и их верификацией. На этом этапе проверяется, соответствует ли функционирование каждого блока его спецификации. Процесс завершается интеграцией системы в целом и ее функциональной системной верификацией. Наиболее узкое место данного подхода – верификация, поскольку на каждом уровне интеграции системы приходится заново верифицировать блоки нижнего уровня. Более того, обнаружение ошибки на одном из последних этапов интеграции, в особенности – на уровне системной верификации, приводит к недопустимым затратам времени и ресурсов на внесение изменений.
Процесс верификации усложняется не только с ростом степени интеграции СБИС, но и с увеличением числа и разнообразия реализуемых на ней функций. Например, типичная современная система на кристалле включает один или несколько высокопроизводительных процессоров, мультигигабитные интерфейсы ввода-вывода, встроенную оперативную память, сложную систему синхронизации с множеством асинхронных генераторов, аналоговые, смешанные и СВЧ-блоки, встроенное программное обеспечение (ПО), зачастую работающее под управлением операционной системы реального времени (ОС РВ), специализированные устройства цифровой обработки сигналов и многое другое. Поэтому чрезвычайно важное значение приобретает не столько верификация отдельных блоков, сколько верификация их взаимодействия. Так, проектировщики цифровых устройств должны учитывать поведение аналоговых и СВЧ-схем и их взаимодействие с цифровыми блоками. Отладка многих цифровых блоков невозможна без исполнения встроенного ПО. Применение готовых IP-блоков еще больше усложняет верификацию интерфейсов, поскольку они поставляются, как правило, в виде "черных ящиков", не позволяющих анализировать их внутреннее поведение.
Существует два подхода к решению проблемы верификации. Первый предполагает усовершенствование самих средств верификации. Современные средства должны обеспечивать верификацию во всех возможных областях. Это – имитационное моделирование, аппаратная эмуляция, программно-аппаратная верификация, аналоговое, цифровое и смешанное моделирование, причем, в идеальном случае, с возможностью взаимодействия всех областей между собой. Средства верификации должны поддерживать все стандартные языки проектирования и верификации – VHDL, Verilog, VHDL-AMS, Verilog-A, Spice, C, C++, SystemC, System Verilog, MATLAB, PSL assertions и др. Второй подход заключается в изменении самой методики верификации, а именно – в переносе соответствующих процедур верификации на более ранние этапы проектирования. Это, как правило, подразумевает создание системных тестов, моделирование на уровне транзакций, верификацию интерфейсов различных подсистем одновременно с их проектированием, т.е. возможность верификации системы, отдельные блоки которой представлены на разных уровнях абстракции. Чаще всего оптимальное решение заключается в комбинации обоих названных подходов.
Для исчерпывающей верификации крупной СБИС (10 и более млн. вентилей) желательно иметь в распоряжении полный набор средств верификации, от HDL-моделирования до внутрисхемной эмуляции (рис.2). Сегодня наиболее полный комплект инструментов верификации сложных СБИС включает:
· программный HDL-симулятор (возможно, с реализацией на многопроцессорной системе или с поддержкой аппаратного ускорителя);
· специализированный симулятор для программно-аппаратной верификации систем со встроенным процессорным ядром и программным обеспечением;
· систему моделирования на высоком уровне абстракции (С, С++, SystemC и т.п.), в том числе – на уровне транзакций. Идеальна для имитации внешних воздействий (например, прерываний) на RTL-модель СБИС, исполняемую на аппаратном эмуляторе;
· систему аппаратной эмуляции с поддержкой режима внутрисхемной эмуляции (т.е. с возможностью включать аппаратный эмулятор в реальную систему вместо проектируемого устройства), что позволяет верифицировать поведение СБИС в реальном аппаратном окружении;
· систему формальной верификации (контроль эквивалентности), показывающую, что внесенные в схему изменения (например, цепи сканирования) не влияют на работу СБИС;
· систему аналогового и смешанного моделирования на едином многоязыковом ядре различных с точки зрения функционального поведения и уровня абстракции блоков, – в диапазоне от RTL до транзисторного уровня, с учетом особенностей СВЧ-приложений.
В принципе, каждая из перечисленных систем должна обладать определенной гибкостью и обеспечивать оптимизацию процесса верификации в зависимости от величины и функционального наполнения верифицируемого объекта. Например, регрессионные тесты (тесты больших объемов, зачастую требующие многочисленных повторных прогонов) можно реализовать путем распараллеливания работы программных симуляторов на многопроцессорных или многомашинных системах. Если это распараллеливание проблематично, можно использовать аппаратный эмулятор с модульной структурой, наращиваемой в зависимости от объема проекта и величины теста. Но при совместном использовании аппаратного эмулятора и программного симулятора RTL-модели скорость моделирования резко падает. Такая ситуация может возникнуть, если проверяется взаимодействие разрабатываемого блока и тестового устройства, реализованного в виде RTL-модели. Проблема решается либо компиляцией и переносом тестовой TRL-модели непосредственно в систему аппаратной эмуляции, либо заменой RTL-модели моделью более высокого уровня, например – уровня транзакций.
Смещение верификации на более ранние этапы проектирования означает, что эти процессы должны протекать параллельно. Так, проектирование на системном уровне по существу начинается с создания моделей высокого уровня на основе C, C++, SystemC и System Verilog, оставляя за кадром детали каждого отдельного блока. Такой подход позволяет начинать верификацию системы, не ожидая детальной проработки всех блоков и интерфейсов. Причем интерфейсы между блоками и тестовыми моделями, описанными на разных уровнях абстракции, очень эффективно реализует механизм транзакций.
Поскольку более половины времени верификации тратится на поиск неисправностей и их причин, очень важно иметь мощные отладочные инструменты. Они должны обеспечивать наблюдение и анализ моделируемых функций независимо от границ между системами верификации и различными уровнями абстракции. Например, при программно-аппаратной верификации RTL-блока необходима не только временная диаграмма его работы, но и полная трассировка исполняемой на имитаторе программы с визуализацией состояний регистров процессора в каждой точке. Желательна и возможность выполнения команд в потактном режиме.
Не менее актуальна проблема определения критерия, по которому можно судить о полноте верификации проекта. Традиционные показатели, используемые в программных симуляторах, например "полнота покрытия HDL-кода", вовсе не говорят о полноте верификации. Действительно, на один вывод современной СБИС приходится порядка 104–106 внутренних вентилей. Очевидно, что ошибка переключения некоторых из них в ходе теста совершенно необязательно отобразится на выходе СБИС. Поскольку показатель "100%-ная полнота покрытия кода" говорит лишь о том, что проверено переключение всех внутренних узлов (но, разумеется, не всех их комбинаций), то ложное срабатывание той или иной функции может не повлиять на результат теста, который можно сравнить с эталоном.
Для решения этой проблемы в последнее время успешно применяется механизм так называемых "утверждений" (assertions). Говоря упрощенно, он подразумевает расстановку внутри моделируемого кода "закладок", проверяющих работу тех или иных функций по мере их срабатывания, не дожидаясь распространения следствия данного срабатывания на выход схемы. В результате ошибка идентифицируется значительно быстрее и проще. Причем можно практически мгновенно определить ее истинную причину и в то же время существенно снизить сложность и объем тестовых моделей. Естественно, механизм "утверждений" должен работать, если верифицируемый объект представлен моделями разного уровня абстракции. Анализ показывает, что хотя накладные расходы по написанию и встраиванию assertions составляют 3%, а увеличение времени моделирования – 10%, общий выигрыш во времени верификации может достигать 80% [2].
КОМПЛЕКСНАЯ СИСТЕМА ВЕРИФИКАЦИИ MENTOR GRAPHICS
Компания Mentor Graphics предлагает разработчикам все перечисленные средства верификации (рис.3). Базовой средой и ядром верификации проектируемой системы, а также средой разработки и верификации тестового окружения является система ModelSim. При верификации цифровых подсистем, по мере увеличения объема проекта и повышения требований к производительности моделирования, могут применяться аппаратные эмуляторы VStation Pro и VStation TBX, а также система формальной верификации Formal Pro. В области аналоговых и смешанных подсистем весь спектр задач решает комплекс программ ADVance MS, который включает не только аналоговое SPICE-подобное (Eldo Analog Design Station) и смешанное аналого-цифровое моделирование (собственно ADVance MS), но и динамическое моделирование на транзисторном уровне (Mach TA), а также СВЧ-моделирование (Eldo RF Design Station). Для верификации встроенного ПО предназначена система программно-аппаратной верификации Seamless CVE, инструмент программной отладки XRAY, а также уже упоминавшиеся средства аппаратной эмуляции VStation Pro и VStation TBX. Весь комплекс верификации поддерживается собственными ОС РВ VRTX и Nucleus, библиотекой IP-блоков Inventra IP и средой проектирования и верификации СБИС на базе IP-блоков Platform Express.
ModelSim
Стратегия компании Mentor Graphics в области верификации сочетает тенденцию наращивания возможностей отдельных средств верификации и диапазона их применения со смещением центра тяжести верификации на более высокие уровни абстракции. Соответственно, среда моделирования ModelSim поддерживает все стандартные и вновь появляющиеся языки проектирования – C, C++, Verilog 2001, VHDL, SystemVerilog v3.1, SystemC 2.0.1 (включая библиотеку SystemC Verification Library 1.0), PSL 1.0 assertions, SystemVerilog assertions, Simulink, MATLAB и др. Это позволяет начинать верификацию уже на уровне спецификации системы, используя модели высокого уровня с последующей их детализацией. Важно отметить, что создаваемые на системном уровне тесты могут многократно использоваться на последующих этапах. По мере детализации проекта и перехода на уровень RTL скорость программной симуляции резко падает. Избежать этого позволяет распараллеливание процесса на многопроцессорных или многомашинных системах (simulation farms) или применение специальных аппаратных ускорителей. Помимо высокой производительности и поддержки существующих стандартов, ModelSim обладает уникальными отладочными возможностями, не имеющими аналогов у конкурентов.
VStation Pro, VStation TBX
Максимальная скорость верификации достигается, если RTL-описание проекта компилируется в систему аппаратной эмуляции VStation Pro. Эта система поддерживает проекты объемом до 120 млн. эквивалентных вентилей, обеспечивает реальную скорость эмуляции с тактовой частотой до 2 МГц и скорость компиляции более 5 млн. вентилей в час. Входное описание может быть на вентильном или RTL-уровнях на языках VHDL, Verilog или их сочетании. Система обладает мощными отладочными возможностями и обеспечивает 100%-ную визуализацию всех сигналов.
Расширением VStation Pro в область более высокого уровня абстракции является недавно анонсированный эмулятор VStation TBX. Он может компилировать не только вентильные и RTL-описания, но и поведенческие модели (C, C++, SystemC, SystemVerilog, Verisity e), в том числе – модели уровня транзакций. Наиболее эффективно модели высокого уровня используются для создания тестовых моделей, которые совместно с верифицируемым объектом компилируются в одну эмулирующую систему. Это позволяет существенно ускорить процесс верификации проекта и создать среду верификации системного уровня, в которой можно решать такие задачи, как загрузка встроенной операционной системы, запуск и выполнение встроенных приложений, мультипакетная потоковая обработка, обработка видео- и радиосигналов.
Система аппаратной эмуляции VStation TBX поддержана обширной библиотекой моделей на уровне транзакций, например – моделей стандартных протоколов USB, PCI, Ethernet, моделей памяти CAM, DDR, Flash и др. Как VStation Pro, так и VStation TBX полностью интегрированы с системой программно-аппаратной верификации Seamless CVE и средой ModelSim.
Formal Pro
По мере продвижения проекта от концептуального уровня до этапа реализации часто возникает задача так называемого регрессионного тестирования, т.е. последовательного прогона большого объема повторяющихся тестов. Подобная задача возникает, например, при интеграции мелких функциональных блоков в более крупные, при выполнении операций логического и физического синтеза, размещения и трассировки кристалла, при внесении изменений в схему проекта и т.п. Причем по мере приближения проекта к завершению его объем и детализация растет, вместе с ними увеличивается объем тестов и время их выполнения. Данная проблема с успехом решается методом контроля эквивалентности или методом формальной верификации, реализуемым системой Formal Pro. Система основана на принципе контроля эквивалентности логических функций, не требует генерации и прогона тестовых векторов, может работать как на RTL, так и на вентильном уровне, поддерживает проекты практически неограниченного объема (зависит от размера оперативной памяти) и многопроцессорную обработку.
Seamless CVE
Система на кристалле, как правило, содержит процессорное ядро с встроенным ПО. Спектр ПО может быть довольно широк – ОС РВ, прикладные программы, драйверы устройств, диагностические программы, загрузчики и т.п. Это порождает проблему ускоренной совместной верификации ПО и аппаратного окружения, представленного RTL-моделью. Для ее решения предназначена система Seamless CVE, позволяющая создавать виртуальные прототипы процессорного ядра. Система включает библиотеку интерпретаторов системы команд свыше 100 наиболее распространенных процессоров. Идея заключается в совместном моделировании программы, исполняемой на быстром интерпретаторе системы команд и RTL-моделировании аппаратного окружения на программном симуляторе или аппаратном эмуляторе (ModelSim или VStation, соответственно). Собственно ядро системы Seamless управляет взаимодействием между данными процессами. Причем на внешнюю шину из модели процессора выдаются только сигналы, имеющие непосредственное отношение к RTL-блоку. Команды же, незначимые для моделирования RTL-блока, не передаются для исполнения в RTL-модель. В результате резко повышается общая скорость моделирования при сохранении требуемой точности верификации аппаратной части.
Seamless CVE включает специальный C-интерфейс (C-Bridge), который позволяет подключать модели более высокого уровня абстракции (С, С++, С-transactions и т.д.). Их можно быстро написать и эффективно применить для создания тестов, имитирующих работу периферийных устройств, шинных интерфейсов и т.п. Естественно, данные модели пригодны и для описания блоков самого верифицируемого объекта с последующей их детализацией до уровня RTL- или вентильного описания. Другая важная особенность системы Seamless – встроенный анализатор производительности (Seamless Version 5 Performance Profiler). Он позволяет, например, оценить пропускную способность шины при обращении к памяти в зависимости от используемого алгоритма разрешения конфликтов. Возможно и оперативно изменять этот алгоритм (например, меняя приоритеты), не выходя из сеанса моделирования.
ADVance MS
С ростом доли аналоговых и СВЧ-блоков в системах на кристалле обостряется задача их детального моделирования как в отдельности, так и совместно с цифровыми блоками. Ее решает комплекс программ моделирования ADVance MS. Аналоговое моделирование на основе SPICE-примитивов реализует система Eldo Analog Design Station, обеспечивающая высокую скорость (в три раза быстрее, чем HSPICE) и точность моделирования. Система Eldo RF Design Station является расширением Eldo в область СВЧ-диапазона. Eldo RF использует многочастотные алгоритмы третьего поколения, позволяет определять характеристики сигналов и шумов в установившемся режиме, а также рассчитывать стабильность схемы в локальном частотном или временном диапазоне. Непосредственно для смешанного моделирования предназначена система ADVance MS. Она содержит единое ядро смешанного моделирования и единый пользовательский интерфейс. Существенно, что в ADVance MS реализован единый цикл моделирования аналоговой и цифровой аппаратуры. Система поддерживает языки VHDL, Verilog, VHDL-AMS и Verilog-A.
Для высокоскоростного моделирования на транзисторном уровне предназначен пакет Mach TA. Его очень высокая скорость моделирования (на три порядка выше, чем традиционный SPICE) при сохранении требуемой точности обусловлена использованием табличных моделей. Причем объем проекта ограничен только размером оперативной памяти (2 Гбайт на 10 млн. транзисторов).
ПРИМЕР ИСПОЛЬЗОВАНИЯ
Рассмотрим пример возможного использования комплексной системы верификации Mentor Graphics для сложной системы на кристалле (рис.4). В одном сеансе верификации различные блоки системы могут моделироваться различными средствами. Так, процессорное ядро и блоки памяти реализованы в системе Seamless, контроллер ODMA представлен HDL-кодом и моделируется в среде ModelSim или, если скорости ModelSim не достаточно, компилируется в эмулятор с минимальной конфигурацией VStation 15M. Другие блоки системы представлены моделями более высокого уровня абстракции (С, С++, SystemC) и подключаются к системе Seamless через C-Bridge, а к системе эмуляции – через интерфейс, работающий на уровне транзакций. Верификация всей системы проходит в едином сеансе с полным набором отладочных возможностей, включая трассировку встроенной программы в Seamless, снятие временной диаграммы всех сигналов в VStation 15M, потактную работу и т.д. В процессе детализации отдельных блоков проекта до RTL-уровня практически вся система может быть загружена в эмулятор VStation Pro, а тестовое окружение, в том числе – на C, C++, SystemC и т.п., – в VStation TBX.
Являясь признанным мировым лидером в области средств верификации (34% мирового рынка по данным Dataquest за 2001 год [3]), компания Mentor Graphics предлагает наиболее комплексное и интегрированное решение по всем трем основным направлениям верификации систем на кристалле: цифровые подсистемы, аналоговые и смешанные подсистемы, встроенные процессорные ядра и их программное обеспечение. Средства верификации Mentor Graphics нашли достаточно широкое применение и в России. В особенности это относится к системе ModelSim. Так, Московский центр Спарк технологий (МЦСТ) использует эту систему, а также систему формальной верификации FormalPro в режиме Simulation Farm для верификации СБИС семейства "Эльбрус" [4].
Литература
1. Brian Bailey. The Multiple Dimensions of Scalability that Comprise a System Verification Strategy. – Mentor Graphics Scalable Verification White Paper.
2. Functional Verification of a Multiple-Issue, Out of Order, Superscalar Alpha Processor. – DAC, 1998.
3. 2001 Dataquest Sub-Market Analysis On Combined Verification Technologies. – www.dataquest.com.
4. Рудометов В.В. ModelSim и FormalPro в логической верификации EPIC-процессора. – Доклад на семинаре МИЭМ 02.04.03.
Отзывы читателей