diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index 602ebef..d4e7d93 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -25,6 +25,7 @@ if __name__ == '__main__': #add_tc_2_runlist(base.tc11()) #add_tc_2_runlist(base.tc12()) add_tc_2_runlist(base.tc13()) + add_tc_2_runlist(base.tc14()) #add_tc_2_runlist(broadcast.tc1()) diff --git a/tb/shinTest/testcase/base.py b/tb/shinTest/testcase/base.py index 3043ca3..ba396ba 100644 --- a/tb/shinTest/testcase/base.py +++ b/tb/shinTest/testcase/base.py @@ -919,7 +919,9 @@ def tc13(): gen_file_def = "base_tc13" sm_idx = 0 - tc_des = "测试事件寄存器组。先要同步一下时间,然后测试Latch0的锁定。\\n" + tc_des = "测试事件寄存器组。先要同步一下时间,然后测试Latch0、Latch1的锁定。\\n"\ + + "间隔5000ns,以仿真周期算,大概是31~32个clock。需要检查波形文件。\\n"\ + + "latch0、latch1每个设备设置不一样,交替设置,相互印证。" @@ -1018,4 +1020,110 @@ def tc13(): genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap) + return gen_file_def + + + +def tc14(): + genPkt = GenPkt() + + gen_file_def = "base_tc14" + sm_idx = 0 + tc_des = "测试事件寄存器组。先同步,事件寄存器组会抓取写入SMx、读出SMx的时间;SPI侧读入、写入的时间。\\n"\ + + "需要检查波形文件。" + + + + genPkt.clean() + genPkt.setPktType(0) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + genPkt.addSubPkt(0x0, 0, 0x0, 0xc, 12, b'\0'*12) + + + genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des) + +genEnableInsertTimeCode(0xa)) + + sm_idx = 0 + + genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx) + +genWriteTransPktCode(gen_file_def, sm_idx) + +genTrgTransPktCode(gen_file_def, sm_idx) + +genReadAckPktCode(gen_file_def, sm_idx) + +genCheckInsertTimeCode() + ) + + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + #------------------------------------------------------------------------- + #>>>>>>设置顺序地址 + genPkt.clean() + genPkt.setPktType(0) + + m2s_size = 8 + s2m_size = 16 + + gen_file_def_ap = gen_file_def + "_rw01" + genPkt.addBeforeExc(genMessageCode("--读取事件寄存器组") + +genIFRwDataCode(0, 0x500, False, 0x48) + +genIFRwDataCode(1, 0x500, False, 0x48) + +genIFRwDataCode(2, 0x500, False, 0x48) + +genIFRwDataCode(3, 0x500, False, 0x48) + +genIFRwDataCode(4, 0x500, False, 0x48) + + +genSlvSMWriteData(1, 1, s2m_size, list(range(s2m_size))) + +genSlvSMWriteData(2, 1, s2m_size, list(range(s2m_size))) + +genSlvSMWriteData(3, 1, s2m_size, list(range(s2m_size))) + +genSlvSMWriteData(4, 1, s2m_size, list(range(s2m_size))) + ) + + + genPkt.addSubPkt(0, 0, 0x302, 0xe, 2, [m2s_size, 0]) + genPkt.addSubPkt(0, 0, 0x0800, 0xe, m2s_size, list(range(m2s_size))) + genPkt.addSubPkt(1, 0, 0x1000, 0x0, s2m_size, [0, ] * s2m_size) + genPkt.addSubPkt(2, 0, 0x1000, 0x0, s2m_size, [0, ] * s2m_size) + genPkt.addSubPkt(3, 0, 0x1000, 0x0, s2m_size, [0, ] * s2m_size) + genPkt.addSubPkt(4, 0, 0x1000, 0x0, s2m_size, [0, ] * s2m_size) + + genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx) + +genWriteTransPktCode(gen_file_def_ap, sm_idx) + +genTrgTransPktCode(gen_file_def_ap, sm_idx) + +genReadAckPktCode(gen_file_def_ap, sm_idx) + +genMessageCode("--读取中断") + +genIFRwDataCode(0, 0x74, False, 4) + +genIFRwDataCode(1, 0x74, False, 4) + +genIFRwDataCode(2, 0x74, False, 4) + +genIFRwDataCode(3, 0x74, False, 4) + +genIFRwDataCode(4, 0x74, False, 4) + + +genMessageCode("--清除中断") + +genIFRwDataCode(0, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) + +genIFRwDataCode(1, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) + +genIFRwDataCode(2, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) + +genIFRwDataCode(3, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) + +genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) + + +genMessageCode("--读取中断") + +genIFRwDataCode(0, 0x74, False, 4) + +genIFRwDataCode(1, 0x74, False, 4) + +genIFRwDataCode(2, 0x74, False, 4) + +genIFRwDataCode(3, 0x74, False, 4) + +genIFRwDataCode(4, 0x74, False, 4) + + +genSlvSMReadData(1, 0, m2s_size) + +genSlvSMReadData(2, 0, m2s_size) + +genSlvSMReadData(3, 0, m2s_size) + +genSlvSMReadData(4, 0, m2s_size) + + +genMessageCode("--读取事件寄存器组") + +genIFRwDataCode(0, 0x500, False, 0x48) + +genIFRwDataCode(1, 0x500, False, 0x48) + +genIFRwDataCode(2, 0x500, False, 0x48) + +genIFRwDataCode(3, 0x500, False, 0x48) + +genIFRwDataCode(4, 0x500, False, 0x48) + + +genTcEndFrameCode(gen_file_def) + ) + + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap) + return gen_file_def \ No newline at end of file