首页 > 其他分享 >SoC | Rocket SoC 圣地巡游

SoC | Rocket SoC 圣地巡游

时间:2024-04-23 21:23:56浏览次数:28  
标签:SoC Rocket ++ Chisel 编译 new 巡游 Config

最近 Chisel 改用 CIRCT 的 firtool 作为 FIRRTL 的编译后端,不仅生成 Verilog 可读性上升一大截,速度也快上不少[1]。据说新版本 VCS 也支持 Chisel 了。UC Berkey 技能树点得真是猛

来圣地巡游学习一下著名的 RocketChip 项目

环境搭建

本机环境 WSL2 Ubuntu 20.04

按照官方仓库[2]教程安装。注意这里不需要安装 rocket-tools 本体只需要安装 Ubuntu Packages。接着安装 Mill 和 OpenJDK,再根据 build.sc 里寻找对应 firtool 版本 [3] 安装。在编译时 Chisel 会自动安装。

Chisel 6.0.0 版本后会自动管理 firrtl 版本,build.sc 里有俩个版本 3.6.0 和 5.0.0 的 Chisel 调用,很显然 Rocket 核没有那么新。不知道这俩个版本具体怎么交互的,firrtl 只涉及 FIRRTL 到 Verilog 的编译,和 Chisel 仿真应该没关系,我这里选用了对应 chisel 5.0.0 的 1.40.0 版本

安装完进入 rocket-chip 目录,执行 make verilog 就会开始编译了,但是编译很慢(可能编译了一小时?)。RocketChip 现在使用 mill 构建,即使修改了镜像源也无济于事 [4]

顺利运行即可在 out/emulator/freechips.rocketchip.system.TestHarness/freechips.rocketchip.system.DefaultConfig/mfccompiler/compile.dest 下看到编译好的 Verilog 文件啦。

编译 Config

传递 Config 过程详情看 makefile。

Config 选项在 src/main/scala/system/Configs.scala

class BaseConfig extends Config(
  new WithDefaultMemPort ++
  new WithDefaultMMIOPort ++
  new WithDefaultSlavePort ++
  new WithTimebase(BigInt(1000000)) ++ // 1 MHz
  new WithDTS("freechips,rocketchip-unknown", Nil) ++
  new WithNExtTopInterrupts(2) ++
  new BaseSubsystemConfig
)

云里雾里,主要根据修改 SoC 系统而不是改 Core 配置。放着这个坑。。


  1. https://xiangshan-doc.readthedocs.io/zh-cn/latest/tools/compile-and-sim/ ↩︎

  2. https://github.com/chipsalliance/rocket-chip ↩︎

  3. https://www.chisel-lang.org/docs/appendix/versioning ↩︎

  4. https://mill-build.com/mill/Scala_Module_Config.html#_repository_config ↩︎

标签:SoC,Rocket,++,Chisel,编译,new,巡游,Config
From: https://www.cnblogs.com/devil-sx/p/18153765

相关文章

  • fiber使用websocket--多进程版本
    多进程数据是隔离的,也就是说处理不好,不同的用户登录,其实不在一个进程,没办法直接通信解决办法:定义一个全局变量,所有进程公用,要加锁如果是单进程版本其实就跟gin框架那些一样了多线程+channel不存在数据隔离的问题main.gopackagemainimport( "flag" "fmt" "log" "sync"......
  • unix /var/run/docker.sock: connect: permission denied
    由于安全整改,root被ssh_config禁用,故使用普通用户执行脚本,执行脚本过程中,使用普通用户运行docker命令时发现权限不够,报错如下GotpermissiondeniedwhiletryingtoconnecttotheDockerdaemonsocketatunix:///var/run/docker.sock:Gethttp://%2Fvar%2Frun%2Fdocker.soc......
  • 如何基于Django中的WebSockets和异步视图来实现实时通信功能
    本文分享自华为云社区《结合Django中的WebSockets和异步视图实现实时通信功能的完整指南》,作者:柠檬味拥抱。在现代Web应用程序中,实时通信已经成为了必不可少的功能之一。无论是在线聊天、实时数据更新还是实时通知,都需要通过实时通信技术来实现。Django作为一个强大的Web框架,提......
  • ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib
    ERROR2002(HY000):Can'tconnecttolocalMySQLserverthroughsocket'/var/lib/mysql/mysql.sock'(2)=====================================================步骤:以下可用。(1)关闭mysql:servicemysqldstop(2)查看mysql.sock的位置(base)[root@VM-0-2-ce......
  • RocketMQ实践
    RocketMQ的安装下载安装ApacheRocketMQ​这里以在Linux环境为例,介绍RocketMQ安装过程。解压下载的源码包并编译构建二进制可执行文件$mvn-Prelease-all-DskipTests-Dspotbugs.skip=truecleaninstall-U$cddistribution/target/rocketmq-4.9.4/rocketmq-4.9.4启动N......
  • vuex结合websocket使用
    1、创建一个store文件夹,并在其中创建store.js文件,结合vuex:importVuefrom'vue'importVuexfrom'vuex'importcommonfrom"../common/common.js";Vue.use(Vuex)conststore=newVuex.Store({state:{/***是否需要强制登录*/......
  • websocket 压测
    压测背景:项目上线需要知道有多少个用户和导购能同时在线,并且正常使用场景分析:先进行用户端连接服务器,然后导购端在链接服务器,然后开始拉取视频列表,最后接听视频脚本设计:设置三个线程组线程组一,负责用户端链接socket,并且发送请求视频通话请求线程组二,负责导购端链接so......
  • 超低功耗Sub-1G收发芯片DP32RF002 M0内核(G)FSK/OOK 无线收发机的32位SoC芯
    产品概述DP32RF002是深圳市动能世纪科技有限公司研制的基于ARMCortex-MO+内核的超低功耗高性能的、单片集成(G)FSK/OOK无线收发机的32位SoC芯片。工作于200~960MHz范围内,支持灵活可设的数据包格式,支持自动应答和自动重发功能,支持跳频操作,支持FEC功能,同时内部集成了完整的射频......
  • vue中websocket的使用---详解
    一、什么是webscoketWebSockets 是一种先进的技术,它可以在用户的浏览器和服务器之间打开交互式通信会话。使用此API,可以向服务器发送消息并接收事件驱动的响应,而无需通过轮询服务器的方式以获得响应。 WebSockets这种技术中有一个接口名为WebSocket,它是一个用于连接WebSoc......
  • Got socket error trying to find package flutter_lints at https://pub.dev Flutter
    最近想继续玩下Flutter,发现pub.dev居然被封锁了,试了下网上的方案,都不可行,尝试组合了一下,用下面的方案解决了。第一步:找到这个文件D:\flutter\packages\flutter_tools\lib\src\http_host_validator.dart把下面的地址修改为:constStringkPubDev='https://pub-web.flutter-io......