Shaos wrote:Короче есть такая штука
Yosys:
http://www.clifford.at/yosys/about.html
Yosys is a framework for Verilog RTL synthesis. It currently has extensive Verilog-2005 support and provides a basic set of synthesis algorithms for various application domains. Selected features and typical applications:
- Process almost any synthesizable Verilog-2005 design
- Converting Verilog to BLIF / EDIF/ BTOR / SMT-LIB / simple RTL Verilog / etc.
- Built-in formal methods for checking properties and equivalence
- Mapping to ASIC standard cell libraries (in Liberty File Format)
- Mapping to Xilinx 7-Series and Lattice iCE40 FPGAs
- Foundation and/or front-end for custom flows
Yosys can be adapted to perform any synthesis job by combining the existing passes (algorithms) using synthesis scripts and adding additional passes as needed by extending the Yosys C++ code base.
Yosys is free software licensed under the ISC license (a GPL compatible license that is similar in terms to the MIT license or the 2-clause BSD license).
Это опен-сорцный конвертер из верлиога в нетлист логических блоков! Естественно с интерфейсом из командной строки

Другие чуваки реверс-инжынирнули FPGA iCE40 и написали прослойку, которая укладывает эти логические блоки в FPGA - получилась опен-сорцная от начала до конца разработка для FPGA!!!
P.S. И существует набор очень немаленьких примеров для проверки:
Оказывается Yosys сам умеет компилировать железячный дизайн в C++ !!!
Code: Select all
yosys -p "read_verilog module.v; write_cxxrtl cxxrtl.cpp"
Правда он совсем не умеет VHDL:
Code: Select all
read load HDL designs
read_blif read BLIF file
read_ilang read modules from ilang file
read_json read JSON file
read_liberty read cells from liberty file
read_verilog read modules from Verilog file
По умолчанию это должен быть Verilog или SystemVerilog файл:
Code: Select all
read {-vlog95|-vlog2k|-sv2005|-sv2009|-sv2012|-sv|-formal} <verilog-file>..
А так код получается интересный (даже закольцованные логические гейты отрабатывают как защёлки как и надо) и шаг симуляции может выполняться только по смене значения на входах - надо будет сравнить с Верилятором по скорости...
Версия с которой я это пробовал:
Code: Select all
Yosys 0.21+18 (git sha1 fcd1be142, clang 10.0.0-4ubuntu1 -fPIC -Os)
Взята отсюда:
https://github.com/YosysHQ/oss-cad-suite-build/releases/download/2022-09-26/oss-cad-suite-linux-x64-20220926.tgz
Работает без проблем на моём Debian Linux 10.13 (в котором Yosys сильно старее и компилировать в C++ не умеет)
P.S. Вот есть описалово с примерами:
https://tomverbeure.github.io/2020/08/08/CXXRTL-the-New-Yosys-Simulation-Backend.html
Там автор пишет, что на его примерах (целочисленная RISC-V реализация) CXXRTL при максимальной оптимизации примерно в 8 раз медленнее одно-тредного Верилятора.
P.P.S. Официальная документация на CXXRTL:
https://yosyshq.readthedocs.io/projects/yosys/en/latest/cmd/write_cxxrtl.html