You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Aug 20, 2024. It is now read-only.
[ y] Did you provide a code example showing the problem?
[ y] Did you describe your environment?
[ N/A] Did you specify relevant external information?
What is the current behavior?
Currently; it is removing some nodes from a module; but those nodes are still being used fro other purposes. It is either not cleaning up the whole node chain or it is removing undesired nodes (which are not dead)
before circuit module: circuitOld file
After DCE run module definition (firrtl circuit): circuitNew file
The DCEDebug log for the module is also attached.
A little about the module: We have added a transform to insert RAS for all registers. the deleted nodes in question are for that new logic. (you can look for example of node parityreg_clock_4; check_clock_4 which ultimately connects to ras_error.
I could not work on a simple testcase to reproduce this issue. Hopefully this information helps.
What is the expected behavior?
One of the deleted nodes (highlighted above) is coming from primary input to the module (io_enq_bits_data[255:0]) which is not optimized by DCE. This node should not have been deleted as the final output (ras_error) is also not optimized by DCE.
Steps to Reproduce
I could not get to work on the smaller testcase for this failure. I can provide stack trace if that would help.
Exception in thread "main" firrtl.FirrtlInternalException: Internal Error! Please file an issue at https://github.com/ucb-bar/firrtl/issues
at firrtl.Utils$.error(Utils.scala:471)
at firrtl.Utils$.throwInternalError(Utils.scala:175)
at firrtl.stage.phases.CatchExceptions.transform(CatchExceptions.scala:31)
at firrtl.stage.phases.CatchExceptions.transform(CatchExceptions.scala:10)
at firrtl.options.phases.DeletedWrapper.internalTransform(DeletedWrapper.scala:38)
at firrtl.options.phases.DeletedWrapper.internalTransform(DeletedWrapper.scala:15)
at firrtl.options.Translator.transform(Phase.scala:248)
at firrtl.options.Translator.transform$(Phase.scala:248)
at firrtl.options.phases.DeletedWrapper.transform(DeletedWrapper.scala:15)
at firrtl.options.DependencyManager.$anonfun$transform$5(DependencyManager.scala:280)
at firrtl.Utils$.time(Utils.scala:181)
at firrtl.options.DependencyManager.$anonfun$transform$3(DependencyManager.scala:280)
at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
at scala.collection.immutable.List.foldLeft(List.scala:89)
at firrtl.options.DependencyManager.transform(DependencyManager.scala:269)
at firrtl.options.DependencyManager.transform$(DependencyManager.scala:255)
at firrtl.options.PhaseManager.transform(DependencyManager.scala:443)
at firrtl.stage.FirrtlStage.run(FirrtlStage.scala:38)
at firrtl.options.Stage$$anon$1.transform(Stage.scala:43)
at firrtl.options.Stage$$anon$1.transform(Stage.scala:43)
at firrtl.options.phases.DeletedWrapper.internalTransform(DeletedWrapper.scala:38)
at firrtl.options.phases.DeletedWrapper.internalTransform(DeletedWrapper.scala:15)
at firrtl.options.Translator.transform(Phase.scala:248)
at firrtl.options.Translator.transform$(Phase.scala:248)
at firrtl.options.phases.DeletedWrapper.transform(DeletedWrapper.scala:15)
at firrtl.options.Stage.$anonfun$transform$5(Stage.scala:47)
at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
at scala.collection.immutable.List.foldLeft(List.scala:89)
at firrtl.options.Stage.$anonfun$transform$3(Stage.scala:47)
at logger.Logger$.$anonfun$makeScope$2(Logger.scala:137)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
at logger.Logger$.makeScope(Logger.scala:135)
at firrtl.options.Stage.transform(Stage.scala:47)
at firrtl.options.Stage.execute(Stage.scala:58)
at firrtl.options.StageMain.main(Stage.scala:71)
at firrtl.stage.FirrtlMain.main(FirrtlStage.scala)
Caused by: java.util.NoSuchElementException: key not found: check_clock_4
at scala.collection.MapLike.default(MapLike.scala:235)
at scala.collection.MapLike.default$(MapLike.scala:234)
at scala.collection.AbstractMap.default(Map.scala:63)
at scala.collection.mutable.HashMap.apply(HashMap.scala:69)
at firrtl.passes.ResolveKinds$.resolve_expr(ResolveKinds.scala:24)
at firrtl.passes.ResolveKinds$.$anonfun$resolve_expr$1(ResolveKinds.scala:25)
at scala.collection.immutable.Stream.$anonfun$map$1(Stream.scala:418)
at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1171)
at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1161)
at scala.collection.immutable.StreamIterator.$anonfun$next$1(Stream.scala:1061)
at scala.collection.immutable.StreamIterator$LazyCell.v$lzycompute(Stream.scala:1050)
at scala.collection.immutable.StreamIterator$LazyCell.v(Stream.scala:1050)
at scala.collection.immutable.StreamIterator.hasNext(Stream.scala:1055)
at firrtl.ir.Serializer$.s(Serializer.scala:300)
at firrtl.ir.Serializer$.s(Serializer.scala:74)
at firrtl.ir.Serializer$.s(Serializer.scala:96)
at firrtl.ir.Serializer$.s(Serializer.scala:110)
at firrtl.ir.Serializer$.s(Serializer.scala:246)
at firrtl.ir.Serializer$.$anonfun$s$9(Serializer.scala:260)
at firrtl.ir.Serializer$.$anonfun$s$9$adapted(Serializer.scala:260)
at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:62)
at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:55)
at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:49)
at firrtl.ir.Serializer$.s(Serializer.scala:260)
at firrtl.ir.Serializer$.serialize(Serializer.scala:36)
at firrtl.ir.Serializer$.serialize(Serializer.scala:17)
at firrtl.ir.UseSerializer.serialize(IR.scala:22)
at firrtl.ir.UseSerializer.serialize$(IR.scala:22)
at firrtl.ir.Circuit.serialize(IR.scala:1231)
at firrtl.Transform$.$anonfun$remapAnnotations$3(Compiler.scala:221)
at logger.Logger$.logIt$1(Logger.scala:203)
at logger.Logger$.logger$Logger$$showMessage(Logger.scala:211)
at logger.Logger.trace(Logger.scala:389)
at firrtl.Transform$.remapAnnotations(Compiler.scala:221)
at firrtl.stage.transforms.UpdateAnnotations.bToA(UpdateAnnotations.scala:18)
at firrtl.stage.transforms.UpdateAnnotations.bToA(UpdateAnnotations.scala:8)
at firrtl.options.Translator.transform(Phase.scala:248)
at firrtl.options.Translator.transform$(Phase.scala:248)
at firrtl.stage.transforms.UpdateAnnotations.transform(UpdateAnnotations.scala:8)
at firrtl.options.DependencyManager.$anonfun$transform$5(DependencyManager.scala:280)
at firrtl.Utils$.time(Utils.scala:181)
at firrtl.options.DependencyManager.$anonfun$transform$3(DependencyManager.scala:280)
at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
at scala.collection.immutable.List.foldLeft(List.scala:89)
at firrtl.options.DependencyManager.transform(DependencyManager.scala:269)
at firrtl.options.DependencyManager.transform$(DependencyManager.scala:255)
at firrtl.stage.TransformManager.transform(TransformManager.scala:14)
at firrtl.stage.phases.Compiler.$anonfun$internalTransform$6(Compiler.scala:138)
at firrtl.Utils$.time(Utils.scala:181)
at firrtl.stage.phases.Compiler.f$1(Compiler.scala:138)
at firrtl.stage.phases.Compiler.$anonfun$internalTransform$8(Compiler.scala:143)
at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:238)
at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:62)
at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:55)
at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:49)
at scala.collection.TraversableLike.map(TraversableLike.scala:238)
at scala.collection.TraversableLike.map$(TraversableLike.scala:231)
at scala.collection.AbstractTraversable.map(Traversable.scala:108)
at firrtl.stage.phases.Compiler.internalTransform(Compiler.scala:143)
at firrtl.stage.phases.Compiler.internalTransform(Compiler.scala:53)
at firrtl.options.Translator.transform(Phase.scala:248)
at firrtl.options.Translator.transform$(Phase.scala:248)
at firrtl.stage.phases.Compiler.transform(Compiler.scala:53)
at firrtl.stage.phases.CatchExceptions.transform(CatchExceptions.scala:23)
... 35 more
Your environment
running rocket-chip (version 1.5) with below chisel version
Chisel Verions: 3.5.4
OS: Linux xyz 3.10.0-1160.62.1.el7.x86_64 #1_ SMP Wed Mar 23 09:04:02 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Verilator version: 4.028.
External Information
The text was updated successfully, but these errors were encountered:
Sign up for freeto subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Checklist
What is the current behavior?
Currently; it is removing some nodes from a module; but those nodes are still being used fro other purposes. It is either not cleaning up the whole node chain or it is removing undesired nodes (which are not dead)
example module dumps (firrtl circuit) before and after running DCE
circuitOld.log
circuitNew.log
DCEDebug.log
A little about the module: We have added a transform to insert RAS for all registers. the deleted nodes in question are for that new logic. (you can look for example of node
parityreg_clock_4
;check_clock_4
which ultimately connects toras_error
.I could not work on a simple testcase to reproduce this issue. Hopefully this information helps.
What is the expected behavior?
One of the deleted nodes (highlighted above) is coming from primary input to the module (io_enq_bits_data[255:0]) which is not optimized by DCE. This node should not have been deleted as the final output (ras_error) is also not optimized by DCE.
Steps to Reproduce
I could not get to work on the smaller testcase for this failure. I can provide stack trace if that would help.
Your environment
running rocket-chip (version 1.5) with below chisel version
External Information
The text was updated successfully, but these errors were encountered: