2023-06-11 16:15:24 +03:00
|
|
|
|
# Простой бенчмарк HDL симуляторов (преранняя версия)
|
|
|
|
|
|
|
|
|
|
|
|
Для оценки скорости запускается симуляция софт-процессора
|
2023-06-11 17:54:44 +03:00
|
|
|
|
[PicoRV32](https://github.com/YosysHQ/picorv32) с программой вычисления первых 200
|
2023-06-11 16:15:24 +03:00
|
|
|
|
знаков числа Пи.
|
|
|
|
|
|
|
|
|
|
|
|
В папке `source` находятся исходники RTL и программы. Верхний модуль - `testbench` с
|
|
|
|
|
|
единственным входным сигналом `clock`. Генерация клока во внешнем модуле сделана для
|
|
|
|
|
|
совместимости с верилятором, который не позволяет генерировать клок в верилоге.
|
|
|
|
|
|
|
|
|
|
|
|
В папках `test-*` находятся скрипты для запуска бенчимарка на конкретном
|
|
|
|
|
|
симуляторе. Скрипты называются `__build.sh` (для сборки проекта) и `__run.sh` (для
|
|
|
|
|
|
запуска симуляции).
|
|
|
|
|
|
|
|
|
|
|
|
Скрипт `run.sh` запускает бенчмарк на всех симуляторах и сохраняет время исполнения в
|
|
|
|
|
|
файл `results.txt`. Можно запустить бунчмарк на одном симуляторе, для чего в
|
|
|
|
|
|
параметрах скрипта `run.sh` нужно указать папку с бенчмарком.
|
|
|
|
|
|
|
2023-06-11 17:54:44 +03:00
|
|
|
|
## Результаты для 50 знаков Пи
|
2023-06-11 16:15:24 +03:00
|
|
|
|
|
|
|
|
|
|
- Xeon E5-2630v3 @ 2.40GHz
|
|
|
|
|
|
- Verilator 5.011 devel rev v5.010-98-g15f8ebc56
|
|
|
|
|
|
- Icarus Verilog 13.0 (devel) (s20221226-127-gdeeac2edf)
|
|
|
|
|
|
- ModelSim SE-64 2020.4 (Revision: 2020.10)
|
|
|
|
|
|
|
|
|
|
|
|
Время в миллисекундах:
|
|
|
|
|
|
```
|
|
|
|
|
|
test-iverilog: 210540
|
|
|
|
|
|
test-modelsim: 25555
|
|
|
|
|
|
test-verilator: 1289
|
|
|
|
|
|
```
|
2023-06-11 17:54:44 +03:00
|
|
|
|
|
|
|
|
|
|
## Результаты для 200 знаков Пи
|
|
|
|
|
|
|
|
|
|
|
|
Вычисление 200 знаков на Icarus Verilog занимает непозволительно много времени, по
|
|
|
|
|
|
этому перед запуском всех бенчмарков рекомендую переименовать папку `test-iverilog` в
|
|
|
|
|
|
`notest-iverilog`.
|
|
|
|
|
|
|
|
|
|
|
|
Результаты для 200 знаков на том же процессоре:
|
|
|
|
|
|
```
|
2023-06-11 22:21:21 +03:00
|
|
|
|
test-iverilog: 3257116
|
|
|
|
|
|
test-modelsim: 359562
|
2023-06-11 17:54:44 +03:00
|
|
|
|
test-verilator: 20816
|
|
|
|
|
|
```
|
2023-06-11 22:37:19 +03:00
|
|
|
|
|
|
|
|
|
|
## Предварительные результаты по симуляторам "Big 3"
|
|
|
|
|
|
|
|
|
|
|
|
Коллеги прогнали бенчмарк на Xcelium, VCS и Modelsim. Примерные оценки показали
|
|
|
|
|
|
следующие результаты (приведено к скорости Xcelium):
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
test-verilator: 0.35
|
|
|
|
|
|
test-xcelium: 1
|
|
|
|
|
|
test-vcs: 1.37
|
|
|
|
|
|
test-modelsim: 5.95
|
|
|
|
|
|
test-iverilog: 58
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Конечно, нужно учитывать то, что Verilator - это cycle-accurate симулятор, и что он
|
|
|
|
|
|
не поддерживает состояния X и Z.
|