2023-08-02 16:20:29 -05:00
|
|
|
.. _chapter:overview:
|
|
|
|
|
|
|
|
Yosys internals
|
|
|
|
===============
|
|
|
|
|
2023-09-18 18:21:15 -05:00
|
|
|
.. todo:: less academic
|
2023-08-02 16:20:29 -05:00
|
|
|
|
|
|
|
Yosys is an extensible open source hardware synthesis tool. It is aimed at
|
|
|
|
designers who are looking for an easily accessible, universal, and
|
|
|
|
vendor-independent synthesis tool, as well as scientists who do research in
|
|
|
|
electronic design automation (EDA) and are looking for an open synthesis
|
|
|
|
framework that can be used to test algorithms on complex real-world designs.
|
|
|
|
|
|
|
|
Yosys can synthesize a large subset of Verilog 2005 and has been tested with a
|
|
|
|
wide range of real-world designs, including the `OpenRISC 1200 CPU`_, the
|
|
|
|
`openMSP430 CPU`_, the `OpenCores I2C master`_, and the `k68 CPU`_.
|
|
|
|
|
2024-03-04 10:57:27 -06:00
|
|
|
.. todo:: add RISC-V core example
|
|
|
|
|
2023-08-02 16:20:29 -05:00
|
|
|
.. _OpenRISC 1200 CPU: https://github.com/openrisc/or1200
|
|
|
|
|
|
|
|
.. _openMSP430 CPU: http://opencores.org/projects/openmsp430
|
|
|
|
|
|
|
|
.. _OpenCores I2C master: http://opencores.org/projects/i2c
|
|
|
|
|
|
|
|
.. _k68 CPU: http://opencores.org/projects/k68
|
|
|
|
|
2024-06-17 10:08:13 -05:00
|
|
|
Yosys is written in C++, targeting C++17 at minimum. This chapter describes some
|
2024-03-04 10:57:27 -06:00
|
|
|
of the fundamental Yosys data structures. For the sake of simplicity the C++
|
|
|
|
type names used in the Yosys implementation are used in this chapter, even
|
|
|
|
though the chapter only explains the conceptual idea behind it and can be used
|
|
|
|
as reference to implement a similar system in any language.
|
2023-08-02 16:20:29 -05:00
|
|
|
|
2023-08-13 19:13:29 -05:00
|
|
|
.. toctree::
|
2023-12-12 15:08:45 -06:00
|
|
|
:maxdepth: 3
|
2023-08-02 16:20:29 -05:00
|
|
|
|
2023-12-12 15:08:45 -06:00
|
|
|
flow/index
|
|
|
|
formats/index
|
|
|
|
extending_yosys/index
|
|
|
|
techmap
|
2024-12-04 14:21:12 -06:00
|
|
|
verilog
|