Commit 4713fc48 authored by Andrey Filippov's avatar Andrey Filippov

fixed logger for simulation

parent 158be190
......@@ -427,7 +427,9 @@ module mult_saxi_wr #(
.MULT_SAXI_BSLOG3 (MULT_SAXI_BSLOG3)
) mult_saxi_wr_pointers_i (
.mclk (mclk), // input
.mrst (mrst), // input
.aclk (aclk), // input
.arst (arst), // input
.chn_en_mclk (en_chn_mclk), // input[3:0]
.sa_len_di (cmd_data[29:0]), // input[29:0]
.sa_len_wa (cmd_a[2:0]), // input[2:0]
......@@ -549,7 +551,7 @@ module mult_saxi_wr #(
.stb (cmd_stb), // input
.addr (cmd_a), // output[3:0]
.data (cmd_data), // output[31:0]
.we ({cmd_we_sa_len,we_ctrl,irq_log_we}) // output
.we ({irq_log_we,we_ctrl,cmd_we_sa_len}) // output
);
// now - converting all to parallel (TODO: use RAM for multi-word status data)
......
......@@ -45,7 +45,9 @@ module mult_saxi_wr_pointers#(
parameter MULT_SAXI_BSLOG3 = 4
)(
input mclk, // system clock
input mrst, //
input aclk, // global clock to run s_axi (@150MHz?)
input arst, //
input [3:0] chn_en_mclk, // enable this channle ( 0 - reset)
input [29:0] sa_len_di, // input data to write pointers address/data
input [ 2:0] sa_len_wa, // channel address to write sa/lengths
......@@ -57,7 +59,7 @@ module mult_saxi_wr_pointers#(
// provide address and burst length for AXI @aclk, will stay until ackn
output reg [29:0] axi_addr,
output reg [3:0] axi_len,
// write data to external pointre memory (to be read out by PIO) @ aclk
// write data to external pointer memory (to be read out by PIO) @ aclk
// alternatively - read out directly from ptr_ram?
output [29:0] pntr_wd, // @aclk
output [1:0] pntr_wa,
......@@ -92,6 +94,7 @@ module mult_saxi_wr_pointers#(
reg [30:0] ptr_rollover;
reg [4:0] burst_size; // ROM
wire [29:0] ptr_wd;
reg arst_d; //delayed version of arst
assign reset_rq_enc = {reset_rq_pri[3] | reset_rq_pri[2],
reset_rq_pri[3] | reset_rq_pri[1]};
......@@ -134,7 +137,12 @@ module mult_saxi_wr_pointers#(
always @ (posedge aclk) begin
chn_en_aclk <= chn_en_mclk;
reset_rq <= rst_pntr_aclk | (reset_rq & ~({4{resetting[0] &~ resetting[1]}} & reset_rq_pri));
arst_d <= arst; // probably not needed?
if (arst) reset_rq <= ~0; // or ~0 ? Add auto reset after
// else reset_rq <= {4{arst_d}} | rst_pntr_aclk | (reset_rq & ~({4{resetting[0] &~ resetting[1]}} & reset_rq_pri));
else reset_rq <= rst_pntr_aclk | (reset_rq & ~({4{resetting[0] &~ resetting[1]}} & reset_rq_pri));
if (start_resetting_w) reset_rq_pri <= {reset_rq[3] & ~(|reset_rq[2:0]),
reset_rq[2] & ~(|reset_rq[1:0]),
reset_rq[1] & ~reset_rq[0],
......
[*]
[*] GTKWave Analyzer v3.3.66 (w)1999-2015 BSI
[*] Sun Oct 23 15:34:21 2016
[*] Mon Oct 24 00:30:16 2016
[*]
[dumpfile] "/home/eyesis/git/x393-neon/simulation/x393_dut-20161023002450549.fst"
[dumpfile_mtime] "Sun Oct 23 07:43:15 2016"
[dumpfile_size] 421314821
[dumpfile] "/home/eyesis/git/x393-neon/simulation/x393_dut-20161023171014405.fst"
[dumpfile_mtime] "Mon Oct 24 00:23:04 2016"
[dumpfile_size] 364619214
[savefile] "/home/eyesis/git/x393-neon/cocotb/x393_cocotb_03.sav"
[timestart] 0
[size] 1814 1171
[pos] 1920 0
*-26.672018 548510000 53094051 136169617 216213845 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
[pos] 0 0
*-26.593010 46043333 53094051 136169617 216213845 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
[treeopen] x393_dut.
[treeopen] x393_dut.simul_sensor12bits_2_i.
[treeopen] x393_dut.simul_sensor12bits_3_i.
......@@ -19,13 +19,14 @@
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.
[treeopen] x393_dut.x393_i.event_logger_i.
[treeopen] x393_dut.x393_i.event_logger_i.i_imu_exttime.
[treeopen] x393_dut.x393_i.event_logger_i.i_imu_exttime.timestamp_fifo_chn0_i.
[treeopen] x393_dut.x393_i.event_logger_i.i_imu_spi.
[treeopen] x393_dut.x393_i.event_logger_i.i_logger_arbiter.
[treeopen] x393_dut.x393_i.event_logger_i.i_nmea_decoder.
[treeopen] x393_dut.x393_i.event_logger_i.i_rs232_rcv.
[treeopen] x393_dut.x393_i.mult_saxi_wr_i.
[treeopen] x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sensor_i2c_io_i.
......@@ -40,10 +41,10 @@
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[3].sensor_channel_i.sens_parallel12_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[3].sensor_channel_i.sens_sync_i.
[treeopen] x393_dut.x393_i.timing393_i.camsync393_i.
[sst_width] 380
[signals_width] 259
[sst_width] 398
[signals_width] 323
[sst_expanded] 1
[sst_vpaned_height] 487
[sst_vpaned_height] 486
@820
x393_dut.TEST_TITLE[639:0]
@c00200
......@@ -835,8 +836,6 @@ x393_dut.x393_i.ts_pre_stb[3:0]
(3)x393_dut.x393_i.ts_pre_stb[3:0]
@1001200
-group_end
@200
-
@c00022
x393_dut.x393_i.event_logger_i.ext_di[9:0]
@28
......@@ -1123,8 +1122,14 @@ x393_dut.x393_i.event_logger_i.i_nmea_decoder.ser_di
x393_dut.x393_i.event_logger_i.i_nmea_decoder.ser_stb
x393_dut.x393_i.event_logger_i.i_nmea_decoder.nmea_sent_start
x393_dut.x393_i.event_logger_i.i_nmea_decoder.rdy
@22
[color] 2
x393_dut.x393_i.event_logger_i.i_nmea_decoder.raddr[4:0]
@28
[color] 2
x393_dut.x393_i.event_logger_i.i_nmea_decoder.rd_stb
@22
[color] 2
x393_dut.x393_i.event_logger_i.i_nmea_decoder.rdata[15:0]
@c00022
x393_dut.x393_i.event_logger_i.i_nmea_decoder.debug[23:0]
......@@ -1197,9 +1202,27 @@ x393_dut.x393_i.event_logger_i.i_nmea_decoder.we
@22
x393_dut.x393_i.event_logger_i.i_nmea_decoder.wa[4:0]
x393_dut.x393_i.event_logger_i.i_nmea_decoder.wd[7:0]
@200
-
@28
x393_dut.x393_i.event_logger_i.i_nmea_decoder.nibble_stb
@c00022
x393_dut.x393_i.event_logger_i.i_nmea_decoder.nibble_count[6:0]
@28
(0)x393_dut.x393_i.event_logger_i.i_nmea_decoder.nibble_count[6:0]
(1)x393_dut.x393_i.event_logger_i.i_nmea_decoder.nibble_count[6:0]
(2)x393_dut.x393_i.event_logger_i.i_nmea_decoder.nibble_count[6:0]
(3)x393_dut.x393_i.event_logger_i.i_nmea_decoder.nibble_count[6:0]
(4)x393_dut.x393_i.event_logger_i.i_nmea_decoder.nibble_count[6:0]
(5)x393_dut.x393_i.event_logger_i.i_nmea_decoder.nibble_count[6:0]
(6)x393_dut.x393_i.event_logger_i.i_nmea_decoder.nibble_count[6:0]
@1401200
-group_end
@22
x393_dut.x393_i.event_logger_i.i_nmea_decoder.nibble[3:0]
@1401200
-nmea_decoder
@800200
@c00200
-imu_exttime
@28
x393_dut.x393_i.event_logger_i.i_imu_exttime.mclk
......@@ -1208,10 +1231,10 @@ x393_dut.x393_i.event_logger_i.i_imu_exttime.xclk
x393_dut.x393_i.event_logger_i.i_imu_exttime.xrst
x393_dut.x393_i.event_logger_i.i_imu_exttime.ts
x393_dut.x393_i.event_logger_i.i_imu_exttime.rdy
@29
x393_dut.x393_i.event_logger_i.i_imu_exttime.rd_stb
@28
x393_dut.x393_i.event_logger_i.i_imu_exttime.ts_full
x393_dut.x393_i.event_logger_i.i_imu_exttime.rd_start
x393_dut.x393_i.event_logger_i.i_imu_exttime.rd_start_mclk
@22
x393_dut.x393_i.event_logger_i.i_imu_exttime.copy_data[7:0]
x393_dut.x393_i.event_logger_i.i_imu_exttime.copy_data_r[7:0]
......@@ -1220,16 +1243,7 @@ x393_dut.x393_i.event_logger_i.i_imu_exttime.copy_data_r[7:0]
x393_dut.x393_i.event_logger_i.i_imu_exttime.sel_chn[1:0]
(1)x393_dut.x393_i.event_logger_i.i_imu_exttime.copy_selected[1:0]
(2)x393_dut.x393_i.event_logger_i.i_imu_exttime.copy_cntr[2:0]
@c08022
x393_dut.x393_i.event_logger_i.i_imu_exttime.raddr[4:0]
@28
(0)x393_dut.x393_i.event_logger_i.i_imu_exttime.raddr[4:0]
(1)x393_dut.x393_i.event_logger_i.i_imu_exttime.raddr[4:0]
(2)x393_dut.x393_i.event_logger_i.i_imu_exttime.raddr[4:0]
(3)x393_dut.x393_i.event_logger_i.i_imu_exttime.raddr[4:0]
(4)x393_dut.x393_i.event_logger_i.i_imu_exttime.raddr[4:0]
@1401200
-group_end
x393_dut.x393_i.event_logger_i.i_imu_exttime.raddr[2:0]
@c00022
x393_dut.x393_i.event_logger_i.i_imu_exttime.rdata[15:0]
@28
......@@ -1300,9 +1314,7 @@ x393_dut.x393_i.event_logger_i.i_imu_exttime.in_full[3:0]
(1)x393_dut.x393_i.event_logger_i.i_imu_exttime.in_full[3:0]
(2)x393_dut.x393_i.event_logger_i.i_imu_exttime.in_full[3:0]
(3)x393_dut.x393_i.event_logger_i.i_imu_exttime.in_full[3:0]
x393_dut.x393_i.event_logger_i.i_imu_exttime.rd_start
x393_dut.x393_i.event_logger_i.i_imu_exttime.en
x393_dut.x393_i.event_logger_i.i_imu_exttime.rd_start_mclk
@1001200
-group_end
@28
......@@ -1388,9 +1400,44 @@ x393_dut.x393_i.event_logger_i.i_imu_exttime.timestamp_fifo_chn0_i.rpntr[3:0]
x393_dut.x393_i.event_logger_i.i_imu_exttime.timestamp_fifo_chn0_i.dout[7:0]
@200
-
@1000200
@1401200
-imu_exttime
@800200
@c00200
-imu_spi
-external
@28
x393_dut.IMU_CS
x393_dut.IMU_MOSI
x393_dut.IMU_MISO
@22
x393_dut.IMU_LOOPBACK[15:0]
@28
x393_dut.IMU_SCLK_OUT
@200
-
@28
(6)x393_dut.x393_i.gpio393_i.ext_pins[9:0]
(7)x393_dut.x393_i.gpio393_i.ext_pins[9:0]
@1401200
-external
@28
x393_dut.x393_i.event_logger_i.i_imu_spi.mosi
x393_dut.x393_i.event_logger_i.i_imu_spi.miso
x393_dut.x393_i.event_logger_i.i_imu_spi.sda
x393_dut.x393_i.event_logger_i.i_imu_spi.sda_en
x393_dut.x393_i.event_logger_i.i_imu_spi.scl
x393_dut.x393_i.event_logger_i.i_imu_spi.scl_en
x393_dut.x393_i.event_logger_i.i_imu_spi.ts
x393_dut.x393_i.event_logger_i.i_imu_spi.rdy
x393_dut.x393_i.event_logger_i.i_imu_spi.rd_stb
@22
x393_dut.x393_i.event_logger_i.i_imu_spi.raddr[4:0]
x393_dut.x393_i.event_logger_i.i_imu_spi.rdata[15:0]
@28
x393_dut.x393_i.event_logger_i.i_imu_spi.stall
@1401200
-imu_spi
@c00200
-logger_arbiter
@28
x393_dut.x393_i.event_logger_i.i_logger_arbiter.rst
......@@ -1444,7 +1491,7 @@ x393_dut.x393_i.event_logger_i.i_logger_arbiter.seq_cntr[4:0]
(2)x393_dut.x393_i.event_logger_i.i_logger_arbiter.seq_cntr[4:0]
(3)x393_dut.x393_i.event_logger_i.i_logger_arbiter.seq_cntr[4:0]
(4)x393_dut.x393_i.event_logger_i.i_logger_arbiter.seq_cntr[4:0]
@1401202
@1401200
-group_end
@c08022
x393_dut.x393_i.event_logger_i.i_logger_arbiter.seq_cntr[4:0]
......@@ -1458,7 +1505,7 @@ x393_dut.x393_i.event_logger_i.i_logger_arbiter.seq_cntr[4:0]
-group_end
@28
x393_dut.x393_i.event_logger_i.i_logger_arbiter.pre_nxt
@c00022
@800022
x393_dut.x393_i.event_logger_i.i_logger_arbiter.nxt[3:0]
@28
(0)x393_dut.x393_i.event_logger_i.i_logger_arbiter.nxt[3:0]
......@@ -1466,7 +1513,7 @@ x393_dut.x393_i.event_logger_i.i_logger_arbiter.nxt[3:0]
(2)x393_dut.x393_i.event_logger_i.i_logger_arbiter.nxt[3:0]
(3)x393_dut.x393_i.event_logger_i.i_logger_arbiter.nxt[3:0]
x393_dut.x393_i.event_logger_i.i_logger_arbiter.seq_cntr_last
@1401200
@1001200
-group_end
@28
x393_dut.x393_i.event_logger_i.i_logger_arbiter.channel[1:0]
......@@ -1481,18 +1528,77 @@ x393_dut.x393_i.event_logger_i.i_logger_arbiter.chn_servicing[3:0]
@28
x393_dut.x393_i.event_logger_i.i_logger_arbiter.wstart
x393_dut.x393_i.event_logger_i.i_logger_arbiter.chn1hot[3:1]
@1000200
@1401200
-logger_arbiter
@28
x393_dut.x393_i.event_logger_i.gps_pulse1sec_single
@c00022
x393_dut.x393_i.event_logger_i.timestamp_request[3:0]
@28
(0)x393_dut.x393_i.event_logger_i.timestamp_request[3:0]
(1)x393_dut.x393_i.event_logger_i.timestamp_request[3:0]
(2)x393_dut.x393_i.event_logger_i.timestamp_request[3:0]
(3)x393_dut.x393_i.event_logger_i.timestamp_request[3:0]
@1401200
-group_end
@c00022
x393_dut.x393_i.event_logger_i.timestamp_request_long[3:0]
@28
(0)x393_dut.x393_i.event_logger_i.timestamp_request_long[3:0]
(1)x393_dut.x393_i.event_logger_i.timestamp_request_long[3:0]
(2)x393_dut.x393_i.event_logger_i.timestamp_request_long[3:0]
(3)x393_dut.x393_i.event_logger_i.timestamp_request_long[3:0]
@1401200
-group_end
@c00022
x393_dut.x393_i.event_logger_i.timestamp_ackn[3:0]
@28
(0)x393_dut.x393_i.event_logger_i.timestamp_ackn[3:0]
(1)x393_dut.x393_i.event_logger_i.timestamp_ackn[3:0]
(2)x393_dut.x393_i.event_logger_i.timestamp_ackn[3:0]
(3)x393_dut.x393_i.event_logger_i.timestamp_ackn[3:0]
@1401200
-group_end
@22
x393_dut.x393_i.event_logger_i.channel_ready[3:0]
@c00022
x393_dut.x393_i.event_logger_i.channel_next[3:0]
@28
(0)x393_dut.x393_i.event_logger_i.channel_next[3:0]
(1)x393_dut.x393_i.event_logger_i.channel_next[3:0]
(2)x393_dut.x393_i.event_logger_i.channel_next[3:0]
(3)x393_dut.x393_i.event_logger_i.channel_next[3:0]
@1401200
-group_end
@28
x393_dut.x393_i.event_logger_i.mux_rdy_source
x393_dut.x393_i.event_logger_i.mux_data_valid
x393_dut.x393_i.event_logger_i.ts_en
@22
x393_dut.x393_i.event_logger_i.timestamps_rdata[15:0]
@c00022
x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
@28
(0)x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
(1)x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
(2)x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
(3)x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
(4)x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
(5)x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
(6)x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
(7)x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
(8)x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
(9)x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
(10)x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
(11)x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
(12)x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
(13)x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
(14)x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
(15)x393_dut.x393_i.event_logger_i.mux_data_source[15:0]
@1401200
-group_end
@22
x393_dut.x393_i.event_logger_i.mux_data_final[15:0]
@200
-
@800022
x393_dut.x393_i.event_logger_i.timestamp_request[3:0]
@28
......@@ -1502,8 +1608,142 @@ x393_dut.x393_i.event_logger_i.timestamp_request[3:0]
(3)x393_dut.x393_i.event_logger_i.timestamp_request[3:0]
@1001200
-group_end
@28
x393_dut.x393_i.event_logger_i.mclk
@22
[color] 3
x393_dut.x393_i.event_logger_i.data_out[15:0]
@28
[color] 3
x393_dut.x393_i.event_logger_i.data_out_stb
@22
[color] 3
x393_dut.x393_i.event_logger_i.sample_counter[23:0]
@c00200
-x393
@22
x393_dut.x393_i.logger_out[15:0]
@28
x393_dut.x393_i.logger_stb
@1401200
-x393
@1000200
-event_logger
@800200
-mult_saxi_wr_inbuf
@28
x393_dut.x393_i.mult_saxi_wr_inbuf_i.mclk
x393_dut.x393_i.mult_saxi_wr_inbuf_i.en
@22
x393_dut.x393_i.mult_saxi_wr_inbuf_i.data_in[15:0]
@28
x393_dut.x393_i.mult_saxi_wr_inbuf_i.valid
x393_dut.x393_i.mult_saxi_wr_inbuf_i.has_burst
x393_dut.x393_i.mult_saxi_wr_inbuf_i.read_burst
@22
x393_dut.x393_i.mult_saxi_wr_inbuf_i.data_out[31:0]
@1000200
-mult_saxi_wr_inbuf
@800200
-mult_saxi_wr
@22
x393_dut.x393_i.mult_saxi_wr_i.cmd_ad[7:0]
@28
x393_dut.x393_i.mult_saxi_wr_i.cmd_stb
x393_dut.x393_i.mult_saxi_wr_i.pre_valid_chn0
x393_dut.x393_i.mult_saxi_wr_i.irq_log_we
x393_dut.x393_i.mult_saxi_wr_i.we_ctrl
x393_dut.x393_i.mult_saxi_wr_i.cmd_we_sa_len
@22
x393_dut.x393_i.mult_saxi_wr_i.cmd_a[3:0]
x393_dut.x393_i.mult_saxi_wr_i.cmd_data[31:0]
@28
x393_dut.x393_i.mult_saxi_wr_i.saxi_awready
x393_dut.x393_i.mult_saxi_wr_i.saxi_awvalid
@22
x393_dut.x393_i.mult_saxi_wr_i.saxi_awaddr[31:0]
@28
x393_dut.x393_i.mult_saxi_wr_i.saxi_wready
x393_dut.x393_i.mult_saxi_wr_i.saxi_wvalid
@22
x393_dut.x393_i.mult_saxi_wr_i.saxi_wdata[31:0]
x393_dut.x393_i.mult_saxi_wr_i.axi_addr[29:0]
@800200
-mult_saxi_wr_pointers
@22
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.chn[1:0]
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.start
@28
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.busy
@22
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.chn_en_mclk[3:0]
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.chn_en_aclk[3:0]
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.axi_len[3:0]
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.axi_addr[29:0]
@28
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.ptr_we
@22
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.irqs[3:0]
@28
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.aclk
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.rst_aclk
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.en_aclk
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.busy_r
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.rst
@c00022
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.rst_pntr_mclk[3:0]
@28
(0)x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.rst_pntr_mclk[3:0]
(1)x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.rst_pntr_mclk[3:0]
(2)x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.rst_pntr_mclk[3:0]
(3)x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.rst_pntr_mclk[3:0]
@1401200
-group_end
@c00022
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.rst_pntr_aclk[3:0]
@28
(0)x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.rst_pntr_aclk[3:0]
(1)x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.rst_pntr_aclk[3:0]
(2)x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.rst_pntr_aclk[3:0]
(3)x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.rst_pntr_aclk[3:0]
@1401200
-group_end
@800022
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.reset_rq[3:0]
@22
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.reset_rq_pri[3:0]
@28
(0)x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.reset_rq[3:0]
(1)x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.reset_rq[3:0]
(2)x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.reset_rq[3:0]
(3)x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.reset_rq[3:0]
@1001200
-group_end
@28
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.start_resetting_w
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.resetting[1:0]
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.seq[1:0]
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.pntr_we
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.pntr_wa[1:0]
@22
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.pntr_wd[29:0]
@28
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.sa_len_we
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.sa_len_wa[2:0]
@22
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.sa_len_di[29:0]
@28
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.sa_len_ra[2:0]
@23
x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.sa_len_ram_out[29:0]
@28
x393_dut.x393_i.mult_saxi_wr_i.mrst
x393_dut.x393_i.mult_saxi_wr_i.arst
@200
-
@1000200
-mult_saxi_wr_pointers
-mult_saxi_wr
@c00200
-IMU_
@28
......
......@@ -140,6 +140,15 @@ class X393_cocotb_server(object):
data_bytes = 4,
autoflush = self.autoflush,
blatency = 5)
#event logger from FPGA
self.saxigp1 = SAXIWrSim (entity = dut,
name = "saxigp1",
clock = dut.saxi0_aclk,
mempath = self.mempath,
memhigh = self.memhigh,
data_bytes = 4,
autoflush = self.autoflush,
blatency = 5)
level = logging.DEBUG if debug else logging.INFO # WARNING
self.dut._log.info('Set debug level '+str(level)+", debug="+str(debug))
......@@ -150,6 +159,7 @@ class X393_cocotb_server(object):
self.saxihp0w.log.setLevel(level)
self.saxihp1w.log.setLevel(level)
self.saxigp0.log.setLevel(level)
self.saxigp1.log.setLevel(level)
#Initialize socket
self.PORT = port
......@@ -208,6 +218,7 @@ class X393_cocotb_server(object):
self.saxihp0w_thread = cocotb.fork(self.saxihp0w.saxi_wr_run())
self.saxihp1w_thread = cocotb.fork(self.saxihp1w.saxi_wr_run())
self.saxigp0_thread = cocotb.fork(self.saxigp0.saxi_wr_run())
self.saxigp1_thread = cocotb.fork(self.saxigp1.saxi_wr_run())
self.soc_conn.send(self.cmd.toJSON(0)+"\n")
self.dut._log.debug('Sent 0 to the socket')
started=True
......
......@@ -145,6 +145,19 @@ module x393_dut#(
input [3:0] saxigp0_bresp_latency,
output [3:0] saxigp0_wr_qos,
// Event logger FPGA -> CPU
output [31:0] saxigp1_wr_address,
output [ 5:0] saxigp1_wid,
output saxigp1_wr_valid,
input saxigp1_wr_ready,
output [31:0] saxigp1_wr_data,
output [3:0] saxigp1_wr_stb,
output [1:0] saxigp1_wr_size,
input [3:0] saxigp1_bresp_latency,
output [3:0] saxigp1_wr_qos,
output [NUM_INTERRUPTS-1:0] irq_r, // {x393_i.sata_irq, x393_i.cmprs_irq[3:0], x393_i.frseq_irq[3:0]};
// SATA and SATA clock I/O
......@@ -1347,6 +1360,43 @@ simul_axi_hp_wr #(
.sim_wr_qos (saxigp0_wr_qos) // output[3:0]
);
// SAXI_GP1 - event logger to system memory
simul_saxi_gp_wr simul_saxi_gp1_wr_i (
.rst (RST), // input
.aclk (saxi0_aclk), // input
.aresetn (), // output
.awaddr (x393_i.ps7_i.SAXIGP1AWADDR), // input[31:0]
.awvalid (x393_i.ps7_i.SAXIGP1AWVALID), // input
.awready (x393_i.ps7_i.SAXIGP1AWREADY), // output
.awid (x393_i.ps7_i.SAXIGP1AWID), // input[5:0]
.awlock (x393_i.ps7_i.SAXIGP1AWLOCK), // input[1:0]
.awcache (x393_i.ps7_i.SAXIGP1AWCACHE), // input[3:0]
.awprot (x393_i.ps7_i.SAXIGP1AWPROT), // input[2:0]
.awlen (x393_i.ps7_i.SAXIGP1AWLEN), // input[3:0]
.awsize (x393_i.ps7_i.SAXIGP1AWSIZE), // input[1:0]
.awburst (x393_i.ps7_i.SAXIGP1AWBURST), // input[1:0]
.awqos (x393_i.ps7_i.SAXIGP1AWQOS), // input[3:0]
.wdata (x393_i.ps7_i.SAXIGP1WDATA), // input[31:0]
.wvalid (x393_i.ps7_i.SAXIGP1WVALID), // input
.wready (x393_i.ps7_i.SAXIGP1WREADY), // output
.wid (x393_i.ps7_i.SAXIGP1WID), // input[5:0]
.wlast (x393_i.ps7_i.SAXIGP1WLAST), // input
.wstrb (x393_i.ps7_i.SAXIGP1WSTRB), // input[3:0]
.bvalid (x393_i.ps7_i.SAXIGP1BVALID), // output
.bready (x393_i.ps7_i.SAXIGP1BREADY), // input
.bid (x393_i.ps7_i.SAXIGP1BID), // output[5:0]
.bresp (x393_i.ps7_i.SAXIGP1BRESP), // output[1:0]
.sim_wr_address (saxigp1_wr_address), // output[31:0]
.sim_wid (saxigp1_wid), // output[5:0]
.sim_wr_valid (saxigp1_wr_valid), // output
.sim_wr_ready (saxigp1_wr_ready), // input
.sim_wr_data (saxigp1_wr_data), // output[31:0]
.sim_wr_stb (saxigp1_wr_stb), // output[3:0]
.sim_wr_size (saxigp1_wr_size), // output[1:0]
.sim_bresp_latency (saxigp1_bresp_latency), // input[3:0]
.sim_wr_qos (saxigp1_wr_qos) // output[3:0]
);
// Generate all clocks
simul_clk #(
......@@ -1814,8 +1864,9 @@ assign #10 gpio_pins[7] = gpio_pins[8];
reg [15:0] IMU_LOOPBACK;
always @ (negedge IMU_SCLK_OUT) begin
if (!IMU_CS) IMU_LOOPBACK[15:0]<={IMU_LOOPBACK[14:0],IMU_MOSI_D};
end
assign gpio_pins[3]=IMU_CS?IMU_DATA_READY:IMU_LOOPBACK[15];
assign gpio_pins[3]=IMU_CS?IMU_DATA_READY: IMU_LOOPBACK[15];
PULLUP i_IMU_SDA (.O(IMU_SDA));
PULLUP i_IMU_SCL (.O(IMU_SCL));
......
......@@ -35,7 +35,8 @@
* contains all the components and scripts required to completely simulate it
* with at least one of the Free Software programs.
*/
parameter FPGA_VERSION = 32'h039300c0; //parallel - chnaging LOGGER_PAGE_IMU 3->0 (how it was in 353) -0.044/16, 79.59%
parameter FPGA_VERSION = 32'h039300c1; //parallel - modified after troubleshooting simulation -0.069/41, 79.90 %
// parameter FPGA_VERSION = 32'h039300c0; //parallel - changing LOGGER_PAGE_IMU 3->0 (how it was in 353) -0.044/16, 79.59%
// parameter FPGA_VERSION = 32'h039300bf; //parallel - mask extrenal timestamps mode -0.043/17 79.56%
// parameter FPGA_VERSION = 32'h039300be; //parallel - adding odd/even pixels shift -0.066/12, 80.26%
// parameter FPGA_VERSION = 32'h039300bd; //hispi, trying the same -0.173/36, 80.95%
......
......@@ -124,19 +124,19 @@ module event_logger#(
wire sda, sda_en, scl, scl_en;
reg [6:0] ctrl_addr=7'h0; // 0 - period, 1 - reserved, 2..31 - registers to log, >32 - gps parameters, >64 - odometer message
reg we_d; // only if wa was 0
reg we_imu;
reg we_gps;
reg we_period;
reg we_bit_duration;
reg we_message;
reg we_config_imu; // bits 1:0, 2 - enable slot[1:0]
reg we_config_gps; // bits 6:3, 7 - enable - {ext,invert, slot[1:0]} slot==0 - disable
reg we_config_msg; // bits 12:8,13 - enable - {invert,extinp[3:0]} extinp[3:0]=='hf' - disable
reg we_config_syn; // bit 14, 15 - enable - enable logging external timestamps
reg we_config_rst; // bit 14, 15 - enable - reset
reg we_config_debug; // bit 14, 15 - enable - debug bits set
reg we_bitHalfPeriod;
reg we_d = 0; // only if wa was 0
reg we_imu = 0;
reg we_gps = 0;
reg we_period = 0;
reg we_bit_duration = 0;
reg we_message = 0;
reg we_config_imu = 0; // bits 1:0, 2 - enable slot[1:0]
reg we_config_gps = 0; // bits 6:3, 7 - enable - {ext,invert, slot[1:0]} slot==0 - disable
reg we_config_msg = 0; // bits 12:8,13 - enable - {invert,extinp[3:0]} extinp[3:0]=='hf' - disable
reg we_config_syn = 0; // bit 14, 15 - enable - enable logging external timestamps
reg we_config_rst = 0; // bit 14, 15 - enable - reset
reg we_config_debug = 0; // bit 14, 15 - enable - debug bits set
reg we_bitHalfPeriod = 0;
reg [1:0] config_imu;
......@@ -263,7 +263,8 @@ module event_logger#(
gps_pulse1sec_single <= !gps_pulse1sec_denoise[1] && gps_pulse1sec_denoise[0];
end
always @ (posedge mclk or posedge mrst) begin // was negedge
// always @ (posedge mclk or posedge mrst) begin // was negedge
always @ (posedge mclk) begin // was negedge
we_d <= !mrst && cmd_we && !cmd_a;
we_imu <= !mrst && cmd_we && !cmd_a && (ctrl_addr[6:5] == LOGGER_PAGE_IMU);
we_gps <= !mrst && cmd_we && !cmd_a && (ctrl_addr[6:5] == LOGGER_PAGE_GPS);
......
......@@ -70,7 +70,7 @@ module imu_exttime393(
input rd_stb, // data read strobe (increment address) - continuous 1'b1 until all the packet is read out
output [15:0] rdata); // data out (16 bits)
reg [ 4:0] raddr;
reg [ 2:0] raddr; // 2 bits for the address, 1 - overflow
wire en_mclk = |en_chn_mclk;
wire [3:0] ts_stb = {ts_stb_chn3, ts_stb_chn2, ts_stb_chn1, ts_stb_chn0};
wire [3:0] ts_got; // timestamp transferred to the channel FIFO
......@@ -97,6 +97,7 @@ module imu_exttime393(
wire [7:0] copy_data; // data from the selected input fifos
reg [7:0] copy_data_r; // low byte of the timestamp data being copied from one of the input FIFOs to the ts_ram
reg rd_stb_mclk;
wire xfer_done_mclk; // valiud information (4 words) are sent out, may start new arbitration
assign chn_pri_w = {in_full[3] & ~(|in_full[2:0]),
in_full[2] & ~(|in_full[1:0]),
in_full[1] & ~in_full[0],
......@@ -104,7 +105,8 @@ module imu_exttime393(
assign chn_enc_w = {chn_pri_w[3] | chn_pri_w[2],
chn_pri_w[3] | chn_pri_w[1]};
assign pre_copy_w = (|in_full) && !copy_selected[0] && !ts_full;
// assign pre_copy_w = (|in_full) && !copy_selected[0] && !ts_full;
assign pre_copy_w = (|in_full) && !copy_selected[0] && !ts_full && !rd_stb_mclk;
assign copy_data = dout_chn[sel_chn * 8 +: 8]; // 4:1 mux
// acquire external timestamps @ mclk
......@@ -117,7 +119,8 @@ module imu_exttime393(
if (!en_mclk) ts_full <= 0;
else if (pre_copy_started) ts_full <= 1; // turns on before in_full[*] - || will have no glitches
// else if (rd_start_mclk) ts_full <= 0;
else if (!ts_pend && !rd_stb_mclk) ts_full <= 0;
// else if (!ts_pend && !rd_stb_mclk) ts_full <= 0;
else if (xfer_done_mclk) ts_full <= 0;
if (!en_mclk) ts_pend <= 0;
else if (pre_copy_started) ts_pend <= 1;
......@@ -149,8 +152,8 @@ module imu_exttime393(
en <= en_mclk;
rd_stb_r <= rd_stb;
rd_start <= en && rd_stb && ! rd_stb_r;
if (!en || ts) raddr[4:0] <= 5'h0;
else if (rd_stb) raddr[4:0] <= raddr[4:0] + 1;
if (!en || ts) raddr <= 0;
else if (rd_stb && !raddr[2]) raddr <= raddr + 1;
if (!en) rdy <= 1'b0;
else if (ts) rdy <= 1'b1; // too early, but it will become ready in time, before the local timestamp
......@@ -226,7 +229,8 @@ module imu_exttime393(
// pulse_cross_clock i_rd_start_mclk (.rst(xrst), .src_clk(xclk), .dst_clk(mclk), .in_pulse(rd_start), .out_pulse(rd_start_mclk),.busy());
pulse_cross_clock i_rd_start_mclk (.rst(!en), .src_clk(xclk), .dst_clk(mclk), .in_pulse(rd_start), .out_pulse(rd_start_mclk),.busy());
pulse_cross_clock i_xfer_done_mclk (.rst(!en), .src_clk(xclk), .dst_clk(mclk), .in_pulse(raddr[1:0]==2'h3), .out_pulse(xfer_done_mclk),.busy());
//
// generate timestamp request as soon as one of the sub-channels starts copying. That time stamp will be stored for this (ext) channel
// pulse_cross_clock i_ts (.rst(mrst), .src_clk(mclk), .dst_clk(xclk), .in_pulse(pre_copy_w), .out_pulse(ts),.busy());
pulse_cross_clock i_ts (.rst(en_chn_mclk == 0), .src_clk(mclk), .dst_clk(xclk), .in_pulse(pre_copy_w), .out_pulse(ts),.busy());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment