RISC-V相关的开源项目

2023-10-30

和RISC-V相关的有如下一些开源项目: 
工具链
1、riscv-tools - 基本上所有RISC-V相关工具链、仿真器、测试的宏项目,包含以下的项目
  • riscv-gnu-toolchain - GNU工具链
          riscv-gcc - GCC 编译器
          riscv-binutils-gdb - 二进制工具(链接器,汇编器等)、GDB 调试工具
          riscv-glibc - GNU C标准库实现
  • 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
2、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核实现
1、ucb-bar/rocket - ucb-bar最主要的实现可以被配置成各种你像要的样子
2、ucb-bar/zscale - 简单的3级流水线RV32I CPU,目前已经基本停止开发
  • ucb-bar/vscale - 就是把zscale编程verilog让你用,因为你懒得学chisel
3、ucb-bar/riscv-boom - 乱序执行CPU,RV64G CPU
4、ucb-bar/riscv-sodor - 教育用途的各种流水线级数实现,实用意义不大
注意: 以上这些库都需要在rocket-chip这个框架下才能被正确构建和使用。 
 
下面介绍非chisel的RISC-V CPU实现(排名不分先后):
1、pulp-platform/pulpino - Silde - ETHZ 和 University of Bologna合作开发的面向微控制器领域的RISC-V CPU
  • 包含自定义的一些指令集(硬件循环、DSP等)
  • 比较早的支持RVC也就是压缩指令集
  • 对标ARM Cortex-M系列  
 
基于RISC-V的SoC框架
操作系统移植
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RISC-V相关的开源项目 的相关文章

  • 【架构设计】阿里开源架构Cola4.0的项目实践:订单系统

    项目介绍 使用SpringBoot MybaitsPlus Cola 整洁面向对象分层架构 4 0重构订单功能 项目地址 Gitee https gitee com charles ruan smile cola Github https
  • < 开源项目框架:推荐几个开箱即用的开源管理系统 - 让开发不再复杂 >

    文章目录 SCUI Admin 中后台前端解决方案 Vue NetCore 前后端分离的快速发开框架 next admin 适配移动端 pc的后台模板 django vue admin pro 快速开发平台 Admin NET 通用管理平台
  • CH347读写SPI Flash

    前面耽搁了几天 今天终于把CH347 SPI接口调试好了 CH347动态库中SPI接口函数如下 typedef struct SPI CONFIG UCHAR iMode 0 3 SPI Mode0 1 2 3 UCHAR iClock 0
  • 【Espruino】NO.14 温湿度传感器DHT11

    http blog csdn net qwert1213131 article details 35828873 本文属于个人理解 能力有限 纰漏在所难免 还望指正 小鱼有点电
  • Chisel手册之Types

    本文是Chisel手册第二篇Types Types 表示硬件设计的Chisel图包含原始节点和类型节点 Chisel类型系统与底层Scala类型系统分开维护 因此类型节点散布在原始节点之间 以允许Chisel检查并响应Chisel类型 Ch
  • 【模型剪枝】——开源项目总结

    修剪是一种常用的压缩神经网络模型的技术 修剪方法探索模型权重 参数 中的冗余 并尝试删除 修剪冗余和非关键权重 冗余元素从模型中修剪 它们的值归零 我们确保它们不参与反向传播过程 pytorch pruning https github c
  • 如何使用 LLVM/Clang 编译为 RISC-V 目标?

    我想将一个简单的程序 int main return 0 编译到RISC V处理器 LLVM Clang 版本是 9 0 我想用这样的 RISC V 模拟器运行编译后的程序https github com riscv riscv tools
  • RISC-V:PC 绝对值与 PC 相对值

    我是 RISC V 新手 我无法理解何时写入 PC 程序计数器 相对指令以及何时写入 PC 绝对指令 例如 一条指令lui其次是jalr考虑指令PC 绝对 以及一条指令auipc其次是jalr考虑指令相对于PC 据我了解 所有指令都将由 P
  • RISC 架构中小数的直接算术运算

    是否有任何 RISC 架构允许算术运算单独应用于字节 半字和其他数据单元 其大小小于 CPU 通用寄存器的大小 在 Intel x86 IA 32 和 x86 64 称为 EM64T 或 AMD64 处理器中 不仅整个寄存器可用 而且其较小
  • Python - 字典3

    修改字典项 您可以通过引用其键名来更改特定项的值 示例 将 year 更改为 2018 thisdict brand Ford model Mustang year 1964 thisdict year 2018 更新字典 update 方
  • 2024最全java面试题及答案(600道)

    本文分为十九个模块 分别是 包括了 Java面试 Spring JVM MyBatis Redis MySQL 并发编程 微服务 Linux Springboot SpringCloud MQ Kafka 面试专题 如下图所示 共包含 20
  • Swift 响应式编程:简化 KVO 观察与 UI 事件处理 | 开源日报 No.110

    ReactiveX RxSwift Stars 23 8k License MIT RxSwift 是 Reactive Extensions 标准的 Swift 特定实现 它提供了 Observable 接口来表达计算的通用抽象 该项目旨
  • 开源一个超好用的接口Mock工具——Msw-Tools

    作为一名前端开发 是不是总有这样的体验 基础功能逻辑和页面UI开发很快速 本来可以提前完成 但是接口数据联调很费劲 耗时又耗力 有时为了保证进度还不得不加加班 为了摆脱这种痛苦 经过一周的努力 从零开发了一个灵活无依赖 且集成简单的数据接口
  • 各种不同语言分别整理的拿来开箱即用的8个开源免费单点登录(SSO)系统

    各种不同语言分别整理的拿来开箱即用的8个开源免费单点登录 SSO 系统 单点登录 SSO 是一个登录服务层 通过一次登录访问多个应用 使用SSO服务可以提高多系统使用的用户体验和安全性 用户不必记忆多个密码 不必多次登录浪费时间 下面推荐一
  • 一键生成精美电子书:让阅读更加惬意 | 开源日报 No.115

    keyvanakbary learning notes Stars 4 0k License NOASSERTION 这个项目是一个学习笔记的仓库 作者在这里记录了自己阅读书籍 观看讲座 研究文章和喜爱论文时所做的简要总结 主要功能包括提供
  • RISC-V 使用 LUI 和 ADDI 构建 32 位常量

    LUI 加载立即数 用于构建32位常量并使用U型格式 LUI 将 U 立即数放入目标寄存器 rd 的高 20 位 并用零填充最低 12 位 我在手册中找到了这个 但是如果我想将 0xffffffff 移动到寄存器 我需要的所有代码是 LUI
  • 全功能tgbot/Telegram机器人多功能有后台版源码

    全功能tgbot telegram机器人多功能有后台版源码 打包好的可以直接上手 trx兑换 闪兑 关键字监控 群管 usdt监控 余额查询 推广分享 等几乎常见的tg机器人功能都有
  • 变址寻址方式和隐式寻址方式

    索引寻址模式通常用于访问数组 因为数组是连续存储的 我们有一个索引寄存器 它在每次迭代中都会递增 当添加到基地址时 它会给出数组元素地址 我不明白这种寻址模式的实际需要 为什么我们不能通过直接寻址来做到这一点 我们有了基地址 每次访问的时候
  • RISC-V 中的旋转位

    嘿 我对 RISC V 还算陌生 我的练习题之一是 将 0x0000000000000123 的值右移 4 位 预期结果为 0x3000000000000012 即所有十六进制数字向右移动一位 而最右边的一位移动到前面 到目前为止 我了解了
  • 零/符号扩展是无操作的,为什么要为每种大小类型提供指令呢?

    对于 x86 和 x64 编译器生成类似的零 符号扩展 MOVSX 和 MOVZX 扩展本身并不是免费的 但允许处理器执行无序魔法加速 但在 RISC V 上 因此 无符号和有符号 32 位整数之间的转换是无操作 从有符号 32 位整数到有

随机推荐

  • Windows计划任务(手动执行脚本正常,定时执行不生效)

    ps 本公司是一家游戏公司 目前有一台win服务器上面搭建MySQL数据库 现在需要做MySQL数据库的备份然后上传到Linux服务器上 bat 脚本写好以后手动双击测试多遍正常上传备份文件 可每当计划任务去执行的时候往往出错 不执行上传L
  • 系统开发设计基础(二)

    删除
  • 信号的傅里叶分析之傅里叶级数

    1 为什么要进行傅里叶分析 信号分析方法主流方法有 1 时域分析 以冲激信号为基本信号 任意输入信号可分解为一系列冲激信号 2 频域分析 以正弦信号和虚指数信号为基本信号 将任意输入信号分解为一系列不同频率的正弦信号或者虚指数信号之和 独立
  • c语言入门-程序运行的过程

    目录 程序运行的过程 1 编译 预编译 编译 汇编 2 链接 1 段表的合并 2 符号表的合并和重定位 3 运行 预处理 define 宏实现计算 define和typedef define的替换规则 和 将参数插入代码中 带有副作用的宏
  • Qt信号槽connect用法整理

    本文整理了一些当前项目中使用的Qt5 6版本信号 槽connect新旧写法的比较 需要注意的问题 一 connect string based和functor based写法比较 1 1 概述 自Qt 5 0以来 Qt提供了两种C 信号槽c
  • Python读取csv文件

    导入pandas包并设置别名为pd import pandas as pd 读取csv格式文件并把格式设置为DataFrame格式 值1是路径可以用绝对路径 cd盘内读取 也可以用相对路径 此项目内读取 这里用的是相对路径 作用 把乱码格式
  • SpringBoot整合eureka简记

    Eureka是一个服务治理组件 它主要包括服务注册和服务发现 主要用来搭建服务注册中心 Eureka 是一个基于 REST 的服务 用来定位服务 进行中间层服务器的负载均衡和故障转移 Eureka是Netflix 公司开发的 Spring
  • 模拟电路设计(14)---三点式振荡器

    常用三点式振荡器 晶体三极管其增益适中 工作频带宽 体积小巧 实际电路设计中常用来构成简洁可靠的三点式LC振荡器 是各种振荡器的主流电路 其交流等效电路组态见下图 三点式振荡器交流等效电路 上图所示三点式LC振荡器的交流等效电路 与实际原理
  • 半桥LLC谐振变换器及同步整流MATLAB仿真(一)

    在开关电源中 LLC谐振变换器是最常见的DC DC变换器之一 LLC谐振电路早在上世纪80年代就已经提出 到如今仍有广泛的应用 可见其优越性 其优点表现在 1 LLC的开关器件能实现软开关 开关损耗小 2 效率高 功率密度大 LLC按结构的
  • Project窗口

    窗口概述 在此视图中 可访问和管理属于项目的资源 以下 Project窗口也称为Project浏览器 Project浏览器的左侧面板将项目的文件夹结构显示为层级列表 通过单击从列表中选择文件夹时 文件夹内容将显示在右侧面板中 可单击小三角形
  • 第4章 基于RFID的仓储管理系统的实现

    4 1 需求分析 目前 在国内外应用比较广泛的仓储管理系统都采用了条形码或RFID 与条形码识别系统相比 无线射频识别技术具有很多优势 因此研究最多的还是射频识别技术在仓储中的应用 RFID技术的应用可以改善目前仓库管理的现状的不足 根据对
  • 【数学计算】点乘/点积/内积/数量积/叉乘/外积/叉积/向量积

    序言 区分一下这几个概念 1 点乘 点乘 点积 内积 数量积 dot product inner product scalar product a x
  • perl 服务器上建立文件目录,Perl脚本修改过的文件上传到FTP服务器

    Perl脚本修改过的文件上传到FTP服务器 简介 本文假定你是 A familar和 A2 从本地电脑上传文件到远程FTP服务器时 我跑进上传一个文件 其中只有少数实际上改变了很多的问题 所以我决定与那些比较本地文件的时间戳远程文件 理论上
  • java枚举的集中管理

    java枚举的集中管理 一 产品中遇到的实际情况 枚举类泛滥 这个 这个 这个 这个 在 JDK 1 5 之前没有枚举类型 那时候一般用接口常量来替代 而使用 Java 枚举类型 enum 可以更贴近地表示这种常量 但是在项目中 就变成这样
  • C++泛型编程——模板的使用

    一 什么是泛型编程模板 在C 中 泛型编程模板是一种功能强大的工具 可以编写通用的代码 以处理多种不同类型的数据 使用泛型编程模板 可以实现函数模板和类模板 简单来说模板就像是生产汽车一样 同一款车型的所有车子外壳都出自同一模具 值得注意的
  • Vue(7)

    目录 插件 scoped样式 Todo list案例 插件 功能 用于增强Vue 本质 包含install方法的一个对象 install的第一个参数是Vue 第二个以后的参数是插件使用者传递的数据 定义插件 对象 install funct
  • 系统仿真(五):校园时间消耗系统仿真报告

    一 仿真目标 目标系统 每天早上第一节课 学生从宿舍到教室的时间消耗系统 主要研究目标 给出疫情防控常态化场景下的时间开销预估和优化建议 二 已知条件 结合作业一可得表1中不同地点状态下的时间消耗拟合函数 表1 已知拟合时间数据 校园地图如
  • python学习笔记(六)---递归函数

    递归函数 如果一个函数可以在内部自己调用自己 这个函数就是递归函数 举个计算阶乘的栗子n 1 x 2 x 3 x x n 用函数fact n 表示 def fact n if n 1 return 1 return n fact n 1 递
  • Matplotlib绘制图形模板

    文章目录 1 绘制散点图 2 绘制条形图 3 绘制横向条形图 4 并列和罗列条形图 4 1并列条形图 4 2罗列条形图 5 绘制扇形图 1 绘制散点图 添加三月份每天的最高气温 a 11 17 16 11 12 11 12 6 6 7 8
  • RISC-V相关的开源项目

    和RISC V相关的有如下一些开源项目 工具链 1 riscv tools 基本上所有RISC V相关工具链 仿真器 测试的宏项目 包含以下的项目 riscv gnu toolchain GNU工具链 riscv gcc GCC 编译器 r