来自小伙伴的问题——纯组合逻辑怎么仿真,如何让time走起来?
贴出一个很简单的demo:
case class addDemo() extends Component {
  val io=new Bundle{
    val data1=in UInt(8 bits)
    val data2=in UInt(8 bits)
    val sum=out UInt(8 bits)
  }
  io.sum:=io.data1+io.data2
}
这里是一个很简单的加法器,纯组合逻辑。
SpinalHDL的仿真是先生成的Verilog,随后针对Verilog进行的仿真。SpinalHDL提供了一个类似我们在Verilog仿真中常用的“#time”的一个sleep方法:
// Sleep 1000 units of time
sleep(1000)
那么我们这里的仿真代码就可以这么来写:
object addDemo extends App{
  SimConfig
    .compile(addDemo())
    .doSim{dut=>
      dut.io.data1#=32
      dut.io.data2#=32
      sleep(10)
      println(s"${dut.io.sum.toInt}")
    }
}
执行一下:
[Progress] Verilator compilation started
[Progress] Verilator compilation done in 2754.278 ms
[Progress] Start addDemo test simulation with seed 988219442
64
[Done] Simulation done in 3.703 ms
Process finished with exit code 0
END
作者:玉骐
原文链接:https://mp.weixin.qq.com/s/BR2oKmzer0kv5SPr-LYc0w
微信公众号:
推荐阅读
更多SpinalHDL技术干货请关注Spinal FPGA专栏。