joe 发表于 2021-9-1 17:14:34

chisel调试代码执行及显示顺序

主要实验源代码:
class TestParamAdderModuleTests(m:TestParamAdderModule) extends PeekPokeTester(m) {
poke(m.io.a8,1)
poke(m.io.b8,2)
poke(m.io.a16,11)
poke(m.io.b16,22)
step(1)
expect(m.io.out8,3)//正确值
expect(m.io.out16,33)//正确值
//expect(m.io.o,m.io.b8) //java.util.NoSuchElementException: None.get
expect(m.io.o,4) //不正确的值
expect(m.io.o,44) //不正确的值
}
object test {
def main(args: Array): Unit = {
    //https://github.com/U201114010/chisel3
    chisel3.iotesters.Driver(()=>new TestParamAdderModule)(t=>new TestParamAdderModuleTests(t))
}
}

当启动一次debug时:
Elaborating design...
false
Bool(OpResult in TestParamAdderModule)
Done elaborating.
Total FIRRTL Compile Time: 711.5 ms
Total FIRRTL Compile Time: 67.4 ms
End of dependency graph
Circuit state created

然后代码中的对应各种构造器代码及相对应的各种被调用函数等都会被执行一次,
class TestParamAdderModuleTests(m:TestParamAdderModule) extends PeekPokeTester(m) {
。。。各种测试逻辑代码比如poke,expect都会被扫描一次,但step不会被扫描
        expect(m.io.o,4) 此句代码是我特意使之出现错误,原因正确值是2而不是4
       expect(m.io.o,44)
}
TestParamAdderModuleTests的构造器代码被扫描一遍之后,控制台在Circuit state created下面再显示:
SEED 1630484099915
然后调试正式进入class TestParamAdderModuleTests中的第一句代码处开始执行(如果在此句打断点将会停在此句)
注意:此次里面的step代码将会被执行
当执行expect(m.io.o,4)和expect(m.io.o,44)之后,显示下面FAIL测试信息:
EXPECT AT 1   io_o got 2 expected 4 FAIL
EXPECT AT 1   io_o got 2 expected 44 FAIL
当执行完main中的:chisel3.iotesters.Driver(()=>new TestParamAdderModule)(t=>new TestParamAdderModuleTests(t))
显示:
test TestParamAdderModule Success: 2 tests passed in 6 cycles taking 594.702503 seconds
RAN 1 CYCLES FAILED FIRST AT CYCLE 1

页: [1]
查看完整版本: chisel调试代码执行及显示顺序