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

rocket-chip - 使用 APB 的配置无法详细说明

我在 Configs.scala 中创建了以下配置:

类 APBConfig 扩展配置(新 WithDebugAPB ++ 新 TinyConfig)

我尝试使用以下命令构建它:

/rocket/rocket-chip/vsim$ make CONFIG=freechips.rocketchip.system.APBConfig

并得到以下错误:

作为参考,使用 WithJtagDTMSystem 代替 WithDebugAPB 有效。

任何想法可能是什么问题?

0 投票
1 回答
55 浏览

riscv - 构建VCS模拟器后如何使verilog为CAD工具做好准备

我已经使用一些配置(默认、DualCoreConfig、RoCCExampleConfig 等)成功构建了 VCS 模拟器,并在 vism/generated-src 下获取了所需文件现在如何在 CAD 工具中使用/准备这个文件(概要)

我是否需要任何处理来编译 Verilog 文件以在 CAD 工具中运行,或者我该怎么做?

谢谢

0 投票
1 回答
117 浏览

chisel - 使用外交时的 IP 块生成/测试。可以给虚拟节点吗?

我一直在研究利用外交的火箭芯片,我对外交如何运作的整体结构有一个不错的掌握。(我不完全理解它,但足以自己创建一些示例)。我想开发一些 IP,其主要目标是regmap通过使用*RegisterRouter.

如果我使用/修改 Rocket-chip 中的 RegisterNodeExamples 之一,我会得到以下信息:

我目前正在使用 APB,因为我非常熟悉 AMBA 协议,并且它具有diplomacy包下最小的代码库。我可以这样做,以便以后使用 AMBA 或 TL 协议。

我的问题

有没有办法仅MyDeviceController作为独立组件生成verilog?

我无法弄清楚是否存在。显然,如果我只是尝试实例化,我将收到未连接MyDeviceController的内部参数的错误。node我不确定您是否可以提供“虚拟”节点连接?或者,如果有一些方法可以处理。

为什么我想这样做

最好在没有完整 SoC 的情况下在其自己的测试环境中独立测试 IP。

我当前的解决方法/解决方案

为了解决这个问题,我基本上创建了一个“包装器”,它创建APBMasterNode并连接到APBRegisterNodein MyDeviceController

一个问题是我必须为每个 APB 信号创建一些控件。如果我不这样做,Chisel/FIRRTL 编译器/生成器将不会为MyDeviceController. 这就是您在上面看到的myreg用于执行一些基本 APB 事务的计数器。

包装器如下所示:

在此处输入图像描述

我可以将此包装器/主控器创建为典型的测试组件,然后在我的 testenv 中将MyDeviceControllerRTL 实例化,但是我想知道是否还有其他解决方案。外交似乎是相当全面的(我理解为什么),但正在寻找有关如何为外交基础设施流程处理 IP 级别开发的建议。

谢谢

0 投票
0 回答
63 浏览

chisel - 如何在凿子中同步 2 个时钟域之间的包

我正在尝试在不同时钟域的 2 个模块之间同步一束信号。我可以通过在它们之间手动实例化 AsyncQueue 来做到这一点,并且还可以为每一侧连接时钟和重置。似乎有一种似乎不太可行的方法来做到这一点,AsyncBundle我需要一些指导方针来理解如何做到这一点。在源端(在 clkA)我有:

val ioA = IO(Decoupled(UInt(32.W))

在接收器侧(在 clkB)我有:

val ioB = IO(Decoupled(UInt(32.W).flip)

所以做这样的事情是有道理的(我不确定下面的代码是否正确):

以上有意义吗?我也注意到FromAsyncBundle创建一个DecoupledIO它会替换我在捆绑包中定义的那个还是只是为了交叉?如果它确实取代了我如何驱动它,例如从某些逻辑推送数据和有效。过境点两边的时钟会怎样?

0 投票
2 回答
105 浏览

chisel - 检索 RegInit 的重置值

RegInit有没有办法通过探测产生的类型的成员来获取 a 的重置值?我可以看到 RegInit 将返回类型(例如UInt)。例如,我将有一个寄存器,我想通过regmap

.init不是可访问的成员,但在此处显示以暗示它是我正在寻找的。

有没有办法做到这一点,以便在任何时候RegFieldDesc使用重置描述都可以匹配硬件而不必保留另一个变量?

一种解决方法/解决方案是3.U在我的示例val中根据任何参数进行更改并简单地传递它,但不确定是否还有其他可以使用的东西。

0 投票
1 回答
52 浏览

chisel - 扩展数据类型或添加信息的方式

似乎DataChisel 中的大多数/所有类型都是密封类,不允许用户从它们扩展。是否可以添加有关某些用户定义字段的信息或将来添加支持?

我认为在某些情况下,获取更多信息可能会有所帮助:

  • 端口描述可能用于文档

  • 电压电平/偏置

    • 如果您正在做一些芯片顶级连接,您可能必须进行某些连接
    • 很多时候,信号上都会放置一个set_dont_touch(一个 SDC,不要与 Chisel 混淆dontTouch),因此可以添加这些用于自动 SDC 约束。
  • 建模目的

    • Chisel 显然不处理行为建模,但有时会使用 Verilog/SVreal进行建模。这可用于打印出这些信号用于任何后期处理的位置。

我不希望 Chisel 处理所有实际案例(例如制作文档或处理连接),但如果可以添加/扩展这些成员,用户可以在构建期间和/或在详细说明额外流程之后检查这些.

谢谢

0 投票
1 回答
77 浏览

chisel - 访问 regmap RegFields

我正在尝试找到一种干净的方法来访问regmap用于*RegisterNode创建文档和测试文件的方法。TLRegisterNode具有通过 some 生成 json的方法Annotations。这些是在regmap方法中通过将它们添加到ElaborationArtefacts对象来完成的。其他协议似乎没有这些注释。

无论如何要在详细说明后或期间迭代“ regmap”注册字段?

我不能只访问 regmap,因为它不是真正的 val/var,因为它是一种方法。我不太清楚这些信息存储在哪里。我真的不相信它实际上是在“存储”任何信息,因为它只是创建硬件以将指定的逻辑附加到基于 RegisterNode 的逻辑。

JSON 输出实际上对我来说很好,因为我可以编写一个后处理脚本来将 JSON 转换为我需要的格式,但我想知道我是否可以访问这些信息,或者我是否可以在最后添加一个自定义函数调用。我无法扩展case class *RegisterNode,但我不确定是否可以添加自定义函数以在regmap方法结束时运行。

这是我快速拼凑的东西:

然后,用户可以创建一个自定义函数来运行并将其传递给 regmap 或 RegisterRouter

这只是我的一个简单示例。我相信,如果这样的事情是可能的,那会更好的是有一个Seq可以添加到在方法RegisterNode结束时运行的函数regmap,类似于TLRegisterNode当前的工作方式。因此,用户可以添加任意号码,而您仍然可以使用该regmap呼叫。

背景(不是问题的直接部分):

我有一个多年来构建的统一注册脚本,用于描述特定 IP 的注册。它的工作方式与 RegField/node.regmap 非常相似,只是它显然不了解外交等。它将生成 Verilog,以及用于 DV 的各种文件(用于简单 Verilog 模拟的基本定义和更复杂uvm_reg_block的定义,还具有描述子系统直至 SoC 级别的多个 IP 的能力)。它还将为 SW 和 Sphinx reStructuredText 打印出 C 头文件以用于文档。

外交实际上解决了我一直在处理的主要问题之一,所以我显然试图将我的大部分新设计推向 Chisel/Diplo。

0 投票
1 回答
217 浏览

riscv - 如何在火箭芯片生成器中创建内存,合成后将映射为 FPGA 中的块 ram?

我尝试使用 Mem(1024,UInt(width=xLen)); 但是在Xilinx vivado中合成生成的verilog文件后,内存映射为分布式ram。理解和编辑生成的 RTL 文件真的很难。是否有任何明确的方法来定义可以推断为块 ram 的内存。?

感谢和问候,

0 投票
0 回答
74 浏览

rocket-chip - 构建火箭芯片工具时“bitbang_swd”的多重定义

我正在尝试根据此处的说明构建火箭芯片工具:https ://github.com/chipsalliance/rocket-tools/blob/master/README.md

我面临以下错误:

我不明白同一个包含文件如何被包含两次。

感谢任何克服此问题的支持。

0 投票
1 回答
42 浏览

git - 在 Rocket-chip 的快速指令期间 Git 卡住了

当我在rocket-chip中尝试快速指令时,它卡住了。

之后git submodule update --init --recursive,没有更多的响应,只显示:

这是一个错误吗?或者我应该如何快速入门?

谢谢。

JL