You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chisel3高版本中如何为内部信号添加mark_debug属性生成SystemVerilog

Chisel 6.x版本实现信号调试标记(适配Vivado ILA)

旧版本的markDebug实现依赖的AttributeAnnotation等API在Chisel 6.x中已被重构,改用FIRRTL官方提供的专用注解即可实现相同功能,以下是适配新版本的代码:

import chisel3._
import chisel3.experimental.{annotate, ChiselAnnotation}
import firrtl.annotations.MarkDebugAnnotation

object MarkDebug {
  /** 将信号标记为可调试状态,可选禁止优化以确保能被ILA抓取 */
  def apply[T <: Data](data: T, markDontTouch: Boolean = false): T = {
    annotate(new ChiselAnnotation {
      override def toFirrtl = MarkDebugAnnotation(data.toNamed)
    })
    if (markDontTouch) dontTouch(data) else data
  }
}

说明

  • 改用firrtl.annotations.MarkDebugAnnotation替代旧版本手动拼接的属性字符串,完全适配Chisel 6.x的注解规范
  • markDontTouch参数保留原有功能,设置为true时会调用dontTouch阻止信号被综合工具优化,确保Vivado ILA能正常抓取目标信号
  • 使用方式和旧版本一致:在需要调试的信号前调用MarkDebug(your_signal)即可,例如val debug_signal = MarkDebug(internal_reg, markDontTouch = true)

内容的提问来源于stack exchange,提问作者Aperture Initiative

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 05:12:34