gpt4 book ai didi

chisel - 我可以在 Chisel 开始设计硬件之前在软件中计算常量吗?

转载 作者:行者123 更新时间:2023-12-04 03:31:45 26 4
gpt4 key购买 nike

我是 Chisel 的新手,我想知道是否可以在 Chisel 开始设计任何电路之前在软件中计算常量。例如,我有一个带有一个参数的模块,myParameter,但是我想从这个参数中导出更多变量(constant1constant2) 稍后将用于初始化寄存器。

class MyModule(myParameter: Int) extends Module {
val io = IO(new Bundle{
val in = Input(SInt(8.W))
val out = Output(SInt(8.W))
})

val constant1 = 2 * myParameter
val constant2 = 17 * myParameter

val register1 = RegInit((constant1).U(8.W))
val register2 = RegInit((constant2).U(8.W))
//...
//...
}

有没有办法配置 Chisel 的功能,以便 MyModule(2) 的实例将首先计算软件中的所有 Scala val:constant1 = 2 * 2 = 4constant2 = 17 * 2 = 34。然后继续实例化和初始化寄存器 register1 = RegInit(4.U(8.W))register2 = RegInit(34.U(8.W))?

最佳答案

I was wondering if it's possible to calculate constants in software before Chisel begins designing any circuitry

除非我误解了你的问题,否则 Chisel 实际上就是这样工作的。

从根本上说,Chisel 是一个 Scala 库,执行 已编译的 Scala 代码会创建硬件。这意味着您的 Chisel 中的任何纯 Scala 代码仅存在于精化时,即在执行此 Scala 程序(我们称之为生成器)期间。 p>

现在,程序中的值是按 Scala 定义的顺序创建的(与任何通用编程语言大致相同)。例如,io 是在 constant1constant2 之前定义的,因此 io 的 Chisel 对象将在这两个常量之前创建是经过计算的,但这对于您的问题而言并不重要。

Chisel 中的一个常见做法是创建自定义类来保存大量参数。在这种情况下,您可以执行类似的操作:

// Note this doesn't extend anything, it's just a Scala class
// Also note myParameter is a val now, this makes it accessible outside the class
class MyParameters(val myParameter: Int) {
val constant1 = 2 * myParameter
val constant2 = 17 * myParameter
}

class MyModule(params: MyParameters) extends Module {
val io = IO(new Bundle{
val in = Input(SInt(8.W))
val out = Output(SInt(8.W))
})

val register1 = RegInit((params.constant1).U(8.W))
val register2 = RegInit((params.constant2).U(8.W))
//...
//...
}

关于chisel - 我可以在 Chisel 开始设计硬件之前在软件中计算常量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66647412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com