gpt4 book ai didi

scala - 取 UInt 的 log2Ceil

转载 作者:行者123 更新时间:2023-12-03 23:08:47 27 4
gpt4 key购买 nike

我正在采用以下计算的 log2:

tl_out.a.bits.size := log2Ceil(s1_row * s2_column * 4.U)

其中,s1_row 和 s2_column 是 UInt。
我收到以下错误:
[info] Compiling 1 Scala source to ...rocket-chip/target/scala-2.12/classes ...
[error] ...scala:199:25: overloaded method value apply with alternatives:
[error] (in: Int)Int <and>
[error] (in: BigInt)Int
[error] cannot be applied to (chisel3.core.UInt)
[error] tl_out.a.bits.size := log2Ceil(s1_row * s2_column * 4.U)
[error] ^
[error] one error found
[error] (Compile / compileIncremental) Compilation failed

似乎无法在 UInt/SInt 上执行 log2Ceil。有没有办法为可以通过 UInt 执行的 log2Ceil 类型转换 UINT/SInt 或替代方法?
请协助...

感谢和问候,

最佳答案

log2Ceil()是一个很好的函数来查找单词的大小。但请注意,对于 UInt() 来说它不是“可合成的”电线或注册。 log2Ceil()计算在合成时完成一次,它不是硬件功能。那么你的输出信号tl_out.a.bits.size将是一个常数。

如果你想找到最重要的设置位,你应该使用名为 PriorityEncoder(Reverse(s1_row * s2_column * 4.U)) 的硬件函数。 .

PriorityEncoder () 返回信号中最低有效“1”的位置。
Reverse () 反转信号中的位顺序。

关于scala - 取 UInt 的 log2Ceil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60394862/

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