diff --git a/doc/01_overview/compliance.rst b/doc/01_overview/compliance.rst deleted file mode 100644 index defcc320c2..0000000000 --- a/doc/01_overview/compliance.rst +++ /dev/null @@ -1,67 +0,0 @@ -Standards Compliance -==================== - -Ibex is a standards-compliant 32 bit RISC-V processor. -It follows these specifications: - -* `RISC-V Instruction Set Manual, Volume I: User-Level ISA, document version 20190608-Base-Ratified (June 8, 2019) `_ -* `RISC-V Instruction Set Manual, Volume II: Privileged Architecture, document version 20190608-Base-Ratified (June 8, 2019) `_. - Ibex implements the Machine ISA version 1.11. -* `RISC-V External Debug Support, version 0.13.2 `_ -* `RISC-V Bit-Manipulation Extension, version 1.0.0 `_ and `version 0.93 (draft from January 10, 2021) `_ -* `PMP Enhancements for memory access and execution prevention on Machine mode (Smepmp) version 0.9.3 `_ - -Many features in the RISC-V specification are optional, and Ibex can be parametrized to enable or disable some of them. - -Ibex can be parametrized to support either of the following two instruction sets. - -* The RV32I Base Integer Instruction Set, version 2.1 -* The RV32E Base Integer Instruction Set, version 1.9 (draft from June 8, 2019) - -In addition, the following instruction set extensions are available. - -.. list-table:: Ibex Instruction Set Extensions - :header-rows: 1 - - * - Extension - - Version - - Configurability - - * - **C**: Standard Extension for Compressed Instructions - - 2.0 - - always enabled - - * - **M**: Standard Extension for Integer Multiplication and Division - - 2.0 - - optional - - * - **B**: Standard Extension for Bit-Manipulation Instructions - - 1.0.0 + 0.93 [#B_draft]_ - - optional - - * - **Zicsr**: Control and Status Register Instructions - - 2.0 - - always enabled - - * - **Zifencei**: Instruction-Fetch Fence - - 2.0 - - always enabled - -Most content of the RISC-V privileged specification is optional. -Ibex currently supports the following features according to the RISC-V Privileged Specification, version 1.11. - -* M-Mode and U-Mode -* All CSRs listed in :ref:`cs-registers` -* Performance counters as described in :ref:`performance-counters` -* Vectorized trap handling as described at :ref:`exceptions-interrupts` - -See :ref:`PMP Enhancements` for more information on Ibex's experimental and optional support for the PMP Enhancement proposal from the Trusted Execution Environment (TEE) working group. - -.. rubric:: Footnotes - -.. [#B_draft] Ibex fully implements the ratified version 1.0.0 of the RISC-V Bit-Manipulation Extension including the Zba, Zbb, Zbc and Zbs sub-extensions. - In addition, Ibex also supports the remaining Zbe, Zbf, Zbp, Zbr and Zbt sub-extensions as defined in draft version 0.93 of the RISC-V Bit-Manipulation Extension. - Note that the latter sub-extensions may change before being ratified as a standard by the RISC-V Foundation. - Ibex will be updated to match future versions of the specification. - Prior to ratification this may involve backwards incompatible changes. - Additionally, neither GCC or Clang have committed to maintaining support upstream for unratified versions of the specification. diff --git a/doc/01_overview/index.rst b/doc/01_overview/index.rst deleted file mode 100644 index b986612fe9..0000000000 --- a/doc/01_overview/index.rst +++ /dev/null @@ -1,16 +0,0 @@ -Introduction to CVE2 -==================== - -Ibex is a production-quality open source 32-bit RISC-V CPU core written in SystemVerilog. -The CPU core is heavily parametrizable and well suited for embedded control applications. -Ibex is being extensively verified and has seen multiple tape-outs. - -Read on for more information Ibex in general: what standards it implements, what synthesis targets it supports, and what legal and financial obligations you have when using Ibex. - -.. toctree:: - :maxdepth: 2 - :caption: In this section - - compliance - targets - licensing diff --git a/doc/01_overview/licensing.rst b/doc/01_overview/licensing.rst deleted file mode 100644 index 6ae7b9b55d..0000000000 --- a/doc/01_overview/licensing.rst +++ /dev/null @@ -1,16 +0,0 @@ -Licensing -========= - -Ibex is released under the Apache license, version 2.0. - -Ibex can be used, modified, and distributed for any purpose (including commercial) and without any royalties. -There are some requirements on including copyright notices and the original license. - -Please see the ``LICENSE`` file in the source code for the full (and legally binding) license text. - -Even though the license doesn't require it, we appreciate feedback and contributions to make Ibex work better for everyone. -Please open an `issue `_ for bug reports, questions, or suggested improvements, or a `pull request `_ if you'd like to contribute code. - -.. note:: - - Commercial support for Ibex is available from `lowRISC `_. diff --git a/doc/01_overview/targets.rst b/doc/01_overview/targets.rst deleted file mode 100644 index 96ef0d0f57..0000000000 --- a/doc/01_overview/targets.rst +++ /dev/null @@ -1,19 +0,0 @@ -Synthesis Targets -================= - -ASIC Synthesis --------------- - -ASIC synthesis is supported for Ibex. -The whole design is completely synchronous and uses positive-edge triggered flip-flops, except for the register file, which can be implemented either with latches or with flip-flops. -See :ref:`register-file` for more details. -The core occupies an area of roughly 24 kGE when using the latch-based register file and implementing the RV32IMC ISA, or 15 kGE when implementing the RV32EC ISA. - - -FPGA Synthesis --------------- - -FPGA Synthesis is supported for Ibex. -The FPGA-optimized register file implementation should be used. -The flip-flop based register file is also compatible with FPGA synthesis, however it may result in significantly higher resource utilization. -Since latches are not well supported on FPGAs, the latch-based register file should not be used. diff --git a/doc/00_specification/index.rst b/doc/01_specification/index.rst similarity index 100% rename from doc/00_specification/index.rst rename to doc/01_specification/index.rst diff --git a/doc/04_developer/concierge.rst b/doc/04_developer/concierge.rst deleted file mode 100644 index 74efc594c1..0000000000 --- a/doc/04_developer/concierge.rst +++ /dev/null @@ -1,73 +0,0 @@ -.. _concierge: - -The Ibex Concierge -================== - -.. figure:: https://upload.wikimedia.org/wikipedia/commons/8/80/France_in_XXI_Century._Concierge.jpg - -The Ibex Concierge is the friendly caretaker of the Ibex project. -It's a rotating duty shared by experienced contributors to help newcomers find their way around the project, and to stay on top of the various small tasks necessary to keep the project going. - -The Ibex CPU project is a reasonably large open source project. -Like all projects we experience two challenges: -we want to lend a helping hand to new developers, answering their questions or helping them with code contributions. -And we need to stay on top of our "caretaker" tasks, like fixing problems with our continuous integration setup, triaging issues and pull requests, etc. -The Ibex Concierge combines these two duties in one person. - -Please reach out to the Ibex Concierge if you have trouble finding your way around the Ibex project. -You can find today's Ibex Concierge in the calendar below. - - -Who is Ibex Concierge today? ----------------------------- - -The concierge duties rotate between several core developers on a weekly basis. -You can find today's concierge on duty in a `public calendar `_. - -* Greg Chadwick (`@GregAC `_) -* Tom Roberts (`@tomroberts-lowrisc `_) -* Rupert Swarbrick (`@rswarbrick `_) -* Pirmin Vogel (`@vogelpi `_) -* Philipp Wagner (`@imphil `_) - -You can be Ibex Concierge, too. -Please talk to any of the current concierges to discuss! - -.. raw:: html - - - - -Ibex Concierge duties ---------------------- - -The Ibex Concierge is aware of what's happening in the Ibex project, and helps to ensure that everyone feels welcome and is able to work productively. -The list of duties includes, but isn't strictly limited to the following tasks. - -* Triage incoming issues and pull requests. - - * Assign labels to them. - - * Give initial feedback with an indication of what the next steps are. - - * Answer questions if possible. - - * Ask for clarifications where necessary. - - * Redirect to the right developers as needed. - -* Track progress of open issues and pull requests. - Ensure contributors always know what's going on, and are informed if things take longer. - -* Welcome new contributors, and provide (hands-on) help to get them up to speed. - For example, help them get their commits into good shape, etc. - -* Fix or coordinate fixes to necessary infrastructure, such as the continuous integration setup in a timely manner. - -* Go through the list of open pull requests: ping developers if information or action is needed, close abandoned pull requests, etc. - -* Assist with the review and update of open issues. - -* At the end of the week, hand over to the next Ibex Concierge on the rota. - -Note the obvious: it is not the job of the Ibex Concierge to fix all bugs, implement all incoming feature requests, or be available 24/7. diff --git a/doc/04_developer/index.rst b/doc/04_developer/index.rst deleted file mode 100644 index 40791d08d6..0000000000 --- a/doc/04_developer/index.rst +++ /dev/null @@ -1,18 +0,0 @@ -Ibex Developer Guide -==================== - -Ibex is an open source project and invites everyone to contribute. -The Ibex Developer Guide documents how Ibex is developed, both in terms of process and tools. - -Read on if you would like to work with the Ibex code base to fix a bug, add a feature, or reproduce the verification. - -.. todo:: - - Describe how to set up development environment, how to make changes, etc. - Use content from various READMEs and the CONTRIBUTING guide in the repo. - -.. toctree:: - :maxdepth: 2 - :caption: In this section - - concierge diff --git a/doc/index.rst b/doc/index.rst index 5391c55439..a540d4dd5a 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -7,29 +7,21 @@ The CPU core is based on the Ibex core, but simplified and verified under the Op You are now reading the CV32E20 documentation. The documentation is split into multiple parts. -The :doc:`Technical Specification <00_specification/index>` Contains the technical specification of CV32E20. +The :doc:`Technical Specification <01_specification/index>` contains the technical specification of CV32E20. It defines the supported features in the form of requirements. The remaining parts of documentation are inherited from the Ibex project. They are kept for reference and will be reworked in the future. -The :doc:`Overview documentation <01_overview/index>` looks at Ibex from high up. -It answers questions like what are the high-level properties of Ibex, which standards is Ibex following, and where is it typically used. - The :doc:`User Guide <02_user/index>` provides all necessary information to use Ibex. It is aimed at hardware developers integrating Ibex into a design, and software developers writing software running on Ibex. The :doc:`Reference Guide <03_reference/index>` provides background information. It describes the design in detail, discusses the verification approach and the resulting testbench structures, and generally helps to understand Ibex in depth. -The :doc:`Developer Guide <04_developer/index>` is aimed at people making changes to Ibex itself. -Since Ibex is open source, every user of Ibex is encouraged to learn how to adapt Ibex to their use case, and be part of the open development process. - .. toctree:: - :maxdepth: 2 + :maxdepth: 3 :hidden: - 00_specification/index.rst - 01_overview/index.rst + 01_specification/index.rst 02_user/index.rst 03_reference/index.rst - 04_developer/index.rst