Время ожидания () @ Chisel3 Tester - PullRequest
2 голосов
/ 06 мая 2020

Хочу подтвердить, что тайминги iotester chisel3. Давненько iotester не трогал, а сейчас делаю тестирование. Затем я перепутал время вывода на expect (). Например;

val reg = RegInit(Bool(), false.B)
...
reg = !io.input
io.output = reg

Это можно проверить с помощью iotester следующим образом:

poke(c.io.input, 0)
step(1)
expect(c.io.output, 0)//Latch the input on reg
step(1)
expect(c.io.output, 1)//Output the reg

Я правильно понимаю?

- NaN

1 Ответ

1 голос
/ 06 мая 2020

Не совсем так. Вот заполненный пример

import chisel3._
import chiseltest._
import chiseltest.ChiselScalatestTester
import org.scalatest.FreeSpec

class Toggle extends MultiIOModule {
  val in = IO(Input(Bool()))
  val out = IO(Output(Bool()))

  val reg = RegInit(false.B)
  reg := ! in
  out := reg
}

class ToggleTester extends FreeSpec with ChiselScalatestTester {
  "test toggle" in {
    test(new Toggle()) { c =>
      c.in.poke(false.B)    // clock is low
      c.out.expect(false.B) // clock stil low, reg still at initial value
      c.clock.step()        // clock goes high
      c.out.expect(true.B)  // register has toggled
    }
  }
}

, когда часы только что опустились на низкий уровень. Кстати, в этом примере используется новая испытательная привязь chiseltest. Я рекомендую использовать его вместо старых chisel-iotesters.

...