gpt4 book ai didi

chisel - 有没有办法使 Chisel 中未在模块范围内定义的信号在波形中可见?

转载 作者:行者123 更新时间:2023-12-04 10:57:10 65 4
gpt4 key购买 nike

如果我们以下面的代码摘录为例(在模块的顶部):

val write_indices = WireInit(VecInit(Seq.fill(wordsPerBeat)(0.U((log2Ceil(nWays)+log2Ceil(nSets)+log2Ceil(cacheBlockBytes/wordBytes)).W))))
val write_line_indices = WireInit(VecInit(Seq.fill(wordsPerBeat)(0.U(log2Ceil(cacheBlockBytes/wordBytes).W))))
dontTouch(write_indices)
dontTouch(write_line_indices)
// refill logic
when(mem_response_present) {
for (i <- 0 until wordsPerBeat) {
val beatIdx = i.U(log2Ceil(wordsPerBeat).W)
val write_line_index = Cat(d_refill_cnt(log2Ceil(cacheBlockBytes/wordsPerBeat/wordBytes)-1, 0), beatIdx)
val write_idx = Cat(refill_way, refill_set, write_line_index)
write_indices(i) := write_idx
write_line_indices(i) := write_line_index
cache_line(write_idx) := tl_out.d.bits.data((i + 1) * wordBits - 1, i * wordBits)
}
}

两个顶级信号的唯一原因是为了在波形中看到较低的信号。
有没有什么方法可以达到同样的效果而无需手动创建这些信号?
在此示例中,一半代码仅用于获得调试能力。
这似乎有点过分了。

最佳答案

That seems a bit excessive



完全同意,幸好有解决办法。出于实现原因,默认情况下,Chisel 只能命名 Module 类的公共(public)字段。也就是说,只有模块顶级范围内的值。但是,有一个漂亮的宏 chisel3.experimental.chiselName可以在 for 中命名这些 val环形。尝试像这样注释您的模块:

import chisel3._
import chisel3.experimental.chiselName

@chiselName
class MyModule extends Module {
...
}

请查看 this earlier answer discussing naming ,它包含的信息比单独回答这个问题的相关信息要多,但它还有其他有用的信息,关于命名如何在 Chisel 中工作。

关于chisel - 有没有办法使 Chisel 中未在模块范围内定义的信号在波形中可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59104057/

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