From dbf0f0f39515fca25089905f0843ce7ce4ae65ea Mon Sep 17 00:00:00 2001 From: bacon Date: Fri, 8 Aug 2025 09:40:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3ebmmu08=E7=9A=84=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tb/shinTest/ShinTopSpiTb.v | 40 ++++--------------- tb/shinTest/gen_pkt.py | 10 ++--- tb/shinTest/pyutils/GenPkt.py | 1 - tb/shinTest/testcase/ebmmu.py | 4 +- .../testcase_result/ebmmu_tc08_result.log | 8 ++-- 5 files changed, 19 insertions(+), 44 deletions(-) diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 4dcd653..7e16816 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -65,9 +65,6 @@ module ShinTopSpiTb( wire [4:0] io_int_sig; - reg _reset_deadline_ind; - reg _deadline_ind; - reg[31:0] _deadline_ind_ctr; reg latch0; reg latch1; @@ -260,10 +257,6 @@ initial begin clk8x = 0; reset = 1; - _reset_deadline_ind = 0; - _deadline_ind = 0; - _deadline_ind_ctr = 0; - latch0 = 0; latch1 = 0; @@ -304,22 +297,6 @@ begin $dumpvars(0, ShinTopSpiTb);//tb模块名称 end -always @(posedge clock or posedge _reset_deadline_ind) begin - if (_reset_deadline_ind == 1) begin - _deadline_ind_ctr <= 0; - #30 _reset_deadline_ind <= 0; - end - else begin - _deadline_ind_ctr <= _deadline_ind_ctr + 1; - end - if (_deadline_ind_ctr >= 22000) begin - _deadline_ind <= 1; - end - else begin - _deadline_ind <= 0; - end -end - always @(posedge reset) begin _reset_deactive <= 1'b0; end @@ -732,7 +709,10 @@ task wait_comm_finished(); txBuf[0] = 8'h00; txBuf[1] = 8'h78; txBuf[2] = `SPI_WRITE; - txBuf[3] = 8'h03; + txBuf[3] = 8'hFF; + txBuf[4] = 8'hFF; + txBuf[5] = 8'hFF; + txBuf[6] = 8'hFF; length = 8'h04; idx = `IF_IQSPI(0); @@ -764,10 +744,11 @@ task wait_comm_finished(); isReq <= 0; @( negedge isBusy) #1000 - begin - + begin end + #2000 + //$display("%x %x", rxBuf[3], rxBuf[6]); if ((rxBuf[3] & 8'h02) == 8'h02) begin @@ -871,13 +852,6 @@ initial begin spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(2)) ); spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(3)) ); spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(4)) ); - - /* - $display("------------------------------ start! %t", $realtime); - _reset_deadline_ind = 1; - @(posedge _deadline_ind) #5 begin end - $display("------------------------------ End! %t", $realtime); - */ end begin:CHECK_INTERRUPT_CFG_REG diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index ad4b8a0..b31db84 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -38,9 +38,9 @@ if __name__ == '__main__': - add_tc_2_runlist(broadcast.tc1()) - add_tc_2_runlist(broadcast.tc2()) - add_tc_2_runlist(broadcast.tc3()) + #add_tc_2_runlist(broadcast.tc1()) + #add_tc_2_runlist(broadcast.tc2()) + #add_tc_2_runlist(broadcast.tc3()) #add_tc_2_runlist(sync.tc1()) #add_tc_2_runlist(sync.tc2()) @@ -56,7 +56,7 @@ if __name__ == '__main__': #add_tc_2_runlist(ebmmu.tc5()) #add_tc_2_runlist(ebmmu.tc6()) #add_tc_2_runlist(ebmmu.tc7()) - #add_tc_2_runlist(ebmmu.tc8()) + add_tc_2_runlist(ebmmu.tc8()) #add_tc_2_runlist(ebmmu.tc9()) #add_tc_2_runlist(ebmmu.tc10()) #add_tc_2_runlist(ebmmu.tc11()) @@ -70,7 +70,7 @@ if __name__ == '__main__': #add_tc_2_runlist(ebmmu.tc19()) - add_tc_2_runlist(watchdog.tc1()) + #add_tc_2_runlist(watchdog.tc1()) environment.teardown() diff --git a/tb/shinTest/pyutils/GenPkt.py b/tb/shinTest/pyutils/GenPkt.py index 0736367..99072af 100644 --- a/tb/shinTest/pyutils/GenPkt.py +++ b/tb/shinTest/pyutils/GenPkt.py @@ -234,7 +234,6 @@ def genTrgTransPktCode(gen_name, sm_idx, wlog=True): def genReadAckPktCode(gen_name, sm_idx, wlog=True): return '''\n//等待回包\n'''\ - + '''_reset_deadline_ind = 1;\n'''\ + '''wait_comm_finished();\n'''\ + f'''$fdisplay(spidata_file, ">>读取回包,使用SM{sm_idx}:");\n'''\ + '''%s( (`MST_RX%d_ADDR), (`SPI_READ), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name,) diff --git a/tb/shinTest/testcase/ebmmu.py b/tb/shinTest/testcase/ebmmu.py index 354d5f3..5267fa3 100644 --- a/tb/shinTest/testcase/ebmmu.py +++ b/tb/shinTest/testcase/ebmmu.py @@ -939,8 +939,10 @@ def tc8(): gen_file_def = "ebmmu_tc08" sm_idx = 0 - tc_des = "每个从站都使用ebmmu[0],共4个mmu,从0x1000_0000位置向后对齐,每个设备都映射0x800,每个设备占128个字节。\\n" \ + tc_des = "每个从站都使用ebmmu[0],从0x1000_0000位置向后对齐,每个设备都映射0x800,每个设备占128个字节。\\n" \ + "主站使用1个子包,将4个设备的数据一次性写下去。相当于使用单播命令模拟广播命令。\\n"\ + + "ebmmu放出的权限是0x1(只读),但子包的权限要求是只写,两相冲突,子包拒绝执行。\\n"\ + + "从站也无法得到真正有效的数据。\\n"\ + "检查内容:ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序" #-------------------------------------------------------------------------- diff --git a/tb/shinTest/testcase_result/ebmmu_tc08_result.log b/tb/shinTest/testcase_result/ebmmu_tc08_result.log index 18e5171..466e2b1 100644 --- a/tb/shinTest/testcase_result/ebmmu_tc08_result.log +++ b/tb/shinTest/testcase_result/ebmmu_tc08_result.log @@ -27,10 +27,10 @@ 16'h0300 8'h01 16'h0020 8'h00 8'h00 8'h80 8'h00 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 16'h0300 8'h01 16'h0020 8'h00 8'h00 8'h80 8'h00 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 16'h0300 8'h01 16'h0020 8'h00 8'h00 8'h80 8'h00 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx -16'h0800 8'h01 16'h0080 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 8'h33 -16'h0800 8'h01 16'h0080 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 -16'h0800 8'h01 16'h0080 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 8'h40 -16'h0800 8'h01 16'h0080 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 8'h29 +16'h0800 8'h01 16'h0080 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx +16'h0800 8'h01 16'h0080 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx +16'h0800 8'h01 16'h0080 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx +16'h0800 8'h01 16'h0080 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 8'hxx 16'h0074 8'h01 16'h0004 8'h03 8'h00 8'h06 8'h00 16'h0074 8'h01 16'h0004 8'h00 8'h00 8'h0f 8'h00 16'h0074 8'h01 16'h0004 8'h00 8'h00 8'h0f 8'h00