HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
YosysHQ
picorv32
Verilog2015–2025
YosysHQ / picorv32 · Archived

picorv32

PicoRV32 - A Size-Optimized RISC-V CPU

26Distinct people
35Mentions
0Explicit recommenders
4.4KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

PicoRV32 - A Size-Optimized RISC-V CPU

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year35 dated mentions

Observed mentions: 2015-09-20 15:36:48 UTC to 2025-10-29 15:40:56 UTC.

02462015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 4 mentions; 2 submissions, 2 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 7 mentions; 0 submissions, 7 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 7 mentions; 2 submissions, 5 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC422
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC707
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC202
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC404
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC202
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC725
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC202
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC101
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC303
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC202

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Development status This project is no longer under active development. Formal verification of the core is possible with the RISC-V Formal Verification Framework. Please direct any questions to the official YosysHQ Discourse. PicoRV32 - A Size-Optimized RISC-V CPU PicoRV32 is a CPU core that implements the RISC-V RV32IMC Instruction Set. It can be configured as RV32E, RV32I, RV32IC, RV32IM, or RV32IMC core, and optionally contains a built-in interrupt controller. Tools (gcc, binutils, etc..) can be obtained from the RISC-V GNU toolchain (see the build instructions below). The examples bundled with PicoRV32 expect various RV32 toolchains to be installed in /opt/riscv32i[m][c]. Many Linux distributions now include the tools for RISC-V (for example Ubuntu 20.04 has gcc-riscv64-unknown-elf). To compile using those set TOOLCHAIN_PREFIX accordingly (eg. make TOOLCHAIN_PREFIX=riscv64-unknown-elf-). PicoRV32 is free and open hardware licensed under the ISC license (a license that is similar in terms to the MIT license or the 2-clause BSD license). Table of Contents Features and Typical Applications Files in this Repository Verilog Module Parameters Cycles per Instruction Performance PicoRV32 Native Memory Interface Pico Co-Processor Interface (PCPI) Custom Instructions for IRQ Handling Building a pure RV32I Toolchain Linking binaries with newlib for PicoRV32 Evaluation: Timing and Utilization on Xilinx 7-Series FPGAs Features and Typical Applications Small (750-2000 LUTs in 7-Series Xilinx Architecture) High fmax (250-450 MHz on 7-Series Xilinx FPGAs) Selectable native memory interface or AXI4-Lite master Optional IRQ support (using a simple custom ISA) Optional Co-Processor Interface This CPU is meant to be used as auxiliary processor in FPGA designs and ASICs. Due to its high fmax it can be integrated in most existing designs without crossing clock domains. When operated on a lower frequency, it will have a lot of timing slack and thus can be added to a design without compromising timing closure. For even smaller size it is possible disable support for registers x16..x31 as well as RDCYCLE[H], RDTIME[H], and RDINSTRET[H] instructions, turning the processor into an RV32E core. Furthermore it is possible to choose between a dual-port and a single-port register file implementation. The former provides better performance while the latter results in a smaller core. Note: In architectures that implement the register file in dedicated memory resources, such as many FPGAs, disabling the 16 upper registers and/or disabling the dual-port register file may not further reduce the core size. The core exists in three variations: picorv32, picorv32_axi and picorv32_wb. The first provides a simple native memory interface, that is easy to use in simple environments. picorv32_axi provides an AXI-4 Lite Master interface that can easily be integrated with existing systems that are already using the AXI standard. picorv32_wb provides a Wishbone master interface. A separate core picorv32_axi_adapter is provided to bridge between the native memory interface and AXI4. This core can be used to create custom cores that include one or more PicoRV32 cores together with local RAM, ROM, and memory-mapped peripherals, communicating with each other using the native interface, and communicating with the outside world via AXI4. The optional IRQ feature can be used to react to events from the outside, implement fault handlers, or catch instructions from a larger ISA and emulate them in software. The optional Pico Co-Processor Interface (PCPI) can be used to implement non-branching instructions in an external coprocessor. Implementations of PCPI cores that implement the M Standard Extension instructions MUL[H[SU|U]] and DIV[U]/REM[U] are included in this package. Files in this Repository README.md You are reading it right now. picorv32.v This Verilog file contains the following Verilog modules: Module Description picorv32 The PicoRV32 CPU picorv32_axi The version of the CPU with AXI4-Lite interface picorv32_axi_adapter Adapter from PicoRV32 Memory Interface to AXI4-Lite picorv32_wb The version of the CPU with Wishbone Master interface picorv32_pcpi_mul A PCPI core that implements the MUL[H[SU|U]] instructions picorv32_pcpi_fast_mul A version of picorv32_pcpi_fast_mul using a single cycle multiplier picorv32_pcpi_div A PCPI core that implements the DIV[U]/REM[U] instructions Simply copy this file into your project. Makefile and testbenches A basic test environment. Run make test to run the standard test bench (testbench.v) in the standard configurations. There are other test benches and configurations. See the test_* make target in the Makefile for details. Run make test_ez to run testbench_ez.v, a very simple test bench that does not require an external firmware .hex file. This can be useful in environments where the RISC-V compiler toolchain is not available. Note: The test bench is using Icarus Verilog. However, Icarus Verilog 0.9.7 (the latest release at the time of writing) has a few bugs that prevent the test bench from running. Upgrade to the latest github master of Icarus Verilog to run the test bench. firmware/ A simple test firmware. This runs the basic tests from tests/, some C code, tests IRQ handling and the multiply PCPI core. All the code in firmware/ is in the public domain. Simply copy whatever you can use. tests/ Simple instruction-level tests from riscv-tests. dhrystone/ Another simple test firmware that runs the Dhrystone benchmark. picosoc/ A simple example SoC using PicoRV32 that can execute code directly from a memory mapped SPI flash. scripts/ Various scripts and examples for different (synthesis) tools and hardware architectures. Verilog Module Parameters The following Verilog module parameters can be used to configure the PicoRV32 core. ENABLE_COUNTERS (default = 1) This parameter enables support for the RDCYCLE[H], RDTIME[H], and RDINSTRET[H] instructions. This instructions wil
Read the full README on GitHub

What Hacker News says

35 sources
> Right now, most devices on the market do not support the C extension This is not true and easily verifiable. The C extension is defacto required, the only cores that don't support it are special purpose soft cores. C extension in the smallest IP available core https://github.com/olofk/serv?tab=readme-ov-file Supports M and C extensions https://github.com/YosysHQ/picorv32 Another sized optimized core with C extension support https://github.com/lowrisc/ibex C extension in the 10 cent microcontroller https://www.wch-ic.com/products/CH32V003.html This one should get your goat, it implements as much as it can using only compressed instructions https://github.com/gsmecher/minimax
In RISC-V support in Android just got a big setback
> It would have been nice if they had tried a quantitative comparison with the Risc-V RV32I It would. If they had a Time Machine. ZPU is over a decade and a half old… Back from from when we called RISC-V just "MIPS" But since you asked. It IS small. The smallest sane RV32 core I can find is PicoRV, which uses 750-2000 LUS[1]. SERV [2] does claim to only need 440 LUTs, but its performance (most instrs take over 32 cycles) makes even ZPU seem speedy... The ZPU uses 442 LUTs[3]. [1] https://github.com/YosysHQ/picorv32 [2] https://github.com/olofk/serv [3] https://opencores.org/projects/zpu
In Zylin ZPU: 32 bit CPU with GCC toolchain
There's a community doing "fpga golf". That is, reducing the number of LUT required to implement a CPU of a given ISA. A basic RV32 CPU is down to 500-700 LUT. https://github.com/YosysHQ/picorv32 https://github.com/olofk/serv A minimal 8051 requires about 300 LUT. https://github.com/MicroCoreLabs/Projects/tree/master/MCL51 Not sure how this translates from an FPGA to a transistor count. But RV32 and 8051 should be within a factor of 2-3.
In Apple to Move a Part of Its Embedded Cores to RISC-V
I'm not aware of anything like this, but I think it would be much more valuable than continuing the proliferation of GUI tools like this one. A GUI forces me to use your tool. A file format allows me to create my own tools and integrate it with any other part of my workflow. This would be especially nice for larger microcontrollers and application processors. There's pcf (physical constraints file) for FPGAs (e.g. https://github.com/cliffordwolf/picorv32/blob/master/picosoc...). There's CMSIS-SVD to describe register maps for peripherals, which is useful, but not exactly what you're describing.
In Show HN: GUI for Configuring Pins on a Microcontroller
If you're looking to start playing around with a RISC-V that fits on a small FPGA, PicoRV32 [1] is a good option. It's written/maintained by Claire Wolf, who also started the yosys and icestorm open source synthesis projects. PicoRV32 is particularly neat because it includes an SoC wrapper [2] that allows you to place other hardware / co-processors / peripherals on the same FPGA and talk to them from the CPU via a memory mapped interface. [1] https://github.com/cliffordwolf/picorv32 [2] https://github.com/cliffordwolf/picorv32/tree/master/picosoc
In Western Digital SweRV RISC-V Core
RISC-V as an ISA is designed to be easy to implement. You can get a simple implementation in 3k lines of Verilog [1]. That being said, there's a huge difference between a toy / simple multi-cycle machine-mode RISC-V core and one with a modern, performent microarchitecture (pipelined, super-scalar, multi-issue, cache coherent across multiple cores, with efficient branch prediction). There's also extra work to implement RISC-V extensions that let you run any 'real' code like Linux (which requires anything from simple ISA extensions to implementing the Privileged Instruction spec which dictates additional things like the MMU and interrupt controller). [1] - https://github.com/cliffordwolf/picorv32/blob/master/picorv3...
In VexRiscv is a quadcore, Linux-capable RISC-V softcore for FPGA
RISC-V is interesting for Lattice ECP5 specifically. I'm working on a project now where I'm using it (I will make a blog or videos about it at some point): - ECP5 is the lowest cost medium size FPGA. Usually I would say that using a soft core is a waste of money vs. an external microcontroller unless you need to save space, but the cost of the added gates (say the next larger FPGA size than what you would need for a design without the soft core) is less than the cost of a microcontroller for the case where you are using ECP5 and you need video (a non-video micro is still cheaper). - Mico32 is Lattice's soft core solution. You can argue about its quality, but the very stupid reason that I prefer RISC-V is that the Mico32 tool chain does not work in Ubuntu (or at least not without a lot of work- it is supposed to work in RedHat). A lot
Read the rest
of other people complain about Mico32 because it will not run Linux, but this is not so much of an issue for my design. - PicoRV32 is designed for high clock speed. This is probably not good for its own performance (multiple cycles per instruction), but it does mean that the RISC-V core is not the limiting factor for the rest of your FPGA design. https://github.com/cliffordwolf/picorv32 - The barrier to entry is low (as long as you already know GCC linker scripts). The problem with NIOS-II and especially Xilinx Microblaze is that the their tools are not simple. There is a payoff for learning their tools, in that a lot of vendor cores become available. But if you don't need the vendor cores, then the non-existent toolchain (there is no system building to learn) for RISC-V is better. An example of this is the following project trellis (a cool open source FPGA toolchain, but that's another story) example design: https://github.com/SymbiFlow/prjtrellis/tree/master/examples...
In Open Source Hardware: The Rise of RISC-V

Showing the 15 most recent of 35 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.