# yosyshq/picorv32

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/yosyshq-picorv32).**

3,962 stars · 898 forks · Verilog · isc

## Links

- GitHub: https://github.com/YosysHQ/picorv32
- awesome-repositories: https://awesome-repositories.com/repository/yosyshq-picorv32.md

## Description

picorv32 is a size-optimized RISC-V CPU core and synthesizable processor IP designed for integration into FPGA and ASIC hardware designs. It serves as an open-source CPU architecture and embedded system-on-chip component that implements a standard RISC-V instruction set.

The design features a modular architecture that allows for the integration of external coprocessors to implement custom non-branching instructions. It includes a parameterized integer unit with configurable multiplication and division cores to balance performance against total logic gate count.

The project covers a broad range of hardware development capabilities, including memory-mapped flash execution, interrupt management, and valid-ready bus interfaces for memory and peripheral synchronization. It also provides tools for hardware verification through simulation, execution flow tracing, and the generation of SMT2 models for formal mathematical verification of CPU logic.

## Tags

### Hardware & IoT

- [Custom CPU Architecture Design](https://awesome-repositories.com/f/hardware-iot/custom-cpu-architecture-design.md) — Implements a modular, open-source RISC-V CPU architecture with configurable integer units and coprocessor interfaces. ([source](https://github.com/YosysHQ/picorv32/blob/main/.gitignore))
- [RISC-V CPU Cores](https://awesome-repositories.com/f/hardware-iot/risc-v-cpu-cores.md) — Implements a size-optimized RISC-V CPU core designed for integration into FPGA and ASIC hardware.
- [RISC-V Processor Cores](https://awesome-repositories.com/f/hardware-iot/embedded-robotics/hardware-in-the-loop-simulators/binary-emulators/hardware-accelerated-emulators/risc-v-processor-cores.md) — Provides a size-optimized RISC-V processor core suitable for synthesis in FPGA and ASIC designs.
- [Embedded SoC Components](https://awesome-repositories.com/f/hardware-iot/embedded-soc-components.md) — Provides a processor core with integrated memory controllers and UART interfaces for minimal system-on-chip designs.
- [Hardware Logic Descriptions](https://awesome-repositories.com/f/hardware-iot/hardware-capability-modeling/hardware-logic-descriptions.md) — Delivers a hardware description designed for conversion into logic netlists via synthesis tools.
- [RISC-V ISA Implementations](https://awesome-repositories.com/f/hardware-iot/risc-v-isa-implementations.md) — Implements a standard RISC-V instruction set with configurable support for various architectural variants. ([source](https://github.com/YosysHQ/picorv32/blob/main/README.md))
- [RTL Design](https://awesome-repositories.com/f/hardware-iot/rtl-design.md) — Provides a synthesizable hardware description of the processor core at the register-transfer level. ([source](https://github.com/YosysHQ/picorv32/blob/main/Makefile))
- [Interrupt Handlers](https://awesome-repositories.com/f/hardware-iot/connectivity-iot/internet-of-things/device-management/peripheral-device-managers/interrupt-handlers.md) — Manages the hardware transition to interrupt handlers by saving registers and jumping to service routines. ([source](https://github.com/YosysHQ/picorv32#readme))
- [Digital Logic Verification](https://awesome-repositories.com/f/hardware-iot/design-lifecycle-management/hardware-engineering-management/hardware-management/hardware-design-verifiers/digital-logic-verification.md) — Runs simulation testbenches and formal models to ensure digital logic correctness before fabrication.
- [FPGA Hardware Design](https://awesome-repositories.com/f/hardware-iot/fpga-hardware-design.md) — Combines a processor core with memory and UART controllers for synthesis on field-programmable gate arrays. ([source](https://github.com/YosysHQ/picorv32/tree/main/picosoc))
- [Integer Arithmetic Units](https://awesome-repositories.com/f/hardware-iot/integer-arithmetic-units.md) — Computes multiplication and division using internal cores with options for area optimization or single-cycle speed. ([source](https://github.com/YosysHQ/picorv32/blob/main/README.md))
- [Memory Bus Interfaces](https://awesome-repositories.com/f/hardware-iot/integration-performance/hardware-interfacing-integration/hardware-interfacing/memory-bus-interfaces.md) — Implements a standard valid-ready interface for synchronized instruction fetches and data transfers between the core and memory. ([source](https://github.com/YosysHQ/picorv32#readme))
- [Parameterized Integer Units](https://awesome-repositories.com/f/hardware-iot/parameterized-integer-units.md) — Includes configurable multiplication and division cores to balance execution speed against total logic gate count.
- [Minimal SoC Designs](https://awesome-repositories.com/f/hardware-iot/soc-development-frameworks/minimal-soc-designs.md) — Creates simple system-on-chip designs with integrated memory controllers and UART for hardware control.
- [Handshake Bus Interfaces](https://awesome-repositories.com/f/hardware-iot/standard-bus-interfaces/handshake-bus-interfaces.md) — Manages memory fetches and data transfers using a valid-ready handshake protocol for synchronization.

### Operating Systems & Systems Programming

- [Synthesizable CPU Cores](https://awesome-repositories.com/f/operating-systems-systems-programming/computer-architecture/instruction-execution-models/instruction-level-emulators/synthesizable-cpu-cores.md) — Provides a size-optimized hardware core suitable for physical chip integration to run standard instruction sets. ([source](https://github.com/YosysHQ/picorv32#readme))
- [Interrupt Controllers](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/system-programming-primitives/system-programming/hardware-interfaces/pci-bus-management/interrupt-controllers.md) — Features a built-in controller that manages multiple interrupt inputs, including masking and request handling. ([source](https://github.com/YosysHQ/picorv32/blob/main/README.md))
- [CPU](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/system-programming-primitives/system-programming/hardware-interfaces/pci-bus-management/interrupt-controllers/cpu.md) — Implements a built-in controller that manages hardware request signals and transitions to service routines.

### Data & Databases

- [In-Place Execution from Flash](https://awesome-repositories.com/f/data-databases/data-access-querying/memory-mapped-file-access/flash-memory-access/in-place-execution-from-flash.md) — Allows the processor to execute firmware directly from mapped SPI flash memory without copying to RAM.

### Development Tools & Productivity

- [Firmware Debugging](https://awesome-repositories.com/f/development-tools-productivity/debugging-profiling-testing/debugging-diagnostics/debugging-inspection-tools/debugging-and-inspection-tools/firmware-debugging.md) — Executes code from memory and traces instruction flow to debug embedded software.

### DevOps & Infrastructure

- [Virtual Hardware Simulators](https://awesome-repositories.com/f/devops-infrastructure/virtual-hardware-interfaces/virtual-hardware-simulators.md) — Runs instructions in a virtual environment to verify logic correctness before physical FPGA or ASIC implementation. ([source](https://github.com/YosysHQ/picorv32/blob/main/testbench_ez.v))

### Software Engineering & Architecture

- [Coprocessor Interfaces](https://awesome-repositories.com/f/software-engineering-architecture/modular-extension-architectures/coprocessor-interfaces.md) — Provides a modular interface for integrating external hardware modules to implement custom non-branching instructions.
- [Custom Instruction Extensions](https://awesome-repositories.com/f/software-engineering-architecture/performance-reliability/performance-optimization/computational-efficiency/cpu-optimization-strategies/hardware-instruction-targeting/custom-instruction-extensions.md) — Adds specialized co-processors and custom non-branching instructions to the processor core.
- [ISA Extension Interfaces](https://awesome-repositories.com/f/software-engineering-architecture/performance-reliability/performance-optimization/computational-efficiency/cpu-optimization-strategies/hardware-instruction-targeting/instruction-set-targets/isa-extension-interfaces.md) — Enables the integration of external co-processors via a dedicated interface for specialized non-branching instructions. ([source](https://github.com/YosysHQ/picorv32#readme))

### System Administration & Monitoring

- [Instruction Tracing](https://awesome-repositories.com/f/system-administration-monitoring/execution-logs/instruction-tracing.md) — Streams internal signal transitions and instruction sequences to files for post-simulation debugging.
- [Execution Tracing](https://awesome-repositories.com/f/system-administration-monitoring/monitoring-and-observability/execution-tracing-analysis/execution-tracing.md) — Captures and logs the sequence of executed instructions to files for post-simulation analysis. ([source](https://github.com/YosysHQ/picorv32/blob/main/testbench_wb.v))

### Testing & Quality Assurance

- [Hardware Performance Benchmarking](https://awesome-repositories.com/f/testing-quality-assurance/hardware-performance-benchmarking.md) — Includes testbenches and standard benchmarks to calculate processing speed and verify hardware correctness. ([source](https://github.com/YosysHQ/picorv32/tree/main/dhrystone))
- [Hardware Core Verifications](https://awesome-repositories.com/f/testing-quality-assurance/test-suite-execution/code-correctness-verifications/hardware-core-verifications.md) — Runs testbenches and firmware checks through simulators to ensure the processor core behaves correctly. ([source](https://github.com/YosysHQ/picorv32/blob/main/Makefile))
- [Hardware Logic Models](https://awesome-repositories.com/f/testing-quality-assurance/validation-verification/formal-verification-tools/hardware-logic-models.md) — Generates SMT2 models to allow for the mathematical verification of CPU logic and instruction correctness.
- [Hardware Logic Verification](https://awesome-repositories.com/f/testing-quality-assurance/validation-verification/formal-verification-tools/hardware-logic-verification.md) — Generates SMT2 models to mathematically prove the correctness of the CPU logic using formal solvers.
- [SMT2 Model Generation](https://awesome-repositories.com/f/testing-quality-assurance/validation-verification/formal-verification-tools/smt2-model-generation.md) — Converts hardware descriptions into mathematical formats to verify design correctness using formal logic tools. ([source](https://github.com/YosysHQ/picorv32/blob/main/Makefile))
