来自小伙伴的问题——纯组合逻辑怎么仿真,如何让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专栏。