долото-тестеры SteppedHWIOTester с несколькими тактовыми доменами

Попытка протестировать asyncFifo, написанный в chisel с помощью SteppedHWIOTester, вот так

class AsyncFifo(width: Int, depth: Int, syncStages: Int) extends Module {
  val length = log2Ceil(depth)
  val io = IO(new Bundle {
    val clk_write = Input(Clock())
    val clk_read = Input(Clock())
    val rstn_write = Input(Bool())
    val rstn_read = Input(Bool())
    val deq = Decoupled(UInt(width.W))
    val enq = Flipped(Decoupled(UInt(width.W)))
  })
  val memory = Mem(depth, UInt(width.W))
  val reader: reader = withClock(io.clk_read)( Module(new reader(width, depth, syncStages)) )
  val writer: writer = withClock(io.clk_write)( Module(new writer(width, depth, syncStages)) )
  //some connections here...
}
class AsyncFifoHardWareTester extends SteppedHWIOTester {
  val device_under_test = Module(new AsyncFifo(32, 32, 2))
  val c = device_under_test
  enable_all_debug = true

  step(2)
  poke(c.io.enq.bits, 0x11L)
  poke(c.io.enq.valid, 0x1L)
  step(2)
  poke(c.io.enq.bits, 0x11L)
  poke(c.io.enq.valid, 0x0L)
  step(2)
  expect(c.io.deq.valid, 0x11L)
  expect(c.io.deq.bits, 0x0L)
}

Тестер генерирует vcd, где clk_write и clk_read управляются нулем. Есть ли способ объявить асинхронные часы и их соотношение в HW или в тестере PeekPoke?


person SpaceCowboy max    schedule 31.10.2017    source источник


Ответы (1)


К сожалению, на данный момент ответ отрицательный, репозиторий chisel-testers не имеет средств для тестирования нескольких часов. Команда chisel усердно работает над очисткой и улучшением chisel-testers. См.: Chisel3 Проблемы: Объединение тестировщиков, чтобы увидеть некоторые из мотивирующих дискуссий. Также в процессе переписывания интерпретатора firtl, который будет иметь явную поддержку нескольких часов, но это, вероятно, произойдет через пару месяцев.

Люди добились этого сами. Вы также можете задать этот вопрос в группе пользователей Chisel.

person Chick Markley    schedule 01.11.2017