代码之家  ›  专栏  ›  技术社区  ›  SpaceCowboy max

具有多时钟域的凿子测试器

  •  3
  • SpaceCowboy max  · 技术社区  · 7 年前

    试着测试asyncFifo用这样的StephedHwiotester在凿子中编写的代码

    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_写入和clk_读取由零驱动。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Chick Markley    7 年前

    不幸的是,目前的答案是否定的,凿子测试器repo没有测试多个时钟的设施。凿子团队正在努力清理和改进凿子测试仪,请参阅: Chisel3 Issues: Testers Unification 看一些激励性的讨论。此外,firrtl解释器的重写也在进行中,该解释器将明确支持多个时钟,但这可能需要几个月的时间。

    人们都是自己做这件事的。你也可以试试这个问题 Chisel Users Group