|
- package Ex0
-
- import chisel3._
- import chisel3.experimental._
- import chisel3.iotesters.PeekPokeTester
- import org.scalatest.{Matchers, FlatSpec}
- import TestUtils._
-
- import scala.collection.immutable.{ Vector => _ }
-
- class SVGSNestedSpec extends FlatSpec with Matchers {
-
- behavior of "SumOrSquare"
-
- it should "Make some sweet pngs" in {
- wrapTester(
- chisel3.iotesters.Driver(() => new SumOrSquare(5, 7)) { c =>
- new SumOrSquareTester(c)
- } should be(true)
- )
- }
-
- }
-
- class MyCounter(countTo: Int) extends MultiIOModule {
- val io = IO( new Bundle {
- val out = Output(UInt(32.W))
- })
-
- val debug = IO( new Bundle {
- val counterState = Output(UInt(32.W))
- })
-
- val reg_a = RegInit(0.U(8.W))
- val incremented = reg_a + 1.U
-
- when(incremented === countTo.U){
- reg_a := 0.U
- }.otherwise{
- reg_a := reg_a + 1.U
- }
-
- io.out := incremented
-
- debug.counterState := reg_a
- }
-
-
- class SumOrSquare(countToA: Int, countToB: Int) extends MultiIOModule {
- val io = IO( new Bundle {
- val out = Output(UInt(32.W))
- })
-
-
- val debug = IO( new Bundle {
- val counter_a = Output(UInt(32.W))
- val counter_b = Output(UInt(32.W))
- val square = Output(UInt(32.W))
- val sum = Output(UInt(32.W))
- })
-
-
- val counterA = Module(new MyCounter(countToA))
- val counterB = Module(new MyCounter(countToB))
-
- val sum = counterA.io.out + counterA.io.out
- val square = counterA.io.out * counterA.io.out
-
- when(counterB.io.out % 2.U === 0.U){
- io.out := sum
- }.otherwise{
- io.out := square
- }
-
-
- debug.counter_a := counterA.debug.counterState
- debug.counter_b := counterB.debug.counterState
- debug.square := square
- debug.sum := sum
- }
-
-
- class SumOrSquareTester(c: SumOrSquare) extends PeekPokeTesterLogger(c) {
- override def ioLoggers = List(
- "" -> c.debug,
- "" -> c.io
- )
-
- for(ii <- 0 until 10){
- step(1)
- }
-
- writeLog
- }
|