标签: rocket-chip

学习凿子 - 了解Rocket Chip代码的高级示例

Berkeley的RISC-V实现称为Rocket Chip,它是用一种名为Chisel的硬件语言编写的.Chisel是面向对象的,我们团队中的人员很难学会如何有效地修改Rocket Chip代码.

我们为Chisel创造了这个学习之旅,这很棒.它来自基础知识,包括Scala的相关部分,最后是一系列来自Sodor和Rocket Chip代码的高级示例,所有这些都是动手练习:

http://learningjourney.intensivate.com

我们已经向社区开放了贡献,但似乎应该有其他好的地方来解释Rocket Chip代码中使用的高级Chisel编码实践.有人有链接吗?

chisel riscv rocket-chip

8
推荐指数
1
解决办法
821
查看次数

如何找到 PLIC 上下文的数量?

我是一名软件开发人员,试图了解 RISC-V 平台级中断控制器 (PLIC) 的配置,该控制器位于 FPGA 中火箭芯片衍生的 SoC 中。如果我的术语有问题,请纠正我。

我正在尝试在热启动后以编程方式配置 PLIC,特别是清除中断挂起位。我读过RISC-V PLIC 规范,其中谈到最多 15872 个上下文。虽然我当然可以迭代所有上下文,每个上下文有 1024 个中断,但我希望更加经济。

在哪里可以找到上下文的实际数量?对于所有火箭芯片设计来说它都是恒定的吗?它是一个可调值吗?应该问 FPGA 同事什么问题?他们使用凿子,我认为这是某种设计语言或工具。

chisel rocket-chip riscv32

8
推荐指数
1
解决办法
279
查看次数

如何在Chisel(regmap)中迭代类似的寄存器定义

我有一些类似的寄存器定义,我想在regmap构造下编写.我的代码目前看起来像这样:

val regs = RegInit(Vec(Seq.fill(5)(0.U(32.W))))

regmap (
...
0x30 -> Seq(RegField(32,regs(0),RegFieldDesc("reg0",""),
0x34 -> Seq(RegField(32,regs(1),RegFieldDesc("reg1",""),
0x38 -> Seq(RegField(32,regs(2),RegFieldDesc("reg2",""),
0x3C -> Seq(RegField(32,regs(3),RegFieldDesc("reg3",""),
0x40 -> Seq(RegField(32,regs(4),RegFieldDesc("reg4",""),
...

) 
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有办法使用Scala迭代器之一以更简洁的方式编写上述内容?我的另一个要求是我仍然需要能够在这个迭代器之前和之后添加寄存器(3个点线).

我相信,使用迭代器可以很好地防止复制/粘贴错误并且看起来更好.
在此先感谢您的帮助.

chisel rocket-chip

5
推荐指数
1
解决办法
83
查看次数

firrtl.Driver已过时-但是我们应该使用什么呢?

我今天更新了火箭芯片,并注意到FIRRTL现在这样说:

------------------------------------------------------------------------------
Warning: firrtl.Driver is deprecated since 1.2!
Please switch to firrtl.stage.FirrtlStage
------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

好的,很公平,我想我们必须更新传递给FIRRTL的内容:

FIRRTL ?= java -Xmx3G -Xss8M -XX:MaxPermSize=256M $(FIRRTL_PROFILE_SWITCH)  -cp $(FIRRTL_JAR) firrtl.Driver
Run Code Online (Sandbox Code Playgroud)

但是,天真地切换firrtl.Driverfirrtl.stage.FirrtlStage它不起作用:

Error: Main method not found in class firrtl.stage.FirrtlStage, please define the main method as:
   public static void main(String[] args)
Run Code Online (Sandbox Code Playgroud)

为了避免此过时警告,我们应该怎么做?

chisel rocket-chip

5
推荐指数
1
解决办法
109
查看次数

标签 统计

chisel ×4

rocket-chip ×4

riscv ×1

riscv32 ×1