问题标签 [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 回答
1026 浏览

linux-kernel - 在 Rocket Chip 模拟器上启动 Linux 内核

我正在尝试使用DefaultConfig配置在生成的 Rocket Chip 模拟器中启动 Linux 内核。

我正在按照RISCV 工具库 wiki中显示的步骤进行操作,并且我已经能够通过以下方式在 ISA 模拟器上成功构建和启动 Linux内核

  • 编译riscv64-unknown-linux-gcc交叉编译器。
  • 构建 Linux 内核 4.6(在riscv-linux 存储库中找到 RISC-V 风格)
  • 重建bbl引导加载程序,将其指向已构建的vmlinux映像(--with-payload选项)。

但是,当尝试在由默认配置文件生成的 Rocket Chip 模拟器中运行这个相同bbl的引导加载程序时,内核不会启动,但进程会继续旋转,就好像它陷入了无限循环一样。没有给出信息性消息或错误,它只消耗 100% 的 CPU,直到被Ctrl-C击键杀死(在等待相当长的时间之后)。

我相信我生成的 Rocket Chip 模拟器是正确的,因为我能够通过代理内核pk)甚至裸机运行交叉编译的程序而没有任何问题。此外,所有测试和基准测试均通过(make run-asm-testsmake run-bmark-tests)。

我无法找到任何人在芯片仿真器(大多数使用 FPGA)中启动内核的明确文档,此时我怀疑它是否可能。

有没有人能够在模拟器中实现它?我错过了任何步骤吗?任何提示表示赞赏。

0 投票
4 回答
1396 浏览

riscv - 学习凿子——理解火箭芯片代码的高级示例

RISC-V 的伯克利实现称为 Rocket Chip,它是用一种称为 Chisel 的硬件语言编写的。Chisel 是面向对象的,我们团队的人很难学会有效地修改 Rocket Chip 代码。

我们为 Chisel 创建了这个学习之旅,非常棒。它从基础开始,包括 Scala 的相关部分,并以从 Sodor 和 Rocket Chip 代码中获取的一系列高级示例结束,所有这些都带有动手练习:

http://learningjourney.intensivate.com

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

0 投票
1 回答
518 浏览

fpga - 配置火箭芯片

我想在不使用 ROCC(arm 协处理器)的情况下基于火箭芯片构建自己的 SOC。我检查了这个有用的问题:rocket chip on non zynq FPGA 我查找了一些详细的文档,但我只找到了几张描述配置的幻灯片,没有实际的教程。因此,我对下图有三个问题:

火箭芯片

  • 我设法为 tinyConfig 生成了整体 verilog,但是否可以只生成 Rocket Chip、HostIO/AXI 转换器和 MemIO/AXIHP 转换器?如果是的话怎么办?
  • 火箭芯片生成器可以添加调试接口吗?
  • 我在哪里可以更改特定 FPGA 供应商的 RAM 在 Rocket chaip 中使用的 RAM?
0 投票
1 回答
296 浏览

riscv - Rocketchip(riscv)加速器性能评估

我已经使用 Rocc 在 Rocket 芯片生成器上实现了加速器。如何计算加速器的性能并与 C 实现进行比较。我已经编写了 C 实现并将周期计算为“Cycle = End - Begin”。end 和 begin 调用 read_csr(mcycle)。我通过阅读 RISCV-test github 中的 dhrystone.h 来使用它。这是计算周期的正确方法吗?

我正在考虑将这种技术用于加速器和 C 实现。我可以为此目的使用 CSR。

0 投票
1 回答
248 浏览

riscv - 火箭芯片仿真显示意外指令数

以下两个代码片段仅在加载到 x23 寄存器中的值不同,但minstret指令计数(由 Rocket 芯片的 Verilator 模拟报告)有很大不同。这是一个错误,还是我做错了什么?

read_csr()函数来自 RISC-V 前端服务器库 ( https://github.com/riscv/riscv-fesvr/blob/master/fesvr/encoding.h ),其余代码 [syscalls.c, crt. S, test.ld] 类似于 RISC-V 基准测试 ( https://github.com/riscv/riscv-tests/tree/master/benchmarks/common )。

我检查了编译后的二进制文件是否包含完全相同的指令,除了操作数的不同。

0x0fffffff 除以 0xff,重复 1024 次:3260 条指令

0x0fffffff除以0xffff,重复1024次:3083条指令

在这里,3083 条指令似乎是正确的 (1024 * 3 = 3072)。由于minstret计算了退役指令,第一个示例执行了大约 200 条指令似乎很奇怪。无论我运行这两个程序多少次,这些结果总是相同的。

0 投票
0 回答
145 浏览

riscv - 如何监测火箭芯的性能?

在火箭/RocketCore.scala

存在描述缓存未命中、加载或存储的性能计数器。

火箭核心完成运行后如何查看此信息?

你能给我一个如何做到这一点的例子吗?

据我所知,本指南中没有任何内容。

0 投票
1 回答
245 浏览

riscv - 如何为 RISC-V Rocket-Chip 创建 SystemC 代码?

使用 Rocket-Chip 生成器,我可以使用 Verilator 的内置版本创建 Verilog 输出和 C++ 仿真器。

我想使用 Verilator 使用默认配置 Verilog 输出生成 SystemC 代码,但出现错误。

我正在使用简单的命令行;

验证器 -Wall -sc freechips.rocketchip.system.DefaultConfig.v

并看到像这样的错误;

找不到包含模块的文件:AsyncResetReg 这可能是因为没有使用 -I 指定的搜索路径。找不到包含模块的文件:plusarg_reader ...

有没有人这样做或知道我错过了什么?(包括路径?)

谢谢

0 投票
1 回答
248 浏览

riscv - 火箭芯片指令跟踪列

当我make run-asm-tests在rocket-chip的emulator目录中运行时,我在目录中得到了一堆*.out文件emulator/output。这些似乎是指令跟踪,但列没有标记。我想知道这些列中的每一个是什么意思。谢谢!

例如:

0 投票
0 回答
221 浏览

memory - 双端口存储器

我已经设法让 Chisel 使用正确使用 SeqMem() 实例的硬内存宏,但它们仅用于单端口内存。

有没有办法让 Chisel 推断出双端口内存宏?

0 投票
1 回答
374 浏览

linux - 哪个 Linux 实体负责生成非法指令陷阱?

我正在开发一个自定义版本的 Rocket Chip,其中包含一些我希望 Linux 正确处理的额外指令。尽管使用这些指令的裸机程序运行良好,但 Linux 使相同的基准测试因“非法指令”消息而崩溃。

有谁知道 Linux 的哪个软件元素——加载程序、反汇编程序、其他东西——负责检测非法指令?

我的目标是修改那个软件,让 Linux 不再抱怨我的指令。如果有人知道一种更简单的方法来抑制这种错误,那也将非常有用。