异步加法器
此示例使用组合逻辑创建一个 Component
,对 3 个操作数执行一些简单的算术运算。
测试平台执行 100 次以下步骤:
将
a
,b
, 和c
初始化为 0..255 范围内的随机整数。激励 DUT 匹配
a
,b
,c
的输入。等待 1 个仿真步长(以允许输入传播)。
检查输出是否正确。
import spinal.core._
import spinal.core.sim._
import scala.util.Random
object SimAsynchronousExample {
class Dut extends Component {
val io = new Bundle {
val a, b, c = in UInt (8 bits)
val result = out UInt (8 bits)
}
io.result := io.a + io.b - io.c
}
def main(args: Array[String]): Unit = {
SimConfig.withWave.compile(new Dut).doSim{ dut =>
var idx = 0
while(idx < 100) {
val a, b, c = Random.nextInt(256)
dut.io.a #= a
dut.io.b #= b
dut.io.c #= c
sleep(1) // Sleep 1 simulation timestep
assert(dut.io.result.toInt == ((a + b - c) & 0xFF))
idx += 1
}
}
}
}