Автоматическая проверка синтезируемости описаний аппаратуры
Аннотация
Современное проектирование цифровых СБИС предполагает использование языков описания аппаратуры Verilog и SystemVerilog как для логического синтеза, так и для симуляции, однако не все конструкции этих языков синтезируемы, а множество поддерживаемых конструкций различается между инструментами синтеза. При этом инструменты синтеза не всегда диагностируют несинтезируемые конструкции и могут молча изменять семантику схемы, что приводит к расхождению поведения RTL-модели и синтезированной схемы, а исправление проблем, обнаруженных на поздних этапах маршрута проектирования, требует значительных временных и экономических затрат. В работе описано формирование набора правил синтезируемости для описаний аппаратуры на языках Verilog и SystemVerilog на основе стандарта IEEE/IEC 62142-2005, руководства STARC RTL Design Style Guide и Reuse Methodology Manual, а также опыта коммерческих инструментов: сформулировано 34 правила, охватывающих не используемые при синтезе конструкции, семантику описаний аппаратных элементов и расхождение синтеза и симуляции. В рамках системы статического анализа SVAN реализованы статические детекторы для проверки соответствия исходного кода этим правилам: разработано 10 новых детекторов (SYNTH14–SYNTH23), обновлен 1 существующий (SYNTH13), часть правил покрывается ранее реализованными детекторами системы. Предложен механизм настройки уровня консервативности, позволяющий адаптировать строгость проверок к возможностям конкретного инструмента синтеза, в том числе с применением анализа потока данных; получены рекомендуемые конфигурации детекторов для инструментов синтеза Yosys, Vivado и Genus. Апробация на открытом инструменте Yosys показала, что несинтезируемые конструкции могут обрабатываться им без предупреждений с изменением семантики схемы, что подтверждает практическую значимость раннего статического анализа. Сравнение с коммерческим анализатором SpyGlass выявило конкретные пробелы в его анализе; нарушения правил найдены во всех десяти открытых проектах, на которых запускались детекторы, об одном из нарушений сообщено разработчикам проекта OpenC910.
Ключевые слова
Издание
Труды Института системного программирования РАН, том 38, вып. 4, часть 2, 2026, стр. 45-66.
ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).
DOI: 10.15514/ISPRAS-2026-38(4)-18
Для цитирования
Полный текст статьи в формате pdf (на английском)
Вернуться к содержанию тома