gpt4 book ai didi

hdl - 如何获取 chisel 中 UInt() 的大小?

转载 作者:行者123 更新时间:2023-12-02 15:47:49 25 4
gpt4 key购买 nike

也许这很简单,但我不能简单地找到如何在 Chisel 中获取 UInt() 值的位大小?

我知道如何通过声明设置尺寸:

val a = UInt(INPUT, 16)

但是要获得“a”大小,是否有类似以下的属性:

val size = a.?

或者:

val size = width(a)

最佳答案

有几件事。首先,看起来您正在使用 Chisel 2 语义。您可能应该使用 Chisel 3 语义,这意味着您应该编写

val a = Input(UInt(16.W))

简单的答案是您可以获得如下宽度:

val theWidth = if(io.in0.widthKnown) io.in0.getWidth else -1

或使用匹配

val theWidth = io.in0.widthOption match {
case Some(w) => w
case None => -1 // you decide what you want the unknown case to be.
}

现在,您已经在 Scala 变量 theWidth 中获得了宽度值,它是一个 Int,必须使用 if 或匹配,因为宽度原则上可以,未定义。

更长的答案是,您应该谨慎行事。 theWidth 在电路生成时进行评估,如果使用宽度推断(如果您正在询问凿子类型的宽度,通常会出现这种情况),您将无法看到它,因为宽度推断电路被详细阐述并由Firrtl编译器处理后完成。

您可能应该将您想要知道的宽度作为电路的参数并使用它而不是 widthOption。类似的东西。

class X(ioWidth: Int) extends Module {
val io = IO( new Bundle {
val in0 = Input(UInt(ioWidth.W))
...
})

val reg = Reg(UInt((ioWidth * 2).W)) // using width parameter here.
...
}

关于hdl - 如何获取 chisel 中 UInt() 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46660727/

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