Commit b2d85b91 authored by Andrey Filippov's avatar Andrey Filippov

debugging histograms (debug code will be removed at next commit)

parent d6b38a63
...@@ -139,7 +139,7 @@ module histogram_saxi#( ...@@ -139,7 +139,7 @@ module histogram_saxi#(
`endif `endif
*/ */
localparam ATTRIB_WIDTH = NUM_FRAME_BITS + 4 +2; localparam ATTRIB_WIDTH = NUM_FRAME_BITS + 4 +2;
reg [HIST_SAXI_MODE_WIDTH-1:0] mode; reg [HIST_SAXI_MODE_WIDTH-1:0] mode = 0;
wire en = mode[HIST_SAXI_EN] & mode[HIST_SAXI_NRESET]; wire en = mode[HIST_SAXI_EN] & mode[HIST_SAXI_NRESET];
reg [3:0] awcache_mode; reg [3:0] awcache_mode;
reg confirm_write; reg confirm_write;
...@@ -316,7 +316,7 @@ module histogram_saxi#( ...@@ -316,7 +316,7 @@ module histogram_saxi#(
assign saxi_awaddr = {start_addr_r[31:6],6'b0}; assign saxi_awaddr = {start_addr_r[31:6],6'b0};
assign saxi_awvalid = (|start_addr_r[9:6]) || first_burst; assign saxi_awvalid = ((|start_addr_r[9:6]) || first_burst) && !arst;
//{enc_rq[1:0], sub_chn_r, frame_r, burst[1:0]} //{enc_rq[1:0], sub_chn_r, frame_r, burst[1:0]}
// assign block_end= ???; // assign block_end= ???;
...@@ -406,8 +406,7 @@ module histogram_saxi#( ...@@ -406,8 +406,7 @@ module histogram_saxi#(
// Buffer read, SAXI send logic // Buffer read, SAXI send logic
always @(posedge aclk) begin always @(posedge aclk) begin
preen_aclk <= en; preen_aclk <= en;
en_aclk <= preen_aclk && en; en_aclk <= preen_aclk && en && !arst;
prenreset_aclk <= nreset; prenreset_aclk <= nreset;
nreset_aclk <= prenreset_aclk && nreset; nreset_aclk <= prenreset_aclk && nreset;
...@@ -440,7 +439,7 @@ module histogram_saxi#( ...@@ -440,7 +439,7 @@ module histogram_saxi#(
if (arst || block_start_r[3]) start_addr_r[31:6] <= {hist_start_addr[31:10], 4'b0}; if (arst || block_start_r[3]) start_addr_r[31:6] <= {hist_start_addr[31:10], 4'b0};
else if (saxi_start_burst_w) start_addr_r[31:6] <= start_addr_r[31:6] + 1; else if (saxi_start_burst_w) start_addr_r[31:6] <= start_addr_r[31:6] + 1;
if (!nreset_aclk) first_burst <= 0; if (!nreset_aclk || arst) first_burst <= 0;
else if (block_start_r[3]) first_burst <= 1; // block_start_r[3] - same as start_addr_r set else if (block_start_r[3]) first_burst <= 1; // block_start_r[3] - same as start_addr_r set
else if (saxi_start_burst_w) first_burst <= 0; else if (saxi_start_burst_w) first_burst <= 0;
......
[*] [*]
[*] GTKWave Analyzer v3.3.66 (w)1999-2015 BSI [*] GTKWave Analyzer v3.3.66 (w)1999-2015 BSI
[*] Wed Sep 7 07:20:21 2016 [*] Thu Sep 8 23:28:43 2016
[*] [*]
[dumpfile] "/home/eyesis/git/x393-neon/simulation/x393_dut-20160906212704383.fst" [dumpfile] "/home/eyesis/git/x393-neon/simulation/x393_dut-20160908170329425.fst"
[dumpfile_mtime] "Wed Sep 7 07:20:01 2016" [dumpfile_mtime] "Thu Sep 8 23:28:35 2016"
[dumpfile_size] 411501315 [dumpfile_size] 111373882
[savefile] "/home/eyesis/git/x393-neon/cocotb/x393_cocotb_02.sav" [savefile] "/home/eyesis/git/x393-neon/cocotb/x393_cocotb_02.sav"
[timestart] 0 [timestart] 0
[size] 1836 1171 [size] 1820 1171
[pos] 1928 23 [pos] 1928 23
*-26.595917 254087388 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 *-25.450548 115800000 239467388 239402388 239527388 -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.
[treeopen] x393_dut.ddr3_i.ddr3_i. [treeopen] x393_dut.ddr3_i.ddr3_i.
[treeopen] x393_dut.simul_axi_master_wdata_i. [treeopen] x393_dut.simul_axi_master_wdata_i.
[treeopen] x393_dut.simul_saxi_gp0_wr_i.
[treeopen] x393_dut.x393_i. [treeopen] x393_dut.x393_i.
[treeopen] x393_dut.x393_i.cmd_mux_i. [treeopen] x393_dut.x393_i.cmd_mux_i.
[treeopen] x393_dut.x393_i.compressor393_i.
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0]. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].
[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.
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_frame_sync_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_frame_sync_i.
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
[treeopen] x393_dut.x393_i.compressor393_i.genblk3.cmprs_afi0_mux_i. [treeopen] x393_dut.x393_i.compressor393_i.genblk3.cmprs_afi0_mux_i.
[treeopen] x393_dut.x393_i.frame_sequencer_block[0]. [treeopen] x393_dut.x393_i.frame_sequencer_block[0].
[treeopen] x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i. [treeopen] x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.
[treeopen] x393_dut.x393_i.mcntrl393_i.
[treeopen] x393_dut.x393_i.mcntrl393_i.memctrl16_i. [treeopen] x393_dut.x393_i.mcntrl393_i.memctrl16_i.
[treeopen] x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i. [treeopen] x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.
[treeopen] x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_i. [treeopen] x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_i.
...@@ -51,16 +50,24 @@ ...@@ -51,16 +50,24 @@
[treeopen] x393_dut.x393_i.mcntrl393_i.sens_comp_block[2]. [treeopen] x393_dut.x393_i.mcntrl393_i.sens_comp_block[2].
[treeopen] x393_dut.x393_i.mcntrl393_i.sens_comp_block[3]. [treeopen] x393_dut.x393_i.mcntrl393_i.sens_comp_block[3].
[treeopen] x393_dut.x393_i.sensors393_i. [treeopen] x393_dut.x393_i.sensors393_i.
[treeopen] x393_dut.x393_i.sensors393_i.histogram_saxi_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0]. [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.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.genblk1.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk4.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk6.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk8.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_sync_i. [treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_sync_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_membuf_i. [treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_membuf_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[1]. [treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[1].
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[2]. [treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[2].
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[3]. [treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[3].
[treeopen] x393_dut.x393_i.timing393_i. [treeopen] x393_dut.x393_i.timing393_i.
[sst_width] 278 [sst_width] 409
[signals_width] 428 [signals_width] 315
[sst_expanded] 1 [sst_expanded] 1
[sst_vpaned_height] 641 [sst_vpaned_height] 641
@820 @820
...@@ -537,8 +544,9 @@ x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_membuf_i.waddr[8:0] ...@@ -537,8 +544,9 @@ x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_membuf_i.waddr[8:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_membuf_i.wpage[1:0] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_membuf_i.wpage[1:0]
@1401200 @1401200
-all_par_hispi -all_par_hispi
@800200 @c00200
-compressor_0 -compressor_0
@800200
-linear -linear
@22 @22
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_linear_wr_sensor_i.mode_reg[14:0] x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_linear_wr_sensor_i.mode_reg[14:0]
...@@ -732,7 +740,7 @@ x393_dut.x393_i.mcntrl393_i.sens_comp_block[1].mcntrl_tiled_rd_compressor_i.fram ...@@ -732,7 +740,7 @@ x393_dut.x393_i.mcntrl393_i.sens_comp_block[1].mcntrl_tiled_rd_compressor_i.fram
-tile_chn1 -tile_chn1
@1401200 @1401200
-other_channels -other_channels
@800200 @c00200
-tile -tile
@22 @22
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.mode_reg[14:0] x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.mode_reg[14:0]
...@@ -747,6 +755,7 @@ x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.fram ...@@ -747,6 +755,7 @@ x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.fram
@8022 @8022
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.frame_start_r[4:0] x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.frame_start_r[4:0]
@28 @28
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.cmd_we
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.set_mode_w x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.set_mode_w
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.chn_en x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.chn_en
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.repeat_frames x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.repeat_frames
...@@ -781,9 +790,7 @@ x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.fram ...@@ -781,9 +790,7 @@ x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.fram
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.frame_start x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.frame_start
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.frame_en x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.frame_en
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.xfer_page_rst_rd x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.xfer_page_rst_rd
@29
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.xfer_page_rst_pos x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.xfer_page_rst_pos
@28
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.calc_valid x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.calc_valid
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.pre_want x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.pre_want
(4)x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.frame_start_r[4:0] (4)x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.frame_start_r[4:0]
...@@ -811,7 +818,7 @@ x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.num_ ...@@ -811,7 +818,7 @@ x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.num_
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.num_rows_m1[5:0] x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.num_rows_m1[5:0]
@28 @28
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.suspend x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.suspend
@1000200 @1401200
-tile -tile
@c00200 @c00200
-sdram -sdram
...@@ -867,7 +874,7 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_pixel_ ...@@ -867,7 +874,7 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_pixel_
- -
@1000200 @1000200
-cmprs_pixel_buffer_ifacde -cmprs_pixel_buffer_ifacde
@800200 @c00200
-cmprs_macroblock -cmprs_macroblock
@28 @28
x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_macroblock_buf_iface_i.buf_ready_w x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_macroblock_buf_iface_i.buf_ready_w
...@@ -943,7 +950,7 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_macrob ...@@ -943,7 +950,7 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_macrob
x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_macroblock_buf_iface_i.multipulse_cross_clock_i.num_pulses[2:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_macroblock_buf_iface_i.multipulse_cross_clock_i.num_pulses[2:0]
@200 @200
- -
@1000200 @1401200
-cmprs_macroblock -cmprs_macroblock
@28 @28
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.frame_start x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.frame_start
...@@ -1159,7 +1166,7 @@ x393_dut.simul_axi_hp1_wr_i.sim_wr_address[31:0] ...@@ -1159,7 +1166,7 @@ x393_dut.simul_axi_hp1_wr_i.sim_wr_address[31:0]
x393_dut.simul_axi_hp1_wr_i.sim_wr_data[63:0] x393_dut.simul_axi_hp1_wr_i.sim_wr_data[63:0]
@28 @28
x393_dut.simul_axi_hp1_wr_i.sim_wr_valid x393_dut.simul_axi_hp1_wr_i.sim_wr_valid
@1000200 @1401200
-compressor_0 -compressor_0
@800200 @800200
-follow_master -follow_master
...@@ -1481,11 +1488,11 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.buf_pxd[7:0] ...@@ -1481,11 +1488,11 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.buf_pxd[7:0]
x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i.buf_pxd[7:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i.buf_pxd[7:0]
@1401200 @1401200
-compressors_all -compressors_all
@c00200 @800200
-cmdseq_0 -cmdseq_0
@28 @28
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.frame_sync x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.frame_sync
@800200 @c00200
-command_write -command_write
@c00022 @c00022
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.cmdseq_di[63:0] x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.cmdseq_di[63:0]
...@@ -1647,9 +1654,9 @@ x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.wpage_inc[1:0] ...@@ -1647,9 +1654,9 @@ x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.wpage_inc[1:0]
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.cmd_we_ctl_w x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.cmd_we_ctl_w
@1001200 @1001200
-group_end -group_end
@1000200 @1401200
-command_write -command_write
@800200 @c00200
-command_read -command_read
@28 @28
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.seq_enrun x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.seq_enrun
...@@ -1685,9 +1692,9 @@ x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.ackn ...@@ -1685,9 +1692,9 @@ x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.ackn
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.mclk x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.mclk
@1001200 @1001200
-group_end -group_end
@1000200
-command_read
@1401200 @1401200
-command_read
@1000200
-cmdseq_0 -cmdseq_0
@c00200 @c00200
-cmdseq_mux -cmdseq_mux
...@@ -1788,14 +1795,26 @@ x393_dut.x393_i.cmd_mux_i.start_axi_w ...@@ -1788,14 +1795,26 @@ x393_dut.x393_i.cmd_mux_i.start_axi_w
x393_dut.x393_i.cmd_mux_i.start_wburst x393_dut.x393_i.cmd_mux_i.start_wburst
@1401200 @1401200
-cmd_mux -cmd_mux
@800200 @c00200
-cmd_mux
@28
x393_dut.x393_i.cmd_mux_i.mclk
@22
x393_dut.x393_i.cmd_mux_i.byte_ad[7:0]
@28
x393_dut.x393_i.cmd_mux_i.ad_stb
@200
-
@1401200
-cmd_mux
@c00200
-readback -readback
@28 @28
x393_dut.x393_i.cmd_readback_i.we x393_dut.x393_i.cmd_readback_i.we
@22 @22
x393_dut.x393_i.cmd_readback_i.waddr[10:0] x393_dut.x393_i.cmd_readback_i.waddr[10:0]
x393_dut.x393_i.cmd_readback_i.wdata[31:0] x393_dut.x393_i.cmd_readback_i.wdata[31:0]
@1000200 @1401200
-readback -readback
@c00200 @c00200
-gpio -gpio
...@@ -2193,7 +2212,7 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.vsync_late ...@@ -2193,7 +2212,7 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.vsync_late
x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.hclk x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.hclk
@1401200 @1401200
-compressor_channel0 -compressor_channel0
@800200 @c00200
-interrupts -interrupts
@c00022 @c00022
x393_dut.irq_r[8:0] x393_dut.irq_r[8:0]
...@@ -2229,9 +2248,6 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_status ...@@ -2229,9 +2248,6 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_status
(11)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_status_i.status[11:0] (11)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_status_i.status[11:0]
@1401200 @1401200
-group_end -group_end
@200
-
@1000200
-interrupts -interrupts
@c00200 @c00200
-afi0_mux -afi0_mux
...@@ -2479,9 +2495,228 @@ x393_dut.simul_axi_master_wdata_i.simul_axi_fifo_i.valid ...@@ -2479,9 +2495,228 @@ x393_dut.simul_axi_master_wdata_i.simul_axi_fifo_i.valid
@22 @22
x393_dut.x393_i.frame_num[15:0] x393_dut.x393_i.frame_num[15:0]
x393_dut.x393_i.frame_num_compressed[15:0] x393_dut.x393_i.frame_num_compressed[15:0]
@1000200
-frames
@800200
-histgograms
@28
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.en
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_out
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.mclk
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.en_mclk
@22
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.hist_rq[3:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.hist_nrst[3:0]
@28
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.hist_chn[1:0]
@22
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.hist_data[31:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.hist_dv[3:0]
@800200
-chn0
@28
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.gamma_sof_in
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.gamma_sof_out
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.gamma_hact_out
@22
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.gamma_pxd_out[7:0]
@800200
-sens_histogram_0
@28
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_en_pclk
@29
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_en_pclk
@c00022
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
@28
(0)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(1)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(2)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(3)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(4)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(5)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(6)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(7)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(8)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(9)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(10)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(11)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(12)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(13)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(14)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(15)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(16)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(17)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(18)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(19)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(20)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(21)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(22)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(23)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(24)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
(25)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.status[25:0]
@1401200
-group_end
@22
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.dbg_hist_data[7:0]
@28
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.top_margin
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.vert_woi
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_xfer_busy
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.en
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.en_rq_start
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.pre_first_line
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.frame_active
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.line_start_w
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.vert_woi
@22
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.vcntr[15:0]
@28
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.vcntr_zero_w
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.we_even
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.we_odd
@22
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_raddr[9:0]
@28
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_re_even
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_re_odd
@1000200
-sens_histogram_0
-chn0
@800200
-histogram_saxi
@28
x393_dut.x393_i.sensors393_i.histogram_saxi_i.nreset
@22
x393_dut.x393_i.sensors393_i.histogram_saxi_i.frame0[3:0]
x393_dut.x393_i.sensors393_i.histogram_saxi_i.hist_request0
x393_dut.x393_i.sensors393_i.histogram_saxi_i.hist_chn0[1:0]
x393_dut.x393_i.sensors393_i.histogram_saxi_i.hist_request1
x393_dut.x393_i.sensors393_i.histogram_saxi_i.hist_chn1[1:0]
x393_dut.x393_i.sensors393_i.histogram_saxi_i.hist_request2
x393_dut.x393_i.sensors393_i.histogram_saxi_i.hist_chn2[1:0]
x393_dut.x393_i.sensors393_i.histogram_saxi_i.hist_request3
x393_dut.x393_i.sensors393_i.histogram_saxi_i.hist_chn3[1:0]
@28
x393_dut.x393_i.sensors393_i.histogram_saxi_i.hist_grant0
x393_dut.x393_i.sensors393_i.histogram_saxi_i.hist_dvalid0
@22
x393_dut.x393_i.sensors393_i.histogram_saxi_i.hist_data0[31:0]
x393_dut.x393_i.sensors393_i.histogram_saxi_i.hist_data1[31:0]
x393_dut.x393_i.sensors393_i.histogram_saxi_i.hist_data2[31:0]
x393_dut.x393_i.sensors393_i.histogram_saxi_i.hist_data3[31:0]
@28
x393_dut.x393_i.sensors393_i.histogram_saxi_i.first_burst
@22
x393_dut.x393_i.sensors393_i.histogram_saxi_i.saxi_awaddr[31:0]
@28
x393_dut.x393_i.sensors393_i.histogram_saxi_i.saxi_awvalid
x393_dut.x393_i.sensors393_i.histogram_saxi_i.saxi_awready
@22
x393_dut.x393_i.sensors393_i.histogram_saxi_i.saxi_awaddr[31:0]
@1000200
-histogram_saxi
@800200
-simul_saxi
@28
x393_dut.x393_i.sensors393_i.histogram_saxi_i.arst
x393_dut.x393_i.sensors393_i.histogram_saxi_i.en_aclk
x393_dut.simul_saxi_gp0_wr_i.awvalid
x393_dut.simul_saxi_gp0_wr_i.awready
x393_dut.simul_saxi_gp0_wr_i.sim_wr_ready
@22
x393_dut.simul_saxi_gp0_wr_i.sim_wr_address[31:0]
@c00022
x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
@28
(0)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(1)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(2)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(3)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(4)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(5)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(6)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(7)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(8)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(9)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(10)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(11)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(12)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(13)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(14)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(15)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(16)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(17)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(18)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(19)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(20)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(21)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(22)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(23)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(24)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(25)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(26)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(27)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(28)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(29)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(30)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
(31)x393_dut.simul_saxi_gp0_wr_i.sim_wr_data[31:0]
@1401200
-group_end
@22
x393_dut.simul_saxi_gp0_wr_i.sim_wr_mask[3:0]
@c00022
x393_dut.simul_saxi_gp0_wr_i.sim_wr_stb[3:0]
@28
(0)x393_dut.simul_saxi_gp0_wr_i.sim_wr_stb[3:0]
(1)x393_dut.simul_saxi_gp0_wr_i.sim_wr_stb[3:0]
(2)x393_dut.simul_saxi_gp0_wr_i.sim_wr_stb[3:0]
(3)x393_dut.simul_saxi_gp0_wr_i.sim_wr_stb[3:0]
@1401200
-group_end
@28
x393_dut.simul_saxi_gp0_wr_i.sim_wr_valid
x393_dut.simul_saxi_gp0_wr_i.rst
x393_dut.simul_saxi_gp0_wr_i.aclk
@22
x393_dut.simul_saxi_gp0_wr_i.wacount[3:0]
@28
x393_dut.simul_saxi_gp0_wr_i.aw_nempty
@22
x393_dut.simul_saxi_gp0_wr_i.wcount[3:0]
@28
x393_dut.simul_saxi_gp0_wr_i.w_nempty
@800200
-waddr
@28
x393_dut.simul_saxi_gp0_wr_i.waddr_i.rst
x393_dut.simul_saxi_gp0_wr_i.waddr_i.clk
x393_dut.simul_saxi_gp0_wr_i.waddr_i.we
x393_dut.simul_saxi_gp0_wr_i.waddr_i.re
x393_dut.simul_saxi_gp0_wr_i.waddr_i.nempty
x393_dut.simul_saxi_gp0_wr_i.waddr_i.out_full
x393_dut.simul_saxi_gp0_wr_i.waddr_i.rem
x393_dut.simul_saxi_gp0_wr_i.waddr_i.ram_nempty
@22
x393_dut.simul_saxi_gp0_wr_i.waddr_i.next_fill[3:0]
@200 @200
- -
@1000200 @1000200
-frames -waddr
-simul_saxi
-histgograms
@800200
-ps7
@28
x393_dut.x393_i.ps7_i.SAXIGP0ACLK
x393_dut.x393_i.ps7_i.SAXIGP0ARESETN
x393_dut.x393_i.ps7_i.MAXIGP0ACLK
x393_dut.x393_i.ps7_i.MAXIGP0ARESETN
@200
-
@1000200
-ps7
@200
-
[pattern_trace] 1 [pattern_trace] 1
[pattern_trace] 0 [pattern_trace] 0
...@@ -141,7 +141,7 @@ class X393_cocotb_server(object): ...@@ -141,7 +141,7 @@ class X393_cocotb_server(object):
autoflush = self.autoflush, autoflush = self.autoflush,
blatency = 5) blatency = 5)
level = logging.DEBUG if debug else logging.WARNING level = logging.DEBUG if debug else logging.INFO # WARNING
self.dut._log.info('Set debug level '+str(level)+", debug="+str(debug)) self.dut._log.info('Set debug level '+str(level)+", debug="+str(debug))
self.maxigp0.log.setLevel(level) self.maxigp0.log.setLevel(level)
......
...@@ -172,7 +172,6 @@ class SAXIWrSim(BusDriver): ...@@ -172,7 +172,6 @@ class SAXIWrSim(BusDriver):
@param autoflush flush file after each write @param autoflush flush file after each write
@param blatency number of cycles to delay write response (b) channel @param blatency number of cycles to delay write response (b) channel
""" """
# self.log.setLevel(logging.DEBUG)
BusDriver.__init__(self, entity, name, clock) BusDriver.__init__(self, entity, name, clock)
self.name = name self.name = name
self.log.debug ("SAXIWrSim: name='%s', mempath='%s', memhigh=0x%08x, data_bytes=%d, autoflush=%s, blatency=%d"% self.log.debug ("SAXIWrSim: name='%s', mempath='%s', memhigh=0x%08x, data_bytes=%d, autoflush=%s, blatency=%d"%
...@@ -251,7 +250,7 @@ class SAXIWrSim(BusDriver): ...@@ -251,7 +250,7 @@ class SAXIWrSim(BusDriver):
try: try:
data = self.bus.wr_data.value.integer data = self.bus.wr_data.value.integer
except: except:
self.log.warning ("SAXIWrSim() writing undefined data") self.log.warning ("SAXIWrSim(%s:%d) writing undefined data"%(self.name,self._data_bytes))
bv = self.bus.wr_data.value bv = self.bus.wr_data.value
bv.binstr = re.sub("[^1]","0",bv.binstr) bv.binstr = re.sub("[^1]","0",bv.binstr)
data = bv.integer data = bv.integer
...@@ -270,7 +269,7 @@ class SAXIWrSim(BusDriver): ...@@ -270,7 +269,7 @@ class SAXIWrSim(BusDriver):
self._memfile.seek(1,1) self._memfile.seek(1,1)
if self.autoflush: if self.autoflush:
self._memfile.flush() self._memfile.flush()
self.log.debug ("SAXIWrSim() 0x%x -> 0x%x, mask = 0x%x"%(address,data,bv.integer)) self.log.info ("SAXIWrSim(%s:%d) 0x%x <- 0x%x"%(self.name,self._data_bytes,address,data))
yield RisingEdge(self.clock) yield RisingEdge(self.clock)
...@@ -301,7 +300,7 @@ class SAXIRdSim(BusDriver): ...@@ -301,7 +300,7 @@ class SAXIRdSim(BusDriver):
@param data_bytes data width, in bytes @param data_bytes data width, in bytes
""" """
# self.log.setLevel(logging.DEBUG)
BusDriver.__init__(self, entity, name, clock) BusDriver.__init__(self, entity, name, clock)
self.name = name self.name = name
self.log.debug ("SAXIRdSim: name='%s', mempath='%s', memhigh=0x%08x, data_bytes=%d"% self.log.debug ("SAXIRdSim: name='%s', mempath='%s', memhigh=0x%08x, data_bytes=%d"%
...@@ -458,7 +457,6 @@ class MAXIGPMaster(BusDriver): ...@@ -458,7 +457,6 @@ class MAXIGPMaster(BusDriver):
_channels = [AR_CHN,AW_CHN,R_CHN,W_CHN,B_CHN] _channels = [AR_CHN,AW_CHN,R_CHN,W_CHN,B_CHN]
def __init__(self, entity, name, clock, rdlag=None, blag=None): def __init__(self, entity, name, clock, rdlag=None, blag=None):
BusDriver.__init__(self, entity, name, clock) BusDriver.__init__(self, entity, name, clock)
# self.log.setLevel(logging.DEBUG)
self.name = name self.name = name
# set read and write back channels simulation lag between AXI sets valid and host responds with # set read and write back channels simulation lag between AXI sets valid and host responds with
# ready. If None - drive these signals # ready. If None - drive these signals
......
...@@ -35,7 +35,14 @@ ...@@ -35,7 +35,14 @@
* contains all the components and scripts required to completely simulate it * contains all the components and scripts required to completely simulate it
* with at least one of the Free Software programs. * with at least one of the Free Software programs.
*/ */
parameter FPGA_VERSION = 32'h039300ae; // parallel, increasing sesnsor-channels maximal delays to 12 bits -0.091/25, 79.89% parameter FPGA_VERSION = 32'h039300b4; //-a parallel, and more - -0.180/33, 80.68 %
// parameter FPGA_VERSION = 32'h039300b4; // parallel, and more -0.094/37, 80.18 %
// parameter FPGA_VERSION = 32'h039300b3; // parallel, and more -0.052/8, 79.56%
// parameter FPGA_VERSION = 32'h039300b2; // parallel, and more -0.163 /47, 79.93%
// parameter FPGA_VERSION = 32'h039300b1; // parallel, more debug -0.335/86, 79.66%
// parameter FPGA_VERSION = 32'h039300b0; // parallel, more debug -0.047/8, 79.51%
// parameter FPGA_VERSION = 32'h039300af; // parallel, debugging histograms all met, 79.45%
// parameter FPGA_VERSION = 32'h039300ae; // parallel, increasing sesnsor-channels maximal delays to 12 bits -0.091/25, 79.89%
// parameter FPGA_VERSION = 32'h039300ad; // parallel, resetting frame_pre_run. All met, 79.97% // parameter FPGA_VERSION = 32'h039300ad; // parallel, resetting frame_pre_run. All met, 79.97%
// parameter FPGA_VERSION = 32'h039300ac; // parallel, adding reset needed_page in compressor -0.012 (2), 79.39% // parameter FPGA_VERSION = 32'h039300ac; // parallel, adding reset needed_page in compressor -0.012 (2), 79.39%
// parameter FPGA_VERSION = 32'h039300ab; // parallel, more on frame sync in compressor All met, 79.04% // parameter FPGA_VERSION = 32'h039300ab; // parallel, more on frame sync in compressor All met, 79.04%
......
...@@ -1962,15 +1962,15 @@ class X393ExportC(object): ...@@ -1962,15 +1962,15 @@ class X393ExportC(object):
def _enc_gamma_ctl(self): def _enc_gamma_ctl(self):
dw=[] dw=[]
dw.append(("bayer", 0, 2, 0, "Bayer color shift (pixel to gamma table)")) dw.append(("bayer", vrlg.SENS_GAMMA_MODE_BAYER, 2, 0, "Bayer color shift (pixel to gamma table)"))
dw.append(("bayer_set", 2, 1, 0, "Set 'bayer' field")) dw.append(("bayer_set", vrlg.SENS_GAMMA_MODE_BAYER_SET, 1, 0, "Set 'bayer' field"))
dw.append(("page", 3, 1, 0, "Table page (only available if SENS_GAMMA_BUFFER in Verilog)")) dw.append(("page", vrlg.SENS_GAMMA_MODE_PAGE, 1, 0, "Table page (only available if SENS_GAMMA_BUFFER in Verilog)"))
dw.append(("page_set", 4, 1, 0, "Set 'page' field")) dw.append(("page_set", vrlg.SENS_GAMMA_MODE_PAGE_SET, 1, 0, "Set 'page' field"))
dw.append(("en", 5, 1, 1, "Enable module")) dw.append(("en", vrlg.SENS_GAMMA_MODE_EN, 1, 1, "Enable module"))
dw.append(("en_set", 6, 1, 1, "Set 'en' field")) dw.append(("en_set", vrlg.SENS_GAMMA_MODE_EN_SET, 1, 1, "Set 'en' field"))
dw.append(("repet", 7, 1, 1, "Repetitive (normal) mode. Set 0 for testing of the single-frame mode")) dw.append(("repet", vrlg.SENS_GAMMA_MODE_REPET, 1, 1, "Repetitive (normal) mode. Set 0 for testing of the single-frame mode"))
dw.append(("repet_set", 8, 1, 1, "Set 'repet' field")) dw.append(("repet_set", vrlg.SENS_GAMMA_MODE_REPET_SET, 1, 1, "Set 'repet' field"))
dw.append(("trig", 9, 1, 0, "Single trigger used when repetitive mode is off (self clearing bit)")) dw.append(("trig", vrlg.SENS_GAMMA_MODE_TRIG, 1, 0, "Single trigger used when repetitive mode is off (self clearing bit)"))
return dw return dw
def _enc_gamma_tbl_addr(self): def _enc_gamma_tbl_addr(self):
......
...@@ -1055,6 +1055,31 @@ set_rtc # maybe not needed as it can be set differently ...@@ -1055,6 +1055,31 @@ set_rtc # maybe not needed as it can be set differently
camsync_setup 0xf # sensor mask - use local timestamps) camsync_setup 0xf # sensor mask - use local timestamps)
jpeg_write "img.jpeg" 0 80 jpeg_write "img.jpeg" 0 80
####### Parallel - setup sensor 1 (sensor 0 is set by drivers) ##############
setup_all_sensors True None 0x2 # sensor 1
set_sensor_io_ctl 1 None None 1 # Set ARO low - check if it is still needed?
#set quadrants
set_sensor_io_ctl 1 None None None None None 0 0xe
compressor_control 1 None None None None None 3 #bayer
#Get rid of the corrupted last pixel column
#longer line (default 0xa1f)
write_sensor_i2c 1 1 0 0x90040a23
#increase scanline write (memory controller) width in 16-bursts (was 0xa2)
axi_write_single_w 0x696 0x079800a3
#Gamma 0.57
program_gamma 1 0 0.57 0.04
#colors - outdoor
write_sensor_i2c 1 1 0 0x9035000a
write_sensor_i2c 1 1 0 0x902c000e
write_sensor_i2c 1 1 0 0x902d000d
#exposure 0x100 lines (default was 0x797)
#write_sensor_i2c 1 1 0 0x90090100
#exposure 0x797 (default)
#write_sensor_i2c 1 1 0 0x90090797
#run compressors once (#1 - stop gracefully, 0 - reset, 2 - single, 3 - repetitive with sync to sensors)
set_qtables 1l 0 80
compressor_control 1 3
jpeg_write "img.jpeg" 1 80
################## Parallel ################## ################## Parallel ##################
...@@ -1607,6 +1632,10 @@ write_cmd_frame_sequencer 0 1 4 0x6c6 0x300006 #save more lines than compress ...@@ -1607,6 +1632,10 @@ write_cmd_frame_sequencer 0 1 4 0x6c6 0x300006 #save more lines than compress
write_cmd_frame_sequencer 0 1 4 0x6c0 0x7d4b # run compressor memory (+2) write_cmd_frame_sequencer 0 1 4 0x6c0 0x7d4b # run compressor memory (+2)
write_cmd_frame_sequencer 0 1 4 0x600 0x7 # run compressor (+0) write_cmd_frame_sequencer 0 1 4 0x600 0x7 # run compressor (+0)
#testing histograms
write_control_register 0x409 0xc0
#sequencer test #sequencer test
#ctrl_cmd_frame_sequencer <num_sensor> <reset=False> <start=False> <stop=False> #ctrl_cmd_frame_sequencer <num_sensor> <reset=False> <start=False> <stop=False>
ctrl_cmd_frame_sequencer 0 0 1 0 ctrl_cmd_frame_sequencer 0 0 1 0
...@@ -1624,20 +1653,27 @@ write_cmd_frame_sequencer 0 0 2 0x700 0x60 ...@@ -1624,20 +1653,27 @@ write_cmd_frame_sequencer 0 0 2 0x700 0x60
write_cmd_frame_sequencer 0 0 2 0x700 0x90 write_cmd_frame_sequencer 0 0 2 0x700 0x90
write_cmd_frame_sequencer 0 0 2 0x700 0x600 write_cmd_frame_sequencer 0 0 2 0x700 0x600
write_cmd_frame_sequencer 0 0 2 0x700 0x900 write_cmd_frame_sequencer 0 0 2 0x700 0x900
r
read_status 0x21
r
#set_sensor_io_dly_hispi all 0x48 0x68 0x68 0x68 0x68 #set_sensor_io_dly_hispi all 0x48 0x68 0x68 0x68 0x68
#set_sensor_io_ctl all None None None None None 1 None # load all delays? #set_sensor_io_ctl all None None None None None 1 None # load all delays?
compressor_control all None None None None None 2 compressor_control all None None None None None 2
compressor_interrupt_control all clr compressor_interrupt_control all clr
compressor_interrupt_control all en compressor_interrupt_control all en
compressor_control all 3 compressor_control all 3
r
read_status 0x21
r
jpeg_sim_multi 4 jpeg_sim_multi 4
jpeg_sim_multi 8 r
jpeg_sim_multi 4 read_status 0x21
r
jpeg_sim_multi 3
r
read_status 0x21
r
write_cmd_frame_sequencer 0 1 1 0x686 0x240005 # correct lines write_cmd_frame_sequencer 0 1 1 0x686 0x240005 # correct lines
write_cmd_frame_sequencer 0 1 1 0x6c6 0x200006 # correct lines write_cmd_frame_sequencer 0 1 1 0x6c6 0x200006 # correct lines
......
...@@ -267,7 +267,7 @@ class X393Sensor(object): ...@@ -267,7 +267,7 @@ class X393Sensor(object):
@return: sensor mode control word @return: sensor mode control word
""" """
rslt = 0; rslt = 0;
if (not hist_en is None) and (hist_nrst is None): if (not hist_en is None) and (not hist_nrst is None):
rslt |= (hist_en & 0xf) << vrlg.SENSOR_HIST_EN_BITS rslt |= (hist_en & 0xf) << vrlg.SENSOR_HIST_EN_BITS
rslt |= (hist_nrst & 0xf) << vrlg.SENSOR_HIST_NRST_BITS rslt |= (hist_nrst & 0xf) << vrlg.SENSOR_HIST_NRST_BITS
rslt |= 1 << vrlg.SENSOR_HIST_BITS_SET; rslt |= 1 << vrlg.SENSOR_HIST_BITS_SET;
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
* with at least one of the Free Software programs. * with at least one of the Free Software programs.
*/ */
`timescale 1ns/1ps `timescale 1ns/1ps
`include "system_defines.vh" // just for debugging histograms
module sens_histogram_snglclk #( module sens_histogram_snglclk #(
parameter HISTOGRAM_RAM_MODE = "BUF32", // valid: "NOBUF" (32-bits, no buffering - now is replaced by BUF32), "BUF18", "BUF32" parameter HISTOGRAM_RAM_MODE = "BUF32", // valid: "NOBUF" (32-bits, no buffering - now is replaced by BUF32), "BUF18", "BUF32"
parameter HISTOGRAM_ADDR = 'h33c, parameter HISTOGRAM_ADDR = 'h33c,
...@@ -76,6 +76,11 @@ module sens_histogram_snglclk #( ...@@ -76,6 +76,11 @@ module sens_histogram_snglclk #(
input debug_sl, // 0 - idle, (1,0) - shift, (1,1) - load // SuppressThisWarning VEditor - not used input debug_sl, // 0 - idle, (1,0) - shift, (1,1) - load // SuppressThisWarning VEditor - not used
input debug_di // input from the debug ring input debug_di // input from the debug ring
`endif `endif
`ifdef DEBUG_HISTOGRAMS
,output [3:0] dbg_hist_data
`endif
); );
localparam HIST_WIDTH = (HISTOGRAM_RAM_MODE == "BUF18") ? 18 : 32; localparam HIST_WIDTH = (HISTOGRAM_RAM_MODE == "BUF18") ? 18 : 32;
...@@ -273,6 +278,22 @@ module sens_histogram_snglclk #( ...@@ -273,6 +278,22 @@ module sens_histogram_snglclk #(
reg eq_prev; // pixel equals previous of the same color reg eq_prev; // pixel equals previous of the same color
wire eq_prev_d3; // eq_prev delayed by 3 clocks to select r1 source wire eq_prev_d3; // eq_prev delayed by 3 clocks to select r1 source
// wire start_hor_woi = hcntr_zero_w && left_margin && vert_woi; // wire start_hor_woi = hcntr_zero_w && left_margin && vert_woi;
`ifdef DEBUG_HISTOGRAMS
assign dbg_hist_data[3:0] = {frame_active, hist_done, vert_woi, vcntr_zero_w };
// assign dbg_hist_data[3:0] = {frame_active, hist_rst_pclk, hist_en_pclk, vcntr_zero_w };
reg [2:0] dbg_toggle=0;
// assign dbg_hist_data[3:0] = {dbg_toggle, en_new, en, vcntr_zero_w };
// assign dbg_hist_data[3:0] = {dbg_toggle, vcntr_zero_w }; // version b4 (toggles)
// hist_done <= vert_woi && (eof || (vcntr_zero_w && line_start_w)); // hist done never asserted, line_start_w - active
// if (hist_rst_pclk) en <= 0;
// else if (hist_en_pclk) en <= 1;
// reg en;
// reg en_new; // @ pclk - enable new frame
always @(posedge pclk) begin
if (sof) dbg_toggle <= dbg_toggle+1;
end
`endif
// hist_di is 2 cycles ahead of hor_woi // hist_di is 2 cycles ahead of hor_woi
...@@ -326,7 +347,7 @@ module sens_histogram_snglclk #( ...@@ -326,7 +347,7 @@ module sens_histogram_snglclk #(
reg en_rq_start; reg en_rq_start;
always @ (posedge mclk) begin always @ (posedge mclk) begin
en_mclk <= en; en_mclk <= en && !hist_rst;
if (!en_mclk) hist_out <= 0; if (!en_mclk) hist_out <= 0;
else if (hist_done_mclk) hist_out <= 1; else if (hist_done_mclk) hist_out <= 1;
else if (&hist_raddr) hist_out <= 0; else if (&hist_raddr) hist_out <= 0;
...@@ -339,7 +360,7 @@ module sens_histogram_snglclk #( ...@@ -339,7 +360,7 @@ module sens_histogram_snglclk #(
// prevent starting rq if grant is still on (back-to-back) // prevent starting rq if grant is still on (back-to-back)
if (!hist_out) en_rq_start <= 0; if (!hist_out) en_rq_start <= 0;
else if (!hist_grant) en_rq_start <= 1; else if (!hist_grant) en_rq_start <= 1;
hist_rq_r <= en_mclk && hist_out && !(&hist_raddr) && en_rq_start; hist_rq_r <= !hist_rst & en_mclk && hist_out && !(&hist_raddr) && en_rq_start;
if (!hist_out || (&hist_raddr[7:0])) hist_re[0] <= 0; if (!hist_out || (&hist_raddr[7:0])) hist_re[0] <= 0;
else if (hist_grant) hist_re[0] <= 1; else if (hist_grant) hist_re[0] <= 1;
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
* with at least one of the Free Software programs. * with at least one of the Free Software programs.
*/ */
`timescale 1ns/1ps `timescale 1ns/1ps
`include "system_defines.vh" // just for debugging histograms
module sens_parallel12 #( module sens_parallel12 #(
parameter SENSIO_ADDR = 'h330, parameter SENSIO_ADDR = 'h330,
parameter SENSIO_ADDR_MASK = 'h7f8, parameter SENSIO_ADDR_MASK = 'h7f8,
...@@ -144,6 +144,10 @@ module sens_parallel12 #( ...@@ -144,6 +144,10 @@ module sens_parallel12 #(
output [7:0] status_ad, // status address/data - up to 5 bytes: A - {seq,status[1:0]} - status[2:9] - status[10:17] - status[18:25] output [7:0] status_ad, // status address/data - up to 5 bytes: A - {seq,status[1:0]} - status[2:9] - status[10:17] - status[18:25]
output status_rq, // input request to send status downstream output status_rq, // input request to send status downstream
input status_start // Acknowledge of the first status packet byte (address) input status_start // Acknowledge of the first status packet byte (address)
`ifdef DEBUG_HISTOGRAMS
,input [7:0] dbg_hist_data
`endif
); );
// delaying vact and pxd by one clock cycle to match hact register // delaying vact and pxd by one clock cycle to match hact register
...@@ -247,7 +251,14 @@ module sens_parallel12 #( ...@@ -247,7 +251,14 @@ module sens_parallel12 #(
xfpgatdo_byte[7:0], xfpgatdo_byte[7:0],
vact_alive, hact_ext_alive, hact_alive, locked_pxd_mmcm, vact_alive, hact_ext_alive, hact_alive, locked_pxd_mmcm,
clkin_pxd_stopped_mmcm, clkfb_pxd_stopped_mmcm, xfpgadone, clkin_pxd_stopped_mmcm, clkfb_pxd_stopped_mmcm, xfpgadone,
ps_rdy, ps_out, xfpgatdo, senspgmin}; ps_rdy,
`ifdef DEBUG_HISTOGRAMS
dbg_hist_data,
`else
ps_out,
`endif
xfpgatdo, senspgmin};
assign hact_out = hact_r; assign hact_out = hact_r;
assign iaro = trigger_mode? ~trig : iaro_soft; assign iaro = trigger_mode? ~trig : iaro_soft;
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
* with at least one of the Free Software programs. * with at least one of the Free Software programs.
*/ */
`timescale 1ns/1ps `timescale 1ns/1ps
`include "system_defines.vh" // just for debugging histograms
module sensor_channel#( module sensor_channel#(
// parameters, individual to sensor channels and those likely to be modified // parameters, individual to sensor channels and those likely to be modified
...@@ -463,6 +464,25 @@ module sensor_channel#( ...@@ -463,6 +464,25 @@ module sensor_channel#(
reg eof_out_r; reg eof_out_r;
wire prsts; // @pclk - includes sensor reset and sensor PLL reset wire prsts; // @pclk - includes sensor reset and sensor PLL reset
`ifdef DEBUG_HISTOGRAMS
wire [7:0] dbg_hist_data;
wire [3:0] dbg_hist_data_hist;
reg [15:0] dbg_cntr;
// reg [1:0] dbg_cntr; // verion B4 - toggles
always @ (posedge pclk) begin
// if (prst) dbg_cntr <= 0;
// else
// if (sof_out_r) dbg_cntr <= dbg_cntr + 1;
if (hist_gr[0] && hist_rq[0]) dbg_cntr <= dbg_cntr + 1; // verion B4 - toggles
end
assign dbg_hist_data = {dbg_cntr[11], hist_en[0], hist_gr[0], hist_rq[0], dbg_hist_data_hist[3:0]};
// assign dbg_hist_data = {prst, hist_en[0], dbg_cntr, dbg_hist_data_hist[3:0]}; // verion B4
// .hist_en (hist_en[0]), // input
// .hist_rst (!hist_nrst[0]), // input
`endif
// TODO: insert vignetting and/or flat field, pixel defects before gamma_*_in // TODO: insert vignetting and/or flat field, pixel defects before gamma_*_in
assign lens_pxd_in = {pxd[11:0],4'b0}; assign lens_pxd_in = {pxd[11:0],4'b0};
assign lens_hact_in = hact; assign lens_hact_in = hact;
...@@ -948,6 +968,10 @@ module sensor_channel#( ...@@ -948,6 +968,10 @@ module sensor_channel#(
.status_ad (sens_phys_status_ad), // output[7:0] .status_ad (sens_phys_status_ad), // output[7:0]
.status_rq (sens_phys_status_rq), // output .status_rq (sens_phys_status_rq), // output
.status_start (sens_phys_status_start) // input .status_start (sens_phys_status_start) // input
`ifdef DEBUG_HISTOGRAMS
, .dbg_hist_data (dbg_hist_data)
`endif
); );
// TODO NC393: This delay may be too long for serail sensors. Make them always start to fill the // TODO NC393: This delay may be too long for serail sensors. Make them always start to fill the
...@@ -1179,6 +1203,10 @@ module sensor_channel#( ...@@ -1179,6 +1203,10 @@ module sensor_channel#(
,.debug_do (debug_ring[0]), // output ,.debug_do (debug_ring[0]), // output
.debug_sl (debug_sl), // input .debug_sl (debug_sl), // input
.debug_di (debug_ring[1]) // input .debug_di (debug_ring[1]) // input
`endif
`ifdef DEBUG_HISTOGRAMS
,.dbg_hist_data(dbg_hist_data_hist[3:0])
`endif `endif
); );
......
...@@ -268,7 +268,7 @@ fifo_same_clock_fill #( .DATA_WIDTH(50),.DATA_DEPTH(AW_FIFO_DEPTH)) // read - ...@@ -268,7 +268,7 @@ fifo_same_clock_fill #( .DATA_WIDTH(50),.DATA_DEPTH(AW_FIFO_DEPTH)) // read -
.re (start_write_burst_w), .re (start_write_burst_w),
.data_in ({awid[5:0], awburst[1:0], awsize[1:0], awlen[3:0], awaddr[31:0], awqos[3:0]}), .data_in ({awid[5:0], awburst[1:0], awsize[1:0], awlen[3:0], awaddr[31:0], awqos[3:0]}),
.data_out ({awid_out[5:0], awburst_out[1:0],awsize_out[1:0],awlen_out[3:0],awaddr_out[31:0], sim_wr_qos[3:0]}), .data_out ({awid_out[5:0], awburst_out[1:0],awsize_out[1:0],awlen_out[3:0],awaddr_out[31:0], sim_wr_qos[3:0]}),
.nempty (aw_nempty), .nempty (aw_nempty), // output
.half_full (), // aw_half_full), .half_full (), // aw_half_full),
.under (), // waddr_under), // output reg .under (), // waddr_under), // output reg
.over (), // waddr_over), // output reg .over (), // waddr_over), // output reg
......
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
// This file may be used to define same pre-processor macros to be included into each parsed file // This file may be used to define same pre-processor macros to be included into each parsed file
`ifndef SYSTEM_DEFINES `ifndef SYSTEM_DEFINES
`define SYSTEM_DEFINES `define SYSTEM_DEFINES
`define DEBUG_HISTOGRAMS
// TODO: Later compare instantiate/infer // TODO: Later compare instantiate/infer
`define INSTANTIATE_DSP48E1 // not yet tesetd/debugged otherwise `define INSTANTIATE_DSP48E1 // not yet tesetd/debugged otherwise
// https://forums.xilinx.com/t5/Embedded-Processor-System-Design/AXI4-Bursts-4KB-Address-Boundary-Limitation/td-p/216413 // https://forums.xilinx.com/t5/Embedded-Processor-System-Design/AXI4-Bursts-4KB-Address-Boundary-Limitation/td-p/216413
......
No preview for this file type
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