Головная боль оптимизатора… 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.
- Проблема верификации.
- Более высокая сложность обучения для новых пользователей.