firrtl icon indicating copy to clipboard operation
firrtl copied to clipboard

crash 53

Open drom opened this issue 4 years ago • 1 comments

Checklist

  • [x] Did you specify the current behavior?
  • [x] Did you specify the expected behavior?
  • [x] Did you provide a code example showing the problem?
  • [x] Did you describe your environment?
  • [ ] Did you specify relevant external information?

What is the current behavior?

The following FIRRTL program.

; seed: 53
circuit top_mod :
  module top_mod :
    input inp_f: SInt<7>
    output _tmp12: UInt<1>
    wire tmp9: UInt<1>
    wire _tmp11: SInt<7>
    tmp9 <= leq(UInt<14>("h11e7"), UInt<11>("b10010110110"))
    _tmp11 <= rem(SInt<17>(51050), inp_f)
    _tmp12 <= neq(asSInt(tmp9), _tmp11)

Running with firrtl-1.5.0-SNAPSHOT crashes with the following error:

Exception in thread "main" firrtl.FirrtlInternalException: Internal Error! Unexpected non-SInt type for Reference(_tmp11,UIntType(IntWidth(7)),NodeKind,SourceFlow) in DoPrim(neq,List(SIntLiteral(0,IntWidth(7)), Reference(_tmp11,UIntType(IntWidth(7)),NodeKind,SourceFlow)),List(),UnknownType)
Please file an issue at https://github.com/ucb-bar/firrtl/issues
        at firrtl.Utils$.error(Utils.scala:491)
        at firrtl.Utils$.throwInternalError(Utils.scala:164)
        at firrtl.VerilogEmitter.castIf$1(VerilogEmitter.scala:279)
        at firrtl.VerilogEmitter.op_stream(VerilogEmitter.scala:325)
        at firrtl.VerilogEmitter.emitCol(VerilogEmitter.scala:165)
        at firrtl.VerilogEmitter.$anonfun$emitCol$2(VerilogEmitter.scala:204)
        at firrtl.VerilogEmitter.$anonfun$emitCol$2$adapted(VerilogEmitter.scala:203)
        at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169)
        at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
        at scala.collection.immutable.List.foldLeft(List.scala:79)
        at firrtl.VerilogEmitter.emitCol(VerilogEmitter.scala:203)
        at firrtl.VerilogEmitter.$anonfun$emitCol$2(VerilogEmitter.scala:204)
        at firrtl.VerilogEmitter.$anonfun$emitCol$2$adapted(VerilogEmitter.scala:203)
        at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169)
        at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
        at scala.collection.immutable.List.foldLeft(List.scala:79)
        at firrtl.VerilogEmitter.emitCol(VerilogEmitter.scala:203)
        at firrtl.VerilogEmitter.emit(VerilogEmitter.scala:131)
        at firrtl.VerilogEmitter$VerilogRender.$anonfun$emit_streams$8(VerilogEmitter.scala:1115)
        at firrtl.VerilogEmitter$VerilogRender.$anonfun$emit_streams$8$adapted(VerilogEmitter.scala:1115)
        at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:563)
        at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:561)
        at scala.collection.AbstractIterable.foreach(Iterable.scala:919)
        at firrtl.VerilogEmitter$VerilogRender.emit_streams(VerilogEmitter.scala:1115)
        at firrtl.VerilogEmitter$VerilogRender.emit_verilog(VerilogEmitter.scala:1233)
        at firrtl.VerilogEmitter.$anonfun$emit$2(VerilogEmitter.scala:1274)
        at scala.collection.immutable.List.foreach(List.scala:333)
        at firrtl.VerilogEmitter.emit(VerilogEmitter.scala:1268)
        at firrtl.VerilogEmitter.$anonfun$execute$2(VerilogEmitter.scala:1286)
        at scala.collection.immutable.List.flatMap(List.scala:293)
        at scala.collection.immutable.List.flatMap(List.scala:79)
        at firrtl.VerilogEmitter.execute(VerilogEmitter.scala:1283)
        at firrtl.SystemVerilogEmitter.execute(SystemVerilogEmitter.scala:29)
        at firrtl.Transform.transform(Compiler.scala:319)
        at firrtl.Transform.transform$(Compiler.scala:319)
        at firrtl.SeqTransform.transform(Compiler.scala:401)
        at firrtl.stage.transforms.ExpandPrepares.execute(ExpandPrepares.scala:19)
        at firrtl.Transform.transform(Compiler.scala:319)
        at firrtl.Transform.transform$(Compiler.scala:319)
        at firrtl.stage.transforms.ExpandPrepares.transform(ExpandPrepares.scala:7)
        at firrtl.stage.transforms.CatchCustomTransformExceptions.execute(CatchCustomTransformExceptions.scala:10)
        at firrtl.Transform.transform(Compiler.scala:319)
        at firrtl.Transform.transform$(Compiler.scala:319)
        at firrtl.stage.transforms.CatchCustomTransformExceptions.transform(CatchCustomTransformExceptions.scala:7)
        at firrtl.stage.transforms.UpdateAnnotations.$anonfun$internalTransform$1(UpdateAnnotations.scala:22)
        at firrtl.Utils$.time(Utils.scala:170)
        at firrtl.Transform$.runTransform(Compiler.scala:217)
        at firrtl.stage.transforms.UpdateAnnotations.internalTransform(UpdateAnnotations.scala:22)
        at firrtl.stage.transforms.UpdateAnnotations.internalTransform(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$3(DependencyManager.scala:278)
        at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169)
        at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
        at scala.collection.immutable.List.foldLeft(List.scala:79)
        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:120)
        at firrtl.Utils$.time(Utils.scala:170)
        at firrtl.stage.phases.Compiler.f$1(Compiler.scala:120)
        at firrtl.stage.phases.Compiler.$anonfun$internalTransform$8(Compiler.scala:125)
        at scala.collection.immutable.List.map(List.scala:246)
        at scala.collection.immutable.List.map(List.scala:79)
        at firrtl.stage.phases.Compiler.internalTransform(Compiler.scala:125)
        at firrtl.stage.phases.Compiler.internalTransform(Compiler.scala:45)
        at firrtl.options.Translator.transform(Phase.scala:248)
        at firrtl.options.Translator.transform$(Phase.scala:248)
        at firrtl.stage.phases.Compiler.transform(Compiler.scala:45)
        at firrtl.stage.phases.CatchExceptions.transform(CatchExceptions.scala:30)
        at firrtl.stage.phases.CatchExceptions.transform(CatchExceptions.scala:17)
        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$3(DependencyManager.scala:278)
        at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169)
        at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
        at scala.collection.immutable.List.foldLeft(List.scala:79)
        at firrtl.options.DependencyManager.transform(DependencyManager.scala:269)
        at firrtl.options.DependencyManager.transform$(DependencyManager.scala:255)
        at firrtl.options.PhaseManager.transform(DependencyManager.scala:436)
        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.LinearSeqOps.foldLeft(LinearSeq.scala:169)
        at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
        at scala.collection.immutable.List.foldLeft(List.scala:79)
        at firrtl.options.Stage.$anonfun$transform$3(Stage.scala:47)
        at logger.Logger$.$anonfun$makeScope$2(Logger.scala:166)
        at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
        at logger.Logger$.makeScope(Logger.scala:164)
        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)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at coursier.bootstrap.launcher.a.a(Unknown Source)
        at coursier.bootstrap.launcher.Launcher.main(Unknown Source)

What is the expected behavior?

Not to crash. Give a more informative Error or Warning or just work.

Steps to Reproduce

./firrtl-1.5.0-SNAPSHOT -i top_mod.fir

Your environment

Linux linux-sydi 5.11.4-1-default #1 SMP Mon Mar 8 05:16:55 UTC 2021 (be77cd2) x86_64 x86_64 x86_64 GNU/Linux

  • Verilator version: Verilator 4.109 devel rev v4.108-38-g36eb952b

External Information

drom avatar Mar 16 '21 20:03 drom

still crashing

drom avatar Apr 20 '21 19:04 drom