Skip to content

Commit ebcced5

Browse files
committed
Merge branch 'master' into release; update to 3.1.0 release.
2 parents 0cc9e8f + 2990411 commit ebcced5

34 files changed

+71
-55
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Chisel Tutorials (Release branch)
1+
Chisel Tutorials (Development branch)
22
================
33

44
These are the tutorials for [Chisel](https://github.com/ucb-bar/chisel3).
@@ -14,7 +14,7 @@ Getting the Repo
1414
$ git clone https://github.com/ucb-bar/chisel-tutorial.git
1515
$ cd chisel-tutorial
1616
$ git fetch origin
17-
$ git checkout release
17+
$ git checkout master
1818

1919

2020
Executing Chisel

build.sbt

+8-8
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ def scalacOptionsVersion(scalaVersion: String): Seq[String] = {
44
// switch to support our anonymous Bundle definitions:
55
// https://github.com/scala/bug/issues/10047
66
CrossVersion.partialVersion(scalaVersion) match {
7-
case Some((2, scalaMajor: Int)) if scalaMajor < 12 => Seq()
7+
case Some((2, scalaMajor: Long)) if scalaMajor < 12 => Seq()
88
case _ => Seq("-Xsource:2.11")
99
}
1010
}
@@ -16,7 +16,7 @@ def javacOptionsVersion(scalaVersion: String): Seq[String] = {
1616
// Java 7 compatible code for Scala 2.11
1717
// for compatibility with old clients.
1818
CrossVersion.partialVersion(scalaVersion) match {
19-
case Some((2, scalaMajor: Int)) if scalaMajor < 12 =>
19+
case Some((2, scalaMajor: Long)) if scalaMajor < 12 =>
2020
Seq("-source", "1.7", "-target", "1.7")
2121
case _ =>
2222
Seq("-source", "1.8", "-target", "1.8")
@@ -26,21 +26,21 @@ def javacOptionsVersion(scalaVersion: String): Seq[String] = {
2626

2727
organization := "edu.berkeley.cs"
2828

29-
version := "3.0.0"
29+
version := "3.1.0"
3030

3131
name := "chisel-tutorial"
3232

33-
scalaVersion := "2.11.11"
33+
scalaVersion := "2.11.12"
3434

35-
crossScalaVersions := Seq("2.11.11", "2.12.3")
35+
crossScalaVersions := Seq("2.11.12", "2.12.4")
3636

3737
scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked", "-language:reflectiveCalls")
3838

3939
// Provide a managed dependency on X if -DXVersion="" is supplied on the command line.
40-
// The following are the default development versions, not the "release" versions.
40+
// The following are the current "release" versions.
4141
val defaultVersions = Map(
42-
"chisel3" -> "3.0.+",
43-
"chisel-iotesters" -> "1.1.+"
42+
"chisel3" -> "3.1.+",
43+
"chisel-iotesters" -> "1.2.+"
4444
)
4545

4646
libraryDependencies ++= (Seq("chisel3","chisel-iotesters").map {

project/build.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version = 0.13.16
1+
sbt.version = 1.1.1

run-examples.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#!/usr/bin/env bash
22
args=$@
3-
sbt -v "test:run-main examples.Launcher $args"
3+
sbt -v "test:runMain examples.Launcher $args"

run-problem.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#!/usr/bin/env bash
22
args=$@
3-
sbt "test:run-main problems.Launcher $args"
3+
sbt "test:runMain problems.Launcher $args"

run-solution.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#!/usr/bin/env bash
22
args=$@
3-
sbt "test:run-main solutions.Launcher $args"
3+
sbt "test:runMain solutions.Launcher $args"

src/main/scala/examples/Router.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class Packet extends Bundle {
3232
*
3333
* @param n is the number of fanned outputs for the routed packet
3434
*/
35-
class RouterIO(n: Int) extends Bundle {
35+
class RouterIO(val n: Int) extends Bundle {
3636
val read_routing_table_request = DeqIO(new ReadCmd())
3737
val read_routing_table_response = EnqIO(UInt(Router.addressWidth.W))
3838
val load_routing_table_request = DeqIO(new WriteCmd())

src/main/scala/examples/Stack.scala

-4
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,6 @@ package examples
44
import chisel3._
55
import chisel3.util.log2Ceil
66

7-
import scala.collection.mutable.HashMap
8-
import scala.collection.mutable.{Stack => ScalaStack}
9-
import scala.util.Random
10-
117
class Stack(val depth: Int) extends Module {
128
val io = IO(new Bundle {
139
val push = Input(Bool())

src/main/scala/problems/VecShiftRegisterSimple.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class VecShiftRegisterSimple extends Module {
1515
})
1616

1717
val initValues = Seq.fill(4) { 0.U(8.W) }
18-
val delays = RegInit(Vec(initValues))
18+
val delays = RegInit(VecInit(initValues))
1919

2020
// Implement below ----------
2121

src/main/scala/solutions/Mul.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class Mul extends Module {
2121
for (i <- 0 until 16)
2222
for (j <- 0 until 16)
2323
mulsValues += (i * j).asUInt(8.W)
24-
val tbl = Vec(mulsValues)
24+
val tbl = VecInit(mulsValues)
2525
io.z := tbl((io.x << 4.U) | io.y)
2626

2727
}

src/main/scala/solutions/VecShiftRegisterParam.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class VecShiftRegisterParam(val n: Int, val w: Int) extends Module {
1616
})
1717

1818
val initValues = Seq.fill(n) { 0.U(w.W) }
19-
val delays = RegInit(Vec(initValues))
19+
val delays = RegInit(VecInit(initValues))
2020

2121
for (i <- n-1 to 1 by -1) {
2222
delays(i) := delays(i - 1)

src/main/scala/solutions/VecShiftRegisterSimple.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class VecShiftRegisterSimple extends Module {
1515
})
1616

1717
val initValues = Seq.fill(4) { 0.U(8.W) }
18-
val delays = RegInit(Vec(initValues))
18+
val delays = RegInit(VecInit(initValues))
1919

2020
delays(0) := io.in
2121
delays(1) := delays(0)

src/test/scala/examples/Adder4Tests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
54
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
65

76
class Adder4Tests(c: Adder4) extends PeekPokeTester(c) {

src/test/scala/examples/AdderTests.scala

+6-5
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,20 @@ package examples
44
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
55

66
class AdderTests(c: Adder) extends PeekPokeTester(c) {
7-
for (t <- 0 until 4) {
8-
val rnd0 = rnd.nextInt(c.n)
9-
val rnd1 = rnd.nextInt(c.n)
10-
val rnd2 = rnd.nextInt(1)
7+
for (t <- 0 until (1 << (c.n + 1))) {
8+
val rnd0 = rnd.nextInt(1 << c.n)
9+
val rnd1 = rnd.nextInt(1 << c.n)
10+
val rnd2 = rnd.nextInt(2)
1111

1212
poke(c.io.A, rnd0)
1313
poke(c.io.B, rnd1)
1414
poke(c.io.Cin, rnd2)
1515
step(1)
1616
val rsum = rnd0 + rnd1 + rnd2
1717
val mask = BigInt("1"*c.n, 2)
18+
1819
expect(c.io.Sum, rsum & mask)
19-
expect(c.io.Cout, rsum % 1)
20+
expect(c.io.Cout, ((1 << c.n) & rsum) >> c.n)
2021
}
2122
}
2223

src/test/scala/examples/ByteSelectorTests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
54
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
65

76
class ByteSelectorTests(c: ByteSelector) extends PeekPokeTester(c) {

src/test/scala/examples/CombinationalTests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
54
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
65

76
class CombinationalTests(c: Combinational) extends PeekPokeTester(c) {

src/test/scala/examples/DarkenTests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
54
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
65

76
class DarkenTests(c: Darken, infile: java.io.InputStream, outfilename: String) extends PeekPokeTester(c) {

src/test/scala/examples/EnableShiftRegisterTests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
54
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
65

76
class EnableShiftRegisterTests(c: EnableShiftRegister) extends PeekPokeTester(c) {

src/test/scala/examples/FullAdderTests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
54
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
65

76
class FullAdderTests(c: FullAdder) extends PeekPokeTester(c) {

src/test/scala/examples/FunctionalityTests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
54
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
65

76
class FunctionalityTests(c: Functionality) extends PeekPokeTester(c) {

src/test/scala/examples/GCDTests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
// See LICENSE.txt for license details.
2-
32
package examples
43

54
import chisel3.iotesters.{ChiselFlatSpec, Driver, PeekPokeTester}

src/test/scala/examples/HiLoMultiplierTests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
54
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
65

76
class HiLoMultiplierTests(c: HiLoMultiplier) extends PeekPokeTester(c) {

src/test/scala/examples/Image.scala

-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
5-
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
64
import scala.io.Source
75
import java.io.{File, FileOutputStream, InputStream}
86

src/test/scala/examples/LifeTests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
54
import chisel3.iotesters.{Driver, PeekPokeTester}
65
import org.scalatest.FreeSpec
76

src/test/scala/examples/LogShifterTests.scala

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
5-
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
4+
import chisel3.iotesters.PeekPokeTester
65

76
class LogShifterTests(c: LogShifter) extends PeekPokeTester(c) {
87
}

src/test/scala/examples/ParityTests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
54
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
65

76
class ParityTests(c: Parity) extends PeekPokeTester(c) {

src/test/scala/examples/ResetShiftRegisterTests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
54
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
65

76
class ResetShiftRegisterTests(c: ResetShiftRegister) extends PeekPokeTester(c) {

src/test/scala/examples/RouterTests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
// See LICENSE for license details.
2-
32
package examples
43

54
import chisel3._

src/test/scala/examples/ShiftRegisterTests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
54
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
65

76
class ShiftRegisterTests(c: ShiftRegister) extends PeekPokeTester(c) {

src/test/scala/examples/SimpleALUTests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
54
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
65

76
class SimpleALUTests(c: SimpleALU) extends PeekPokeTester(c) {

src/test/scala/examples/StackTests.scala

+45-5
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
54
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
6-
import scala.collection.mutable.HashMap
7-
import scala.collection.mutable.{Stack => ScalaStack}
8-
import scala.util.Random
5+
import scala.collection.mutable.{ArrayStack => ScalaStack}
96

10-
class StackTests(c: Stack) extends PeekPokeTester(c) {
7+
class StackTestsOrig(c: Stack) extends PeekPokeTester(c) {
118
var nxtDataOut = 0
129
var dataOut = 0
1310
val stack = new ScalaStack[Int]()
1411

1512
for (t <- 0 until 16) {
13+
println(s"Tick $t")
1614
val enable = rnd.nextInt(2)
1715
val push = rnd.nextInt(2)
1816
val pop = rnd.nextInt(2)
@@ -38,6 +36,48 @@ class StackTests(c: Stack) extends PeekPokeTester(c) {
3836
expect(c.io.dataOut, dataOut)
3937
}
4038
}
39+
class StackTests(c: Stack) extends PeekPokeTester(c) {
40+
var nxtDataOut = 0
41+
var dataOut = 0
42+
val stack = new ScalaStack[Int]()
43+
44+
poke(c.io.push, 0)
45+
poke(c.io.pop, 1)
46+
poke(c.io.dataIn, 232)
47+
poke(c.io.en, 1)
48+
49+
step(1)
50+
51+
println(s"dataOut ${peek(c.io.dataOut)}")
52+
53+
poke(c.io.push, 1)
54+
poke(c.io.pop, 1)
55+
poke(c.io.dataIn, 90)
56+
poke(c.io.en, 1)
57+
58+
step(1)
59+
step(1)
60+
61+
println(s"dataOut ${peek(c.io.dataOut)}")
62+
63+
poke(c.io.push, 1)
64+
poke(c.io.pop, 1)
65+
poke(c.io.dataIn, 33)
66+
poke(c.io.en, 1)
67+
68+
step(1)
69+
step(1)
70+
71+
println(s"dataOut ${peek(c.io.dataOut)}")
72+
73+
poke(c.io.push, 0)
74+
poke(c.io.pop, 1)
75+
poke(c.io.dataIn, 22)
76+
poke(c.io.en, 1)
77+
78+
println(s"dataOut ${peek(c.io.dataOut)}")
79+
// expect(c.io.dataOut, dataOut)
80+
}
4181

4282
class StackTester extends ChiselFlatSpec {
4383
behavior of "Stack"

src/test/scala/examples/TblTests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
54
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
65

76
class TblTests(c: Tbl) extends PeekPokeTester(c) {

src/test/scala/examples/VecSearchTests.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// See LICENSE.txt for license details.
22
package examples
33

4-
54
import chisel3.iotesters.{PeekPokeTester, Driver, ChiselFlatSpec}
65

76
class VecSearchTests(c: VecSearch) extends PeekPokeTester(c) {

src/test/scala/utils/TutorialRunner.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
// See LICENSE.txt for license details.
2-
32
package utils
43

54
import scala.collection.mutable.ArrayBuffer

0 commit comments

Comments
 (0)