freechipsproject / chisel-bootcamp Goto Github PK
View Code? Open in Web Editor NEWGenerator Bootcamp Material: Learn Chisel the Right Way
License: Apache License 2.0
Generator Bootcamp Material: Learn Chisel the Right Way
License: Apache License 2.0
Lately I've been seeing this error when using the bootcamp on binder with the error: "Could not find a kernel matching Scala. Please select a kernel" with the only option being "Python 3". Did binder change its kernel options/settings recently?
I'm running a local installation (following the README instructions) of the bootcamp on Windows 10 Education, and on 2.5 I run into one of two issues: Either "chisel3.package.experimental" is missing from the CLASSPATH (resolves itself by just re-running all, though sometimes re-running causes it to appear) or
"cmd21.sc:14: type arguments [D,U,EO,EI,B] do not conform to trait DspBlock's type parameter bounds [D,U,EO,EI,B <: chisel3.Data]
extends DspBlock[D, U, EO, EI, B] with HasCSR {
^Compilation Failed"
I've replaced any (potential and accidental) changes to the DspBlock section of the code with the LKG on github, and running non-local installation of the bootcamp works, but I'm not sure what I need/should change to get this cell block running locally.
jupyter notebook added below
https://drive.google.com/open?id=1bBESGHNUIccYjCY2n5YXwebw_0rQkTP0
In section 3.4, MyFir
test codes doesn't work due to java.lang.AssertionError
. The entire error message is attached below.
java.lang.AssertionError: assertion failed:
List(method apply$mcI$sp, method apply$mcI$sp)
while compiling: cmd12.sc
during phase: globalPhase=specialize, enteringPhase=explicitouter
library version: version 2.12.10
compiler version: version 2.12.10
reconstructed args: -nowarn -Xsource:2.11.12 -Yresolve-term-conflict:object
last tree to typer: Select(Apply(method until), foreach$mVc$sp)
tree position: line 37 of cmd12.sc
tree tpe: (f: Int => Unit)Unit
symbol: (final override) method foreach$mVc$sp in class Range
symbol definition: final override def foreach$mVc$sp(f: Int => Unit): Unit (a MethodSymbol)
symbol package: scala.collection.immutable
symbol owners: method foreach$mVc$sp -> class Range
call site: method $anonfun$new in package $sess
== Source file context for tree position ==
34
35 // push data through our FIR and check the result
36 reset(5)
37 for (i <- 0 until n) {
38 poke(c.io.in, sine(i))
39 if (i >= length-1) { // wait for all registers to be initialized since we didn't zero-pad the data
40 expect(c.io.out, expected(i-length+1))
scala.reflect.internal.SymbolTable.throwAssertionError(SymbolTable.scala:184)
scala.reflect.internal.Symbols$Symbol.suchThat(Symbols.scala:2000)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.matchingSymbolInPrefix$1(SpecializeTypes.scala:1559)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transformSelect$1(SpecializeTypes.scala:1582)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1677)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.internal.Trees.itransform(Trees.scala:1385)
scala.reflect.internal.Trees.itransform$(Trees.scala:1374)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.api.Trees$Transformer.transform(Trees.scala:2563)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1806)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.api.Trees$Transformer.$anonfun$transformTrees$1(Trees.scala:2567)
scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2567)
scala.reflect.internal.Trees.itransform(Trees.scala:1385)
scala.reflect.internal.Trees.itransform$(Trees.scala:1374)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.api.Trees$Transformer.transform(Trees.scala:2563)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1806)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.api.Trees$Transformer.$anonfun$transformTrees$1(Trees.scala:2567)
scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2567)
scala.reflect.internal.Trees.itransform(Trees.scala:1385)
scala.reflect.internal.Trees.itransform$(Trees.scala:1374)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.api.Trees$Transformer.transform(Trees.scala:2563)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1806)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.internal.Trees.itransform(Trees.scala:1406)
scala.reflect.internal.Trees.itransform$(Trees.scala:1374)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.api.Trees$Transformer.transform(Trees.scala:2563)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1806)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.api.Trees$Transformer.$anonfun$transformStats$1(Trees.scala:2597)
scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2595)
scala.reflect.internal.Trees.itransform(Trees.scala:1404)
scala.reflect.internal.Trees.itransform$(Trees.scala:1374)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.api.Trees$Transformer.transform(Trees.scala:2563)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1806)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.internal.Trees.$anonfun$itransform$2(Trees.scala:1401)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:37)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:32)
scala.reflect.internal.Trees.itransform(Trees.scala:1399)
scala.reflect.internal.Trees.itransform$(Trees.scala:1374)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.api.Trees$Transformer.transform(Trees.scala:2563)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1786)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.api.Trees$Transformer.$anonfun$transformStats$1(Trees.scala:2597)
scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2595)
scala.reflect.internal.Trees.itransform(Trees.scala:1404)
scala.reflect.internal.Trees.itransform$(Trees.scala:1374)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.api.Trees$Transformer.transform(Trees.scala:2563)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1806)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.api.Trees$Transformer.$anonfun$transformTrees$1(Trees.scala:2567)
scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2567)
scala.reflect.internal.Trees.itransform(Trees.scala:1385)
scala.reflect.internal.Trees.itransform$(Trees.scala:1374)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.api.Trees$Transformer.transform(Trees.scala:2563)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1806)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.api.Trees$Transformer.$anonfun$transformTrees$1(Trees.scala:2567)
scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2567)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.$anonfun$transform$25(SpecializeTypes.scala:1700)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:37)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transformTemplate$1(SpecializeTypes.scala:1700)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1702)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2571)
scala.reflect.internal.Trees.$anonfun$itransform$4(Trees.scala:1446)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:37)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:32)
scala.reflect.internal.Trees.itransform(Trees.scala:1445)
scala.reflect.internal.Trees.itransform$(Trees.scala:1374)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.api.Trees$Transformer.transform(Trees.scala:2563)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1806)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.api.Trees$Transformer.$anonfun$transformStats$1(Trees.scala:2597)
scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2595)
scala.reflect.internal.Trees.itransform(Trees.scala:1404)
scala.reflect.internal.Trees.itransform$(Trees.scala:1374)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.api.Trees$Transformer.transform(Trees.scala:2563)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1806)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.internal.Trees.$anonfun$itransform$2(Trees.scala:1401)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:37)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:32)
scala.reflect.internal.Trees.itransform(Trees.scala:1399)
scala.reflect.internal.Trees.itransform$(Trees.scala:1374)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.api.Trees$Transformer.transform(Trees.scala:2563)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1786)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.api.Trees$Transformer.$anonfun$transformStats$1(Trees.scala:2597)
scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2595)
scala.reflect.internal.Trees.itransform(Trees.scala:1404)
scala.reflect.internal.Trees.itransform$(Trees.scala:1374)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.api.Trees$Transformer.transform(Trees.scala:2563)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1806)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.api.Trees$Transformer.$anonfun$transformTrees$1(Trees.scala:2567)
scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2567)
scala.reflect.internal.Trees.itransform(Trees.scala:1385)
scala.reflect.internal.Trees.itransform$(Trees.scala:1374)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.api.Trees$Transformer.transform(Trees.scala:2563)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1806)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.internal.Trees.$anonfun$itransform$1(Trees.scala:1395)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:37)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:32)
scala.reflect.internal.Trees.itransform(Trees.scala:1394)
scala.reflect.internal.Trees.itransform$(Trees.scala:1374)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.api.Trees$Transformer.transform(Trees.scala:2563)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1806)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.api.Trees$Transformer.$anonfun$transformTrees$1(Trees.scala:2567)
scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2567)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.$anonfun$transform$25(SpecializeTypes.scala:1700)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:37)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transformTemplate$1(SpecializeTypes.scala:1700)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1702)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2571)
scala.reflect.internal.Trees.$anonfun$itransform$4(Trees.scala:1446)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:37)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:32)
scala.reflect.internal.Trees.itransform(Trees.scala:1445)
scala.reflect.internal.Trees.itransform$(Trees.scala:1374)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.api.Trees$Transformer.transform(Trees.scala:2563)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1806)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.api.Trees$Transformer.$anonfun$transformTrees$1(Trees.scala:2567)
scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2567)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.$anonfun$transform$25(SpecializeTypes.scala:1700)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:37)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transformTemplate$1(SpecializeTypes.scala:1700)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1702)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2571)
scala.reflect.internal.Trees.$anonfun$itransform$4(Trees.scala:1446)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:37)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:32)
scala.reflect.internal.Trees.itransform(Trees.scala:1445)
scala.reflect.internal.Trees.itransform$(Trees.scala:1374)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:28)
scala.reflect.api.Trees$Transformer.transform(Trees.scala:2563)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1806)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.api.Trees$Transformer.$anonfun$transformStats$1(Trees.scala:2597)
scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2595)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.$anonfun$transform$21(SpecializeTypes.scala:1683)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:37)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1681)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.reflect.api.Trees$Transformer.$anonfun$transformStats$1(Trees.scala:2597)
scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2595)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.$anonfun$transform$21(SpecializeTypes.scala:1683)
scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:37)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1681)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transform(SpecializeTypes.scala:1470)
scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:147)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.super$transformUnit(SpecializeTypes.scala:1475)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.$anonfun$transformUnit$1(SpecializeTypes.scala:1475)
scala.tools.nsc.transform.SpecializeTypes$SpecializationTransformer.transformUnit(SpecializeTypes.scala:1475)
scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:37)
scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:453)
scala.tools.nsc.Global$GlobalPhase.run(Global.scala:399)
scala.tools.nsc.transform.SpecializeTypes$SpecializationPhase.run(SpecializeTypes.scala:208)
scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1503)
scala.tools.nsc.Global$Run.compileUnits(Global.scala:1487)
scala.tools.nsc.Global$Run.compileSources(Global.scala:1480)
scala.tools.nsc.Global$Run.compileFiles(Global.scala:1588)
ammonite.interp.Compiler$$anon$1.compile(Compiler.scala:326)
ammonite.interp.CompilerLifecycleManager.compileClass(CompilerLifecycleManager.scala:146)
ammonite.interp.Interpreter.$anonfun$evaluateLine$2(Interpreter.scala:285)
ammonite.util.Catching.flatMap(Res.scala:115)
ammonite.interp.Interpreter.evaluateLine(Interpreter.scala:281)
ammonite.interp.Interpreter.$anonfun$processLine$6(Interpreter.scala:268)
ammonite.util.Res$Success.flatMap(Res.scala:62)
ammonite.interp.Interpreter.$anonfun$processLine$4(Interpreter.scala:252)
ammonite.util.Res$Success.flatMap(Res.scala:62)
ammonite.interp.Interpreter.$anonfun$processLine$2(Interpreter.scala:245)
ammonite.util.Catching.flatMap(Res.scala:115)
ammonite.interp.Interpreter.processLine(Interpreter.scala:244)
almond.Execute.$anonfun$ammResult$9(Execute.scala:227)
almond.internals.CaptureImpl.$anonfun$apply$2(CaptureImpl.scala:53)
scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
scala.Console$.withErr(Console.scala:196)
almond.internals.CaptureImpl.$anonfun$apply$1(CaptureImpl.scala:45)
scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
scala.Console$.withOut(Console.scala:167)
almond.internals.CaptureImpl.apply(CaptureImpl.scala:45)
almond.Execute.capturingOutput(Execute.scala:165)
almond.Execute.$anonfun$ammResult$8(Execute.scala:223)
almond.Execute.$anonfun$withClientStdin$1(Execute.scala:145)
scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
scala.Console$.withIn(Console.scala:230)
almond.Execute.withClientStdin(Execute.scala:141)
almond.Execute.$anonfun$ammResult$7(Execute.scala:223)
almond.Execute.withInputManager(Execute.scala:133)
almond.Execute.$anonfun$ammResult$6(Execute.scala:222)
ammonite.repl.Signaller.apply(Signaller.scala:28)
almond.Execute.interruptible(Execute.scala:182)
almond.Execute.$anonfun$ammResult$5(Execute.scala:221)
ammonite.util.Res$Success.flatMap(Res.scala:62)
almond.Execute.$anonfun$ammResult$1(Execute.scala:212)
almond.Execute.withOutputHandler(Execute.scala:156)
almond.Execute.ammResult(Execute.scala:212)
almond.Execute.apply(Execute.scala:296)
almond.ScalaInterpreter.execute(ScalaInterpreter.scala:120)
almond.interpreter.InterpreterToIOInterpreter.$anonfun$execute$2(InterpreterToIOInterpreter.scala:69)
cats.effect.internals.IORunLoop$.cats$effect$internals$IORunLoop$$loop(IORunLoop.scala:87)
cats.effect.internals.IORunLoop$RestartCallback.signal(IORunLoop.scala:355)
cats.effect.internals.IORunLoop$RestartCallback.apply(IORunLoop.scala:376)
cats.effect.internals.IORunLoop$RestartCallback.apply(IORunLoop.scala:316)
cats.effect.internals.IOShift$Tick.run(IOShift.scala:36)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
java.lang.Thread.run(Thread.java:748)
the program of generating the circuit didn't work even if I brought in correct solution into "???". and the error info is:
cmd8.sc:29: overloaded method value expect with alternatives:
(signal: chisel3.Bundle,expected: Map[String,BigInt])Boolean
(signal: chisel3.core.Aggregate,expected: IndexedSeq[BigInt])Boolean
(signal: chisel3.Bits,expected: BigInt,msg: => String)Boolean
(good: Boolean,msg: => String)Boolean
cannot be applied to (chisel3.core.SInt, AnyVal)
expect(c.io.fOfX, poly(select, x))
^
Compilation Failed
0_demo.ipynb
// same 3-point moving average filter as before
visualize(() => new FirFilter(8, Seq(1.U, 1.U, 1.U)))
[info] [0.000] Elaborating design...
[info] [0.071] Done elaborating.
Total FIRRTL Compile Time: 159.2 ms
java.io.IOException: Cannot run program "dot": error=2, No such file or directory
java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
scala.sys.process.ProcessBuilderImpl$Simple.run(ProcessBuilderImpl.scala:75)
scala.sys.process.ProcessBuilderImpl$AbstractBuilder.run(ProcessBuilderImpl.scala:104)
scala.sys.process.ProcessBuilderImpl$AbstractBuilder.run(ProcessBuilderImpl.scala:103)
dotvisualizer.FirrtlDiagrammer$.render(FirrtlDiagrammer.scala:93)
dotvisualizer.transforms.ModuleLevelDiagrammer.execute(ModuleLevelDiagrammer.scala:184)
dotvisualizer.transforms.MakeDiagramGroup.execute(MakeDiagramGroup.scala:48)
ammonite.$file.dummy.source.load$minusivy_2$Helper.generateVisualizations(Main.sc:155)
ammonite.$file.dummy.source.load$minusivy_2$Helper.visualize(Main.sc:173)
ammonite.$sess.cmd5$Helper.(cmd5.sc:1)
ammonite.$sess.cmd5$.(cmd5.sc:7)
ammonite.$sess.cmd5$.(cmd5.sc:-1)
java.io.IOException: error=2, No such file or directory
java.lang.UNIXProcess.forkAndExec(Native Method)
java.lang.UNIXProcess.(UNIXProcess.java:247)
java.lang.ProcessImpl.start(ProcessImpl.java:134)
java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
scala.sys.process.ProcessBuilderImpl$Simple.run(ProcessBuilderImpl.scala:75)
scala.sys.process.ProcessBuilderImpl$AbstractBuilder.run(ProcessBuilderImpl.scala:104)
scala.sys.process.ProcessBuilderImpl$AbstractBuilder.run(ProcessBuilderImpl.scala:103)
dotvisualizer.FirrtlDiagrammer$.render(FirrtlDiagrammer.scala:93)
dotvisualizer.transforms.ModuleLevelDiagrammer.execute(ModuleLevelDiagrammer.scala:184)
dotvisualizer.transforms.MakeDiagramGroup.execute(MakeDiagramGroup.scala:48)
ammonite.$file.dummy.source.load$minusivy_2$Helper.generateVisualizations(Main.sc:155)
ammonite.$file.dummy.source.load$minusivy_2$Helper.visualize(Main.sc:173)
ammonite.$sess.cmd5$Helper.(cmd5.sc:1)
ammonite.$sess.cmd5$.(cmd5.sc:7)
ammonite.$sess.cmd5$.(cmd5.sc:-1)
when i execute
./almond install
returns
Cannot find default main class. Specify one with -M or --main.
could anyone tell me what the main class for almond ?
Hi, I followed the installation guide on Mac.
But I keep facing dead kernel when I opened Jupyter.
Do you know how do debug this issue?
I've noticed that when all the test cases pass, the notebook outputs
test xxx Success: 0 tests passed in xxx cycles in xxx seconds xxx Hz
While the same message appears even if a test fails, though now accompanied with an exception getting thrown. I'm not sure if this behavior is intended, but I think a successful run should display # of tests passed (alternatively, 0 tests failed), with test failure displaying number of failures.
Note that the Name of our module is
cmd<#>WrapperHelperPassthrough
, which is an artifact of running this tutorial in Jupyter. In your normal code, its name should just bePassthrough
. This is an important lesson though - although Chisel does its best to preserve the names of your modules and other hardware components, sometimes it fails to do so.
I think, this is (luckily) not the case anymore:
On page 2.3_control_flow.ipynb, in the thrid polynomial circuit exercise, if I paste in the solution, it does not compile. Below is the message.
cmd2.sc:11: value \* is not a member of chisel3.SInt
square := io.x \* io.x
^cmd2.sc:13: value \* is not a member of chisel3.SInt
result := (square - (2.S \* io.x)) + 1.S
^cmd2.sc:15: value \* is not a member of chisel3.SInt
result := (2.S \* square) + (6.S \* io.x) + 3.S
^cmd2.sc:15: value \* is not a member of chisel3.SInt
result := (2.S \* square) + (6.S \* io.x) + 3.S
^cmd2.sc:17: value \* is not a member of chisel3.SInt
result := (4.S \* square) - (10.S \* io.x) - 5.S
^cmd2.sc:17: value \* is not a member of chisel3.SInt
result := (4.S \* square) - (10.S \* io.x) - 5.S
^cmd2.sc:29: not found: value poly
expect(c.io.fOfX, poly(select, x))
^Compilation Failed
Update for bootcamp attendees 9/6/19:
java -noverify -jar coursier bootstrap -r jitpack -i user -I user:sh.almond:scala-kernel-api_2.12.8:0.6.0 sh.almond:scala-kernel_2.12.8:0.6.0 --sources --default=true -o almond
almond --install
Originally posted by @sagark in #73 (comment)
Lines 30 - 40 in the Parameterized SR Exercise
The tester is calling step(1)
after checking the output of the SR, therefore checking the output immediately after giving an input without allowing the SR to advance. step(1)
should be before expect(c.io.out, state)
.
The solution given to the exercise is also connecting io.out := nextState
, which is incorrect as the SR now has an asynchronous output. This should be io.out := state
and will pass with the corrected tester.
Really minor point here.
In the exercise description it says,
"Outputs the parallel output of the shift register, with the most significant bit being the last element of the shift register and the least significant bit being the first element of the shift register. Cat may come in handy."
One solution using Cat is:
state := Cat(state, io.in)
io.out := state
the Solution lists:
val nextState = (state << 1) | io.in
state := nextState
io.out := state
Both are valid.
Maybe list both under Solution?
In Unapply chapter, following code generate an error :
def delay(p: SomeGeneratorParameters): Int = p match {
case sg @ SomeGeneratorParameters(_, _, true) => sg.totalWidth * 3
case SomeGeneratorParameters(_, sw, false) => sw * 2
}
println(delay(SomeGeneratorParameters(10, 10)))
println(delay(SomeGeneratorParameters(10, 10, true)))
The error :
cmd2.sc:1: not found: type SomeGeneratorParameters
def delay(p: SomeGeneratorParameters): Int = p match {
^cmd2.sc:6: not found: value SomeGeneratorParameters
val res2_1 = println(delay(SomeGeneratorParameters(10, 10)))
^cmd2.sc:7: not found: value SomeGeneratorParameters
val res2_2 = println(delay(SomeGeneratorParameters(10, 10, true)))
^cmd2.sc:2: not found: value SomeGeneratorParameters
case sg @ SomeGeneratorParameters(_, _, true) => sg.totalWidth * 3
^cmd2.sc:3: not found: value SomeGeneratorParameters
case SomeGeneratorParameters(_, sw, false) => sw * 2
^Compilation Failed
To make it working, I had to go to 3.5 lesson and copy paste SomeGeneratorParameters class just before delay() declaration :
case class SomeGeneratorParameters(
someWidth: Int,
someOtherWidth: Int = 10,
pipelineMe: Boolean = false
) {
require(someWidth >= 0)
require(someOtherWidth >= 0)
val totalWidth = someWidth + someOtherWidth
}
def delay(p: SomeGeneratorParameters): Int = p match {
case sg @ SomeGeneratorParameters(_, _, true) => sg.totalWidth * 3
case SomeGeneratorParameters(_, sw, false) => sw * 2
}
println(delay(SomeGeneratorParameters(10, 10)))
println(delay(SomeGeneratorParameters(10, 10, true)))
When loading a page in the instance of the bootcamp hosted online at: https://mybinder.org/v2/gh/freechipsproject/chisel-bootcamp/master it will spend a significant amount of time (~30 seconds) attempting to connect to the kernel, and then show the error:
"A connection to the notebook server could not be established. The notebook will continue trying to reconnect. Check your network connection or notebook server configuration."
At which point it attempts to restart the kernel and the entire issue repeats. The bootcamp was working until late last week on this exact same machine (using Firefox 73 on Windows 10) and network location, and I have replicated the issue on other people's machines.
getVerilog
used to take dut: () => Module
but is now dut: Module
. 3.6 didn't get updated so it is broken.
I'm getting an error trying to run code in the cell number 12 in the notebook:
val randomList = List(util.Random.nextInt(), util.Random.nextInt(), util.Random.nextInt(), util.Random.nextInt())
var listSum = 0
for (value <- randomList) {
listSum += value
}
println("sum is " + listSum)
error is:
cmd17.sc:1: object Random is not a member of package ammonite.util val randomList = List(util.Random.nextInt(), util.Random.nextInt(), util.Random.nextInt(), util.Random.nextInt()) ^cmd17.sc:1: object Random is not a member of package ammonite.util val randomList = List(util.Random.nextInt(), util.Random.nextInt(), util.Random.nextInt(), util.Random.nextInt()) ^cmd17.sc:1: object Random is not a member of package ammonite.util val randomList = List(util.Random.nextInt(), util.Random.nextInt(), util.Random.nextInt(), util.Random.nextInt()) ^cmd17.sc:1: object Random is not a member of package ammonite.util val randomList = List(util.Random.nextInt(), util.Random.nextInt(), util.Random.nextInt(), util.Random.nextInt()) ^Compilation Failed Compilation Failed
According to the Coursier log i should have
https://repo1.maven.org/maven2/com/lihaoyi/ammonite-util_2.11/1.2.1-12-bc459e3/ammonite-util_2.11-1.2.1-12-bc459e3.pom 100,0% [##########] 1,9 KiB (11,0 KiB / s)
installed as a dependency for almond.
The current FIRRTL stuff looks great. Judging by comments from attendees at CCC 2018, annotations are still confusing, though. Likely this can be improved with an example that shows:
More advanced concepts would have to touch on:
EliminateTargetPaths
Target
syntaxAs an step before this, #22 could be fixed and then referred back to.
Hi, sorry, it's me again.
When I'm working on section Setup of 2.5, it throws:
java.nio.file.NoSuchFileException: /Users/Powei/Dropbox/riscv/rocket-dsp-utils-assembly-1.0.jar
sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55)
sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:144)
java.nio.file.Files.readAttributes(Files.java:1737)
ammonite.ops.stat$full$.apply(Model.scala:69)
ammonite.ops.package$.fileData(package.scala:105)
ammonite.runtime.SpecialClassLoader.jarSignature(ClassLoaders.scala:155)
ammonite.runtime.SpecialClassLoader.add(ClassLoaders.scala:141)
ammonite.runtime.Frame$$anonfun$addClasspath$2.apply(ClassLoaders.scala:35)
ammonite.runtime.Frame$$anonfun$addClasspath$2.apply(ClassLoaders.scala:35)
scala.collection.immutable.List.foreach(List.scala:392)
ammonite.runtime.Frame.addClasspath(ClassLoaders.scala:35)
ammonite.interp.Interpreter.handleEvalClasspath(Interpreter.scala:671)
ammonite.interp.Interpreter$$anon$2$$anon$1.handleClasspath(Interpreter.scala:697)
ammonite.interp.Interpreter$DefaultLoadJar.doHandleClasspath(Interpreter.scala:838)
ammonite.interp.Interpreter$DefaultLoadJar.cp(Interpreter.scala:845)
$sess.cmd17Wrapper$Helper.(cmd17.sc:2)
$sess.cmd17Wrapper.(cmd17.sc:329)
To execute the first cell of 2.1_first_module inside the environment behind the proxy i have tomake ammonite shell proxy aware and found this solution:
System.setProperty("https.proxyHost","proxy.example.com")
System.setProperty("https.proxyPort","3128")
^---- should be added before importing chisel packages
I haven't tried running the jupyter itself with JAVA_OPTS="-Dhttps.proxyHost=proxy.example.com -Dhttps.proxyPort=3128"
https://github.com/freechipsproject/chisel-bootcamp#local-installation---maclinux
cd jupyter-scala && ./jupyter-scala
doesn't work:
% cd jupyter-scala && ./jupyter-scala
zsh: no such file or directory: ./jupyter-scala
Probably because alexarchambault/jupyter-scala
repo is moved to almond-sh/almond
and changed a lot.
on an up-to-date Fedora box (java 1.8.0 shipping with the distro), when I try to run the segment defining "class MyManyDynamicElementVecFir", I get:
scala.reflect.internal.MissingRequirementError: object java.lang.Object in compiler mirror not found.
scala.reflect.internal.MissingRequirementError$.signal(MissingRequirementError.scala:17)
scala.reflect.internal.MissingRequirementError$.notFound(MissingRequirementError.scala:18)
scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:53)
scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:45)
scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:45)
scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:66)
scala.reflect.internal.Mirrors$RootsBase.getClassByName(Mirrors.scala:102)
scala.reflect.internal.Mirrors$RootsBase.getRequiredClass(Mirrors.scala:105)
scala.reflect.internal.Definitions$DefinitionsClass.ObjectClass$lzycompute(Definitions.scala:257)
scala.reflect.internal.Definitions$DefinitionsClass.ObjectClass(Definitions.scala:257)
scala.reflect.internal.Definitions$DefinitionsClass.init(Definitions.scala:1390)
scala.tools.nsc.Global$Run.(Global.scala:1242)
ammonite.interp.Compiler$$anon$2.(Compiler.scala:266)
...
Nothing inside 2.5 works from that point forward.
@grebe @stevobailey - can we go ahead and just delete the cell since its contents seem to be orphaned?
"class GrayCounter(val bitwidth: Int) extends NoGlitchCounter(bitwidth) {\n",
" // todo\n",
"}\n",
"\n",
"class RingCounter(maxCount: Int) extends NoGlitchCounter(maxCount) {\n",
" // todo\n",
"}"
Take the example of 0_demo.ipynb
:
Inspect Element gives the following HTML output
<img src="http://localhost:8888/files/%20build/MovingAverage368251718.dot.svg?_xsrf=2%7Cb4c0efbf%7C0f080edcfcae8c04d70c24d5ae5b69a7%7C1590588518&1590637312836" alt="Module View" ;"="">
Apparently the path files/build
is mistyped as files/%20build
. The bug doesn't manifest itself when I use Jupyter Notebook. I'm not sure if it's a bug of Jupyter Lab or this repository.
This issue is cross-posted at jupyterlab.
HI, in example of optional reset in 3.1, it said "If resetValue = None, which is the default, the register will have no reset value and be initialized to garbage. ".
However, the generated code still contains an always block and doesn't have any reset. The code now is not synthesizable and may be buggy if used. Why don't we just use assertion and don't generate code in that situation?
module cmd9WrapperHelperDelayBy1( // @[:@3.2]
input clock, // @[:@4.4]
input reset, // @[:@5.4]
input [15:0] io_in, // @[:@6.4]
output [15:0] io_out // @[:@6.4]
);
reg [15:0] reg$; // @[cmd9.sc 9:12:@8.4]
reg [31:0] _RAND_0;
assign io_out = reg$;
`ifdef RANDOMIZE
integer initvar;
initial begin
`ifndef verilator
#0.002 begin end
`endif
`ifdef RANDOMIZE_REG_INIT
_RAND_0 = {1{$random}};
reg$ = _RAND_0[15:0];
`endif // RANDOMIZE_REG_INIT
end
`endif // RANDOMIZE
always @(posedge clock) begin
reg$ <= io_in;
end
endmodule
For easy Verilog generation, getVerilog
is great, but it leads to questions like: "How do I import getVerilog
?" once people migrate out of the bootcamp.
I think this can be trivially switched throughout the Bootcamp to always use Driver.emitVerilog
.
Also, probably Driver.emit
for FIRRTL (CHIRRTL) generation. It may make sense to add an API in Driver
for emitFirrtl
so that this isn't terrifically confusing for the bootcamp.
The URL for the Diplomacy site in the following section of text:
DspBlocks use diplomatic interfaces from rocket. This site (https://www.lowrisc.org/docs/diplomacy/) has a good overview of the basic of diplomacy, but don't worry too much about how it's working for this example.
yields a "404 page not found" error.
The perhaps next closest reference I could find was:
https://github.com/Intensivate/learning-journey/wiki/Diplomacy
It also has a pointer to the same web page:
This is based on the Main Diplomacy Page (https://www.lowrisc.org/docs/diplomacy/)
WaveDrom has a lot of cool options for visualizing waveforms. This may make sense to investigate how we can use this to better show the activity of a circuit.
partialFunc3 is composed of partialFunc2 (which is defined for i == 2), and partialFunc1 (which is defined for i == 1). Therefore, it partialFunc3 is fine for i == 1 and i == 2, but not i == 0. The current tutorial lists i == 1 as failing.
In the solution, the output depends on io.in, but in the diagram it doesn't.
As this tutorial grows it becomes harder to figure out if errors are introduced. This is a call for a UnitTest facility to be created. Doing some research I found here
I have played with their example tests and it seems to work
Setup
Before we start, we need to download and imports the dependencies needed for the demo.
Please run the following two cell blocks by either pressing SHIFT+ENTER on your keyboard or the Run button in the menu.
val path = System.getProperty("user.dir") + "/source/load-ivy.sc"
interp.load.module(ammonite.ops.Path(java.nio.file.FileSystems.getDefault().getPath(path)))
Compiling C:\Workspace\chisel-bootcamp\Main.sc
Main.sc:2: not found: value coursierapi
coursierapi.MavenRepository.of("https://oss.sonatype.org/content/repositories/snapshots")
^
ammonite.util.CompilationError: Compilation Failed
ammonite.interp.Interpreter$$anon$1$load$.module(Interpreter.scala:716)
ammonite.$sess.cmd0$Helper.<init>(cmd0.sc:2)
ammonite.$sess.cmd0$.<init>(cmd0.sc:7)
ammonite.$sess.cmd0$.<clinit>(cmd0.sc:-1)
Follow up from #43
@
sign in a match/case statement.Hi, in my case, 2_5 DspBlock example doesn't work.
my environment is notebook server 6.0.0, python 3.7.3, scala lib 2.12.8 and Java 1.8.0_221. is anyone running this example?
here is my error log.
cmd2.sc:20: Symbol 'type chisel3.experimental.MultiIOModule' is missing from the classpath.
This symbol is required by 'class freechips.rocketchip.diplomacy.LazyModuleImp'.
Make sure that type MultiIOModule is in your classpath and check for conflicting dependencies with -Ylog-classpath
.
A full rebuild may help if 'LazyModuleImp.class' was compiled against an incompatible version of chisel3.experimental.
lazy val module = new LazyModuleImp(this) {
^cmd2.sc:30: not found: value Reg
val taps = Reg(Vec(nFilters, Vec(nTaps, UInt(8.W))))
^cmd2.sc:30: not found: value Vec
val taps = Reg(Vec(nFilters, Vec(nTaps, UInt(8.W))))
^cmd2.sc:30: not found: value Vec
val taps = Reg(Vec(nFilters, Vec(nTaps, UInt(8.W))))
^cmd2.sc:30: not found: value UInt
val taps = Reg(Vec(nFilters, Vec(nTaps, UInt(8.W))))
^cmd2.sc:30: value W is not a member of Int
val taps = Reg(Vec(nFilters, Vec(nTaps, UInt(8.W))))
^cmd2.sc:34: value U is not a member of Int
RegField.r(64, nFilters.U, RegFieldDesc("nFilters", "Number of filter lanes"))
^cmd2.sc:44: not found: value Module
val fir = Module(new MyManyDynamicElementVecFir(nTaps))
^cmd2.sc:44: not found: type MyManyDynamicElementVecFir
val fir = Module(new MyManyDynamicElementVecFir(nTaps))
^cmd2.sc:55: not found: type UInt
outs.reduce((x: UInt, y: UInt) => Cat(y, x))
^cmd2.sc:55: not found: type UInt
outs.reduce((x: UInt, y: UInt) => Cat(y, x))
^cmd2.sc:55: not found: value Cat
outs.reduce((x: UInt, y: UInt) => Cat(y, x))
^Compilation Failed
I downloaded coursier at first, then run the follow prompt and I meet
`PS C:\Users\28614\Desktop> java -noverify -jar coursier launch -r jitpack -i user -I user:sh.almond:scala-kernel-api_2.12.8:0.2.1 sh.almond:scala-kernel_2.12.8:0.2.1 --sources --default=true -- --install'
Unrecognized argument: --sources
Unrecognized argument: --default=true
what the correct prompt is ?
While doing the bootcamp when i tried to access the links provided in the notebook, they did not resolve. I assume there was an update on where the cheatsheet and API is now.
Bootcamp module: 2.2_comb_logic
Links broken:
I was able to find the API documentation at https://www.chisel-lang.org/api/latest/
I was not able to find the cheatsheet.
chipsalliance/chisel#679 has an issue about this, I agree with @azidar that it is a good candidate for including in the bootcamp.
it's weird compile result is occurred In the '2.2_comb_logic' chapter
In the case of addition of this example, io.out_add should be 4'h8(or 4'b1000), but it's 4'h0 in the generated verilog code.
I want to make sure whether I missed something or not.
or, is this a kind of bug?
for your reference, I ran this one on Jupyter notebook
I have seen coding examples when a case object extends abstract class. Can you please explain what happens behind the scenes of such construct. like following line from midas repo.
case object AXIDebugPrint extends Field[Boolean]
In Rocket Configuration, we often see things like
Config(site,here,up) =>
Can you please add a chapter that explains this beast?
The 2.1 First Module introduces the peekPostTester. It also uses a Scala Println() to show test completion.
It does not however show the most useful testing construct of all --- the magical Printf!
I've gotten feedback from users who keep trying to use Println() to debug their Chisel code and became very confused.
Thanks and keep up the good work!
With a local install of the Chisel Bootcamp launched using "jupyter notebook" on Arch Linux, in the chapter 2.4 on Sequential Logic I recieve the following error when attempting to run the imports for the chapter:
"val path = System.getProperty("user.dir") + "/source/load-ivy.sc"
interp.load.module(ammonite.ops.Path(java.nio.file.FileSystems.getDefault().getPath(path)))
Compiling /home/jsaunders/Build/chisel-bootcamp/Main.sc
Downloading https://repo1.maven.org/maven2/edu/berkeley/cs/chisel3_2.13/3.2.0/chisel3_2.13-3.2.0.pom
Downloaded https://repo1.maven.org/maven2/edu/berkeley/cs/chisel3_2.13/3.2.0/chisel3_2.13-3.2.0.pom
Downloading https://repo1.maven.org/maven2/edu/berkeley/cs/chisel3_2.13/3.2.0/chisel3_2.13-3.2.0.pom.sha1
Downloaded https://repo1.maven.org/maven2/edu/berkeley/cs/chisel3_2.13/3.2.0/chisel3_2.13-3.2.0.pom.sha1
ammonite.util.CompilationError: Failed to resolve ivy dependencies:Error downloading edu.berkeley.cs:chisel3_2.13:3.2.0
not found: /home/jsaunders/.ivy2/local/edu.berkeley.cs/chisel3_2.13/3.2.0/ivys/ivy.xml
not found: https://repo1.maven.org/maven2/edu/berkeley/cs/chisel3_2.13/3.2.0/chisel3_2.13-3.2.0.pom
ammonite.interp.Interpreter$$anon$1$load$.module(Interpreter.scala:716)
ammonite.$sess.cmd0$Helper.(cmd0.sc:2)
ammonite.$sess.cmd0$.(cmd0.sc:7)"
The same occurs with other chapters using the same source for loading dependencies.
In module 2.4
val io = IO(new Bundle {
val in = Input(UInt(12.W))
val out = Output(UInt(5.W))
})
// register bitwidth is inferred from io.out
io.out := RegNext(io.in + 1.U)
In the verilog generated, the register bitwidth is inferred according to the maximum bitwidth of 'io.in'(12 bit) and not 'io.out'(5 bit)
reg [11:0] _T_13;
The comment which you have added is misleading and it will make confusion in Module 3.2 , while using RegNext with mutable.ArrayBuffers
The description of the neural net has thresholds of 0, but the solution uses 0.5.
The binder service stops working recently. Would someone please check it?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.