diff options
| author | Jim Lawson | 2015-11-06 14:40:30 -0800 |
|---|---|---|
| committer | Jim Lawson | 2015-11-06 14:40:30 -0800 |
| commit | 85f3006d7eac44ff21111d0f7ece1015164c0fe0 (patch) | |
| tree | 60775f61ca8a481631ba67554a995ef1822b2ec0 /src/test/scala/chiselTests/VendingMachine.scala | |
| parent | 730c951f4271120931062df674a9cd1303d226ad (diff) | |
| parent | 7fe61318433a8ecaac80ef2b547a88ab9dc04aec (diff) | |
Merge pull request #59 from ucb-bar/testing-improvements
Further testing improvements
Diffstat (limited to 'src/test/scala/chiselTests/VendingMachine.scala')
| -rw-r--r-- | src/test/scala/chiselTests/VendingMachine.scala | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/test/scala/chiselTests/VendingMachine.scala b/src/test/scala/chiselTests/VendingMachine.scala new file mode 100644 index 00000000..8a21cb2e --- /dev/null +++ b/src/test/scala/chiselTests/VendingMachine.scala @@ -0,0 +1,67 @@ +// See LICENSE for license details. + +package chiselTests +import Chisel._ + +class VendingMachine extends Module { + val io = new Bundle { + val nickel = Bool(dir = INPUT) + val dime = Bool(dir = INPUT) + val valid = Bool(dir = OUTPUT) } + val c = UInt(5, width = 3) + val sIdle :: s5 :: s10 :: s15 :: sOk :: Nil = Enum(UInt(), 5) + val state = Reg(init = sIdle) + when (state === sIdle) { + when (io.nickel) { state := s5 } + when (io.dime) { state := s10 } + } + when (state === s5) { + when (io.nickel) { state := s10 } + when (io.dime) { state := s15 } + } + when (state === s10) { + when (io.nickel) { state := s15 } + when (io.dime) { state := sOk } + } + when (state === s15) { + when (io.nickel) { state := sOk } + when (io.dime) { state := sOk } + } + when (state === sOk) { + state := sIdle + } + io.valid := (state === sOk) +} + +/* +class VendingMachineTester(c: VendingMachine) extends Tester(c) { + var money = 0 + var isValid = false + for (t <- 0 until 20) { + val coin = rnd.nextInt(3)*5 + val isNickel = coin == 5 + val isDime = coin == 10 + + // Advance circuit + poke(c.io.nickel, int(isNickel)) + poke(c.io.dime, int(isDime)) + step(1) + + // Advance model + money = if (isValid) 0 else (money + coin) + isValid = money >= 20 + + // Compare + expect(c.io.valid, int(isValid)) + } +} +*/ + +class VendingMachineSpec extends ChiselPropSpec { + + property("VendingMachine should elaborate") { + elaborate { new VendingMachine } + } + + ignore("VendingMachineTester should return the correct result") { } +} |
