问题标签 [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.

0 投票
0 回答
57 浏览

chisel - 如何将verilog blackbox链接到chisel中的rocketchip内存?

我正在尝试将 Verilog 模块附加到 Rocketchip 的内存。更准确地说,我想将内存加密引擎集成为黑盒。我的想法是将我的verilog模块链接到特征CanHaveMasterAXI4MemPort的memAXI4Node和SimAXIMem的io_axi4节点。verilog 模块具有用于 AXI 端口、时钟和复位的 IO。

我的第一次尝试看起来像这样:

SimAXIMem.scala

有没有合适的方法将我的 verilog 模块放在这两个节点之间?我如何将时钟分配给我的黑盒,因为这只能在特征或模块中实现。但我认为,要将黑盒连接到内存,必须在方法内部完成实例化。

杰森

0 投票
2 回答
96 浏览

scala - 如何理解autobundle()和makeios中的翻转?

在 LazyModule.scala 中,函数 AutoBundle() 用 flipped = true 翻转 dangleIn 中的 Data(bundleIn) 以生成 autoIO,而在 Nodes.scala 中,类 sourceNode 中的函数 makeIOs() 翻转 bundleOut 以生成 IO,为什么它们不同?

LazyModule.scala 中的 AutoBundle() 代码:

Nodes.scala 中的 makeIOs() 代码:

0 投票
0 回答
10 浏览

rocket-chip - 为什么“def”用于定义火箭芯片某些部分的常数?

在火箭芯片的某些组件中,def用于定义常量;例如对于 PLIC 的 MMIO 寄存器的地址

我想知道为什么def在这里定义常量,有什么好处?我认为这def通常用于定义方法。

0 投票
1 回答
116 浏览

riscv - LazyModule 和 LazyModuleImp 的区别

LazyModule 和 LazyModuleImp 有什么区别?就像 Rocket-chip/doc 下的外交演示所说:The desired hardware for the module must be written inside LazyModuleImp. 但考虑以下代码:

:=是一个硬件操作,它出现在 LazyModuleImp 的内部和外部,那么应该在 LazyModuleImp 中放置哪些代码?

0 投票
1 回答
23 浏览

riscv - 从零增加 AsIDBits

我想将 Rocket-Chip 中的 AsIDBit 数量从零增加到八,并且想知道如何实现。

瓦片/BaseTile.Scala

https://github.com/chipsalliance/rocket-chip/blob/master/src/main/scala/tile/BaseTile.scala

我想实现一个类似于这里定义的类

子系统/Config.Scala

https://github.com/chipsalliance/rocket-chip/blob/master/src/main/scala/subsystem/Configs.scala

我试着这样做

但得到下面列出的错误

0 投票
0 回答
9 浏览

rocket-chip - 将 CSR 值设置为大于 32 位会添加前导 1

我正在尝试在 CSR 中创建一个新寄存器。到目前为止,我可以成功地从测试程序向它写入值,但是当我尝试写入 32 位或更多位的东西时,火箭芯片会添加前导 1。例如,如果我尝试将其编写0x800000000xffffffff800000000. 我已经追踪了数据路径,并且数据进入 CSR 时已经损坏。任何关于实际情况的指导都会很棒。

下面是我如何实现寄存器。

0 投票
2 回答
150 浏览

scala - 布尔 Scala / Chisel 的选项方法

我试图了解RocketChipAsyncQueue的实现,并且对在布尔数据类型(而不是 Option)上使用 option 方法感到非常困惑。在代码中,我们有一个参数类:

然后当使用上述内容时:

现在,我可以猜到这里的意图是什么,以限制 val safe &narrow 的创建。我的问题是这个选项是在哪里定义的?我查看了布尔值的scala 文档。我不认为选项是布尔类的成员。有人可以解释一下吗?

0 投票
0 回答
196 浏览

riscv - 创建自定义 RISC-V 指令时无法识别的操作码

我已经下载了rocket-chiprepo 和相应的rocket-toolsrepo。当我最初构建一切时,一切都很好。

我为 AES 算法创建了自己的紧密耦合加速器,并希望使用custom-0andcustom-1指令对其进行测试。我已按照riscv-isa-simrepo ( https://github.com/riscv/riscv-isa-sim ) 中的说明模拟新指令并成功重建rocket-tools

我想做一个非常简单的组装测试rocket-tools/riscv-tests/isa/rv64ui/来测试我的新指令,但是当我makeisa文件夹中运行时,我得到了Error: unrecognized opcode所有指令:

在 RISC-V 中实现自定义指令的正确方法是什么?我尝试按照本教程进行操作,但在运行尖峰时出现分段错误:https ://nitish2112.github.io/post/adding-instruction-riscv/

0 投票
1 回答
60 浏览

chisel - 向 regmap() 添加内存

我在火箭芯片上添加了一个设备,它有它的控制和状态寄存器,还有一个内部 ram。为了能够使用软件访问它,我通过以下方式将其添加到 regmap() 中:

现在这可行,但我不确定这是否是最好的方法(我的意思是向 regmap 添加内存)。有人可以建议一种不同/更好的方法吗?

0 投票
1 回答
24 浏览

chisel - 如何使用两个管理器将客户端连接到 IdentityNode?

我试图调用的 PCIe 覆盖将两个从/管理器节点连接到 slaveSide IdentityNode,如下所示:

如何将我的客户端连接到这两个节点?会是这样吗?

如果我希望每个经理都有一个客户怎么办?除了更改叠加放置功能之外,还有其他方法吗?