В Chisel 3 требуется 10 минут для компиляции сгенерированного Verilator кода C++ для Rocket Chip. Есть ли способы ускорить это?

Мы модифицируем код Rocket Chip. После каждой модификации нам нужно запускать программы сборки, чтобы убедиться, что все работает правильно.

Для этого выполните следующие действия: 1) Запустите Chisel, чтобы сгенерировать Verilog 2) Запустите Verilog через Verilator, чтобы сгенерировать C++ 3) Скомпилируйте сгенерированный C++ 4) Запустите тесты

Шаг 3 примерно в 10 раз длиннее, чем в Chisel 2. Он занимает около 10 минут, что замедляет разработку.

Есть ли способ ускорить это?


person seanhalle    schedule 28.04.2018    source источник
comment
Вы используете аргумент --output-split-cfuncs? Если вы используете Makefiles в Rocket-Chip/Emulator, то, вероятно, так и есть, но если нет, это значительно ускоряет работу: см. github.com/freechipsproject/rocket-chip/pull/818   -  person Jack Koenig    schedule 28.04.2018
comment
Спасибо, мы попытались это сделать, но, к сожалению, это не дало большого эффекта ... вероятно, оно уже было включено, поскольку мы используем файлы Makefile в ракетном чипе / эмуляторе, как вы заметили.   -  person seanhalle    schedule 01.05.2018


Ответы (1)


Я обнаружил, что нетривиальное количество времени сборки и выполнения тратится на не совсем синтезируемые конструкции, которые используются для поддержки проверки.

Например, я отключаю TLMonitors с помощью параметров Config. Вы можете найти пример в subsystem Configs.

class WithoutTLMonitors extends Config ((site, here, up) => {
  case MonitorsEnabled => false
})
person Chris    schedule 29.04.2018