问题标签 [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 投票
1 回答
78 浏览

chisel - 这些 `a.bits.user.amba_prot` 信号是什么?为什么它们只是在我的 HarnessBinder 中有条件地未初始化?

背景:大约一个月前,我开始使用 Chipyard,以便在 VCU118 上使用 RISC-V 内核构建快速原型。Chipyard 是完美的,但需要我加强并学习 Chisel 和 Rocket-chip 工具,以将互连扩展到我的设计。

第一个连接的硬件是赛灵思提供的 PCIe 到 AXI 桥接 IP,称为 XDMA。fpga-shells已经为这个 IP 提供了包装器、外壳和覆盖层,因此通过对 Chipyard 系统、HarnessBinders 和 IOBinders 的一些研究,我设法将它连接起来。叠加层是这样放置的:

有两个从站,但我只展示一个的 IOBinders 和 HarnessBinders。我假设我的另一个 Port mixin 运行正常,因为它与CanHaveMasterTLMMIO端口完全相同,但具有单独的键和不同的地址范围。我意识到这效率低下,但比创建外部总线更容易。这是 IOBinder,它利用CanHaveMasterTLMMIOPort将主 MMIO 端口引入系统总线。

我检索并连接 TestHarness 中的从节点,如下所示:

最后,我将节点连接到线束绑定器。在这一步中,我遵循了在 Chipyard 中连接 DDR 的方式。

我添加了pcieClientBundle <> DontCare以抑制这些未驱动的信号。这个问题只影响驱动到两个从机的信号。

信号如:

a.bits.user.amba_prot.fetch

a.bits.user.amba_prot.secure

a.bits.user.amba_prot.modifiable

a.bits.user.amba_prot.privileged

在两根电线中都没有被驱动(导致$RefNotInitializedExceptionFIRRTL 通过)。我知道这些来自,TLToAXI4但奇怪的是,只有当我将另一个外围设备连接到总线时,它们才会被驱动。该外设不会离开 ChipTop。它有三个主 AXI 总线连接到系统,如下所示:

外围设备的 AXI Lite 从站是我怀疑问题所在。它的节点声明如下:

它连接到系统总线使用toSlave

当我通过设置 myPeripheral 的密钥将这个 mixin 外围设备包含在我的配置中时,我收到关于两个 HarnessBinders 客户端捆绑 [ ]a.bits.user.amba_prot都没有驱动信号的错误。val pcieClientBundle = Wire(new HeterogeneousBag(bundles.map(_.cloneType)))当我只使用 myPeripheral 或 XDMA 之一时,它就$RefNotInitializedException消失了。

这是我的配置。我试过WithMyPeripheral四处走动无济于事。

我希望我的问题清晰而有趣。什么是a.user.amba_prot信号,为什么当我连接 XDMA 和外围设备时它们没有被驱动?为什么我可以声明其中之一myPeripheralXDMA,但是,当我连接两者时,这些信号没有驱动程序?我意识到这是一个困难的问题,在一个已经很少被查看的标签中有很多活动部件。如果您花时间阅读本文并提出建议,我们将非常感谢您的善意和专业知识。


编辑:我认为问题可能是 Test Harness 的外交区域和 ChipTop 的外交区域之间的参数协商失败。这是 XDMA 中的控制节点。

这是系统看到的端口。

param.beatBytes当前设置为 8 ( site(MemoryBusKey).beatBytes)。但控制配置从节点为4。

0 投票
0 回答
22 浏览

rocket-chip - 如何使用 hex 文件而不是 efls 进行模拟?

有没有办法使用二进制十六进制文件而不是精灵文件向火箭芯片提供输入?例如,Chipyard 有一个名为Fast memory loading的选项,它允许使用 hex 文件作为输入。

0 投票
0 回答
57 浏览

riscv - 如何在火箭芯片模拟器中禁用调试中断

我正在尝试使用 github 存储库中给出的指令在火箭芯片模拟器中执行一组程序。即使对于小型 riscv 测试(ISA 测试),我也注意到跟踪中还有其他说明。许多这些附加指令是在跳转到我尝试运行的实际程序之前执行的。

这个这个我知道这些是由于调试中断不断检查执行是否结束。

有谁知道如何禁用这些中断,以便我可以获得干净的指令跟踪? 另外,我有一个更大的程序,它可以用 Spike 很好地执行,但在火箭芯片仿真器中永远不会结束(一段时间后继续循环调试序列)。

我使用的是默认的火箭芯片配置,没有任何附加功能。我正在使用截至 2021 年 9 月 18 日的最新火箭芯片提交。

下面是我用来模拟 ISA 测试的命令:

我得到的调试序列的一部分:

0 投票
0 回答
48 浏览

multithreading - 为什么添加更多内核来模拟多线程程序会增加 CPI?

您好,我正在使用带有 Rocket Tools 的 Rocket Chip 存储库,并且在对不同的芯片配置运行一些测试时,我发现了这种违反直觉的行为。我有一个默认的 1 核芯片,还有一个 4 核的默认芯片。当我运行多线程测试时,我始终使用后者获得更高的 CPI。

增加要处理的数据大小以减少由于线程调用而导致的开销时间百分比不会改变结果。

模拟时的详细控制台文本显示所有四个核心都处于活动状态,因此它不仅仅是一个核心在执行。

有人可以解释为什么我会得到这个结果吗?

谢谢。


编辑:

默认值为:

4个核心是:

基本配置:

0 投票
0 回答
23 浏览

chisel - 对于 AXI4 用户 Yanker 断言,“Q 必须比响应更快地准备好”是什么意思?

我正在尝试执行涉及从 AXI 从站获取 AXI 主站的 DMA。为简单起见,我选择通过 TL 前端总线和系统总线而不是直接相互连接该系统,因为其他主机可能需要访问 AXI 从机。我正在使用 Rocket Chip 的默认 MMIO 端口。我已经使用以下 MasterPortParams 调用了它。

这是MMIO端口供参考。

这是试图发出写入的主节点。

它开始发出写入,但随后我遇到断言失败 assert (!out.b.valid || b_valid) // Q must be ready faster than the response

我试图理解这个断言的含义。它来自 UserYanker。这是在上下文中

b_bits 从队列中取出,在设置 b 通道位之前,我们检查这个断言。我仍然不太确定这意味着什么。我最好的猜测是在 UserYanker 的队列中有空间之前 b.valid 会变高吗?这是否意味着我需要更大的队列?如果是这种情况,什么参数会增加 UserYanker 的队列大小?会是maxFlight吗?这是从 Tilelink 到 axi4 的某种协议转换问题吗?我对两者的细节都不熟悉,但在这种情况下可能应该跳过到 Tilelink 的转换?

0 投票
0 回答
12 浏览

chisel - Rocket-chip RegisterRouter:设备参数中的`compat`有什么作用?

在 Rocket-chip 中,有一个 RegisterRouter 类可以设置简单的设备compat。这是一个字符串序列。是我如何使用它Seq("sifive","uart0")的一个例子。UART.scala我认为它指的是“兼容性”,并且在 Linux 如何读取设备树方面发挥了一些作用?设置此参数时我应该遵循任何特定格式吗?像Seq("Company name", "device")什么?

代码来自RegisterRouter.scala

示例使用UART.scala

0 投票
1 回答
26 浏览

scala - 在凿子中,如何生成具有不同参数的伺服模块?

我有一个monit具有参数的模块threshold,然后我想在具有不同阈值的包装器中生成 serval(eg8) 模块监控。但是当我使用

要创建 8 个模块监控,它们都有相同的阈值,我如何提供不同的阈值参数?

0 投票
0 回答
30 浏览

chisel - Bundle 类中的 chisel Vec() 不能在 Module 类中实现

我使用的凿子版本是 3.2.2。当我尝试在 Bundle 类中创建成员 Vec 时,代码就像,

然后我实现这个Bundle类并将它传递给一个Module类的IO,代码就像,

然后我得到错误说:

但是我在火箭代码的 Debug.scala 中看到了 Vec 的相同用法。由于火箭使用的是凿子 3.4.3,这个错误是否出现在旧凿子版本中,而不是凿子 3.4.3 中?

0 投票
0 回答
7 浏览

scala - 如何在 Rocket 芯片中生成 AHB 内存端口

我正在尝试实现 Rocket 芯片 SoC 设计;SoC 设计将默认生成一个 AXI 内存端口。但是我想使用 AHB 内存端口,而 Rocket 芯片没有任何配置。有人已经这样做了吗?

谢谢

0 投票
1 回答
56 浏览

fpga - 使用 Chisel 开发通用 AXI4 外设

我想用 Chisel 开发一个通用的 AXI4 外设。我可以为此目的使用 Rocket-Chip 的 AMBA 库吗?我只能在下面的链接中找到有关此主题的文档;

MMIO-外设

但是,本文档中的示例旨在与 Rocket-Chip 一起使用。我想开发一个独立的 AXI4 外设。