gpt4 book ai didi

chisel - 检索 RegInit 的重置值

转载 作者:行者123 更新时间:2023-12-05 06:11:24 28 4
gpt4 key购买 nike

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

val myRWReg = RegInit(3.U(10.W))

// ...

node.regmap(
0x0 -> Seq(RegField(10.W, myRWReg,
RegFieldDesc("myRWReg", "A RW Register.", reset = myRWReg.init)))
)

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

有没有办法做到这一点,以便随时 RegFieldDesc是否使用复位描述可以匹配硬件而无需保留另一个变量?

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

最佳答案

我最终想出了一些可能对其他人有用的东西。我还希望能够做的一件事是不必显式声明 Reg。我希望通过连接推断出这一点。例如,我有一个 SW 寄存器驱动 Bundle 上的一个 8 位“端口”。我可以创建一个 Reg,但是如果它根据参数发生变化,我需要跟上它的大小。

object WavRWReg{

def apply[T <: Data](connection : T, reset: T, name: String, desc: String = ""): RegField = {
//val reg = RegInit(reset)
val reg = RegInit(connection.cloneType, reset)

reg.suggestName("swi_" + name)

connection := reg

//litValue returns the Bigint value
val rf = RegField(reg.getWidth, reg.asUInt, RegFieldDesc(name, desc, access=RegFieldAccessType.RW , reset=Some(reset.litValue)))
rf
}
}

因此,这会为指定的重置值创建 Reginit,并且宽度是从连接类型推断出来的。重置值也会发送到 RegFieldDesc,因此我不必在两个地方手动跟上它,从而减少错误。

关于chisel - 检索 RegInit 的重置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64001012/

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