Merge branch 'mp_eb_dev' into feature/auto_release_insert
This commit is contained in:
@@ -1060,10 +1060,10 @@ trait InterfaceWdt{ this: InterfaceBase =>
|
|||||||
for( i <- 0 until 18 ){
|
for( i <- 0 until 18 ){
|
||||||
cReg.wdtTarCnt(i) :=
|
cReg.wdtTarCnt(i) :=
|
||||||
Cat(
|
Cat(
|
||||||
RegEnable( dataw, 0.U(8.W), isEnW & addrw === ( "h40b".U (16.W) + (4*i).U ) ),
|
RegEnable( dataw, "hFF".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, "hFF".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, "hFF".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 === ( "h408".U (16.W) + (4*i).U ) ),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1201,7 +1201,7 @@ trait InterfaceSystem{ this: InterfaceBase =>
|
|||||||
(io.intMstTrig(1) & cReg.intEnable(1)) | //主站接收完成
|
(io.intMstTrig(1) & cReg.intEnable(1)) | //主站接收完成
|
||||||
(isLocalSyncInt & cReg.intEnable(2)) | //主站发送周期到了
|
(isLocalSyncInt & cReg.intEnable(2)) | //主站发送周期到了
|
||||||
(isLatchEvent & cReg.intEnable(3)) | //latch Event
|
(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 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
|
(0 until 4).map{ i => io.intTransEnd(i) & cReg.intEnable(16+i)}.reduce(_|_) | //传输完成请求 16,17,18,19
|
||||||
isMstRecCRCErr | //override //主站状态下19为上行crc接收错误 //不会同时发生
|
isMstRecCRCErr | //override //主站状态下19为上行crc接收错误 //不会同时发生
|
||||||
|
|||||||
@@ -380,10 +380,10 @@ trait ShinTopSlave{ this: ShinTopBase =>
|
|||||||
|
|
||||||
slaveParser.io.intHWClr(0) := interface.io.intHWTrig(0) & interface.io.intHWClr(0)
|
slaveParser.io.intHWClr(0) := interface.io.intHWTrig(0) & interface.io.intHWClr(0)
|
||||||
slaveParser.io.intHWClr(1) := interface.io.intHWTrig(1) & interface.io.intHWClr(1)
|
slaveParser.io.intHWClr(1) := interface.io.intHWTrig(1) & interface.io.intHWClr(1)
|
||||||
downCDRIn.reset := reset.asBool | ( interface.io.intHWTrig(0) & interface.io.intHWClr(0) )
|
downCDRIn.reset := reset.asBool | RegNext( interface.io.intHWTrig(0) & interface.io.intHWClr(0) )
|
||||||
upCDRIn.reset := reset.asBool | ( interface.io.intHWTrig(1) & interface.io.intHWClr(1) )
|
upCDRIn.reset := reset.asBool | RegNext( interface.io.intHWTrig(1) & interface.io.intHWClr(1) )
|
||||||
downCDROut.reset := reset.asBool | ( interface.io.intHWTrig(0) & interface.io.intHWClr(0) )
|
downCDROut.reset := reset.asBool | RegNext( interface.io.intHWTrig(0) & interface.io.intHWClr(0) )
|
||||||
upCDROut.reset := reset.asBool | ( interface.io.intHWTrig(1) & interface.io.intHWClr(1) )
|
upCDROut.reset := reset.asBool | RegNext( interface.io.intHWTrig(1) & interface.io.intHWClr(1) )
|
||||||
|
|
||||||
interface.io.lvds <> slaveParser.io.lvds
|
interface.io.lvds <> slaveParser.io.lvds
|
||||||
|
|
||||||
@@ -422,7 +422,7 @@ trait ShinTopWatchDog{ this: ShinTopBase =>
|
|||||||
for( i <- 0 until 16 ){
|
for( i <- 0 until 16 ){
|
||||||
when( isWdtSMEnable(i) & (wdtSMCnt(i) < interface.io.cReg.wdtTarCnt(i+1)) ){
|
when( isWdtSMEnable(i) & (wdtSMCnt(i) < interface.io.cReg.wdtTarCnt(i+1)) ){
|
||||||
wdtSMCnt(i) := wdtSMCnt(i) + 1.U
|
wdtSMCnt(i) := wdtSMCnt(i) + 1.U
|
||||||
} .elsewhen( ~isWdtSMEnable(i) ){
|
} .elsewhen( ~isWdtSMEnable(i) || (wdtSMCnt(i) >= interface.io.cReg.wdtTarCnt(i+1)) ){
|
||||||
wdtSMCnt(i) := 0.U
|
wdtSMCnt(i) := 0.U
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -446,7 +446,7 @@ trait ShinTopWatchDog{ this: ShinTopBase =>
|
|||||||
|
|
||||||
when( isWdtRec2RtnEnable & (wdtRec2RtnCnt < interface.io.cReg.wdtTarCnt(0)) ){
|
when( isWdtRec2RtnEnable & (wdtRec2RtnCnt < interface.io.cReg.wdtTarCnt(0)) ){
|
||||||
wdtRec2RtnCnt := wdtRec2RtnCnt + 1.U
|
wdtRec2RtnCnt := wdtRec2RtnCnt + 1.U
|
||||||
} .elsewhen( ~isWdtRec2RtnEnable ){
|
} .elsewhen( ~isWdtRec2RtnEnable || (wdtRec2RtnCnt >= interface.io.cReg.wdtTarCnt(0)) ){
|
||||||
wdtRec2RtnCnt := 0.U
|
wdtRec2RtnCnt := 0.U
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -460,8 +460,9 @@ trait ShinTopWatchDog{ this: ShinTopBase =>
|
|||||||
when( interface.io.cReg.wdtEnable.extract(17) & (wdtRec2RecCnt < interface.io.cReg.wdtTarCnt(17)) ){
|
when( interface.io.cReg.wdtEnable.extract(17) & (wdtRec2RecCnt < interface.io.cReg.wdtTarCnt(17)) ){
|
||||||
wdtRec2RecCnt := wdtRec2RecCnt + 1.U
|
wdtRec2RecCnt := wdtRec2RecCnt + 1.U
|
||||||
} .elsewhen(
|
} .elsewhen(
|
||||||
~interface.io.cReg.wdtEnable.extract(17) |
|
~interface.io.cReg.wdtEnable.extract(17) ||
|
||||||
downCDRIn.io.axis.fire
|
downCDRIn.io.axis.fire ||
|
||||||
|
(wdtRec2RecCnt >= interface.io.cReg.wdtTarCnt(17))
|
||||||
){
|
){
|
||||||
wdtRec2RecCnt := 0.U
|
wdtRec2RecCnt := 0.U
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -991,11 +991,11 @@ with SlaveParserProbe{
|
|||||||
io.intHWTrig(0) := downRecParser.io.isError
|
io.intHWTrig(0) := downRecParser.io.isError
|
||||||
io.intHWTrig(1) := upRecParser.io.isError
|
io.intHWTrig(1) := upRecParser.io.isError
|
||||||
|
|
||||||
downRecParser.reset := reset.asBool | (downRecParser.io.isError & io.intHWClr(0))
|
downRecParser.reset := reset.asBool | RegNext(downRecParser.io.isError & io.intHWClr(0))
|
||||||
downSendGen.reset := reset.asBool | (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))
|
upRecParser.reset := reset.asBool | RegNext(upRecParser.io.isError & io.intHWClr(1))
|
||||||
upSendGen.reset := reset.asBool | (upRecParser.io.isError & io.intHWClr(1))
|
upSendGen.reset := reset.asBool | RegNext(upRecParser.io.isError & io.intHWClr(1))
|
||||||
|
|
||||||
io.downRecStat := downRecParser.io.stat
|
io.downRecStat := downRecParser.io.stat
|
||||||
io.upRecStat := upRecParser.io.stat
|
io.upRecStat := upRecParser.io.stat
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ module ShinTopSpiTb(
|
|||||||
`define ALL_DEV_NUM (`DEV_NUM + 1) // slave + master
|
`define ALL_DEV_NUM (`DEV_NUM + 1) // slave + master
|
||||||
`define SPI_CSN_NUM (`ALL_DEV_NUM * 3)
|
`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 IQSPI_PINS(N) (`N*4+3):(`N*4)
|
||||||
`define EQSPI_PINS(N) ((`N + `ALL_DEV_NUM)*4+3):((`N + `ALL_DEV_NUM)*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)]
|
`define IQSPI_MISO(N) qspi_miso[`IQSPI_PINS(`N)]
|
||||||
|
|||||||
@@ -73,8 +73,8 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#add_tc_2_runlist(watchdog.tc1())
|
add_tc_2_runlist(watchdog.tc1())
|
||||||
#add_tc_2_runlist(watchdog.tc2())
|
add_tc_2_runlist(watchdog.tc2())
|
||||||
|
|
||||||
add_tc_2_runlist(mac.tc1())
|
add_tc_2_runlist(mac.tc1())
|
||||||
add_tc_2_runlist(mac.tc2())
|
add_tc_2_runlist(mac.tc2())
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ def watchdog_test_sm_wr_timeout(tc_id, wd_id):
|
|||||||
+genIFRwDataCode(2, 0x074, False, 0x04)
|
+genIFRwDataCode(2, 0x074, False, 0x04)
|
||||||
+genIFRwDataCode(3, 0x074, False, 0x04)
|
+genIFRwDataCode(3, 0x074, False, 0x04)
|
||||||
+genIFRwDataCode(4, 0x074, False, 0x04)
|
+genIFRwDataCode(4, 0x074, False, 0x04)
|
||||||
+"#560000\n"
|
+"#700000\n"
|
||||||
+genIFRwDataCode(1, 0x400, False, 0x04)
|
+genIFRwDataCode(1, 0x400, False, 0x04)
|
||||||
+genIFRwDataCode(1, 0x400, True, 4, [0xff, 0xff, 0xff, 0xff])
|
+genIFRwDataCode(1, 0x400, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
+genIFRwDataCode(1, 0x400, False, 0x04)
|
+genIFRwDataCode(1, 0x400, False, 0x04)
|
||||||
|
|||||||
@@ -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
|
|
||||||
Reference in New Issue
Block a user