blob: 2702aaec443ac89c8936ccd84aaeea7ab0a4ee57 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
package ChiselTests
import Chisel._
class GCD extends Module {
val io = new Bundle {
val a = Bits(INPUT, 16)
val b = Bits(INPUT, 16)
val e = Bool(INPUT)
val z = Bits(OUTPUT, 16)
val v = Bool(OUTPUT)
}
val x = Reg(Bits(width = 16))
val y = Reg(Bits(width = 16))
when (x > y) { x := x -% y }
.otherwise { y := y -% x }
when (io.e) { x := io.a; y := io.b }
io.z := x
io.v := y === Bits(0)
}
class GCDTester(c: GCD) extends Tester(c) {
val (a, b, z) = (64, 48, 16)
do {
val first = if (t == 0) 1 else 0;
poke(c.io.a, a)
poke(c.io.b, b)
poke(c.io.e, first)
step(1)
} while (t <= 1 || peek(c.io.v) == 0)
expect(c.io.z, z)
}
|