diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 696732c..918235c 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -44,40 +44,47 @@ module ShinTopSpiTb( `include "dev_predef.vh" `ifdef DEFINE_SLAVE_DEVICE -`define DEV_NUM 4 //slave num -`define ALL_DEV_NUM (`DEV_NUM + 1) // slave + master -`define SPI_CSN_NUM (`ALL_DEV_NUM * 3) + `define DEV_NUM 4 //slave num + `define ALL_DEV_NUM (`DEV_NUM + 1) // slave + master + `define SPI_CSN_NUM (`ALL_DEV_NUM * 4) -`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)] -`define EQSPI_MISO(N) qspi_miso[`EQSPI_PINS(`N)] + `define HW_SERIAL 0 //48'h31303050584c //(48'h4c5850303031) -`define IQSPI_CSN_NUM(id) (`id) -`define ESPI_CSN_NUM(id) ((`id)+(`ALL_DEV_NUM)) -`define EQSPI_CSN_NUM(id) ((`id)+(`ALL_DEV_NUM)*2) + `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 AQSPI_PINS(N) ((`N + `ALL_DEV_NUM)*4+3):((`N + `ALL_DEV_NUM)*4) -`define IQSPI_CSN(id) spi_csn[`IQSPI_CSN_NUM(`id)] -`define ESPI_CSN(id) spi_csn[`ESPI_CSN_NUM(`id)] -`define EQSPI_CSN(id) spi_csn[`EQSPI_CSN_NUM(`id)] -`define QSPI_MUX_MISO_INIT \ - (`IQSPI_MISO(0) & ~{4{`IQSPI_CSN(0)}}) |\ - (`IQSPI_MISO(1) & ~{4{`IQSPI_CSN(1)}}) |\ - (`IQSPI_MISO(2) & ~{4{`IQSPI_CSN(2)}}) |\ - (`IQSPI_MISO(3) & ~{4{`IQSPI_CSN(3)}}) |\ - (`IQSPI_MISO(4) & ~{4{`IQSPI_CSN(4)}}) |\ - (`EQSPI_MISO(0) & ~{4{`EQSPI_CSN(0)}}) |\ - (`EQSPI_MISO(1) & ~{4{`EQSPI_CSN(1)}}) |\ - (`EQSPI_MISO(2) & ~{4{`EQSPI_CSN(2)}}) |\ - (`EQSPI_MISO(3) & ~{4{`EQSPI_CSN(3)}}) |\ - (`EQSPI_MISO(4) & ~{4{`EQSPI_CSN(4)}}) -`define SPI_MUX_MISO_INIT \ - ( spi_miso[0] & ~`ESPI_CSN(0)) |\ - ( spi_miso[1] & ~`ESPI_CSN(1)) |\ - ( spi_miso[2] & ~`ESPI_CSN(2)) |\ - ( spi_miso[3] & ~`ESPI_CSN(3)) |\ - ( spi_miso[4] & ~`ESPI_CSN(4)) + `define IQSPI_MISO(N) qspi_miso[`IQSPI_PINS(`N)] + `define EQSPI_MISO(N) qspi_miso[`EQSPI_PINS(`N)] + + `define IQSPI_CSN_NUM(id) (`id) + `define ESPI_CSN_NUM(id) ((`id)+(`ALL_DEV_NUM)) + `define EQSPI_CSN_NUM(id) ((`id)+(`ALL_DEV_NUM)*2) + //`define AQSPI_CSN_NUM(id) ((`id)+(`ALL_DEV_NUM)*3) + + + `define IQSPI_CSN(id) spi_csn[`IQSPI_CSN_NUM(`id)] + `define ESPI_CSN(id) spi_csn[`ESPI_CSN_NUM(`id)] + `define EQSPI_CSN(id) spi_csn[`EQSPI_CSN_NUM(`id)] + //`define AQSPI_CSN(id) spi_csn[`AQSPI_CSN_NUM(`id)] + + `define QSPI_MUX_MISO_INIT \ + (`IQSPI_MISO(0) & ~{4{`IQSPI_CSN(0)}}) |\ + (`IQSPI_MISO(1) & ~{4{`IQSPI_CSN(1)}}) |\ + (`IQSPI_MISO(2) & ~{4{`IQSPI_CSN(2)}}) |\ + (`IQSPI_MISO(3) & ~{4{`IQSPI_CSN(3)}}) |\ + (`IQSPI_MISO(4) & ~{4{`IQSPI_CSN(4)}}) |\ + (`EQSPI_MISO(0) & ~{4{`EQSPI_CSN(0)}}) |\ + (`EQSPI_MISO(1) & ~{4{`EQSPI_CSN(1)}}) |\ + (`EQSPI_MISO(2) & ~{4{`EQSPI_CSN(2)}}) |\ + (`EQSPI_MISO(3) & ~{4{`EQSPI_CSN(3)}}) |\ + (`EQSPI_MISO(4) & ~{4{`EQSPI_CSN(4)}}) + `define SPI_MUX_MISO_INIT \ + ( spi_miso[0] & ~`ESPI_CSN(0)) |\ + ( spi_miso[1] & ~`ESPI_CSN(1)) |\ + ( spi_miso[2] & ~`ESPI_CSN(2)) |\ + ( spi_miso[3] & ~`ESPI_CSN(3)) |\ + ( spi_miso[4] & ~`ESPI_CSN(4)) `endif wire [(`DEV_NUM - 1):0] dDat_w; wire [(`DEV_NUM - 1):0] uDat_w; @@ -90,7 +97,7 @@ module ShinTopSpiTb( wire qspi_sck; wire [3:0] qspi_mosi; //wire [40-1:0] qspi_miso; - wire [(`ALL_DEV_NUM * 4 * 2 - 1):0] qspi_miso; + wire [(`ALL_DEV_NUM * 4 * 3 - 1):0] qspi_miso; integer spidata_file; integer c_line; @@ -165,6 +172,12 @@ ShinTop s_ShinTop_Mst( .io_oqspi_isDirIn(), .io_oqspi_csn(`EQSPI_CSN(0)), + .io_aqspi_sck(qspi_sck), + .io_aqspi_mosi(qspi_mosi), + .io_aqspi_miso(`AQSPI_MISO(0)), + .io_aqspi_isDirIn(), + .io_aqspi_csn(`AQSPI_CSN(0)), + .io_isSoftReset(isSoftReset[0]), .io_interrupt(io_int_sig[0]), .io_latchPin_0(latch0), @@ -553,6 +566,7 @@ end //DEV_NUM //ALL_DEV_NUM wire isQspi = (idx >= 0 && idx <= (`ALL_DEV_NUM - 1)) || idx >= (`ALL_DEV_NUM * 2); +wire isAQspi = (idx >= (`ALL_DEV_NUM * 3)); wire [11:0] nextByteCnt = byteCnt + 1; //输出 @@ -575,21 +589,38 @@ always @(posedge sck) begin end else begin bitCnt <= bitCnt + 1; end - - if( &bitCnt ) begin - byteCnt <= byteCnt +1; - transCnt <= transCnt + 1; - if( txBuf[2] === 8'h80 & nextByteCnt >= 4) begin - rxBuf[byteCnt] <= exChangeRegi; - //$display("spi read out %x", exChangeRegi); - end - if( txBuf[2] === 8'h80 & nextByteCnt >= 3) begin - exChangeRegi <= isQspi ? {exChangeRegi[3:0], qspi_mux_miso} : {exChangeRegi[6:0], spi_mux_miso}; + if ( isAQspi ) begin + if( &bitCnt ) begin + byteCnt <= byteCnt +1; + transCnt <= transCnt + 1; + if( (txBuf[2] & 8'h80) === 8'h80 & nextByteCnt >= 5) begin + rxBuf[byteCnt] <= exChangeRegi; + //$display("spi read out %x", exChangeRegi); + end + if( (txBuf[2] & 8'h80) === 8'h80 & nextByteCnt >= 4) begin + exChangeRegi <= isQspi ? {exChangeRegi[3:0], qspi_mux_miso} : {exChangeRegi[6:0], spi_mux_miso}; + end else begin + exChangeRegi <= 0; + end end else begin - exChangeRegi <= 0; + exChangeRegi <= isQspi ? {exChangeRegi[3:0], qspi_mux_miso} : {exChangeRegi[6:0], spi_mux_miso}; end end else begin - exChangeRegi <= isQspi ? {exChangeRegi[3:0], qspi_mux_miso} : {exChangeRegi[6:0], spi_mux_miso}; + if( &bitCnt ) begin + byteCnt <= byteCnt +1; + transCnt <= transCnt + 1; + if( txBuf[2] === 8'h80 & nextByteCnt >= 4) begin + rxBuf[byteCnt] <= exChangeRegi; + //$display("spi read out %x", exChangeRegi); + end + if( txBuf[2] === 8'h80 & nextByteCnt >= 3) begin + exChangeRegi <= isQspi ? {exChangeRegi[3:0], qspi_mux_miso} : {exChangeRegi[6:0], spi_mux_miso}; + end else begin + exChangeRegi <= 0; + end + end else begin + exChangeRegi <= isQspi ? {exChangeRegi[3:0], qspi_mux_miso} : {exChangeRegi[6:0], spi_mux_miso}; + end end end else begin isBusy <= #5 1'b0; @@ -607,7 +638,12 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,in begin txBuf[0] <= saddress[15:8]; txBuf[1] <= saddress[7:0]; - txBuf[2] <= scmd; + if (isAQspi) begin + txBuf[2] <= (scmd | slength[12:8]); + txBuf[3] <= slength[7:0]; + end else begin + txBuf[2] <= scmd; + end length <= slength + 3; idx <= sidx; @@ -622,19 +658,33 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,in begin //$fwrite(spidata_file, "------------%5t------------\n", $realtime); $fwrite(spidata_file, "T:%t \tdev:%4d, addr:0x%02h%02h, %s, len:%4d\n", - $realtime, ((sidx >= `ALL_DEV_NUM)? ((sidx >= (`ALL_DEV_NUM * 2))? (sidx - (`ALL_DEV_NUM * 2)):(sidx - `ALL_DEV_NUM)):sidx), txBuf[0], txBuf[1], - ((txBuf[2] == 0)? "Write":" Read"), slength); - + $realtime, + sidx % (`ALL_DEV_NUM), + txBuf[0], + txBuf[1], + (((txBuf[2] & 8'h80) == 0)? "Write":" Read"), + slength); + + if (isAQspi) begin _pos = 4; end + else begin _pos = 3; end + if ( ((saddress == 16'h0800) - || (saddress == 16'h1000) - || (saddress == 16'h1800) - || (saddress == 16'h2000) - || (saddress == 16'h2800) - || (saddress == 16'h3000) - || (saddress == 16'h3800) - || (saddress == 16'h4000)) - && ((sidx == 0) || (sidx == `ALL_DEV_NUM) || (sidx == (`ALL_DEV_NUM * 2)))) begin - _pos = 3; + || (saddress == 16'h1000) + || (saddress == 16'h1800) + || (saddress == 16'h2000) + || (saddress == 16'h2800) + || (saddress == 16'h3000) + || (saddress == 16'h3800) + || (saddress == 16'h4000) + ) + && ((sidx == 0) + || (sidx == `ALL_DEV_NUM) + || (sidx == (`ALL_DEV_NUM * 2)) + || (sidx == (`ALL_DEV_NUM * 3)) + ) + ) begin + + for (integer _k = 0; _k < 4; _k++) begin if (scmd == 0) begin $fwrite(spidata_file, "%02h ", txBuf[_k + _pos]); @@ -717,9 +767,9 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,in end else begin for (integer i=0; i> 8 + f.write(define_str + "_sm(array) \\\n\tarray``[`ARRAY_IDX_OFF + %d]=8'h%02X;\\\n\tarray``[`ARRAY_IDX_OFF + %d]=8'h%02X;\n"%( + 0, pkt_len & 0xff, + 1, pkt_len >> 8 )) f.write(define_str + "(array) \\\n") for _k in range(i): if _k < (i - 1): if type(self.pkt_buf[_k]) == int: - f.write("\tarray``[%d]=8'h%02X;\\\n"%(3 + _k, self.pkt_buf[_k])) + f.write("\tarray``[`ARRAY_IDX_OFF + %d]=8'h%02X;\\\n"%(_k, self.pkt_buf[_k])) else: - f.write("\tarray``[%d]=%s;\\\n"%(3 + _k, self.pkt_buf[_k])) + f.write("\tarray``[`ARRAY_IDX_OFF + %d]=%s;\\\n"%(_k, self.pkt_buf[_k])) else: if type(self.pkt_buf[_k]) == int: - f.write("\tarray``[%d]=8'h%02X;\n"%(3 + _k, self.pkt_buf[_k])) + f.write("\tarray``[`ARRAY_IDX_OFF + %d]=8'h%02X;\n"%(_k, self.pkt_buf[_k])) else: - f.write("\tarray``[%d]=%s;\n"%(3 + _k, self.pkt_buf[_k])) + f.write("\tarray``[`ARRAY_IDX_OFF + %d]=%s;\n"%(_k, self.pkt_buf[_k])) for md in self.sub_pkt: if md[0] == 2: f.write("%s\n"%(md[1],)) else: for _k in range(i): - f.write("txBuf[%d]=8'h%02X;\n"%(3 + _k, self.pkt_buf[_k])) + f.write("txBuf[`ARRAY_IDX_OFF + %d]=8'h%02X;\n"%(_k, self.pkt_buf[_k])) f.close() @@ -236,7 +236,7 @@ def genWriteTransPktCode(gen_name, sm_idx, wlog=True, dev_idx=0): 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, )\ + + '''txBuf[`ARRAY_IDX_OFF] = `MST_TX_TRIGGER(%d);\n'''%(sm_idx, )\ + '''%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, dev_idx=0): @@ -253,15 +253,15 @@ def genEnableInsertTimeCode(pos, enableTime=True, enableDelay=True, wlog=True, d data = data | 0x4000 return '''//写入替换时间戳替换地址\n'''\ + '''$fdisplay(spidata_file, "--增加时间戳插入");\n'''\ - + '''txBuf[0+3] = 8'h%x;\n'''%(data & 0xff, )\ - + '''txBuf[1+3] = 8'h%x;\n'''%((data >> 8) & 0xff, )\ + + '''txBuf[`ARRAY_IDX_OFF + 0] = 8'h%x;\n'''%(data & 0xff, )\ + + '''txBuf[`ARRAY_IDX_OFF + 1] = 8'h%x;\n'''%((data >> 8) & 0xff, )\ + '''%s( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", dev_idx) 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'''\ + + '''txBuf[`ARRAY_IDX_OFF + 0] = 8'h00;\n'''\ + + '''txBuf[`ARRAY_IDX_OFF + 1] = 8'h00;\n'''\ + '''%s( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(%d)) ); //清除替换时间戳替换地址寄存器\n'''%("`SPI_TRANS" if wlog else "spi_trans", dev_idx) def genCheckInsertTimeCode(wlog=True, dev_idx=0): @@ -316,12 +316,12 @@ def genSlvSMWriteData(dev, sm, data_len, data = None, wlog=True): for i in range(data_len): data.append((i + dev) & 0xff) - code = '''txBuf[3] = 8'h%02x;\n'''%(data_len & 0xff, )\ - + '''txBuf[4] = 8'h%02x;\n'''%(int(data_len/256) & 0xff,)\ + code = '''txBuf[`ARRAY_IDX_OFF + 0] = 8'h%02x;\n'''%(data_len & 0xff, )\ + + '''txBuf[`ARRAY_IDX_OFF + 1] = 8'h%02x;\n'''%(int(data_len/256) & 0xff,)\ + '''%s((16'h%04x), (`SPI_WRITE), (2), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", smaddr[sm], dev) for i in range(data_len): - code = code + '''txBuf[%d + 3] = 8'h%02x;\n'''%(i, data[i]) + code = code + '''txBuf[`ARRAY_IDX_OFF + %d] = 8'h%02x;\n'''%(i, data[i]) code = code + '''%s( (16'h%04x), (`SPI_WRITE), (%d), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", 0x800 + sm * 2048, data_len, dev) return code diff --git a/tb/shinTest/testcase/base.py b/tb/shinTest/testcase/base.py index 412d256..15ee6d8 100644 --- a/tb/shinTest/testcase/base.py +++ b/tb/shinTest/testcase/base.py @@ -1619,7 +1619,7 @@ def tc24(): genPkt.addBeforeExc(genEnableInsertTimeCode(0xa) + '''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n''' - + '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + + '''_temp_time = rxBuf[`ARRAY_IDX_OFF] + (rxBuf[`ARRAY_IDX_OFF+1] << 8) + (rxBuf[`ARRAY_IDX_OFF+2] << 16) + (rxBuf[`ARRAY_IDX_OFF+3] << 24) + (rxBuf[`ARRAY_IDX_OFF+4] << 32) + (rxBuf[`ARRAY_IDX_OFF+5] << 40) + (rxBuf[`ARRAY_IDX_OFF+6] << 48) + (rxBuf[`ARRAY_IDX_OFF+7] << 56);\n''' + '''_temp_time = _temp_time + 32'h3000;\n\n''') genPkt.addSubPkt(0x0, 0, 0x0, 0xc, 12, b'\0'*12) @@ -2718,22 +2718,24 @@ def tc31(): +genIFRwDataCode(4, 0x500, False, 0x48) + '''spi_trans( (16'h0518), (`SPI_READ), (8), (`IF_IDX(0)));\n''' - + '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + #+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + + '''_temp_time = rxBuf[`ARRAY_IDX_OFF] + (rxBuf[`ARRAY_IDX_OFF+1] << 8) + (rxBuf[`ARRAY_IDX_OFF+2] << 16) + (rxBuf[`ARRAY_IDX_OFF+3] << 24) + (rxBuf[`ARRAY_IDX_OFF+4] << 32) + (rxBuf[`ARRAY_IDX_OFF+5] << 40) + (rxBuf[`ARRAY_IDX_OFF+6] << 48) + (rxBuf[`ARRAY_IDX_OFF+7] << 56);\n''' + '''latch_t1 = _temp_time;\n\n''' + '''spi_trans( (16'h0518), (`SPI_READ), (8), (`IF_IDX(4)));\n''' - + '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + #+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + + '''_temp_time = rxBuf[`ARRAY_IDX_OFF] + (rxBuf[`ARRAY_IDX_OFF+1] << 8) + (rxBuf[`ARRAY_IDX_OFF+2] << 16) + (rxBuf[`ARRAY_IDX_OFF+3] << 24) + (rxBuf[`ARRAY_IDX_OFF+4] << 32) + (rxBuf[`ARRAY_IDX_OFF+5] << 40) + (rxBuf[`ARRAY_IDX_OFF+6] << 48) + (rxBuf[`ARRAY_IDX_OFF+7] << 56);\n''' + '''latch_t2 = _temp_time;\n''' + '''_temp_time = latch_t1 - latch_t2;\n\n''' - + '''txBuf[3] = _temp_time[7:0];\n''' - + '''txBuf[4] = _temp_time[15:8];\n''' - + '''txBuf[5] = _temp_time[23:16];\n''' - + '''txBuf[6] = _temp_time[31:24];\n''' - + '''txBuf[7] = _temp_time[39:32];\n''' - + '''txBuf[8] = _temp_time[47:40];\n''' - + '''txBuf[9] = _temp_time[55:48];\n''' - + '''txBuf[10] = _temp_time[63:56];\n''' + + '''txBuf[`ARRAY_IDX_OFF] = _temp_time[7:0];\n''' + + '''txBuf[`ARRAY_IDX_OFF+1] = _temp_time[15:8];\n''' + + '''txBuf[`ARRAY_IDX_OFF+2] = _temp_time[23:16];\n''' + + '''txBuf[`ARRAY_IDX_OFF+3] = _temp_time[31:24];\n''' + + '''txBuf[`ARRAY_IDX_OFF+4] = _temp_time[39:32];\n''' + + '''txBuf[`ARRAY_IDX_OFF+5] = _temp_time[47:40];\n''' + + '''txBuf[`ARRAY_IDX_OFF+6] = _temp_time[55:48];\n''' + + '''txBuf[`ARRAY_IDX_OFF+7] = _temp_time[63:56];\n''' + '''spi_trans( (16'h0148), (`SPI_WRITE), (8), (`IF_IDX(4)));\n''' ) @@ -2898,22 +2900,24 @@ def tc31(): +genIFRwDataCode(4, 0x500, False, 0x48) + '''spi_trans( (16'h0518), (`SPI_READ), (8), (`IF_IDX(0)));\n''' - + '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + #+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + + '''_temp_time = rxBuf[`ARRAY_IDX_OFF] + (rxBuf[`ARRAY_IDX_OFF+1] << 8) + (rxBuf[`ARRAY_IDX_OFF+2] << 16) + (rxBuf[`ARRAY_IDX_OFF+3] << 24) + (rxBuf[`ARRAY_IDX_OFF+4] << 32) + (rxBuf[`ARRAY_IDX_OFF+5] << 40) + (rxBuf[`ARRAY_IDX_OFF+6] << 48) + (rxBuf[`ARRAY_IDX_OFF+7] << 56);\n''' + '''latch_t1 = _temp_time;\n\n''' + '''spi_trans( (16'h0518), (`SPI_READ), (8), (`IF_IDX(4)));\n''' - + '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + #+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + + '''_temp_time = rxBuf[`ARRAY_IDX_OFF] + (rxBuf[`ARRAY_IDX_OFF+1] << 8) + (rxBuf[`ARRAY_IDX_OFF+2] << 16) + (rxBuf[`ARRAY_IDX_OFF+3] << 24) + (rxBuf[`ARRAY_IDX_OFF+4] << 32) + (rxBuf[`ARRAY_IDX_OFF+5] << 40) + (rxBuf[`ARRAY_IDX_OFF+6] << 48) + (rxBuf[`ARRAY_IDX_OFF+7] << 56);\n''' + '''latch_t2 = _temp_time;\n''' + '''_temp_time = latch_t1 - latch_t2;\n\n''' - + '''txBuf[3] = _temp_time[7:0];\n''' - + '''txBuf[4] = _temp_time[15:8];\n''' - + '''txBuf[5] = _temp_time[23:16];\n''' - + '''txBuf[6] = _temp_time[31:24];\n''' - + '''txBuf[7] = _temp_time[39:32];\n''' - + '''txBuf[8] = _temp_time[47:40];\n''' - + '''txBuf[9] = _temp_time[55:48];\n''' - + '''txBuf[10] = _temp_time[63:56];\n''' + + '''txBuf[`ARRAY_IDX_OFF] = _temp_time[7:0];\n''' + + '''txBuf[`ARRAY_IDX_OFF+1] = _temp_time[15:8];\n''' + + '''txBuf[`ARRAY_IDX_OFF+2] = _temp_time[23:16];\n''' + + '''txBuf[`ARRAY_IDX_OFF+3] = _temp_time[31:24];\n''' + + '''txBuf[`ARRAY_IDX_OFF+4] = _temp_time[39:32];\n''' + + '''txBuf[`ARRAY_IDX_OFF+5] = _temp_time[47:40];\n''' + + '''txBuf[`ARRAY_IDX_OFF+6] = _temp_time[55:48];\n''' + + '''txBuf[`ARRAY_IDX_OFF+7] = _temp_time[63:56];\n''' + '''spi_trans( (16'h0148), (`SPI_WRITE), (8), (`IF_IDX(4)));\n''' ) diff --git a/tb/shinTest/testcase/environment.py b/tb/shinTest/testcase/environment.py index 2bcb66d..b82cf0a 100644 --- a/tb/shinTest/testcase/environment.py +++ b/tb/shinTest/testcase/environment.py @@ -246,6 +246,12 @@ def __GenDevice(id, TerminateNode = False): +"\t.io_oqspi_isDirIn(),\n" +"\t.io_oqspi_csn(`EQSPI_CSN(%d)),\n\n"%(id + 1, ) + +"\t.io_aqspi_sck(qspi_sck),\n" + +"\t.io_aqspi_mosi(qspi_mosi),\n" + +"\t.io_aqspi_miso(`AQSPI_MISO(%d)),\n"%(id + 1, ) + +"\t.io_aqspi_isDirIn(),\n" + +"\t.io_aqspi_csn(`AQSPI_CSN(%d)),\n"%(id + 1, ) + +"\t.io_isSoftReset(isSoftReset[%d]),\n"%(id + 1, ) +"\t.io_interrupt(io_int_sig[%d]),\n"%(id + 1, ) +"\t.io_latchPin_0(latch0),\n" @@ -265,21 +271,27 @@ def __gen_slv_dev_predef(num): code_predef =("`define DEV_NUM %d //slave num\n"%(num, ) +"`define ALL_DEV_NUM (`DEV_NUM + 1) // slave + master\n" - +"`define SPI_CSN_NUM (`ALL_DEV_NUM * 3)\n" + +"`define SPI_CSN_NUM (`ALL_DEV_NUM * 4)\n\n" - +"`define HW_SERIAL 48'h31303050584c //(48'h4c5850303031)\n" + +"`define HW_SERIAL 48'h31303050584c //(48'h4c5850303031)\n\n" + +"`define IQSPI_PINS(N) (N*4+3):(N*4)\n" +"`define EQSPI_PINS(N) ((N + `ALL_DEV_NUM)*4+3):((N + `ALL_DEV_NUM)*4)\n" + +"`define AQSPI_PINS(N) ((N + `ALL_DEV_NUM * 2)*4+3):((N + `ALL_DEV_NUM * 2)*4)\n\n" + +"`define IQSPI_MISO(N) qspi_miso[`IQSPI_PINS(N)]\n" +"`define EQSPI_MISO(N) qspi_miso[`EQSPI_PINS(N)]\n" + +"`define AQSPI_MISO(N) qspi_miso[`AQSPI_PINS(N)]\n\n" +"`define IQSPI_CSN_NUM(id) (id)\n" +"`define ESPI_CSN_NUM(id) ((id)+(`ALL_DEV_NUM))\n" +"`define EQSPI_CSN_NUM(id) ((id)+(`ALL_DEV_NUM)*2)\n" + +"`define AQSPI_CSN_NUM(id) ((id)+(`ALL_DEV_NUM)*3)\n\n" +"`define IQSPI_CSN(id) spi_csn[`IQSPI_CSN_NUM(id)]\n" +"`define ESPI_CSN(id) spi_csn[`ESPI_CSN_NUM(id)]\n" +"`define EQSPI_CSN(id) spi_csn[`EQSPI_CSN_NUM(id)]\n" + +"`define AQSPI_CSN(id) spi_csn[`AQSPI_CSN_NUM(id)]\n\n" ) code_qspi_mux_init = "`define QSPI_MUX_MISO_INIT \\\n" @@ -290,7 +302,11 @@ def __gen_slv_dev_predef(num): for i in range(num): code_qspi_mux_init_item = code_qspi_mux_init_item + "\t\t(`EQSPI_MISO(%d) & ~{4{`EQSPI_CSN(%d)}}) |\\\n"%(i, i) - code_qspi_mux_init_item = code_qspi_mux_init_item + "\t\t(`EQSPI_MISO(%d) & ~{4{`EQSPI_CSN(%d)}})\n\n"%(num, num) + code_qspi_mux_init_item = code_qspi_mux_init_item + "\t\t(`EQSPI_MISO(%d) & ~{4{`EQSPI_CSN(%d)}}) |\\\n"%(num, num) + + for i in range(num): + code_qspi_mux_init_item = code_qspi_mux_init_item + "\t\t(`AQSPI_MISO(%d) & ~{4{`AQSPI_CSN(%d)}}) |\\\n"%(i, i) + code_qspi_mux_init_item = code_qspi_mux_init_item + "\t\t(`AQSPI_MISO(%d) & ~{4{`AQSPI_CSN(%d)}})\n\n"%(num, num) code_qspi_mux_init = code_qspi_mux_init + code_qspi_mux_init_item diff --git a/tb/shinTest/testcase/sync.py b/tb/shinTest/testcase/sync.py index a4229b5..f0b659b 100644 --- a/tb/shinTest/testcase/sync.py +++ b/tb/shinTest/testcase/sync.py @@ -133,7 +133,8 @@ def tc2(): genPkt.addBeforeExc(genEnableInsertTimeCode(0xa) + '''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n''' - + '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + #+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + + '''_temp_time = rxBuf[`ARRAY_IDX_OFF] + (rxBuf[`ARRAY_IDX_OFF+1] << 8) + (rxBuf[`ARRAY_IDX_OFF+2] << 16) + (rxBuf[`ARRAY_IDX_OFF+3] << 24) + (rxBuf[`ARRAY_IDX_OFF+4] << 32) + (rxBuf[`ARRAY_IDX_OFF+5] << 40) + (rxBuf[`ARRAY_IDX_OFF+6] << 48) + (rxBuf[`ARRAY_IDX_OFF+7] << 56);\n''' + '''_temp_time = _temp_time + 32'h2000;\n\n''') genPkt.addSubPkt(0x0, 0, 0x0, 0xc, 12, b'\0'*12) @@ -255,7 +256,8 @@ def tc3(): genPkt.addBeforeExc(genEnableInsertTimeCode(0xa, 1, 1) + '''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n''' - + '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + #+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + + '''_temp_time = rxBuf[`ARRAY_IDX_OFF] + (rxBuf[`ARRAY_IDX_OFF+1] << 8) + (rxBuf[`ARRAY_IDX_OFF+2] << 16) + (rxBuf[`ARRAY_IDX_OFF+3] << 24) + (rxBuf[`ARRAY_IDX_OFF+4] << 32) + (rxBuf[`ARRAY_IDX_OFF+5] << 40) + (rxBuf[`ARRAY_IDX_OFF+6] << 48) + (rxBuf[`ARRAY_IDX_OFF+7] << 56);\n''' + '''_temp_time = _temp_time + 32'h4000;\n\n''') genPkt.addSubPkt(0x0, 0, 0x0, 0xc, 12, b'\0'*12) @@ -414,7 +416,8 @@ def tc4(): genPkt.addBeforeExc(genEnableInsertTimeCode(0xa) + '''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n''' - + '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + #+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + + '''_temp_time = rxBuf[`ARRAY_IDX_OFF] + (rxBuf[`ARRAY_IDX_OFF+1] << 8) + (rxBuf[`ARRAY_IDX_OFF+2] << 16) + (rxBuf[`ARRAY_IDX_OFF+3] << 24) + (rxBuf[`ARRAY_IDX_OFF+4] << 32) + (rxBuf[`ARRAY_IDX_OFF+5] << 40) + (rxBuf[`ARRAY_IDX_OFF+6] << 48) + (rxBuf[`ARRAY_IDX_OFF+7] << 56);\n''' + '''_temp_time = _temp_time + 32'h3000;\n\n''') genPkt.addSubPkt(0, 0, 0x18, 0xe, 2, [0x1, 0x58]) @@ -642,7 +645,8 @@ def tc5(): genPkt.addBeforeExc(genEnableInsertTimeCode(0xa) + '''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n''' - + '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + #+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + + '''_temp_time = rxBuf[`ARRAY_IDX_OFF] + (rxBuf[`ARRAY_IDX_OFF+1] << 8) + (rxBuf[`ARRAY_IDX_OFF+2] << 16) + (rxBuf[`ARRAY_IDX_OFF+3] << 24) + (rxBuf[`ARRAY_IDX_OFF+4] << 32) + (rxBuf[`ARRAY_IDX_OFF+5] << 40) + (rxBuf[`ARRAY_IDX_OFF+6] << 48) + (rxBuf[`ARRAY_IDX_OFF+7] << 56);\n''' + '''_temp_time = _temp_time + 32'h3000;\n\n''') genPkt.addSubPkt(0, 0, 0x18, 0xe, 2, [0x1, 0x58]) @@ -940,7 +944,8 @@ def tc6(): genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des) +genEnableInsertTimeCode(0xa) + '''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n''' - + '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + #+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + + '''_temp_time = rxBuf[`ARRAY_IDX_OFF] + (rxBuf[`ARRAY_IDX_OFF+1] << 8) + (rxBuf[`ARRAY_IDX_OFF+2] << 16) + (rxBuf[`ARRAY_IDX_OFF+3] << 24) + (rxBuf[`ARRAY_IDX_OFF+4] << 32) + (rxBuf[`ARRAY_IDX_OFF+5] << 40) + (rxBuf[`ARRAY_IDX_OFF+6] << 48) + (rxBuf[`ARRAY_IDX_OFF+7] << 56);\n''' + '''_temp_time = _temp_time + 32'h3000;\n\n''') genPkt.addSubPkt(0x0, 0, 0x0, 0xc, 12, b'\0'*12) @@ -1144,7 +1149,8 @@ def tc7(): genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des) +genEnableInsertTimeCode(0xa) + '''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n''' - + '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + #+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + + '''_temp_time = rxBuf[`ARRAY_IDX_OFF] + (rxBuf[`ARRAY_IDX_OFF+1] << 8) + (rxBuf[`ARRAY_IDX_OFF+2] << 16) + (rxBuf[`ARRAY_IDX_OFF+3] << 24) + (rxBuf[`ARRAY_IDX_OFF+4] << 32) + (rxBuf[`ARRAY_IDX_OFF+5] << 40) + (rxBuf[`ARRAY_IDX_OFF+6] << 48) + (rxBuf[`ARRAY_IDX_OFF+7] << 56);\n''' + '''_temp_time = _temp_time + 32'h3000;\n\n''') genPkt.addSubPkt(0x0, 0, 0x0, 0xc, 12, b'\0'*12) @@ -1379,43 +1385,43 @@ def tc7(): genPkt.addBeforeExc(genEnableInsertTimeCode(0xa) + '''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n''' - + '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + #+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + + '''_temp_time = rxBuf[`ARRAY_IDX_OFF] + (rxBuf[`ARRAY_IDX_OFF+1] << 8) + (rxBuf[`ARRAY_IDX_OFF+2] << 16) + (rxBuf[`ARRAY_IDX_OFF+3] << 24) + (rxBuf[`ARRAY_IDX_OFF+4] << 32) + (rxBuf[`ARRAY_IDX_OFF+5] << 40) + (rxBuf[`ARRAY_IDX_OFF+6] << 48) + (rxBuf[`ARRAY_IDX_OFF+7] << 56);\n''' + '''_temp_time = _temp_time + 32'h3000;\n\n''' - + '''txBuf[3] = 8'h0f;\n''' - + '''txBuf[4] = 8'h00;\n''' - + '''txBuf[5] = 8'h0a;\n''' - + '''txBuf[6] = 8'h00;\n''' - + '''txBuf[7] = 8'h0a;\n''' - + '''txBuf[8] = 8'h00;\n''' - + '''txBuf[9] = 8'h0a;\n''' - + '''txBuf[10] = 8'h00;\n''' - + '''txBuf[11] = 8'h01;\n''' - + '''txBuf[12] = 8'h00;\n''' - + '''txBuf[19] = (_temp_time & 8'hff);\n''' - + '''txBuf[20] = ( (_temp_time >> 8) & 8'hff);\n''' - + '''txBuf[21] = ((_temp_time >> 16) & 8'hff);\n''' - + '''txBuf[22] = ((_temp_time >> 24) & 8'hff);\n''' - + '''txBuf[23] = ((_temp_time >> 32) & 8'hff);\n''' - + '''txBuf[24] = 0;\n''' - + '''txBuf[25] = 0;\n''' - + '''txBuf[26] = 0;\n''' - + '''txBuf[27] = 8'h80;\n''' - + '''txBuf[28] = 8'h00;\n''' - + '''txBuf[29] = 8'h00;\n''' - + '''txBuf[30] = 8'h00;\n''' - + '''txBuf[31] = 8'h00;\n''' - + '''txBuf[32] = 8'h00;\n''' - + '''txBuf[33] = 8'h00;\n''' - + '''txBuf[34] = 8'h00;\n''' - + '''txBuf[35] = 8'h00;\n''' - + '''txBuf[36] = 8'h00;\n''' - + '''txBuf[37] = 8'h00;\n''' - + '''txBuf[38] = 8'h00;\n''' - + '''txBuf[39] = 8'h00;\n''' - + '''txBuf[40] = 8'h00;\n''' - + '''txBuf[41] = 8'h00;\n''' - + '''txBuf[42] = 8'h00;\n''' - + '''txBuf[43] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF] = 8'h0f;\n''' + + '''txBuf[`ARRAY_IDX_OFF+1] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+2] = 8'h0a;\n''' + + '''txBuf[`ARRAY_IDX_OFF+3] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+4] = 8'h0a;\n''' + + '''txBuf[`ARRAY_IDX_OFF+5] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+6] = 8'h0a;\n''' + + '''txBuf[`ARRAY_IDX_OFF+7] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+8] = 8'h01;\n''' + + '''txBuf[`ARRAY_IDX_OFF+9] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+16] = (_temp_time & 8'hff);\n''' + + '''txBuf[`ARRAY_IDX_OFF+17] = ( (_temp_time >> 8) & 8'hff);\n''' + + '''txBuf[`ARRAY_IDX_OFF+18] = ((_temp_time >> 16) & 8'hff);\n''' + + '''txBuf[`ARRAY_IDX_OFF+19] = ((_temp_time >> 24) & 8'hff);\n''' + + '''txBuf[`ARRAY_IDX_OFF+20] = ((_temp_time >> 32) & 8'hff);\n''' + + '''txBuf[`ARRAY_IDX_OFF+21] = 0;\n''' + + '''txBuf[`ARRAY_IDX_OFF+22] = 0;\n''' + + '''txBuf[`ARRAY_IDX_OFF+23] = 0;\n''' + + '''txBuf[`ARRAY_IDX_OFF+24] = 8'h80;\n''' + + '''txBuf[`ARRAY_IDX_OFF+25] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+26] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+27] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+28] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+29] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+30] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+31] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+32] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+33] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+34] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+35] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+36] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+37] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+38] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+39] = 8'h00;\n''' + '''spi_trans( (16'h0120), (`SPI_WRITE), (40), (`IF_IDX(0)));\n''' ) @@ -1577,7 +1583,8 @@ def tc8(): genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des) +genEnableInsertTimeCode(0xa) + '''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n''' - + '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + #+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + + '''_temp_time = rxBuf[`ARRAY_IDX_OFF] + (rxBuf[`ARRAY_IDX_OFF+1] << 8) + (rxBuf[`ARRAY_IDX_OFF+2] << 16) + (rxBuf[`ARRAY_IDX_OFF+3] << 24) + (rxBuf[`ARRAY_IDX_OFF+4] << 32) + (rxBuf[`ARRAY_IDX_OFF+5] << 40) + (rxBuf[`ARRAY_IDX_OFF+6] << 48) + (rxBuf[`ARRAY_IDX_OFF+7] << 56);\n''' + '''_temp_time = _temp_time + 32'h3000;\n\n''') genPkt.addSubPkt(0x0, 0, 0x0, 0xc, 12, b'\0'*12) @@ -1903,43 +1910,43 @@ def tc8(): genPkt.addBeforeExc(genEnableInsertTimeCode(0xa) + '''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n''' - + '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + #+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n''' + + '''_temp_time = rxBuf[`ARRAY_IDX_OFF] + (rxBuf[`ARRAY_IDX_OFF+1] << 8) + (rxBuf[`ARRAY_IDX_OFF+2] << 16) + (rxBuf[`ARRAY_IDX_OFF+3] << 24) + (rxBuf[`ARRAY_IDX_OFF+4] << 32) + (rxBuf[`ARRAY_IDX_OFF+5] << 40) + (rxBuf[`ARRAY_IDX_OFF+6] << 48) + (rxBuf[`ARRAY_IDX_OFF+7] << 56);\n''' + '''_temp_time = _temp_time + 32'h3000;\n\n''' - + '''txBuf[3] = 8'h0f;\n''' - + '''txBuf[4] = 8'h00;\n''' - + '''txBuf[5] = 8'h0a;\n''' - + '''txBuf[6] = 8'h00;\n''' - + '''txBuf[7] = 8'h0a;\n''' - + '''txBuf[8] = 8'h00;\n''' - + '''txBuf[9] = 8'h0a;\n''' - + '''txBuf[10] = 8'h00;\n''' - + '''txBuf[11] = 8'h01;\n''' - + '''txBuf[12] = 8'h00;\n''' - + '''txBuf[19] = (_temp_time & 8'hff);\n''' - + '''txBuf[20] = ( (_temp_time >> 8) & 8'hff);\n''' - + '''txBuf[21] = ((_temp_time >> 16) & 8'hff);\n''' - + '''txBuf[22] = ((_temp_time >> 24) & 8'hff);\n''' - + '''txBuf[23] = ((_temp_time >> 32) & 8'hff);\n''' - + '''txBuf[24] = 0;\n''' - + '''txBuf[25] = 0;\n''' - + '''txBuf[26] = 0;\n''' - + '''txBuf[27] = 8'h80;\n''' - + '''txBuf[28] = 8'h00;\n''' - + '''txBuf[29] = 8'h00;\n''' - + '''txBuf[30] = 8'h00;\n''' - + '''txBuf[31] = 8'h00;\n''' - + '''txBuf[32] = 8'h00;\n''' - + '''txBuf[33] = 8'h00;\n''' - + '''txBuf[34] = 8'h00;\n''' - + '''txBuf[35] = 8'h00;\n''' - + '''txBuf[36] = 8'h00;\n''' - + '''txBuf[37] = 8'h00;\n''' - + '''txBuf[38] = 8'h00;\n''' - + '''txBuf[39] = 8'h00;\n''' - + '''txBuf[40] = 8'h00;\n''' - + '''txBuf[41] = 8'h00;\n''' - + '''txBuf[42] = 8'h00;\n''' - + '''txBuf[43] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF] = 8'h0f;\n''' + + '''txBuf[`ARRAY_IDX_OFF+1] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+2] = 8'h0a;\n''' + + '''txBuf[`ARRAY_IDX_OFF+3] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+4] = 8'h0a;\n''' + + '''txBuf[`ARRAY_IDX_OFF+5] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+6] = 8'h0a;\n''' + + '''txBuf[`ARRAY_IDX_OFF+7] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+8] = 8'h01;\n''' + + '''txBuf[`ARRAY_IDX_OFF+9] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+16] = (_temp_time & 8'hff);\n''' + + '''txBuf[`ARRAY_IDX_OFF+17] = ( (_temp_time >> 8) & 8'hff);\n''' + + '''txBuf[`ARRAY_IDX_OFF+18] = ((_temp_time >> 16) & 8'hff);\n''' + + '''txBuf[`ARRAY_IDX_OFF+19] = ((_temp_time >> 24) & 8'hff);\n''' + + '''txBuf[`ARRAY_IDX_OFF+20] = ((_temp_time >> 32) & 8'hff);\n''' + + '''txBuf[`ARRAY_IDX_OFF+21] = 0;\n''' + + '''txBuf[`ARRAY_IDX_OFF+22] = 0;\n''' + + '''txBuf[`ARRAY_IDX_OFF+23] = 0;\n''' + + '''txBuf[`ARRAY_IDX_OFF+24] = 8'h80;\n''' + + '''txBuf[`ARRAY_IDX_OFF+25] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+26] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+27] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+28] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+29] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+30] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+31] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+32] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+33] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+34] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+35] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+36] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+37] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+38] = 8'h00;\n''' + + '''txBuf[`ARRAY_IDX_OFF+39] = 8'h00;\n''' + '''spi_trans( (16'h0120), (`SPI_WRITE), (40), (`IF_IDX(0)));\n''' )