0

Top module is as follows;

class PE (DataWidth: Int, NumLinks: Int, NumEntries: Int, FifoDepth: Int) extends Module {
    val io = IO(new Bundle {
        ...
    })
    ...
}

I think that this is ordinary style for the chisel3. I do the following run of sbt to lint the code;

sbt 'test:runMain noc.PEMain'

Then I get bellow error messages;

[warn] Multiple main classes detected.  Run 'show discoveredMainClasses' to see the list
[info] Running noc.NoCMain 
[info] [0.002] Elaborating design...
[error] (run-main-0) chisel3.internal.ChiselException: Error: attempted to instantiate a Module without wrapping it in Module().
[error] chisel3.internal.ChiselException: Error: attempted to instantiate a Module without wrapping it in Module().
[error]     at chisel3.internal.throwException$.apply(Error.scala:13)
[error]     at chisel3.core.BaseModule.<init>(Module.scala:90)
[error]     at chisel3.core.UserModule.<init>(UserModule.scala:18)
[error]     at chisel3.core.ImplicitModule.<init>(UserModule.scala:102)
[error]     at chisel3.core.LegacyModule.<init>(UserModule.scala:127)
[error]     at noc.NumGen.<init>(NoC.scala:328)
[error]     at noc.FanIn_Link.<init>(NoC.scala:376)
[error]     at noc.PE$$anonfun$12.apply(NoC.scala:490)
[error]     at noc.PE$$anonfun$12.apply(NoC.scala:490)
[error]     at chisel3.core.Module$.do_apply(Module.scala:49)
[error]     at noc.PE.<init>(NoC.scala:490)
[error]     at noc.NoCMain$$anonfun$1.apply(NoCMain.scala:27)
[error]     at noc.NoCMain$$anonfun$1.apply(NoCMain.scala:27)
            ...
[error]     at chisel3.internal.Builder$$anonfun$build$1.apply(Builder.scala:297)
[error]     at chisel3.internal.Builder$$anonfun$build$1.apply(Builder.scala:295)
[error]     at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58)
[error]     at chisel3.internal.Builder$.build(Builder.scala:295)
[error]     at chisel3.Driver$.elaborate(Driver.scala:93)
[error]     at chisel3.Driver$.execute(Driver.scala:140)
[error]     at chisel3.iotesters.setupTreadleBackend$.apply(TreadleBackend.scala:139)
            ...
[error]     at logger.Logger$$anonfun$makeScope$1.apply(Logger.scala:138)
[error]     at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58)
[error]     at logger.Logger$.makeScope(Logger.scala:136)
            ...
[error]     at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58)
[error]     at chisel3.iotesters.Driver$.execute(Driver.scala:38)
[error]     at chisel3.iotesters.Driver$.execute(Driver.scala:100)
[error]     at noc.NoCMain$.delayedEndpoint$noc$NoCMain$1(NoCMain.scala:27)
[error]     at noc.NoCMain$delayedInit$body.apply(NoCMain.scala:26)
[error]     at scala.Function0$class.apply$mcV$sp(Function0.scala:34)
            ...
[error]     at scala.App$class.main(App.scala:76)
[error]     at noc.NoCMain$.main(NoCMain.scala:26)
[error]     at noc.NoCMain.main(NoCMain.scala)
[error]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            ...
[error]     at java.lang.Thread.run(Thread.java:745)

And lastly this error:

[error] (Test / runMain) Nonzero exit code: 1

I find warning of:

[warn] Multiple main classes detected.  Run 'show discoveredMainClasses' to see the list

Command of sbt 'show discoveredMainClasses' shows;

[info] Loading settings from plugins.sbt ...
[info] Loading project definition from /Users/hoge/Desktop/NoC/project
[info] Loading settings from build.sbt ...
[info] Set current project to en-noc (in build file:/Users/hoge/Desktop/NoC/)
[info] * 
[success] Total time: 1 s, completed 2019/10/22 2:08:49

What does this error message mean and how can I fix it?

sbt 'testOnly noc.PETester'

introduced;

[info]   at chisel3.core.LegacyModule.<init>(UserModule.scala:127)

This is caused at

    val io = IO(new Bundle {
        val No = Output(Vec(NumLinks, UInt((log2Ceil(NumLinks)).W)))
    })
S. Takano
  • 313
  • 2
  • 12

1 Answers1

1

It seem that the main problem is:

attempted to instantiate a Module without wrapping it in Module()

This may rise due to you making a new instance of a class extended from Module but you are probably not wrapping it into one. For example you in your code you are doing something like:

val test = new module_class

where as you should be doing val test = Module(new module_class)