From 9773752cc86be3a40c39d69a641dd599d18370cf Mon Sep 17 00:00:00 2001 From: Ruige Lee Date: Wed, 27 Aug 2025 15:55:09 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E8=A1=8C=E4=BA=A4?= =?UTF-8?q?=E6=8D=A2=E7=89=B9=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/scala/backBoard/shin/Interface.scala | 35 +++++++++++++++++++ .../scala/backBoard/shin/MstSlvSwitch.scala | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/main/scala/backBoard/shin/Interface.scala b/src/main/scala/backBoard/shin/Interface.scala index 0270c66..b4def35 100644 --- a/src/main/scala/backBoard/shin/Interface.scala +++ b/src/main/scala/backBoard/shin/Interface.scala @@ -52,6 +52,10 @@ class CommonRegisterBundle extends Bundle{ val refTop = UInt(3.W) val bias = UInt(2.W) + val dwupEx = UInt(16.W) + val b8b4Sel = UInt(16.W) + val cdrParam = UInt(16.W) + val softResetCode = Vec(4, UInt(8.W)) @@ -295,7 +299,20 @@ abstract class InterfaceBase extends Module with RequireAsyncReset{ (addr === ("h48".U(16.W) + i.U) ) -> cReg.xtal( 8*i+7,8*i+0 ) }) ++ + + ((0 until 2).map{ i => + (addr === ("h4c".U(16.W) + i.U) ) -> cReg.b8b4Sel( 8*i+7,8*i+0 ) + }) ++ + + ((0 until 2).map{ i => + (addr === ("h4e".U(16.W) + i.U) ) -> cReg.cdrParam( 8*i+7,8*i+0 ) + }) ++ + Seq( + (addr === "h4a".U ) -> cReg.dwupEx.extrace(0), + (addr === "h4c".U ) -> cReg.b8b4Sel.extrace(0), + (addr === "h4e".U ) -> cReg.cdrParam(7,0), + (addr === "h50".U ) -> cReg.anamuxSel, (addr === "h51".U ) -> cReg.ldo2p5, (addr === "h52".U ) -> cReg.ldo1p1, @@ -1082,6 +1099,24 @@ trait InterfaceSystem{ this: InterfaceBase => cReg.softResetCode(3) := RegEnable(dataw, 0.U(8.W), isEnW & addrw === "h43".U ) + cReg.dwupEx := + Cat( + RegEnable(dataw, 0.U(8.W), isEnW & addrw === "h4b".U ), + RegEnable(dataw, 0.U(8.W), isEnW & addrw === "h4a".U ) + ) + + cReg.b8b4Sel := + Cat( + RegEnable(dataw, 0.U(8.W), isEnW & addrw === "h4d".U ), + RegEnable(dataw, 0.U(8.W), isEnW & addrw === "h4c".U ) + ) + cReg.cdrParam := + Cat( + RegEnable(dataw, 0.U(8.W), isEnW & addrw === "h4f".U ), + RegEnable(dataw, 0.U(8.W), isEnW & addrw === "h4e".U ) + ) + + cReg.intEnable := Cat( 1.U(1.W), //复位中断,时钟为1 //31 上电复位 diff --git a/src/main/scala/backBoard/shin/MstSlvSwitch.scala b/src/main/scala/backBoard/shin/MstSlvSwitch.scala index 07eeda8..a3286b0 100644 --- a/src/main/scala/backBoard/shin/MstSlvSwitch.scala +++ b/src/main/scala/backBoard/shin/MstSlvSwitch.scala @@ -472,7 +472,7 @@ class MstSlvSwitch extends MstSlvSwitchBase with MstSlvSwitchMaster with MstSlvSwitchSlave with MstSlvSwitchWatchDog{ - + val isDwUpEx = interface.cReg.dwupEx when( interface.io.cReg.modeSel === false.B ){ //slave From 60eec33b2dd56e14bf900dbf1adaaf5914bf30fa Mon Sep 17 00:00:00 2001 From: Ruige Lee Date: Fri, 29 Aug 2025 15:37:29 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E8=A1=8C=E4=BA=A4?= =?UTF-8?q?=E6=8D=A2=E7=89=B9=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/scala/backBoard/shin/Interface.scala | 4 +- .../scala/backBoard/shin/MstSlvSwitch.scala | 93 +++++++++++++------ 2 files changed, 67 insertions(+), 30 deletions(-) diff --git a/src/main/scala/backBoard/shin/Interface.scala b/src/main/scala/backBoard/shin/Interface.scala index 2d425b8..e6c7a88 100644 --- a/src/main/scala/backBoard/shin/Interface.scala +++ b/src/main/scala/backBoard/shin/Interface.scala @@ -309,8 +309,8 @@ abstract class InterfaceBase extends Module with RequireAsyncReset{ }) ++ Seq( - (addr === "h4a".U ) -> cReg.dwupEx.extrace(0), - (addr === "h4c".U ) -> cReg.b8b4Sel.extrace(0), + (addr === "h4a".U ) -> cReg.dwupEx.extract(0), + (addr === "h4c".U ) -> cReg.b8b4Sel.extract(0), (addr === "h4e".U ) -> cReg.cdrParam(7,0), (addr === "h50".U ) -> cReg.anamuxSel, diff --git a/src/main/scala/backBoard/shin/MstSlvSwitch.scala b/src/main/scala/backBoard/shin/MstSlvSwitch.scala index a3286b0..8ade497 100644 --- a/src/main/scala/backBoard/shin/MstSlvSwitch.scala +++ b/src/main/scala/backBoard/shin/MstSlvSwitch.scala @@ -472,41 +472,78 @@ class MstSlvSwitch extends MstSlvSwitchBase with MstSlvSwitchMaster with MstSlvSwitchSlave with MstSlvSwitchWatchDog{ - val isDwUpEx = interface.cReg.dwupEx + val isDwUpEx = interface.io.cReg.dwupEx(15,8) === "h58".U && interface.io.cReg.dwupEx.extract(0) - when( interface.io.cReg.modeSel === false.B ){ //slave - when( (slaveParser.io.intHWTrig(0) | slaveParser.io.intHWTrig(1)) | interface.io.isPoReset ){ //硬件错误 + when( ~isDwUpEx ){ //未交叉 + when( interface.io.cReg.modeSel === false.B ){ //slave + when( (slaveParser.io.intHWTrig(0) | slaveParser.io.intHWTrig(1)) | interface.io.isPoReset ){ //硬件错误 + io.downCDRIn.serDat := false.B + io.upCDRIn.serDat := false.B + when( slaveParser.io.isLoop ){ //回环 + io.dDatOut := false.B + io.uDatOut := io.dDatIn + } .otherwise{ //非回环 + io.dDatOut := io.dDatIn + io.uDatOut := io.uDatIn + } + } .otherwise{ //无硬件错误 + when( slaveParser.io.isLoop ){ //回环 + io.downCDRIn.serDat := io.dDatIn + io.upCDRIn.serDat := io.downCDROut.serDat + io.dDatOut := false.B + io.uDatOut := io.upCDROut.serDat + } .otherwise{ //非回环 + io.downCDRIn.serDat := io.dDatIn + io.upCDRIn.serDat := io.uDatIn + io.dDatOut := io.downCDROut.serDat + io.uDatOut := io.upCDROut.serDat + } + } + } .otherwise{ //master io.downCDRIn.serDat := false.B - io.upCDRIn.serDat := false.B - when( slaveParser.io.isLoop ){ //回环 - io.dDatOut := false.B - io.uDatOut := io.dDatIn - } .otherwise{ //非回环 - io.dDatOut := io.dDatIn - io.uDatOut := io.uDatIn - } - } .otherwise{ //无硬件错误 - when( slaveParser.io.isLoop ){ //回环 - io.downCDRIn.serDat := io.dDatIn - io.upCDRIn.serDat := io.downCDROut.serDat - io.dDatOut := false.B - io.uDatOut := io.upCDROut.serDat - } .otherwise{ //非回环 - io.downCDRIn.serDat := io.dDatIn - io.upCDRIn.serDat := io.uDatIn - io.dDatOut := io.downCDROut.serDat - io.uDatOut := io.upCDROut.serDat - } + io.upCDRIn.serDat := io.uDatIn + io.dDatOut := io.downCDROut.serDat + io.uDatOut := false.B + } + } .otherwise{ //交叉 + when( interface.io.cReg.modeSel === false.B ){ //slave + when( (slaveParser.io.intHWTrig(0) | slaveParser.io.intHWTrig(1)) | interface.io.isPoReset ){ //硬件错误 + + when( slaveParser.io.isLoop ){ //回环 + io.dDatOut := io.uDatIn + io.uDatOut := false.B + io.downCDRIn.serDat := false.B + io.upCDRIn.serDat := false.B + } .otherwise{ //非回环 + io.dDatOut := io.dDatIn + io.uDatOut := io.uDatIn + io.downCDRIn.serDat := false.B + io.upCDRIn.serDat := false.B + } + } .otherwise{ //无硬件错误 + when( slaveParser.io.isLoop ){ //回环 + io.downCDRIn.serDat := io.uDatIn + io.upCDRIn.serDat := io.downCDROut.serDat + io.uDatOut := false.B + io.dDatOut := io.upCDROut.serDat + } .otherwise{ //非回环 + io.downCDRIn.serDat := io.uDatIn + io.upCDRIn.serDat := io.dDatIn + io.dDatOut := io.upCDROut.serDat + io.uDatOut := io.downCDROut.serDat + } + } + } .otherwise{ //master + io.downCDRIn.serDat := false.B + io.upCDRIn.serDat := io.dDatIn + io.uDatOut := io.downCDROut.serDat + io.dDatOut := false.B } - } .otherwise{ //master - io.downCDRIn.serDat := false.B - io.upCDRIn.serDat := io.uDatIn - io.dDatOut := io.downCDROut.serDat - io.uDatOut := false.B } + } From 0bcb947a2da59f0d132e4e1581b14e26e018d76b Mon Sep 17 00:00:00 2001 From: bacon Date: Sat, 30 Aug 2025 13:04:17 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BA=BF=E8=B7=AF?= =?UTF-8?q?=E4=BA=A4=E5=8F=89=E7=9A=84=E6=B5=8B=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 | 6 +- tb/shinTest/gen_pkt.py | 5 +- tb/shinTest/pyutils/GenPkt.py | 32 ++-- tb/shinTest/testcase/base.py | 343 ++++++++++++++++++++++++++++++++++ 4 files changed, 365 insertions(+), 21 deletions(-) diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 5eebe58..b565ea3 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -850,7 +850,7 @@ task f_write(input [31:0] logh, input [15:0] saddress, input [7:0] scmd, input [ end endtask -task wait_comm_finished(); +task wait_comm_finished(input [16:0] dev_idx); begin:WAIT_COMM_FINISHED_CODE real st; integer is_run; @@ -867,7 +867,7 @@ task wait_comm_finished(); txBuf[6] = 8'h00; length = 8'h07; - idx = `IF_IQSPI(0); + idx = `IF_IQSPI(dev_idx); #5 @(negedge sck) @@ -887,7 +887,7 @@ task wait_comm_finished(); txBuf[2] = `SPI_READ; length = 8'h07; - idx = `IF_IQSPI(0); + idx = `IF_IQSPI(dev_idx); #5 @(negedge sck) diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index ba30940..9675908 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -14,7 +14,7 @@ if __name__ == '__main__': #add_tc_2_runlist(errorPkt.tc5()) #add_tc_2_runlist(errorPkt.tc6()) - #add_tc_2_runlist(base.tc1()) + add_tc_2_runlist(base.tc1()) #add_tc_2_runlist(base.tc2()) #add_tc_2_runlist(base.tc3()) #add_tc_2_runlist(base.tc4()) @@ -41,6 +41,7 @@ if __name__ == '__main__': #add_tc_2_runlist(base.tc25()) #add_tc_2_runlist(base.tc26()) #add_tc_2_runlist(base.tc27()) + add_tc_2_runlist(base.tc28()) #add_tc_2_runlist(broadcast.tc1()) #add_tc_2_runlist(broadcast.tc2()) @@ -53,7 +54,7 @@ if __name__ == '__main__': #add_tc_2_runlist(sync.tc4()) #add_tc_2_runlist(sync.tc5()) #add_tc_2_runlist(sync.tc6()) - add_tc_2_runlist(sync.tc7()) + #add_tc_2_runlist(sync.tc7()) diff --git a/tb/shinTest/pyutils/GenPkt.py b/tb/shinTest/pyutils/GenPkt.py index 067fe38..18108a8 100644 --- a/tb/shinTest/pyutils/GenPkt.py +++ b/tb/shinTest/pyutils/GenPkt.py @@ -221,31 +221,31 @@ class GenPkt(object): -def genWriteTransLenCode(gen_name, sm_idx, wlog=True): +def genWriteTransLenCode(gen_name, sm_idx, wlog=True, dev_idx=0): return '''\n//写入发送长度\n'''\ + '''$fdisplay(spidata_file, "--写数据交换长度");\n'''\ + '''`DEF_%s_sm(txBuf);\n'''%(gen_name, )\ - + '''%s( (`MST_TX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx,)\ - + '''%s( (`MST_RX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx,) + + '''%s( (`MST_TX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, dev_idx)\ + + '''%s( (`MST_RX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, dev_idx) -def genWriteTransPktCode(gen_name, sm_idx, wlog=True): +def genWriteTransPktCode(gen_name, sm_idx, wlog=True, dev_idx=0): return f'''\n$fdisplay(spidata_file, "<<准备发包,使用SM{sm_idx}:");\n'''\ + '''`DEF_%s(txBuf);\n'''%(gen_name, )\ - + '''%s( (`MST_TX%d_ADDR), (`SPI_WRITE), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name, ) + + '''%s( (`MST_TX%d_ADDR), (`SPI_WRITE), (`DEF_%s_len), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name, dev_idx) -def genTrgTransPktCode(gen_name, sm_idx, wlog=True): +def genTrgTransPktCode(gen_name, sm_idx, wlog=True, dev_idx=0): return '''\n//请求发送\n'''\ + '''$fdisplay(spidata_file, "--请求发送");\n'''\ + '''txBuf[0+3] = `MST_TX_TRIGGER(%d);\n'''%(sm_idx, )\ - + '''%s( (16'h20), (`SPI_WRITE), (1), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", ) + + '''%s( (16'h20), (`SPI_WRITE), (1), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", dev_idx) -def genReadAckPktCode(gen_name, sm_idx, wlog=True): +def genReadAckPktCode(gen_name, sm_idx, wlog=True, dev_idx=0): return '''\n//等待回包\n'''\ - + '''wait_comm_finished();\n'''\ + + '''wait_comm_finished(%d);\n'''%(dev_idx, )\ + 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,) + + '''%s( (`MST_RX%d_ADDR), (`SPI_READ), (`DEF_%s_len), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name, dev_idx) -def genEnableInsertTimeCode(pos, enableTime=True, enableDelay=True, wlog=True): +def genEnableInsertTimeCode(pos, enableTime=True, enableDelay=True, wlog=True, dev_idx=0): data = pos & 0x3fff if enableTime: data = data | 0x8000 @@ -255,19 +255,19 @@ def genEnableInsertTimeCode(pos, enableTime=True, enableDelay=True, wlog=True): + '''$fdisplay(spidata_file, "--增加时间戳插入");\n'''\ + '''txBuf[0+3] = 8'h%x;\n'''%(data & 0xff, )\ + '''txBuf[1+3] = 8'h%x;\n'''%((data >> 8) & 0xff, )\ - + '''%s( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans",) + + '''%s( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", dev_idx) -def genDisableInsertTimeCode(wlog=True): +def genDisableInsertTimeCode(wlog=True, dev_idx=0): return '''\n//清除替换时间戳替换地址\n'''\ + '''$fdisplay(spidata_file, "--清除时间戳插入");\n'''\ + '''txBuf[0+3] = 8'h00;\n'''\ + '''txBuf[1+3] = 8'h00;\n'''\ - + '''%s( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(0)) ); //清除替换时间戳替换地址寄存器\n'''%("`SPI_TRANS" if wlog else "spi_trans", ) + + '''%s( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(%d)) ); //清除替换时间戳替换地址寄存器\n'''%("`SPI_TRANS" if wlog else "spi_trans", dev_idx) -def genCheckInsertTimeCode(wlog=True): +def genCheckInsertTimeCode(wlog=True, dev_idx=0): return '''\n//检查替换时间戳替换地址\n'''\ + '''$fdisplay(spidata_file, "--检查时间戳插入");\n'''\ - + '''%s( (16'h24), (`SPI_READ), (2), (`IF_IDX(0)) ); //检查替换时间戳替换地址寄存器\n'''%("`SPI_TRANS" if wlog else "spi_trans", ) + + '''%s( (16'h24), (`SPI_READ), (2), (`IF_IDX(%d)) ); //检查替换时间戳替换地址寄存器\n'''%("`SPI_TRANS" if wlog else "spi_trans", dev_idx) def genIFRwDataCode(dev, addr, isWrite = False, data_len=0, data = None, wlog=True, iface=5): diff --git a/tb/shinTest/testcase/base.py b/tb/shinTest/testcase/base.py index 1c403b1..3506b9b 100644 --- a/tb/shinTest/testcase/base.py +++ b/tb/shinTest/testcase/base.py @@ -1962,4 +1962,347 @@ def tc27(): genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap03) + return gen_file_def + +def tc28(): + genPkt = GenPkt() + + + gen_file_def = "base_tc28" + sm_idx = 0 + tc_des = ("测试IO交换特性,为环网通信做准备。\\n" + ) + + genPkt.clean() + genPkt.setPktType(0) + + genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des) + +genIFRwDataCode(0, 0x40, True, 4, [0x01, 0x00, 0x66, 0x79]) + +genIFRwDataCode(4, 0x40, True, 4, [0x01, 0x00, 0x66, 0x79]) + +"#5000" + +genIFRwDataCode(0, 0x09, True, 1, [0, ], False, iface=1) + +genIFRwDataCode(4, 0x09, True, 1, [0, ], False, iface=1) + + +genMessageCode("--读取中断") + +genIFRwDataCode(0, 0x74, False, 4) + +genIFRwDataCode(4, 0x74, False, 4) + + +genMessageCode("--读取中断使能") + +genIFRwDataCode(0, 0x70, False, 4) + +genIFRwDataCode(4, 0x70, False, 4) + + +genMessageCode("--配置主从站") + +genIFRwDataCode(0, 0x00, True, 1, [0x02, ]) + +genIFRwDataCode(4, 0x00, True, 1, [0x01, ]) + ) + + genPkt.addAfterExc(genIFRwDataCode(0, 0x4a, False, 2) + +genIFRwDataCode(1, 0x4a, False, 2) + +genIFRwDataCode(2, 0x4a, False, 2) + +genIFRwDataCode(3, 0x4a, False, 2) + +genIFRwDataCode(4, 0x4a, False, 2) + + +genIFRwDataCode(0, 0x4a, True, 2, [1, 0x58]) + +genIFRwDataCode(1, 0x4a, True, 2, [1, 0x58]) + +genIFRwDataCode(2, 0x4a, True, 2, [1, 0x58]) + +genIFRwDataCode(3, 0x4a, True, 2, [1, 0x58]) + +genIFRwDataCode(4, 0x4a, True, 2, [1, 0x58]) + + +genIFRwDataCode(0, 0, False, 1) + +genIFRwDataCode(1, 0, False, 1) + +genIFRwDataCode(2, 0, False, 1) + +genIFRwDataCode(3, 0, False, 1) + +genIFRwDataCode(4, 0, False, 1) + #genWriteTransLenCode(gen_file_def, sm_idx) + #+genWriteTransPktCode(gen_file_def, sm_idx) + #+genTrgTransPktCode(gen_file_def, sm_idx) + #+genReadAckPktCode(gen_file_def, 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) + + #+genTcEndFrameCode(gen_file_def) + ) + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + genPkt.clean() + genPkt.setPktType(1) + + gen_file_def_ap = gen_file_def + "_rw01" + sm_idx = 0 + genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx, dev_idx=4) + +genWriteTransPktCode(gen_file_def_ap, sm_idx, dev_idx=4) + +genTrgTransPktCode(gen_file_def_ap, sm_idx, dev_idx=4) + +genReadAckPktCode(gen_file_def_ap, sm_idx, dev_idx=4) + + +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) + + #+genTcEndFrameCode(gen_file_def) + ) + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap) + + genPkt.clean() + genPkt.setPktType(0) + + + data = [0x3f, 0xff] + genPkt.addSubPkt(0x0, 0, 0x0, 0xb, 2, data) + + gen_file_def_ap = gen_file_def + "_rw02" + sm_idx = 0 + genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx, dev_idx=4) + +genWriteTransPktCode(gen_file_def_ap, sm_idx, dev_idx=4) + +genTrgTransPktCode(gen_file_def_ap, sm_idx, dev_idx=4) + +genReadAckPktCode(gen_file_def_ap, sm_idx, dev_idx=4) + + +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) + + #+genTcEndFrameCode(gen_file_def) + ) + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap) + + + genPkt.clean() + genPkt.setPktType(1) + + gen_file_def_ap = gen_file_def + "_rw03" + sm_idx = 0 + genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx, dev_idx=4) + +genWriteTransPktCode(gen_file_def_ap, sm_idx, dev_idx=4) + +genTrgTransPktCode(gen_file_def_ap, sm_idx, dev_idx=4) + +genReadAckPktCode(gen_file_def_ap, sm_idx, dev_idx=4) + + +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) + + #+genTcEndFrameCode(gen_file_def) + ) + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap) + + + genPkt.clean() + genPkt.setPktType(0) + + genPkt.addSubPkt(0x1, 0, 0x180, 0, 32, [0, ]*32) + genPkt.addSubPkt(0x2, 0, 0x180, 0, 32, [0, ]*32) + genPkt.addSubPkt(0x3, 0, 0x180, 0, 32, [0, ]*32) + genPkt.addSubPkt(0x4, 0, 0x180, 0, 32, [0, ]*32) + + gen_file_def_ap = gen_file_def + "_rw04" + sm_idx = 0 + genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx, dev_idx=4) + +genWriteTransPktCode(gen_file_def_ap, sm_idx, dev_idx=4) + +genTrgTransPktCode(gen_file_def_ap, sm_idx, dev_idx=4) + +genReadAckPktCode(gen_file_def_ap, sm_idx, dev_idx=4) + + +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) + + + +genIFRwDataCode(0, 0x40, True, 4, [0x01, 0x00, 0x66, 0x79]) + +genIFRwDataCode(4, 0x40, True, 4, [0x01, 0x00, 0x66, 0x79]) + +"#5000" + +genIFRwDataCode(0, 0x09, True, 1, [0, ], False, iface=1) + +genIFRwDataCode(4, 0x09, True, 1, [0, ], False, iface=1) + + +genMessageCode("--读取中断") + +genIFRwDataCode(0, 0x74, False, 4) + +genIFRwDataCode(4, 0x74, False, 4) + + +genMessageCode("--读取中断使能") + +genIFRwDataCode(0, 0x70, False, 4) + +genIFRwDataCode(4, 0x70, False, 4) + + +genMessageCode("--配置主从站") + +genIFRwDataCode(0, 0x00, True, 1, [0x01, ]) + +genIFRwDataCode(4, 0x00, True, 1, [0x02, ]) + + +genIFRwDataCode(0, 0x4a, False, 2) + +genIFRwDataCode(1, 0x4a, False, 2) + +genIFRwDataCode(2, 0x4a, False, 2) + +genIFRwDataCode(3, 0x4a, False, 2) + +genIFRwDataCode(4, 0x4a, False, 2) + + +genIFRwDataCode(0, 0x4a, True, 2, [0, 0x58]) + +genIFRwDataCode(1, 0x4a, True, 2, [0, 0x58]) + +genIFRwDataCode(2, 0x4a, True, 2, [0, 0x58]) + +genIFRwDataCode(3, 0x4a, True, 2, [0, 0x58]) + +genIFRwDataCode(4, 0x4a, True, 2, [0, 0x58]) + + +genIFRwDataCode(0, 0, False, 1) + +genIFRwDataCode(1, 0, False, 1) + +genIFRwDataCode(2, 0, False, 1) + +genIFRwDataCode(3, 0, False, 1) + +genIFRwDataCode(4, 0, False, 1) + + #+genTcEndFrameCode(gen_file_def) + ) + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap) + + genPkt.clean() + genPkt.setPktType(1) + + gen_file_def_ap = gen_file_def + "_rw05" + sm_idx = 0 + genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx, dev_idx=0) + +genWriteTransPktCode(gen_file_def_ap, sm_idx, dev_idx=0) + +genTrgTransPktCode(gen_file_def_ap, sm_idx, dev_idx=0) + +genReadAckPktCode(gen_file_def_ap, sm_idx, dev_idx=0) + + +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) + + #+genTcEndFrameCode(gen_file_def) + ) + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap) + + genPkt.clean() + genPkt.setPktType(0) + + + data = [0x3f, 0xff] + genPkt.addSubPkt(0x0, 0, 0x0, 0xb, 2, data) + + gen_file_def_ap = gen_file_def + "_rw06" + sm_idx = 0 + genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx, dev_idx=0) + +genWriteTransPktCode(gen_file_def_ap, sm_idx, dev_idx=0) + +genTrgTransPktCode(gen_file_def_ap, sm_idx, dev_idx=0) + +genReadAckPktCode(gen_file_def_ap, sm_idx, dev_idx=0) + + +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) + + +genTcEndFrameCode(gen_file_def) + ) + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap) + return gen_file_def