这个 Chisel 异常是什么意思:由 chisel3.package$RebindingException 引起:尝试重新分配绑定到 Reset
What does this Chisel exception mean: Caused by: chisel3.package$RebindingException: Attempted reassignment of binding to Reset
我在尝试将模块 (TLDebugModule) 从常规 Module
更改为 RawModule
时遇到错误 chisel3.package$RebindingException: Attempted reassignment of binding to Reset(IO in unelaborated TLDebugModule)
。我不确定这条消息在说什么,你能帮我理解它在说什么,这样我就可以找出我做错了什么吗?
这是我的 RTL 的差异:
val io = IO(new Bundle {
val debug_clock = Input(Clock())
val debug_reset = Input(Reset())
+ val tl_clock = IO(Input(Clock()))
+ val tl_reset = IO(Input(Reset()))
+
val ctrl = new DebugCtrlBundle(nComponents)
val dmi = (!p(ExportDebug).apb).option(Flipped(new ClockedDMIIO()))
val apb_clock = p(ExportDebug).apb.option(Input(Clock()))
@@ -1780,11 +1789,11 @@ class TLDebugModule(beatBytes: Int)(implicit p: Parameters) extends LazyModule {
dmOuter.module.rf_reset := r
}
- dmInner.module.clock := io.debug_clock
- dmInner.module.reset := io.debug_reset
dmInner.module.rf_reset := io.debug_reset
- dmInner.module.io.tlClock := clock
- dmInner.module.io.tlReset := reset
+ dmInner.module.io.debug_clock := io.debug_clock
+ dmInner.module.io.debug_reset := io.debug_reset
+ dmInner.module.io.tl_clock := io.tl_clock
+ dmInner.module.io.tl_reset := io.tl_reset
+++ b/src/main/scala/devices/debug/Periphery.scala
@@ -103,6 +103,8 @@ trait HasPeripheryDebugModuleImp extends LazyModuleImp {
val psd = IO(new PSDIO)
val resetctrl = outer.debugOpt.map { outerdebug =>
+ outerdebug.module.io.tl_reset := reset
+ outerdebug.module.io.tl_clock := clock
val resetctrl = IO(new ResetCtrlIO(outerdebug.dmOuter.dmOuter.intnode.edges.out.size))
outerdebug.module.io.hartIsInReset := resetctrl.hartIsInReset
我认为您的问题是您对 IO
的嵌套调用位于
尝试删除内部 IO
调用。
我在尝试将模块 (TLDebugModule) 从常规 Module
更改为 RawModule
时遇到错误 chisel3.package$RebindingException: Attempted reassignment of binding to Reset(IO in unelaborated TLDebugModule)
。我不确定这条消息在说什么,你能帮我理解它在说什么,这样我就可以找出我做错了什么吗?
这是我的 RTL 的差异:
val io = IO(new Bundle {
val debug_clock = Input(Clock())
val debug_reset = Input(Reset())
+ val tl_clock = IO(Input(Clock()))
+ val tl_reset = IO(Input(Reset()))
+
val ctrl = new DebugCtrlBundle(nComponents)
val dmi = (!p(ExportDebug).apb).option(Flipped(new ClockedDMIIO()))
val apb_clock = p(ExportDebug).apb.option(Input(Clock()))
@@ -1780,11 +1789,11 @@ class TLDebugModule(beatBytes: Int)(implicit p: Parameters) extends LazyModule {
dmOuter.module.rf_reset := r
}
- dmInner.module.clock := io.debug_clock
- dmInner.module.reset := io.debug_reset
dmInner.module.rf_reset := io.debug_reset
- dmInner.module.io.tlClock := clock
- dmInner.module.io.tlReset := reset
+ dmInner.module.io.debug_clock := io.debug_clock
+ dmInner.module.io.debug_reset := io.debug_reset
+ dmInner.module.io.tl_clock := io.tl_clock
+ dmInner.module.io.tl_reset := io.tl_reset
+++ b/src/main/scala/devices/debug/Periphery.scala
@@ -103,6 +103,8 @@ trait HasPeripheryDebugModuleImp extends LazyModuleImp {
val psd = IO(new PSDIO)
val resetctrl = outer.debugOpt.map { outerdebug =>
+ outerdebug.module.io.tl_reset := reset
+ outerdebug.module.io.tl_clock := clock
val resetctrl = IO(new ResetCtrlIO(outerdebug.dmOuter.dmOuter.intnode.edges.out.size))
outerdebug.module.io.hartIsInReset := resetctrl.hartIsInReset
我认为您的问题是您对 IO
的嵌套调用位于
尝试删除内部 IO
调用。