From eb4c46a31073a611152ab0e9693c79f9ac9b3684 Mon Sep 17 00:00:00 2001 From: bacon Date: Fri, 22 Aug 2025 07:08:59 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=B0=83=E6=95=B4wd=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=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 | 2 +- tb/shinTest/gen_pkt.py | 6 ++--- tb/shinTest/testcase/watchdog.py | 2 +- .../testcase_result/watchdog_tc01_result.log | 25 ------------------- 4 files changed, 5 insertions(+), 30 deletions(-) delete mode 100644 tb/shinTest/testcase_result/watchdog_tc01_result.log diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 7dd1b23..9bfe261 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -44,7 +44,7 @@ module ShinTopSpiTb( `define ALL_DEV_NUM (`DEV_NUM + 1) // slave + master `define SPI_CSN_NUM (`ALL_DEV_NUM * 3) -`define HW_SERIAL 0 //(48'h4c5850303031) +`define HW_SERIAL 0 //48'h31303050584c //(48'h4c5850303031) `define IQSPI_PINS(N) (`N*4+3):(`N*4) `define EQSPI_PINS(N) ((`N + `ALL_DEV_NUM)*4+3):((`N + `ALL_DEV_NUM)*4) `define IQSPI_MISO(N) qspi_miso[`IQSPI_PINS(`N)] diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index e14c493..0fa994a 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -10,7 +10,7 @@ if __name__ == '__main__': #add_tc_2_runlist(errorPkt.tc2()) #add_tc_2_runlist(errorPkt.tc3()) #add_tc_2_runlist(errorPkt.tc4()) - add_tc_2_runlist(errorPkt.tc5()) + #add_tc_2_runlist(errorPkt.tc5()) #add_tc_2_runlist(base.tc1()) #add_tc_2_runlist(base.tc2()) @@ -73,8 +73,8 @@ if __name__ == '__main__': - #add_tc_2_runlist(watchdog.tc1()) - #add_tc_2_runlist(watchdog.tc2()) + add_tc_2_runlist(watchdog.tc1()) + add_tc_2_runlist(watchdog.tc2()) environment.teardown() diff --git a/tb/shinTest/testcase/watchdog.py b/tb/shinTest/testcase/watchdog.py index 2fda012..46cf8c6 100644 --- a/tb/shinTest/testcase/watchdog.py +++ b/tb/shinTest/testcase/watchdog.py @@ -64,7 +64,7 @@ def watchdog_test_sm_wr_timeout(tc_id, wd_id): +genIFRwDataCode(2, 0x074, False, 0x04) +genIFRwDataCode(3, 0x074, False, 0x04) +genIFRwDataCode(4, 0x074, False, 0x04) - +"#560000\n" + +"#700000\n" +genIFRwDataCode(1, 0x400, False, 0x04) +genIFRwDataCode(1, 0x400, True, 4, [0xff, 0xff, 0xff, 0xff]) +genIFRwDataCode(1, 0x400, False, 0x04) diff --git a/tb/shinTest/testcase_result/watchdog_tc01_result.log b/tb/shinTest/testcase_result/watchdog_tc01_result.log deleted file mode 100644 index 3ef21fa..0000000 --- a/tb/shinTest/testcase_result/watchdog_tc01_result.log +++ /dev/null @@ -1,25 +0,0 @@ -16'h0404 8'h00 16'h0004 8'h02 8'h00 8'h00 8'h00 -16'h040c 8'h00 16'h0004 8'h10 8'h00 8'h00 8'h00 -16'h0078 8'h00 16'h0004 8'hff 8'hff 8'hff 8'hff -16'h0078 8'h00 16'h0004 8'hff 8'hff 8'hff 8'hff -16'h0078 8'h00 16'h0004 8'hff 8'hff 8'hff 8'hff -16'h0078 8'h00 16'h0004 8'hff 8'hff 8'hff 8'hff -16'h0400 8'h00 16'h0004 8'hff 8'hff 8'hff 8'hff -16'h0074 8'h01 16'h0004 8'h00 8'h00 8'h00 8'h00 -16'h0074 8'h01 16'h0004 8'h00 8'h00 8'h00 8'h00 -16'h0074 8'h01 16'h0004 8'h00 8'h00 8'h00 8'h00 -16'h0074 8'h01 16'h0004 8'h00 8'h00 8'h00 8'h00 -16'h0074 8'h01 16'h0004 8'h00 8'h00 8'h00 8'h00 -16'h0400 8'h01 16'h0004 8'h00 8'h00 8'h00 8'h00 -16'h0302 8'h00 16'h0002 8'h66 8'h00 -16'h0306 8'h00 16'h0002 8'h66 8'h00 -16'h1000 8'h00 16'h0066 8'h06 8'h20 8'h00 8'h00 8'h00 8'h00 8'h03 8'h02 8'he0 8'h02 8'h80 8'h00 8'h00 8'h00 8'h00 8'h04 8'h08 8'h00 8'h10 8'h50 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 -16'h0020 8'h00 16'h0001 8'h01 -16'h0800 8'h01 16'h0066 8'h06 8'h20 8'h00 8'h04 8'h00 8'h00 8'h03 8'h02 8'he0 8'h02 8'h80 8'h00 8'h00 8'h04 8'h00 8'h04 8'h08 8'h00 8'h10 8'h50 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h01 -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'h10 8'h00 8'h0f 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 -16'h0074 8'h01 16'h0004 8'h00 8'h00 8'h0f 8'h00 -16'h0400 8'h01 16'h0004 8'h02 8'h00 8'h00 8'h00 From d2899df8b4d15d5ac3e46c2eca4c84c2b2bf5f8e Mon Sep 17 00:00:00 2001 From: Ruige Lee Date: Fri, 22 Aug 2025 15:38:51 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E7=9C=8B=E9=97=A8=E7=8B=97=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E5=AF=84=E5=AD=98=E5=99=A8=E5=88=9D=E5=A7=8B=E5=80=BC?= =?UTF-8?q?=E6=94=B9=E4=B8=BA0xffffffff=EF=BC=8C=E7=9C=8B=E9=97=A8?= =?UTF-8?q?=E7=8B=97=E8=AE=A1=E6=95=B0=E5=99=A8=E9=80=BB=E8=BE=91=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/scala/backBoard/shin/Interface.scala | 10 +++++----- src/main/scala/backBoard/shin/ShinTop.scala | 9 +++++---- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/scala/backBoard/shin/Interface.scala b/src/main/scala/backBoard/shin/Interface.scala index b921a9a..2b46c29 100644 --- a/src/main/scala/backBoard/shin/Interface.scala +++ b/src/main/scala/backBoard/shin/Interface.scala @@ -1060,10 +1060,10 @@ trait InterfaceWdt{ this: InterfaceBase => for( i <- 0 until 18 ){ cReg.wdtTarCnt(i) := Cat( - RegEnable( dataw, 0.U(8.W), isEnW & addrw === ( "h40b".U (16.W) + (4*i).U ) ), - RegEnable( dataw, 0.U(8.W), isEnW & addrw === ( "h40a".U (16.W) + (4*i).U ) ), - RegEnable( dataw, 0.U(8.W), isEnW & addrw === ( "h409".U (16.W) + (4*i).U ) ), - RegEnable( dataw, 0.U(8.W), isEnW & addrw === ( "h408".U (16.W) + (4*i).U ) ), + RegEnable( dataw, "hFF".U(8.W), isEnW & addrw === ( "h40b".U (16.W) + (4*i).U ) ), + RegEnable( dataw, "hFF".U(8.W), isEnW & addrw === ( "h40a".U (16.W) + (4*i).U ) ), + RegEnable( dataw, "hFF".U(8.W), isEnW & addrw === ( "h409".U (16.W) + (4*i).U ) ), + RegEnable( dataw, "hFF".U(8.W), isEnW & addrw === ( "h408".U (16.W) + (4*i).U ) ), ) } } @@ -1201,7 +1201,7 @@ trait InterfaceSystem{ this: InterfaceBase => (io.intMstTrig(1) & cReg.intEnable(1)) | //主站接收完成 (isLocalSyncInt & cReg.intEnable(2)) | //主站发送周期到了 (isLatchEvent & cReg.intEnable(3)) | //latch Event - (~RegNext(isWdtTrigAndEnable, false.B) & isWdtTrigAndEnable & cReg.intEnable(4)) | //主站接收看门狗溢出 + (isWdtTrigAndEnable & cReg.intEnable(4)) | //主站接收看门狗溢出 (0 until 8).map{ i => io.intSlvTrig(i) & cReg.intEnable(8+i)}.reduce(_|_) | //从站SM请求 (0 until 4).map{ i => io.intTransEnd(i) & cReg.intEnable(16+i)}.reduce(_|_) | //传输完成请求 16,17,18,19 isMstRecCRCErr | //override //主站状态下19为上行crc接收错误 //不会同时发生 diff --git a/src/main/scala/backBoard/shin/ShinTop.scala b/src/main/scala/backBoard/shin/ShinTop.scala index 8c39a01..d4e9bf5 100644 --- a/src/main/scala/backBoard/shin/ShinTop.scala +++ b/src/main/scala/backBoard/shin/ShinTop.scala @@ -422,7 +422,7 @@ trait ShinTopWatchDog{ this: ShinTopBase => for( i <- 0 until 16 ){ when( isWdtSMEnable(i) & (wdtSMCnt(i) < interface.io.cReg.wdtTarCnt(i+1)) ){ wdtSMCnt(i) := wdtSMCnt(i) + 1.U - } .elsewhen( ~isWdtSMEnable(i) ){ + } .elsewhen( ~isWdtSMEnable(i) || (wdtSMCnt(i) >= interface.io.cReg.wdtTarCnt(i+1)) ){ wdtSMCnt(i) := 0.U } @@ -446,7 +446,7 @@ trait ShinTopWatchDog{ this: ShinTopBase => when( isWdtRec2RtnEnable & (wdtRec2RtnCnt < interface.io.cReg.wdtTarCnt(0)) ){ wdtRec2RtnCnt := wdtRec2RtnCnt + 1.U - } .elsewhen( ~isWdtRec2RtnEnable ){ + } .elsewhen( ~isWdtRec2RtnEnable || (wdtRec2RtnCnt >= interface.io.cReg.wdtTarCnt(0)) ){ wdtRec2RtnCnt := 0.U } @@ -460,8 +460,9 @@ trait ShinTopWatchDog{ this: ShinTopBase => when( interface.io.cReg.wdtEnable.extract(17) & (wdtRec2RecCnt < interface.io.cReg.wdtTarCnt(17)) ){ wdtRec2RecCnt := wdtRec2RecCnt + 1.U } .elsewhen( - ~interface.io.cReg.wdtEnable.extract(17) | - downCDRIn.io.axis.fire + ~interface.io.cReg.wdtEnable.extract(17) || + downCDRIn.io.axis.fire || + (wdtRec2RecCnt >= interface.io.cReg.wdtTarCnt(17)) ){ wdtRec2RecCnt := 0.U } From b2da5cfb642559a8c14e122d663b5af303ff5702 Mon Sep 17 00:00:00 2001 From: Ruige Lee Date: Fri, 22 Aug 2025 17:26:52 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=B8=85=E7=A1=AC=E4=BB=B6=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E4=B8=AD=E6=96=AD=E5=A4=9A=E6=89=93=E4=B8=80=E6=8B=8D?= =?UTF-8?q?=E4=BB=A5=E4=BC=98=E5=8C=96cdrin=E7=9A=84=E6=97=B6=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/scala/backBoard/shin/ShinTop.scala | 8 ++++---- src/main/scala/backBoard/shin/SlaveParser.scala | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/scala/backBoard/shin/ShinTop.scala b/src/main/scala/backBoard/shin/ShinTop.scala index d4e9bf5..d1e9372 100644 --- a/src/main/scala/backBoard/shin/ShinTop.scala +++ b/src/main/scala/backBoard/shin/ShinTop.scala @@ -380,10 +380,10 @@ trait ShinTopSlave{ this: ShinTopBase => slaveParser.io.intHWClr(0) := interface.io.intHWTrig(0) & interface.io.intHWClr(0) slaveParser.io.intHWClr(1) := interface.io.intHWTrig(1) & interface.io.intHWClr(1) - downCDRIn.reset := reset.asBool | ( interface.io.intHWTrig(0) & interface.io.intHWClr(0) ) - upCDRIn.reset := reset.asBool | ( interface.io.intHWTrig(1) & interface.io.intHWClr(1) ) - downCDROut.reset := reset.asBool | ( interface.io.intHWTrig(0) & interface.io.intHWClr(0) ) - upCDROut.reset := reset.asBool | ( interface.io.intHWTrig(1) & interface.io.intHWClr(1) ) + downCDRIn.reset := reset.asBool | RegNext( interface.io.intHWTrig(0) & interface.io.intHWClr(0) ) + upCDRIn.reset := reset.asBool | RegNext( interface.io.intHWTrig(1) & interface.io.intHWClr(1) ) + downCDROut.reset := reset.asBool | RegNext( interface.io.intHWTrig(0) & interface.io.intHWClr(0) ) + upCDROut.reset := reset.asBool | RegNext( interface.io.intHWTrig(1) & interface.io.intHWClr(1) ) interface.io.lvds <> slaveParser.io.lvds diff --git a/src/main/scala/backBoard/shin/SlaveParser.scala b/src/main/scala/backBoard/shin/SlaveParser.scala index 9ad77df..72510ab 100644 --- a/src/main/scala/backBoard/shin/SlaveParser.scala +++ b/src/main/scala/backBoard/shin/SlaveParser.scala @@ -991,11 +991,11 @@ with SlaveParserProbe{ io.intHWTrig(0) := downRecParser.io.isError io.intHWTrig(1) := upRecParser.io.isError - downRecParser.reset := reset.asBool | (downRecParser.io.isError & io.intHWClr(0)) - downSendGen.reset := reset.asBool | (downRecParser.io.isError & io.intHWClr(0)) + downRecParser.reset := reset.asBool | RegNext(downRecParser.io.isError & io.intHWClr(0)) + downSendGen.reset := reset.asBool | RegNext(downRecParser.io.isError & io.intHWClr(0)) - upRecParser.reset := reset.asBool | (upRecParser.io.isError & io.intHWClr(1)) - upSendGen.reset := reset.asBool | (upRecParser.io.isError & io.intHWClr(1)) + upRecParser.reset := reset.asBool | RegNext(upRecParser.io.isError & io.intHWClr(1)) + upSendGen.reset := reset.asBool | RegNext(upRecParser.io.isError & io.intHWClr(1)) io.downRecStat := downRecParser.io.stat io.upRecStat := upRecParser.io.stat