Chisel vs. SystemVerilog: Новый взгляд на проектирование цифровых схем

Содержание

Головная боль оптимизатора… Scala! Ирония судьбы: язык Scala, созданный оптимизации, не оптимизирует. Мучались с ним Web-программист, а теперь он пришел и к нам.

Когда я слышу Scala, в голове моей всплывает GO(ещё одно технологическое «чудо»), Apache и ML! По сути, Go и Scala взаимосвязаны: один собирает трафик, другой анализирует и оптимизирует.
За месяц до конференции FPGA SYSTEMS 2024.2 наткнулся на Chisel. Увидел слово «SCALA» сразу отпала желание читать. Однако Обзор Chisel от Дениса Муратова на конференции показал особенности и возможности языка, и все-таки решил почитать документацию. Вот мои выводы:

  • Динамичность: На основе входных параметров и данных создавать, затрачивая минимальное кол-во времени, сложные структуры.
  • Модульность и Иерархичность: Функциональные возможности наследуемые Scala упрощает иерархичность проекта, потому что некоторые конструкции в SV сводятся к одной строчке на Chisel.
  • Возможности: Все методы анализа и оптимизации данных доступны Chisel, что придает большой жирный плюс.
  • Транспилятор: Всегда будете заложниками чужого кода. Не маловажными вопросами будут: «Как и Кем написан интерпретатор?», «Какие использования данного особенности, включая ошибки, данного интерпретатора?».
  • Black box: Помимо интерпретатора, который используется транспиляторе может быть от коммерческой компании, сложность составляют методы. Сложность и непонимание метода может привести к построению собственных полифилов, т.е. тоже самое, что вы делали бы на SV.
  • Инструменты: В отличие от SV, Chisel ещё не стал стандартом в индустрии, и его поддержка в EDA-инструментах ограничена.
  • Проблема верификации: опять отсылка на пункт к транспиляторам. Верификация кода, транспилируемого из Chisel в SystemVerilog, часто вызывает дополнительные сложности.
  • Команда: не готовность команды переходить на Chisel.

Вывод

Chisel и язык Scala предлагают множество преимуществ, особенно в области гибкости, анализа и оптимизации. Однако их использование сопряжено с определёнными рисками: зависимость от транспиляторов, ограниченная поддержка инструментов и необходимость обучения команды.

FAQ

1. Правда ли, что Chisel делает вас зависимыми от транспилятора?

Да, Chisel генерирует код Verilog или SystemVerilog с использованием транспилятора, что добавляет слой зависимости. Ошибки в транспиляторе или его ограниченная функциональность могут усложнить процесс проектирования и верификации.

2. Почему Chisel ещё не стал стандартом?

Chisel — относительно новый инструмент, популярный в академической среде и стартапах, но он ещё не получил массового распространения в индустрии. Причина в ограниченной поддержке инструментов EDA и отсутствии устоявшегося стандарта для широкого применения.

3. Почему в статье упоминается сложность верификации на Chisel?

Генерируемый Chisel код на Verilog может быть сложно читать и отлаживать. Это может вызвать проблемы при интеграции с существующими проектами или верификацией схем.

4. Какие преимущества Chisel имеет перед SystemVerilog?

  • Динамическое создание структур.
  • Лучшая поддержка параметризации и модульности.
  • Возможности функционального программирования из Scala.
  • Более компактный и читаемый код для сложных иерархий.

5. В чём недостатки Chisel имеет перед SystemVerilog?

  • Зависимость от транспилятора.
  • Ограниченная поддержка инструментов EDA.
  • Проблема верификации.
  • Более высокая сложность обучения для новых пользователей.