Что означает это исключение Chisel: Вызвано: chisel3.package $ RebindingException: Попытка переназначения привязки на Reset

Я получил ошибку chisel3.package$RebindingException: Attempted reassignment of binding to Reset(IO in unelaborated TLDebugModule) при попытке изменить модуль (TLDebugModule) с обычного Module на RawModule. Я не уверен, что говорится в этом сообщении. Можете ли вы помочь понять, о чем оно говорит, чтобы я мог найти, что я делаю неправильно?

Вот отличия моего 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

person user839768    schedule 27.02.2020    source источник


Ответы (1)


Я думаю, ваша проблема в том, что у вас есть вложенные вызовы IO при попытке удалить внутренние IO вызовы.

person Chick Markley    schedule 27.02.2020
comment
Конечно! Спасибо. Да, удаление вложенных вызовов IO() разрешило эту конкретную проблему, перейдем к следующей :) - person user839768; 28.02.2020