皋陶 发表于 2020-9-8 10:08:21

RISC-V有哪些开源项目?

本帖最后由 皋陶 于 2020-9-8 10:12 编辑

最新的列表请访问 RISC-V资源列表 - CNRV​

和RISC-V相关的有如下一些开源项目:

工具链

[*]riscv-tools - 基本上所有RISC-V相关工具链、仿真器、测试的宏项目,包含以下的项目

[*]riscv-gnu-toolchain - GNU工具链

[*]riscv-gcc - GCC 编译器

[*]riscv-binutils-gdb - 二进制工具(链接器,汇编器等)、GDB 调试工具
[*]riscv-glibc - GNU C标
[*]基于RISC-V的SoC框架
[*]改日再说
[*]操作系统移植
[*]改日再说
[*]其他
[*]改日再说准库实现

[*]riscv-isa-sim - Spike周期精确指令集模拟器

[*]riscv-llvm -LLVM编译器框架

[*]riscv-clang - 基于LLVM框架的C编译器
[*]riscv-opcodes - RISC-V操作码信息和转换脚本

[*]riscv-tests - RISC-V指令集测试用例

[*]riscv-fesvr - 用于实现在上位机和CPU之间通信机制的库

[*]riscv-pk - 提供一个运行RISC-V可执行文件运行的最简的程序运行环境,同时提供一个最简单的bootloader
[*]riscv-qemu - 一个支持RISC-V的CPU和系统模拟器

[*]应该还没完

CPU核开源实现
先讲一下UC Berkeley的发起RISC-V项目的团队所设计的兼容RISC-V指令集的CPU核,对于这个团队我简称ucb-bar。

必须要提的是,为了设计一个新的指令集,需要不断的尝试各种可能的处理器设计组合。

Chisel是UC Berkeley开发的一门“硬件构建语言”。

从功能上讲,chisel可以将你描述的硬件(写的代码)转化为等价的可综合的Verilog HDL代码或时等价的C++仿真模型。

用Verilog你走设计流程变为ASIC或烧录到FPGA上,也可以Simulation。

C++主要用于周期精确的功能级仿真,可以也可以输出波形图,主要优点是在用做仿真的时候比Verilog仿真快10倍,

又能够很方便的和其他语言的库集成。

其他的优点包括chisel支持面向对象,通过OO,可以极大的复用和扩充先有的代码,本质上是提高了可复用性。

还有一点,Chisel其实是基于Scala的一种扩展或者DSL,所以从Scala带来的一个优点就是代码巨简洁无比,连线巨简单。

最后,如果你还是不明白,那你就这么理解,你再用chisel描述硬件的时候,你是在写生成代码的代码(注:“代码”这个词在这里是不妥的用法)。

所以,ucb-bar团队的所有处理器全部是用chisel写的,rocket-chip是RISC-V开发的核心团队开发的基于chisel等一系列工具的Generator,

在这个框架下,你可以方便的开发你想要的RISC-V处理器,同时还提供调试工具、工具链、DRAM仿真模型等等一系列的基础设施。

所以先介绍基于rocket-chip(或者说chisel)的CPU核实现(我都觉得我自己好繁琐。。。)


[*]ucb-bar/rocket - ucb-bar最主要的实现可以被配置成各种你像要的样子
[*]ucb-bar/zscale - 简单的3级流水线RV32I CPU,目前已经基本停止开发(笔者打算花些时间基于这个做些开发和维护)

[*]ucb-bar/vscale - 就是吧zscale编程verilog让你用,因为你懒得学chisel
[*]ucb-bar/riscv-boom - 乱序执行CPU,RV64G CPU
[*]ucb-bar/riscv-sodor - 教育用途的各种流水线级数实现,实用意义不大

注意:以上这些库都需要在rocket-chip这个框架下才能被正确构建和使用。

下面介绍非chisel的RISC-V CPU实现(排名不分先后):


[*]pulp-platform/pulpino - Silde - ETHZ 和 University of Bologna合作开发的面向微控制器领域的RISC-V CPU

[*]包含自定义的一些指令集(硬件循环、DSP等)
[*]比较早的支持RVC也就是压缩指令集
[*]对标ARM Cortex-M系列

页: [1]
查看完整版本: RISC-V有哪些开源项目?