chisel-bootcamp
chisel-bootcamp copied to clipboard
Lot's of TODO's
- [ ] 3.3: Add better description of an Arbiter, and the arguments to the Arbiter constructor
- [ ] 3.4: Never define scan, or what the Left or Right means
- [ ] 3.6: No description about the
@
sign in a match/case statement. - [ ] 3.6: () => new MyModule passed to getVerilog is broken everywhere
- [ ] 3.6: SomeGeneratorParameters is from 3.5, need to move it over
- [ ] 3.6: Type generic shift register example has a clonetype warning
- [ ] 3.6: Type generics with typeclasses, add link to dsptools readme/documentation
- [ ] Link to ScalaDoc, Wiki, Cheatsheet, and Github in every module
- [ ] 3.6: Fix ShiftRegister[UInt](..) text, thinks its a link, need \'s
- [ ] 4.4: Remove extra comments in imports
- [ ] 4.4: Remove firrtl.ir import in loadivy2.sc, fixup stringing type declaration
3.6: "Exercise: Mac as Object": solution suggests "you could also instantiate the Mac from above and connect the IOs to arguments". It'd be nice to actually provide a working example of that, since I can't figure out how one would clone the type of the apply method's return type:
object Mac {
def apply[T <: Data : Ring](a: T, b: T, c: T): T = {
val m = new Mac(a.cloneType, ???) // <--- assuming m.io.out is wider than a, b, and c
m.io.a := a
m.io.b := b
m.io.c := c
m.io.out
}
}
-
In most cases one should call
chiselTypeOf(...)
instead of.cloneType()
-
If you don't care about the output's width explicitly one option could just be
new Mac(chiselTypeOf(a), UInt())
?
~~Lot's of TODO's~~ Lots of TODOs: I think this issue should be pinned on top and be tagged with help-wanted.
Just now I went through 3.6. The good point is that I have some knowledge on functional programming languages, and many of the features in Scala seem natural to me; however for newbies they are hard to understand (so they need to be completed). Many places are not refined, and I even find that the "Exercise: Integrator" has been filled with the provided solution, which cannot pass compilation. Solution for 3.6 "Exercise: Mac as Object" (as mentioned by @gsomlo) is also broken.
I'm also new to Chisel and so far I don't have the ability to fix them though...