问题标签 [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 - 如何将verilog blackbox链接到chisel中的rocketchip内存?
我正在尝试将 Verilog 模块附加到 Rocketchip 的内存。更准确地说,我想将内存加密引擎集成为黑盒。我的想法是将我的verilog模块链接到特征CanHaveMasterAXI4MemPort的memAXI4Node和SimAXIMem的io_axi4节点。verilog 模块具有用于 AXI 端口、时钟和复位的 IO。
我的第一次尝试看起来像这样:
SimAXIMem.scala
有没有合适的方法将我的 verilog 模块放在这两个节点之间?我如何将时钟分配给我的黑盒,因为这只能在特征或模块中实现。但我认为,要将黑盒连接到内存,必须在方法内部完成实例化。
杰森
scala - 如何理解autobundle()和makeios中的翻转?
在 LazyModule.scala 中,函数 AutoBundle() 用 flipped = true 翻转 dangleIn 中的 Data(bundleIn) 以生成 autoIO,而在 Nodes.scala 中,类 sourceNode 中的函数 makeIOs() 翻转 bundleOut 以生成 IO,为什么它们不同?
LazyModule.scala 中的 AutoBundle() 代码:
Nodes.scala 中的 makeIOs() 代码:
rocket-chip - 为什么“def”用于定义火箭芯片某些部分的常数?
在火箭芯片的某些组件中,def
用于定义常量;例如对于 PLIC 的 MMIO 寄存器的地址
我想知道为什么def
在这里定义常量,有什么好处?我认为这def
通常用于定义方法。
riscv - LazyModule 和 LazyModuleImp 的区别
LazyModule 和 LazyModuleImp 有什么区别?就像 Rocket-chip/doc 下的外交演示所说:The desired hardware for the module must be written inside LazyModuleImp.
但考虑以下代码:
这:=
是一个硬件操作,它出现在 LazyModuleImp 的内部和外部,那么应该在 LazyModuleImp 中放置哪些代码?
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
我试着这样做
但得到下面列出的错误
rocket-chip - 将 CSR 值设置为大于 32 位会添加前导 1
我正在尝试在 CSR 中创建一个新寄存器。到目前为止,我可以成功地从测试程序向它写入值,但是当我尝试写入 32 位或更多位的东西时,火箭芯片会添加前导 1。例如,如果我尝试将其编写0x80000000
为0xffffffff800000000
. 我已经追踪了数据路径,并且数据进入 CSR 时已经损坏。任何关于实际情况的指导都会很棒。
下面是我如何实现寄存器。
scala - 布尔 Scala / Chisel 的选项方法
我试图了解RocketChip中AsyncQueue的实现,并且对在布尔数据类型(而不是 Option)上使用 option 方法感到非常困惑。在代码中,我们有一个参数类:
然后当使用上述内容时:
现在,我可以猜到这里的意图是什么,以限制 val safe &narrow 的创建。我的问题是这个选项是在哪里定义的?我查看了布尔值的scala 文档。我不认为选项是布尔类的成员。有人可以解释一下吗?
riscv - 创建自定义 RISC-V 指令时无法识别的操作码
我已经下载了rocket-chip
repo 和相应的rocket-tools
repo。当我最初构建一切时,一切都很好。
我为 AES 算法创建了自己的紧密耦合加速器,并希望使用custom-0
andcustom-1
指令对其进行测试。我已按照riscv-isa-sim
repo ( https://github.com/riscv/riscv-isa-sim ) 中的说明模拟新指令并成功重建rocket-tools
。
我想做一个非常简单的组装测试rocket-tools/riscv-tests/isa/rv64ui/
来测试我的新指令,但是当我make
在isa
文件夹中运行时,我得到了Error: unrecognized opcode
所有指令:
在 RISC-V 中实现自定义指令的正确方法是什么?我尝试按照本教程进行操作,但在运行尖峰时出现分段错误:https ://nitish2112.github.io/post/adding-instruction-riscv/
chisel - 向 regmap() 添加内存
我在火箭芯片上添加了一个设备,它有它的控制和状态寄存器,还有一个内部 ram。为了能够使用软件访问它,我通过以下方式将其添加到 regmap() 中:
现在这可行,但我不确定这是否是最好的方法(我的意思是向 regmap 添加内存)。有人可以建议一种不同/更好的方法吗?
chisel - 如何使用两个管理器将客户端连接到 IdentityNode?
我试图调用的 PCIe 覆盖将两个从/管理器节点连接到 slaveSide IdentityNode,如下所示:
如何将我的客户端连接到这两个节点?会是这样吗?
如果我希望每个经理都有一个客户怎么办?除了更改叠加放置功能之外,还有其他方法吗?