簡體   English   中英

有沒有辦法使模塊范圍內未定義的 Chisel 信號在波形中可見?

[英]Is there a way to make signals in Chisel not defined at module scope visible in waveforms?

如果我們以以下代碼摘錄為例(在模塊的頂部):

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)
  }
}

兩個頂級信號的唯一原因是讓較低的信號在波形中可見。 有沒有什么方法可以達到相同的效果而不必手動創建這些信號? 在這個例子中,一半的代碼只是為了獲得調試能力。 這似乎有點過分了。

這似乎有點過分

完全同意,幸好有解決辦法。 出於實現原因,默認情況下Chisel 只能命名 Module 類的公共字段。 也就是說,只有模塊頂級范圍內的值。 但是,有一個漂亮的宏chisel3.experimental.chiselName可以for循環內命名這些chisel3.experimental.chiselName 嘗試像這樣注釋你的模塊:

import chisel3._
import chisel3.experimental.chiselName

@chiselName
class MyModule extends Module {
  ...
}

請查看之前討論命名的答案,它包含的信息比單獨回答這個問題的相關信息要多,但它還有其他關於命名如何在 Chisel 中工作的有用信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM