问题标签 [rocket-chip]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
chisel - 创建火箭芯片配置时,(site, here, up) 参数是什么意思?
当创建一个新的“配置”时,我们定义了一个函数,它接受三个“视图”(站点、此处、向上)作为参数。这三个视图的含义是什么?
chisel - 如何从火箭芯片运行单个单元测试?
具体来说,我想从 rocket-chip/src/main/scala/amba/axi4/Xbar.scala 运行 AXI4XbarTest。看起来这个测试应该由回归测试运行,但是如果我进入回归目录并运行
我以错误结束:
但实际上,我不想运行回归测试,我只想运行一个单元测试,而且我在从 Makefile 中提取如何做到这一点时遇到了麻烦。
riscv - Rocketcore中的“wxd”是什么?
在火箭核心旁路逻辑
ex_ctrl.wxd和mem_ctrl.wxd代表什么?
scala - 解决大型 Chisel 文件触发的 JVM 代码大小限制的任何方法
只是说您正在为芯片中的某些基础设施自动生成一些 Chisel 代码。单个文件实例化大量内存映射寄存器,然后是 IO 分配。
然后假设有一天你添加了一个额外的寄存器,JVM 就因为 JVM 中的任意 64k 方法限制大小而崩溃并且不想再构建它:
HasRegsModuleContents 内部是一堆寄存器的声明,然后是一个大的 regmap 语句,其中包含芯片的一堆寄存器声明。之后是模块的 io 端口的分配或来自模块的 io 端口的分配。
这对我们来说效果很好,但现在似乎被最大化了,这很烦人。
有没有人遇到过这个?将其分解为多个寄存器块(以及更多硬件,现在在 pbus 上有多个总线接口)将是可行的,因此如果有人知道解决方法,将不胜感激。
architecture - 暂存器在 Rocketcore icache 中是如何工作的?
我对火箭核心中 icache 中暂存器的作用感到困惑。谁能帮忙解释一下?
scala - 从 System.scala 更改 RocketSubsystemModuleImp 中的时钟
我正在尝试更改系统中每个 Rocket 瓷砖的时钟和重置。
目前我正在尝试这样做。在 Platform.scala 中,我在 PlatformIO 中声明了一些输入(其中 $HARTS 是我们的 harts 数量):
在 System.scala 我有:
在 Platform.scala 我有这个:
SystemModule ... extends RocketSubsystemModuleImp(_outer)
现在棘手的一点是家伙和RocketSubsystemModuleImp
班级之间的互动。
在RocketSubsystemModuleImp
我们最初有这个:
一切都好 - 我选择这一点来覆盖时钟和重置,因为它是分层(在图块边缘)和代码中的一个很好的点,时钟和重置分配准备好被更改。
但是,到目前为止,我一直无法进行任何工作。以下是我尝试过的各种事情以及我得到的错误:
尝试 1
在里面我只是尝试驱动时钟和电线SystemModule
:System.scala
丑陋之类的,但这是第一次尝试。
我显然还注释掉了以下中的电线分配RocketSubsystemModuleImp
:
这是编译的,但在详细说明中出现了这个错误:
尝试 2
在 中声明一些中间变量class RocketSubsystemModuleImp
:
然后在SystemModule
:
然而,这也引起了工具的同样反对:
尝试 3
然后我没有尝试在 ModuleImp 中覆盖它,而是尝试像这样驱动它System.scala
:
并在...中注释掉wire.clock
和wire.reset
分配RocketSubsystemModuleImp
...但是firrtl然后吐槽说我的方向错了?
嗯?我会认为 Input -> Input -> Input 可以吗?
现在我被困住了。
在不修改火箭芯片凿子的情况下,最简洁、最干净的方法是什么?
谢谢!
chisel - 如何在 Chisel (regmap) 中遍历类似的寄存器定义
我有一些类似的寄存器定义,我想写在 regmap 构造下。我的代码目前如下所示:
我的问题是,有没有办法使用 Scala 迭代器以更简洁的方式编写上述内容?我的另一个要求是我仍然需要能够在此迭代器之前和之后添加寄存器(3 点线)。
我相信,使用迭代器可以很好地防止复制/粘贴错误并且看起来更好。
提前感谢您的帮助。
riscv - 与最新的 Rocket 芯片生成器存储库一起使用 fpga-zynq 存储库(已弃用)
fpga-zynq repo ( https://github.com/ucb-bar/fpga-zynq ) 有一些 git 子模块。其中之一是 Rocket-chip 子模块,但是 Rocket-chip 的那个 repo 已经过时了,所以我尝试用最新的 repo 编译 Rocket。当我这样做时,我遇到了一个问题,如下图所示:
[错误] (run-main-0) java.lang.NoClassDefFoundError: firrtl/util/BackendCompilationUtilities$class
有人有解决方案吗?
rocket-chip - 如何学习 Rocket-chip 中 DefaultConfig 的顶层设计?
我是火箭芯片生成器的新手,我想在扩展自己的顶层设计之前学习默认 Rocket Chip 实例(由 DefaultConfig 定义的实例)的顶层设计。例如,它有多少块瓷砖?每个瓦片中有哪些核心?
我该如何开始?阅读中的代码rocket-chip\src\main\scala
?或者是否有任何文档提供有关 DefaultConfig 的 Rocket Chip 实例的一些信息?
riscv - 安装火箭芯片发生器
我一直在尝试安装火箭芯片生成器。
这就是我所做的
和 github 的 README 说我应该安装 riscv-tools
所以,我创建了 /home/fulladder/riscv-tools
并尝试安装穗,ISA模拟器
我打了
但我无法理解下一条指令的含义
你能告诉我接下来我要做什么吗
而且,我正在尝试学习 Rocket 芯片生成器和 RISC-V
你能推荐一些书籍或网站来学习这两部分吗