打印
[FPGA]

几款开源RISC-V处理器

[复制链接]
2935|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaochy1126|  楼主 | 2021-11-28 20:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

1. Rocket,BOOM


很多RISC-V开发者,无论硬件还是软件,首次接触的CPU core就是Rocket。Rocket Chip Generator可以生成包括Rocket core的一整套SoC,各种参数统统可配置。Rocket Chip是用Chisel开发的,初学者(CPU设计开发的数字前端初学者,尤其是只懂Verilog的初学者)要去看Rocket的代码还是会有些吃力的,对初学者不太友好。不过正因为其面世较早,又有Berkeley的纯正血统,粉丝众多,很多paper都是基于Rocket Chip做的,资料也很好找,但似乎没有详细的官方文档。



Rocket chip带MMU,支持操作系统,所以在上面跑Linux是没有问题的。Rocket chip使用Tilelink总线,支持缓存一致性的一款总线。支持Verilator+OpenOCD+GDB仿真。



Rocket是64位CPU core(也是今天介绍的几款处理器中唯一一款64位的),采用经典五级流水,顺序执行,单发射,还支持各种分支预测。BOOM(Berkeley Out-of-Order Machine)基于Rocket,乱序执行,BOOM有还算比较详细的文档。这两个用来学习还是很不错的。而且Rocket还是比较成熟的,基于Rocket core已经有很多ASIC产品了。只是Chisel是道坎,CPU设计还没开始学就跳进Chisel的坑里去了!


Rocket Chip github:https://github.com/chipsalliance/rocket-chip


BOOM github: https://github.com/riscv-boom/riscv-boom


一句话总结:Berkeley纯正血统,但欲学本core,必先入Chisel之坑。


2. Hammingbird E203


蜂鸟处理器是在国内RISC-V社区大名鼎鼎的芯来科技开发的RISC-V MCU系列。E203是其开源的一款单privilege mode,两级流水(不严格说法)的MCU,主打小面积、低功耗。使用Verilog开发。麻雀虽小,五脏俱全,也包括debug module,代码严谨优美,用来学习设计没得说。官方文档不算多,但是市面上可以买到胡振波大牛写的两本书,也算是学习资料丰富了。



开源的E203在github上其实是一个SoC平台。E203使用自定义的类AXI接口,支持debug spec 0.11。唯一的缺憾是没有官方的verilator环境,如果使用verilator的话得自己搭个环境了。像我这种在家用不了商业仿真软件(也不愿意装D版)的硅农,只能用意念仿真了,目前还是看看代码,等有时间的话Port一个verilator仿真环境过去。开源蜂鸟E203支持Icarus Verilog开源仿真工具,这个仿真工具不知道还有没有人维护,就我以前使用而言,几乎只能仿纯verilog,对于很多不可综合的写法也不支持,使用非常受限,就更别提把GDB接入到仿真了。



这里值得是说一下胡振波大牛写的《手把手教你设计CPU——RISC-V处理器篇》,还是很不错的设计入门之作,里面有很多干货,是本让初学者受益良多、让熟手硅农深有共鸣的好书。另一本貌似是嵌入式开发,目前还没有拜读。



github: https://github.com/SI-RISCV/e200_opensource


一句话点评:初学者学习RISC-V处理器设计首选。


3. Ibex


提到开源RISC-V就不能不提Riscy系列了,尤其是zero-riscy,使用很广泛。Ibex是脱胎于zero-riscy的core,支持RV32IMC及一些Z系列指令,由LowRISC维护。Ibex小巧精悍,文档详实,学习资料丰富,支持verilator, 可以使用verilator+openOCD+GDB 仿真时debug。对于我这样的重度Verilator依赖者来说非常友好。



Ibex支持machine mode和user mode两种privilege mode,可以实现比单machine mode更加丰富的功能。Ibex采用system verilog开发,对于传统的IC工程师是个好消息。Ibex现在也支持了指令cache了,提高了performance,但装了cache会让core变得臃肿很多,对于学习cache controller的设计是个好事情。


Ibex使用类TLUL的自定义接口,官方的SoC是PULP。Google的OpenTitan项目也是基于Ibex。相关的设计学习资料算是相当多了。


github: https://github.com/lowRISC/ibex


文档:https://ibex-core.readthedocs.io/en/latest/introduction.html


一句话点评:啥都别说了,这么好的东西还不赶紧盘它?


4. VexRiscv


VexRiscv可配置,可支持RV32IMCA,可配置为经典5级流水。VexRiscv使用SpinalHDL开发,类似Chisel,也是一款基于Scala的硬件建构语言。可配置MMU,所以理论上可以支持操作系统。


classVexRiscv(val config : VexRiscvConfig) extends Component with Pipeline{ type T = VexRiscvimport config._//Define stages def newStage(): Stage = { val s = new Stage; stages += s; s }val decode = newStage()val execute = newStage()val memory = ifGen(config.withMemoryStage) (newStage())val writeBack = ifGen(config.withWriteBackStage) (newStage())//......


VexRiscv有个官方的SoC:Briey,使用AXI接口。和Rocket Chip一样,支持Verilator+OpenOCD+GDB仿真。和Rocketchip一样都是使用scala解释器sbt工具,超占内存,快把我的老爷机拖垮了。



也许是大牛都不爱写文档,VexRiscv文档很少很粗略。


github:https://github.com/SpinalHDL/VexRiscv


一句话点评:佳作,SpinalHDL代表作,需入SpinalHDL的坑。


5. SweRV EH1


SweRV EH1是WD开发的其中一款RISC-V core,支持RV32IMC,双发射,单线程,9级流水,性能应该说是相当不错,28nm可以跑到1GHz。而且还有份详细的文档,不愧是大厂出品。



SweRV是使用Verilog/System Verilog开发,使用AXI接口,对熟悉AMBA且不想去学Chisel及Scala的同学来说是相当友好了。而且支持verilator,必须点赞。值得一提的是SweRV带指令cache,且实现了丰富的cache maintenance自定义指令,非常值得学习。



github: https://github.com/chipsalliance/Cores-SweRV


一句话点评:大厂出品,进阶学习佳作。


6. 无剑


听说平头哥的RISC-V处理器开源我还是很兴奋的,想仔细研究一番,但入手后有些失望。代码是刻意处理过的,注释都被去掉了,代码段的排版也非常不利于阅读,甚至有些代码是接近网表的加扰后的代码,顿时失去了兴趣。平头哥目的应该是推广这套平台,里面包括软硬件系统及SDK,从开源的程度来看,重点应该是软件。当然我是从研究学习硬件部分出发来说的,如果是使用无剑平台,包括仿真、FPGA、软件开发,应该是没有问题的。


github: https://github.com/T-head-Semi/wujian100_open


一句话点评:学习资料缺乏,代码可读性较差,不是一个理想的学习对象。



使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1061

主题

11320

帖子

26

粉丝