十二 · 2021年11月15日

让仿真sleep下—纯组合逻辑仿真

来自小伙伴的问题——纯组合逻辑怎么仿真,如何让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
微信公众号:
 title=

推荐阅读

更多SpinalHDL技术干货请关注Spinal FPGA专栏。
推荐阅读
关注数
1581
内容数
133
用SpinalHDL提升生产力
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息