Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
x393
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
x393
Commits
d189269a
Commit
d189269a
authored
Apr 04, 2019
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated simulation code
parent
c270adff
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
1068 additions
and
71 deletions
+1068
-71
x393_cocotb_03.sav
cocotb/x393_cocotb_03.sav
+490
-35
x393_dut.v
cocotb/x393_dut.v
+72
-18
x393_simulation_parameters.vh
includes/x393_simulation_parameters.vh
+36
-10
x393_sens_cmprs.py
py393/x393_sens_cmprs.py
+13
-3
x393_tiff_verilog.py
py393/x393_tiff_verilog.py
+3
-1
simul_lwir160x120_telemetry.v
simulation_modules/simul_lwir160x120_telemetry.v
+99
-0
simul_lwir160x120_vospi.v
simulation_modules/simul_lwir160x120_vospi.v
+290
-0
simul_sensor12bits.v
simulation_modules/simul_sensor12bits.v
+11
-3
vospi.v
simulation_modules/vospi.v
+53
-0
system_defines.vh
system_defines.vh
+1
-1
No files found.
cocotb/x393_cocotb_03.sav
View file @
d189269a
[*]
[*] GTKWave Analyzer v3.3.78 (w)1999-2016 BSI
[*]
Sat Mar 30 21:44:35
2019
[*]
Thu Apr 4 15:14:53
2019
[*]
[dumpfile] "/data_ssd/nc393/elphel393/fpga-elphel/x393/simulation/x393_dut-20190
330003307254
.fst"
[dumpfile_mtime] "
Sat Mar 30 08:20:05
2019"
[dumpfile_size]
828570003
[dumpfile] "/data_ssd/nc393/elphel393/fpga-elphel/x393/simulation/x393_dut-20190
403200123296
.fst"
[dumpfile_mtime] "
Thu Apr 4 02:19:11
2019"
[dumpfile_size]
92419986
[savefile] "/data_ssd/nc393/elphel393/fpga-elphel/x393/cocotb/x393_cocotb_03.sav"
[timestart]
38980
0000
[timestart]
7192
0000
[size] 1804 1171
[pos] -1 -1
*-2
4.894814 449301250 447727388 448849888 -1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
*-2
3.676386 109647388 447727388 448849888 102260291 102291500 102322774 102354054 3061832388 143392388
-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_lwir160x120_vospi_i.
[treeopen] x393_dut.simul_sensor12bits_2_i.
[treeopen] x393_dut.simul_sensor12bits_3_i.
[treeopen] x393_dut.simul_sensor12bits_4_i.
[treeopen] x393_dut.simul_sensor12bits_i.
[treeopen] x393_dut.x393_i.
[treeopen] x393_dut.x393_i.compressor393_i.
...
...
@@ -23,12 +25,16 @@
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_raw_buf_iface_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.compressor393_i.cmprs_channel_block[1].
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[1].jp_channel_i.
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[1].jp_channel_i.cmprs_frame_sync_i.
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[1].jp_channel_i.huffman_stuffer_meta_i.
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.cmprs_frame_sync_i.
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.huffman_stuffer_meta_i.
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_27_32_i.
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i.
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i.cmprs_frame_sync_i.
[treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i.huffman_stuffer_meta_i.
...
...
@@ -44,39 +50,153 @@
[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.cmd_encod_linear_rw_i.
[treeopen] x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.
[treeopen] x393_dut.x393_i.mcntrl393_i.cmd_encod_tiled_32_rw_i.
[treeopen] x393_dut.x393_i.mcntrl393_i.cmd_encod_tiled_32_rw_i.cmd_encod_tiled_rd_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.sens_comp_block[0].
[treeopen] x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_linear_wr_sensor_i.
[treeopen] x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.
[treeopen] x393_dut.x393_i.mcntrl393_i.sens_comp_block[1].
[treeopen] x393_dut.x393_i.mcntrl393_i.sens_comp_block[2].
[treeopen] x393_dut.x393_i.mcntrl393_i.sens_comp_block[2].mcntrl_linear_wr_sensor_i.
[treeopen] x393_dut.x393_i.mcntrl393_i.sens_comp_block[2].mcntrl_tiled_rd_compressor_i.
[treeopen] x393_dut.x393_i.mcntrl393_i.sens_comp_block[3].
[treeopen] x393_dut.x393_i.mcntrl393_i.sens_comp_block[3].mcntrl_tiled_rd_compressor_i.
[treeopen] x393_dut.x393_i.mult_saxi_wr_i.mult_saxi_wr_pointers_i.
[treeopen] x393_dut.x393_i.sensors393_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.genblk1.sens_histogram_0_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.lens_flat393_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_histogram_mux_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.sensor_i2c_io_i.sensor_i2c_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.chn1wr_buf_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[1].
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_channel_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_channel_i.lens_flat393_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_channel_i.sens_sync_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[2].
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[2].sensor_channel_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[2].sensor_channel_i.genblk1.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[2].sensor_channel_i.genblk1.sens_histogram_0_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[2].sensor_channel_i.lens_flat393_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[2].sensor_channel_i.sens_sync_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[3].
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[3].sensor_channel_i.
[treeopen] x393_dut.x393_i.sensors393_i.sensor_channel_block[3].sensor_channel_i.lens_flat393_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.
[treeopen] x393_dut.x393_i.timing393_i.camsync393_i.i_frsync_pclk0.
[sst_width]
580
[signals_width]
275
[sst_width]
351
[signals_width]
322
[sst_expanded] 1
[sst_vpaned_height]
486
[sst_vpaned_height]
727
@820
x393_dut.TEST_TITLE[639:0]
@c00200
-LWIR0
@28
x393_dut.simul_lwir160x120_vospi_i.mclk
x393_dut.simul_lwir160x120_vospi_i.miso
x393_dut.simul_lwir160x120_vospi_i.ncs
x393_dut.simul_lwir160x120_vospi_i.nrst
x393_dut.simul_lwir160x120_vospi_i.sck
@22
x393_dut.simul_lwir160x120_vospi_i.copy_packet[7:0]
@28
x393_dut.simul_lwir160x120_vospi_i.frame_start
x393_dut.simul_lwir160x120_vospi_i.copy_run
x393_dut.simul_lwir160x120_vospi_i.copy_page
x393_dut.simul_lwir160x120_vospi_i.copy_done
x393_dut.simul_lwir160x120_vospi_i.copy_crc
@8022
x393_dut.simul_lwir160x120_vospi_i.copy_packet[7:0]
@c08022
x393_dut.simul_lwir160x120_vospi_i.copy_word[6:0]
@28
(0)x393_dut.simul_lwir160x120_vospi_i.copy_word[6:0]
(1)x393_dut.simul_lwir160x120_vospi_i.copy_word[6:0]
(2)x393_dut.simul_lwir160x120_vospi_i.copy_word[6:0]
(3)x393_dut.simul_lwir160x120_vospi_i.copy_word[6:0]
(4)x393_dut.simul_lwir160x120_vospi_i.copy_word[6:0]
(5)x393_dut.simul_lwir160x120_vospi_i.copy_word[6:0]
(6)x393_dut.simul_lwir160x120_vospi_i.copy_word[6:0]
@1401200
-group_end
@22
x393_dut.simul_lwir160x120_vospi_i.copy_packet_full[7:0]
x393_dut.simul_lwir160x120_vospi_i.copy_packet_indx[11:0]
x393_dut.simul_lwir160x120_vospi_i.copy_packet_segment[7:0]
@c00022
x393_dut.simul_lwir160x120_vospi_i.copy_packet_ttt[7:0]
@28
(0)x393_dut.simul_lwir160x120_vospi_i.copy_packet_ttt[7:0]
(1)x393_dut.simul_lwir160x120_vospi_i.copy_packet_ttt[7:0]
(2)x393_dut.simul_lwir160x120_vospi_i.copy_packet_ttt[7:0]
(3)x393_dut.simul_lwir160x120_vospi_i.copy_packet_ttt[7:0]
(4)x393_dut.simul_lwir160x120_vospi_i.copy_packet_ttt[7:0]
(5)x393_dut.simul_lwir160x120_vospi_i.copy_packet_ttt[7:0]
(6)x393_dut.simul_lwir160x120_vospi_i.copy_packet_ttt[7:0]
(7)x393_dut.simul_lwir160x120_vospi_i.copy_packet_ttt[7:0]
@1401200
-group_end
@28
x393_dut.simul_lwir160x120_vospi_i.copy_pix_only
x393_dut.simul_lwir160x120_vospi_i.copy_pix_or_tel
x393_dut.simul_lwir160x120_vospi_i.copy_pixels_pix
@22
x393_dut.simul_lwir160x120_vospi_i.copy_pxd[15:0]
x393_dut.simul_lwir160x120_vospi_i.copy_d[15:0]
x393_dut.simul_lwir160x120_vospi_i.copy_din[15:0]
@8022
x393_dut.simul_lwir160x120_vospi_i.copy_wa[6:0]
x393_dut.simul_lwir160x120_vospi_i.copy_wa_full[15:0]
@28
x393_dut.simul_lwir160x120_vospi_i.copy_run
x393_dut.simul_lwir160x120_vospi_i.copy_tel_only
@22
x393_dut.simul_lwir160x120_vospi_i.copy_telemetry_d[15:0]
@c00022
x393_dut.simul_lwir160x120_vospi_i.copy_telemetry_packet[7:0]
@28
(0)x393_dut.simul_lwir160x120_vospi_i.copy_telemetry_packet[7:0]
(1)x393_dut.simul_lwir160x120_vospi_i.copy_telemetry_packet[7:0]
(2)x393_dut.simul_lwir160x120_vospi_i.copy_telemetry_packet[7:0]
(3)x393_dut.simul_lwir160x120_vospi_i.copy_telemetry_packet[7:0]
(4)x393_dut.simul_lwir160x120_vospi_i.copy_telemetry_packet[7:0]
(5)x393_dut.simul_lwir160x120_vospi_i.copy_telemetry_packet[7:0]
(6)x393_dut.simul_lwir160x120_vospi_i.copy_telemetry_packet[7:0]
(7)x393_dut.simul_lwir160x120_vospi_i.copy_telemetry_packet[7:0]
@1401200
-group_end
@22
x393_dut.simul_lwir160x120_vospi_i.copy_wa[6:0]
x393_dut.simul_lwir160x120_vospi_i.copy_wa_full[15:0]
x393_dut.simul_lwir160x120_vospi_i.copy_word[6:0]
x393_dut.simul_lwir160x120_vospi_i.crc_in[15:0]
x393_dut.simul_lwir160x120_vospi_i.crc_out[15:0]
@28
x393_dut.simul_lwir160x120_vospi_i.en_avg
@22
x393_dut.simul_lwir160x120_vospi_i.frame_average32[31:0]
x393_dut.simul_lwir160x120_vospi_i.frame_average[15:0]
@8022
x393_dut.simul_lwir160x120_vospi_i.frame_dly_cntr[19:0]
@22
x393_dut.simul_lwir160x120_vospi_i.frame_sum[30:0]
@8022
x393_dut.simul_lwir160x120_vospi_i.ms_cntr[31:0]
x393_dut.simul_lwir160x120_vospi_i.time_ms[31:0]
@28
x393_dut.simul_lwir160x120_vospi_i.mclk
x393_dut.simul_lwir160x120_vospi_i.mrst
x393_dut.simul_lwir160x120_vospi_i.nrst
@200
-
@1401200
-LWIR0
@800200
-SENSOR0
@28
...
...
@@ -103,6 +223,7 @@ x393_dut.simul_sensor12bits_i.ivact
@22
x393_dut.simul_sensor12bits_i.state[3:0]
x393_dut.simul_sensor12bits_i.stated[3:0]
x393_dut.simul_sensor12bits_i.cntrd[15:0]
@8022
x393_dut.simul_sensor12bits_i.cntr[15:0]
@1000200
...
...
@@ -118,6 +239,8 @@ x393_dut.simul_sensor12bits_2_i.D[11:0]
x393_dut.simul_sensor12bits_2_i.VACT
x393_dut.simul_sensor12bits_2_i.HACT
x393_dut.simul_sensor12bits_2_i.stopped
@22
x393_dut.simul_sensor12bits_2_i.cntr[15:0]
@1401200
-SENSOR1
@c00200
...
...
@@ -148,7 +271,7 @@ x393_dut.simul_sensor12bits_3_i.stated[3:0]
x393_dut.simul_sensor12bits_3_i.cntr[15:0]
@1401200
-SENSOR2
@
c
00200
@
8
00200
-SENSOR3
@28
x393_dut.simul_sensor12bits_4_i.ARO
...
...
@@ -159,7 +282,9 @@ x393_dut.simul_sensor12bits_4_i.D[11:0]
x393_dut.simul_sensor12bits_4_i.VACT
x393_dut.simul_sensor12bits_4_i.HACT
x393_dut.simul_sensor12bits_4_i.stopped
@1401200
@22
x393_dut.simul_sensor12bits_4_i.cntr[15:0]
@1000200
-SENSOR3
@c00200
-ARO
...
...
@@ -2779,7 +2904,7 @@ x393_dut.IMU_SDA
x393_dut.IMU_TAPS[5:1]
@1401200
-IMU_
@
8
00200
@
c
00200
-debuf_frame_sync_x
@28
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_sync_i.prst
...
...
@@ -2851,7 +2976,7 @@ x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.want
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.xfer_want
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.xfer_grant
(2)x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.xfer_start_r[2:0]
@1
000
200
@1
401
200
-debuf_frame_sync_x
@c00200
-camsync_ext_int
...
...
@@ -3001,6 +3126,7 @@ x393_dut.x393_i.timing393_i.camsync393_i.restart_cntr[31:0]
@28
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.frame_sync
@22
[color] 2
x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i.frame_no[3:0]
@1000200
-cmd_frame_seq0
...
...
@@ -3027,10 +3153,18 @@ x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sensor_i2c
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sensor_i2c_io_i.sensor_i2c_i.use_eof
@1401200
-i2c_seq_0
@
c
00200
@
8
00200
-sensor_channel0
@28
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.bit16
@22
x393_dut.PX1_D[11:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.pxd[11:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_parallel12_i.pxd_out[11:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.pxd[11:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.lens_flat393_i.pxd_in[15:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.lens_flat393_i.pxd_in[15:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.lens_flat393_i.pxd_out[15:0]
@800200
-buf
@28
...
...
@@ -3080,9 +3214,50 @@ x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_sync_
x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.sens_sync_i.sof_out_pclk
@1000200
-sesns_sync
@1401200
-sensor_channel0
@800200
-sensor_channel1
@22
x393_dut.PX2_D[11:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_channel_i.sens_parallel12_i.pxd[11:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_channel_i.pxd[11:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_channel_i.lens_flat393_i.pxd_in[15:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_channel_i.lens_flat393_i.pxd_out[15:0]
@800200
-buf
@28
x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_membuf_i.px_valid
x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_membuf_i.wpage[1:0]
@22
x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_membuf_i.waddr[8:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_membuf_i.px_data[15:0]
@28
x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_membuf_i.mclk
@22
x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_membuf_i.buf_dout[63:0]
@28
x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_membuf_i.buf_rd
@1000200
-buf
-sensor_channel1
@800200
-sensor_channel2
@22
x393_dut.PX3_D[11:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[2].sensor_channel_i.lens_flat393_i.pxd_in[15:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[2].sensor_channel_i.lens_flat393_i.pxd_out[15:0]
@200
-
@1000200
-sensor_channel2
@800200
-sensor_channel3
@22
x393_dut.PX4_D[11:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[3].sensor_channel_i.lens_flat393_i.pxd_in[15:0]
x393_dut.x393_i.sensors393_i.sensor_channel_block[3].sensor_channel_i.lens_flat393_i.pxd_out[15:0]
@1000200
-sensor_channel3
-sequencers_0
@22
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_linear_wr_sensor_i.window_height[16:0]
...
...
@@ -3135,18 +3310,22 @@ x393_dut.x393_i.sof_out_mclk[3:0]
(3)x393_dut.x393_i.sof_out_mclk[3:0]
@1401200
-group_end
@28
x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i.buf_we
@22
x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i.buf_din[63:0]
@c00200
-jpeg3
@800200
-memsensor3
@22
x393_dut.x393_i.mcntrl393_i.sens_comp_block[
2
].mcntrl_linear_wr_sensor_i.window_height[16:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[
2
].mcntrl_linear_wr_sensor_i.window_width[13:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[
3
].mcntrl_linear_wr_sensor_i.window_height[16:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[
3
].mcntrl_linear_wr_sensor_i.window_width[13:0]
@1000200
-memsensor3
@22
x393_dut.x393_i.mcntrl393_i.sens_comp_block[
2
].mcntrl_tiled_rd_compressor_i.window_height[16:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[
2
].mcntrl_tiled_rd_compressor_i.window_width[13:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[
3
].mcntrl_tiled_rd_compressor_i.window_height[16:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[
3
].mcntrl_tiled_rd_compressor_i.window_width[13:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[2].mcntrl_tiled_rd_compressor_i.tile_rows[6:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[2].mcntrl_tiled_rd_compressor_i.tile_vstep[6:0]
@28
...
...
@@ -3282,8 +3461,21 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i.huffman_stuf
@1401200
-bit_stuffer_27_32
-jpeg3
@
c
00200
@
8
00200
-jpeg2
-memsensor2
@22
x393_dut.x393_i.mcntrl393_i.sens_comp_block[2].mcntrl_linear_wr_sensor_i.window_height[16:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[2].mcntrl_linear_wr_sensor_i.window_width[13:0]
@1000200
-memsensor2
@22
x393_dut.x393_i.mcntrl393_i.sens_comp_block[2].mcntrl_tiled_rd_compressor_i.window_height[16:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[2].mcntrl_tiled_rd_compressor_i.window_width[13:0]
@28
x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.buf_we
@22
x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.buf_din[63:0]
@28
x393_dut.x393_i.mcntrl393_i.sens_comp_block[2].mcntrl_tiled_rd_compressor_i.chn_en
x393_dut.x393_i.mcntrl393_i.sens_comp_block[2].mcntrl_tiled_rd_compressor_i.chn_rst
...
...
@@ -3328,6 +3520,9 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.huffman_stuf
@28
x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.huffman_stuffer_meta_i.stuffer_bytes[1:0]
x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.huffman_stuffer_meta_i.stuffer_dv
x393_dut.x393_i.mcntrl393_i.sens_comp_block[2].mcntrl_tiled_rd_compressor_i.xfer_start32_rd
x393_dut.x393_i.mcntrl393_i.sens_comp_block[2].mcntrl_tiled_rd_compressor_i.xfer_start_rd
x393_dut.x393_i.mcntrl393_i.sens_comp_block[2].mcntrl_tiled_rd_compressor_i.xfer_start_lin_rd
@c00200
-bit_stuffer
@28
...
...
@@ -3393,9 +3588,23 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.huffman_stuf
-
@1401200
-bit_stuffer
@1000200
-jpeg2
@
c
00200
@
8
00200
-jpeg1
-memsensor1
@22
x393_dut.x393_i.mcntrl393_i.sens_comp_block[1].mcntrl_linear_wr_sensor_i.window_height[16:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[1].mcntrl_linear_wr_sensor_i.window_width[13:0]
@1000200
-memsensor1
@22
x393_dut.x393_i.mcntrl393_i.sens_comp_block[1].mcntrl_tiled_rd_compressor_i.window_height[16:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[1].mcntrl_tiled_rd_compressor_i.window_width[13:0]
@28
x393_dut.x393_i.compressor393_i.cmprs_channel_block[1].jp_channel_i.buf_we
@22
x393_dut.x393_i.compressor393_i.cmprs_channel_block[1].jp_channel_i.buf_din[63:0]
@28
x393_dut.x393_i.mcntrl393_i.sens_comp_block[1].mcntrl_tiled_rd_compressor_i.chn_en
x393_dut.x393_i.mcntrl393_i.sens_comp_block[1].mcntrl_tiled_rd_compressor_i.chn_rst
...
...
@@ -3440,7 +3649,11 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.huffman_stuf
@28
x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.huffman_stuffer_meta_i.stuffer_bytes[1:0]
x393_dut.x393_i.compressor393_i.cmprs_channel_block[2].jp_channel_i.huffman_stuffer_meta_i.stuffer_dv
@1401200
@200
-
@22
x393_dut.x393_i.compressor393_i.cmprs_channel_block[1].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
@1000200
-jpeg1
@c00200
-debug_raw_x
...
...
@@ -3581,6 +3794,7 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_run_mc
@800200
-debug_interference_raw0
@28
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.xfer_need
[color] 3
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.xfer_want
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.xfer_grant
...
...
@@ -3597,6 +3811,9 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.chn_rd_buf_i
@28
x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_wr_i.enc_done
x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_wr_i.enc_wr
@22
x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
@28
x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_wr_i.gen_run
@22
x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_wr_i.num128[6:0]
...
...
@@ -3620,6 +3837,9 @@ x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.start
-encode_tiled_rd
@28
x393_dut.x393_i.mcntrl393_i.cmd_encod_tiled_32_rw_i.cmd_encod_tiled_rd_i.enc_wr
@22
x393_dut.x393_i.mcntrl393_i.cmd_encod_tiled_32_rw_i.cmd_encod_tiled_rd_i.enc_cmd[31:0]
@28
x393_dut.x393_i.mcntrl393_i.cmd_encod_tiled_32_rw_i.cmd_encod_tiled_rd_i.enc_done
x393_dut.x393_i.mcntrl393_i.cmd_encod_tiled_32_rw_i.cmd_encod_tiled_rd_i.gen_run
x393_dut.x393_i.mcntrl393_i.cmd_encod_tiled_32_rw_i.cmd_encod_tiled_rd_i.pre_act
...
...
@@ -3628,7 +3848,7 @@ x393_dut.x393_i.mcntrl393_i.cmd_encod_tiled_32_rw_i.cmd_encod_tiled_rd_i.pre_don
x393_dut.x393_i.mcntrl393_i.cmd_encod_tiled_32_rw_i.cmd_encod_tiled_rd_i.start
@1000200
-encode_tiled_rd
@
8
00200
@
c
00200
-mcntrl_sheduler
@c00022
x393_dut.x393_i.mcntrl393_i.memctrl16_i.scheduler16_i.want_conf[15:0]
...
...
@@ -3658,9 +3878,9 @@ x393_dut.x393_i.mcntrl393_i.memctrl16_i.scheduler16_i.grant_r
@22
x393_dut.x393_i.mcntrl393_i.memctrl16_i.scheduler16_i.grant_chn[3:0]
x393_dut.x393_i.mcntrl393_i.memctrl16_i.scheduler16_i.grant_chn_r[3:0]
@1
000
200
@1
401
200
-mcntrl_sheduler
@
8
00200
@
c
00200
-mcntrl_sequencer
@28
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.ext_buf_rd
...
...
@@ -3704,10 +3924,11 @@ x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.buf_rdata[63:0]
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.buf_wr
@22
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.buf_wdata[63:0]
@1
000
200
@1
401
200
-mcntrl_sequencer
@1000200
-debug_interference_raw0
@
8
00200
@
c
00200
-raw_0
@28
x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.raw_be16
...
...
@@ -3946,7 +4167,6 @@ x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.mem_
-
@1401200
-mcntrl_tiled_linear
@1000200
-raw_0
@c00200
-cmprs_raw_buf_iface_i
...
...
@@ -4066,6 +4286,19 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_raw_bu
-cmprs_raw_buf_iface_i
@800200
-jpeg0
-memsensor0
@22
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_linear_wr_sensor_i.window_height[16:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_linear_wr_sensor_i.window_width[13:0]
@1000200
-memsensor0
@22
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.window_height[16:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.window_width[13:0]
@28
x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.buf_we
@22
x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.buf_din[63:0]
@c00200
-raw_dbg
@28
...
...
@@ -4121,7 +4354,7 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuf
-
@1401200
-raw_dbg
@
c
00200
@
8
00200
-stuffer_raw0
@28
x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.raw_prefb
...
...
@@ -4148,6 +4381,204 @@ x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.chn_
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_start
x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_frame_sync_i.frames_numbers_differ
@800200
-mem
@22
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.window_width[13:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.window_height[16:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.next_y[16:0]
@28
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.last_row_w
@8028
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.last_in_row_w
@22
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.curr_x[12:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.row_left[13:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.recalc_r[8:0]
[color] 3
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.line_unfinished_relw_r[15:0]
[color] 3
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.line_unfinished_r[15:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.row_left[13:0]
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.row_col_r[21:0]
@28
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.frame_done
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.frame_finished
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.busy_r
@8022
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.pending_xfers[1:0]
@28
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.xfer_limited_by_mem_page_r
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.start_not_partial
[color] 2
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.next_page
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.xfer_want
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.xfer_grant
@22
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.page_cntr[2:0]
@8028
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.xfer_start_r[2:0]
@28
x393_dut.x393_i.mcntrl393_i.sens_comp_block[0].mcntrl_tiled_rd_compressor_i.xfer_page_done
@1000200
-mem
@800200
-encode_lin_rd
@28
x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.start
@22
x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.bank[2:0]
x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.row[14:0]
x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.start_col[6:0]
x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.num128_in[5:0]
@c00022
x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
@28
(0)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(1)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(2)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(3)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(4)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(5)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(6)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(7)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(8)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(9)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(10)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(11)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(12)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(13)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(14)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(15)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(16)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(17)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(18)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(19)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(20)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(21)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(22)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(23)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(24)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(25)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(26)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(27)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(28)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(29)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(30)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
(31)x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_cmd[31:0]
@1401200
-group_end
@28
x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_wr
x393_dut.x393_i.mcntrl393_i.cmd_encod_linear_rw_i.cmd_encod_linear_rd_i.enc_done
@1000200
-encode_lin_rd
@800200
-encode_tiled_rd
@28
x393_dut.x393_i.mcntrl393_i.cmd_encod_tiled_32_rw_i.cmd_encod_tiled_rd_i.start
@22
x393_dut.x393_i.mcntrl393_i.cmd_encod_tiled_32_rw_i.cmd_encod_tiled_rd_i.bank[2:0]
@200
-
@1000200
-encode_tiled_rd
@800200
-mseq
@22
x393_dut.x393_i.mcntrl393_i.memctrl16_i.seq_data[31:0]
@28
x393_dut.x393_i.mcntrl393_i.memctrl16_i.seq_wr
x393_dut.x393_i.mcntrl393_i.memctrl16_i.seq_set
x393_dut.x393_i.mcntrl393_i.memctrl16_i.grant_r
@22
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.cmd1_addr[9:0]
@28
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.cmd1_we
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.ren1
@22
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.cmd_addr[9:0]
@c00022
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
@28
(0)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(1)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(2)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(3)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(4)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(5)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(6)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(7)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(8)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(9)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(10)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(11)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(12)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(13)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(14)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(15)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(16)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(17)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(18)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(19)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(20)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(21)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(22)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(23)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(24)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(25)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(26)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(27)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(28)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(29)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(30)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
(31)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_word[31:0]
@1401200
-group_end
@28
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.cmd_fetch
[color] 2
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_nop
@22
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.pause_len[9:0]
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.pause_cntr[9:0]
@28
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.pause
@800200
-phy_cmd
@22
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_i.pause_len[9:0]
@28
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_i.sequence_done
@22
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_i.phy_addr_in[14:0]
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_i.phy_bank_in[2:0]
@800028
[color] 3
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_i.phy_rcw_pos[2:0]
@28
[color] 3
(0)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_i.phy_rcw_pos[2:0]
[color] 3
(1)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_i.phy_rcw_pos[2:0]
[color] 3
(2)x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_i.phy_rcw_pos[2:0]
@1001200
-group_end
@28
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_i.phy_odt_in
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_i.phy_cke_dis
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_i.add_pause
@200
-
@1000200
-phy_cmd
@22
x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i.phy_cmd_i.phy_addr_in[14:0]
@200
-
@1000200
-mseq
@22
[color] 6
x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_frame_sync_i.line_unfinished_src[15:0]
...
...
@@ -4204,11 +4635,36 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuf
x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.stuffer_dv
@28
x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.trailer
@22
@
c000
22
x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
@28
(0)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(1)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(2)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(3)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(4)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(5)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(6)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(7)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(8)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(9)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(10)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(11)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(12)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(13)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(14)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(15)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(16)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(17)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(18)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(19)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(20)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
(21)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_metadata_i.imgsz4[21:0]
@1401200
-group_end
@1000200
-stuffer_raw0
@
c
00200
@
8
00200
-bit_stuffer
@22
x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_27_32_i.xclk
...
...
@@ -4237,9 +4693,8 @@ x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuf
x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.huffman_stuffer_meta_i.bit_stuffer_27_32_i.stage[1:0]
@200
-
@1401200
-bit_stuffer
@1000200
-bit_stuffer
-jpeg0
[pattern_trace] 1
[pattern_trace] 0
cocotb/x393_dut.v
View file @
d189269a
...
...
@@ -418,14 +418,16 @@ module x393_dut#(
parameter
PF_STRIPES
=
WOI_HEIGHT
/
PF_HEIGHT
;
`else
parameter
PF_HEIGHT
=
0
;
// SuppressThisWarning VEditor - not used
parameter
FULL_HEIGHT
=
WOI_HEIGHT
+
4
;
parameter
PF_STRIPES
=
0
;
// SuppressThisWarning VEditor - not used
`endif
parameter
WOI_MARGINS
=
0
;
// 4;
parameter
VIRTUAL_WIDTH
=
FULL_WIDTH
+
HBLANK
;
parameter
VIRTUAL_HEIGHT
=
FULL_HEIGHT
+
BLANK_ROWS_BEFORE
+
BLANK_ROWS_AFTER
;
//SuppressThisWarning Veditor UNUSED
parameter
TRIG_INTERFRAME
=
100
;
/// extra 100 clock cycles between frames //SuppressThisWarning Veditor UNUSED
parameter
TRIG_DELAY
=
200
;
/// delay in sensor clock cycles // SuppressThisWarning VEditor - not used
parameter
FULL_WIDTH
=
WOI_WIDTH
+
4
;
parameter
FULL_WIDTH
=
WOI_WIDTH
+
WOI_MARGINS
;
parameter
FULL_HEIGHT
=
WOI_HEIGHT
+
WOI_MARGINS
;
// localparam SENSOR_MEMORY_WIDTH_BURSTS = (FULL_WIDTH + 15) >> 4;
// localparam SENSOR_MEMORY_MASK = (1 << (FRAME_WIDTH_ROUND_BITS-4)) -1;
// localparam SENSOR_MEMORY_FULL_WIDTH_BURSTS = (SENSOR_MEMORY_WIDTH_BURSTS + SENSOR_MEMORY_MASK) & (~SENSOR_MEMORY_MASK);
...
...
@@ -670,22 +672,35 @@ module x393_dut#(
`else
//connect parallel12 sensor to sensor port 2 (all data rotated left by 1 bit)
assign
sns2_dp
[
6
:
1
]
=
{
PX2_D
[
9
]
,
PX2_D
[
7
]
,
PX2_D
[
5
]
,
PX2_D
[
3
]
,
PX2_D
[
1
]
,
PX2_HACT
};
assign
sns2_dn
[
6
:
0
]
=
{
PX2_D
[
10
]
,
PX2_D
[
8
]
,
PX2_D
[
6
]
,
PX2_D
[
4
]
,
PX2_D
[
2
]
,
PX2_VACT
,
PX2_DCLK
};
assign
sns2_clkn
=
PX2_D
[
11
]
;
// inout CNVSYNC/TDI
assign
sns2_clkp
=
PX2_D
[
0
]
;
// CNVCLK/TDO
/// assign sns2_dp[6:1] = {PX2_D[9], PX2_D[7], PX2_D[5], PX2_D[3], PX2_D[1], PX2_HACT};
/// assign sns2_dn[6:0] = {PX2_D[10], PX2_D[8], PX2_D[6], PX2_D[4], PX2_D[2], PX2_VACT, PX2_DCLK};
/// assign sns2_clkn = PX2_D[11]; // inout CNVSYNC/TDI
/// assign sns2_clkp = PX2_D[0]; // CNVCLK/TDO
assign
sns2_dp
[
6
:
1
]
=
{
PX2_D
[
10
]
,
PX2_D
[
8
]
,
PX2_D
[
6
]
,
PX2_D
[
4
]
,
PX2_D
[
2
]
,
PX2_HACT
};
assign
sns2_dn
[
6
:
0
]
=
{
PX2_D
[
11
]
,
PX2_D
[
9
]
,
PX2_D
[
7
]
,
PX2_D
[
5
]
,
PX2_D
[
3
]
,
PX2_VACT
,
PX2_DCLK
};
assign
sns2_clkn
=
PX2_D
[
0
]
;
// inout CNVSYNC/TDI
assign
sns2_clkp
=
PX2_D
[
1
]
;
// CNVCLK/TDO
//connect parallel12 sensor to sensor port 3 (all data rotated left by 2 bits
assign
sns3_dp
[
6
:
1
]
=
{
PX3_D
[
8
]
,
PX3_D
[
6
]
,
PX3_D
[
4
]
,
PX3_D
[
2
]
,
PX3_D
[
0
]
,
PX3_HACT
};
assign
sns3_dn
[
6
:
0
]
=
{
PX3_D
[
9
]
,
PX3_D
[
7
]
,
PX3_D
[
5
]
,
PX3_D
[
3
]
,
PX3_D
[
1
]
,
PX3_VACT
,
PX3_DCLK
};
assign
sns3_clkn
=
PX3_D
[
10
]
;
// inout CNVSYNC/TDI
assign
sns3_clkp
=
PX3_D
[
11
]
;
// CNVCLK/TDO
/// assign sns3_dp[6:1] = {PX3_D[8], PX3_D[6], PX3_D[4], PX3_D[2], PX3_D[0], PX3_HACT};
/// assign sns3_dn[6:0] = {PX3_D[9], PX3_D[7], PX3_D[5], PX3_D[3], PX3_D[1], PX3_VACT, PX3_DCLK};
/// assign sns3_clkn = PX3_D[10]; // inout CNVSYNC/TDI
/// assign sns3_clkp = PX3_D[11]; // CNVCLK/TDO
assign
sns3_dp
[
6
:
1
]
=
{
PX3_D
[
10
]
,
PX3_D
[
8
]
,
PX3_D
[
6
]
,
PX3_D
[
4
]
,
PX3_D
[
2
]
,
PX3_HACT
};
assign
sns3_dn
[
6
:
0
]
=
{
PX3_D
[
11
]
,
PX3_D
[
9
]
,
PX3_D
[
7
]
,
PX3_D
[
5
]
,
PX3_D
[
3
]
,
PX3_VACT
,
PX3_DCLK
};
assign
sns3_clkn
=
PX3_D
[
0
]
;
// inout CNVSYNC/TDI
assign
sns3_clkp
=
PX3_D
[
1
]
;
// CNVCLK/TDO
//connect parallel12 sensor to sensor port 4 (all data rotated left by 3 bits
assign
sns4_dp
[
6
:
1
]
=
{
PX4_D
[
5
]
,
PX4_D
[
3
]
,
PX4_D
[
1
]
,
PX4_D
[
11
]
,
PX4_D
[
9
]
,
PX4_HACT
};
assign
sns4_dn
[
6
:
0
]
=
{
PX4_D
[
6
]
,
PX4_D
[
4
]
,
PX4_D
[
2
]
,
PX4_D
[
0
]
,
PX4_D
[
10
]
,
PX4_VACT
,
PX4_DCLK
};
assign
sns4_clkn
=
PX4_D
[
7
]
;
// inout CNVSYNC/TDI
assign
sns4_clkp
=
PX4_D
[
8
]
;
// CNVCLK/TDO
/// assign sns4_dp[6:1] = {PX4_D[5], PX4_D[3], PX4_D[1], PX4_D[11], PX4_D[9], PX4_HACT};
/// assign sns4_dn[6:0] = {PX4_D[6], PX4_D[4], PX4_D[2], PX4_D[0], PX4_D[10], PX4_VACT, PX4_DCLK};
/// assign sns4_clkn = PX4_D[7]; // inout CNVSYNC/TDI
/// assign sns4_clkp = PX4_D[8]; // CNVCLK/TDO
assign
sns4_dp
[
6
:
1
]
=
{
PX4_D
[
10
]
,
PX4_D
[
8
]
,
PX4_D
[
6
]
,
PX4_D
[
4
]
,
PX4_D
[
2
]
,
PX4_HACT
};
assign
sns4_dn
[
6
:
0
]
=
{
PX4_D
[
11
]
,
PX4_D
[
9
]
,
PX4_D
[
7
]
,
PX4_D
[
5
]
,
PX4_D
[
3
]
,
PX4_VACT
,
PX4_DCLK
};
assign
sns4_clkn
=
PX4_D
[
0
]
;
// inout CNVSYNC/TDI
assign
sns4_clkp
=
PX4_D
[
1
]
;
// CNVCLK/TDO
`endif
`endif
...
...
@@ -1552,6 +1567,40 @@ simul_axi_hp_wr #(
.
clk_out
(
PX4_MCLK
)
// output
)
;
/* Instance template for module simul_lwir160x120_vospi */
wire
lwir1_miso
;
simul_lwir160x120_vospi
#(
.
DATA_FILE
(
"/data_ssd/nc393/elphel393/fpga-elphel/x393/input_data/pattern_160_120_14.dat"
)
,
.
WINDOW_WIDTH
(
160
)
,
.
WINDOW_HEIGHT
(
120
)
,
.
TELEMETRY
(
2
)
,
// 1),
.
FRAME_PERIOD
(
946969
)
,
.
FRAME_DELAY
(
100
)
,
.
MS_PERIOD
(
25
)
// 1us instead of 1 ms
)
simul_lwir160x120_vospi_i
(
.
mclk
(
x393_i
.
ps7_i
.
SAXIHP0ACLK
)
,
// PX1_MCLK), // input temporarily made faster
.
nrst
(
PX1_MRST
)
,
// input
.
sck
(
1'b0
)
,
// input
.
ncs
(
1'b0
)
,
// inout
.
miso
(
lwir1_miso
)
,
// output
.
telemetry_rev
(
16'h7654
)
,
// input[15:0]
.
telemetry_status
(
32'h137f1248
)
,
// input[31:0]
.
telemetry_srev
(
64'h0123456789abcdef
)
,
// input[63:0]
.
telemetry_temp_counts
(
16'd59000
)
,
// input[15:0]
.
telemetry_temp_kelvin
(
16'd29500
)
,
// input[15:0]
.
telemetry_temp_last_kelvin
(
16'd29300
)
,
// input[15:0]
.
telemetry_time_last_ms
(
32'h12345678
)
,
// input[31:0]
.
telemetry_agc_roi_top
(
16'd0
)
,
// input[15:0]
.
telemetry_agc_roi_left
(
16'd0
)
,
// input[15:0]
.
telemetry_agc_roi_bottom
(
16'd119
)
,
// input[15:0]
.
telemetry_agc_roi_right
(
16'd159
)
,
// input[15:0]
.
telemetry_agc_high
(
16'd19200
)
,
// input[15:0]
.
telemetry_agc_low
(
16'd200
)
,
// input[15:0]
.
telemetry_video_format
(
32'haaaa5555
)
// input[31:0]
)
;
simul_sensor12bits
#(
.
SENSOR_IMAGE_TYPE
(
SENSOR_IMAGE_TYPE0
)
,
.
lline
(
VIRTUAL_WIDTH
)
,
// SENSOR12BITS_LLINE),
...
...
@@ -1572,7 +1621,8 @@ simul_axi_hp_wr #(
.
tDDO1
(
SENSOR12BITS_TDDO1
)
,
.
trigdly
(
TRIG_LINES
)
,
// SENSOR12BITS_TRIGDLY),
.
ramp
(
0
)
,
//SENSOR12BITS_RAMP),
.
new_bayer
(
0
)
// was 1 SENSOR12BITS_NEW_BAYER)
.
new_bayer
(
0
)
,
// was 1 SENSOR12BITS_NEW_BAYER)
.
EXTRA_PERIOD
(
0
)
)
simul_sensor12bits_i
(
.
MCLK
(
PX1_MCLK
)
,
// input
.
MRST
(
PX1_MRST
)
,
// input
...
...
@@ -1611,7 +1661,9 @@ simul_axi_hp_wr #(
.
tDDO1
(
SENSOR12BITS_TDDO1
)
,
.
trigdly
(
TRIG_LINES
)
,
// SENSOR12BITS_TRIGDLY),
.
ramp
(
0
)
,
//SENSOR12BITS_RAMP),
.
new_bayer
(
0
)
//SENSOR12BITS_NEW_BAYER) was 1
.
new_bayer
(
0
)
,
//SENSOR12BITS_NEW_BAYER) was 1
.
EXTRA_PERIOD
(
50
)
)
simul_sensor12bits_2_i
(
.
MCLK
(
PX2_MCLK
)
,
// input
`ifdef
DISABLE_SENSOR_2
...
...
@@ -1653,7 +1705,8 @@ simul_axi_hp_wr #(
.
tDDO1
(
SENSOR12BITS_TDDO1
)
,
.
trigdly
(
TRIG_LINES
)
,
// SENSOR12BITS_TRIGDLY),
.
ramp
(
0
)
,
// SENSOR12BITS_RAMP),
.
new_bayer
(
0
)
// was 1SENSOR12BITS_NEW_BAYER)
.
new_bayer
(
0
)
,
// was 1SENSOR12BITS_NEW_BAYER)
.
EXTRA_PERIOD
(
100
)
)
simul_sensor12bits_3_i
(
.
MCLK
(
PX3_MCLK
)
,
// input
.
MRST
(
PX3_MRST
)
,
// input
...
...
@@ -1691,7 +1744,8 @@ simul_axi_hp_wr #(
.
tDDO1
(
SENSOR12BITS_TDDO1
)
,
.
trigdly
(
TRIG_LINES
)
,
// SENSOR12BITS_TRIGDLY),
.
ramp
(
0
)
,
// SENSOR12BITS_RAMP),
.
new_bayer
(
0
)
// was 1SENSOR12BITS_NEW_BAYER)
.
new_bayer
(
0
)
,
// was 1SENSOR12BITS_NEW_BAYER)
.
EXTRA_PERIOD
(
120
)
)
simul_sensor12bits_4_i
(
.
MCLK
(
PX4_MCLK
)
,
// input
.
MRST
(
PX4_MRST
)
,
// input
...
...
includes/x393_simulation_parameters.vh
View file @
d189269a
...
...
@@ -79,17 +79,43 @@
// parameter SENSOR_IMAGE_TYPE2 = "NORM11", // 4",
// parameter SENSOR_IMAGE_TYPE3 = "NORM12",
parameter SENSOR_IMAGE_TYPE0 = "TEST01-1044X36", // "NORM13",
parameter SENSOR_IMAGE_TYPE1 = "TEST01-1044X36", // "NORM13",
parameter SENSOR_IMAGE_TYPE2 = "TEST01-1044X36", // "NORM14", // 4",
parameter SENSOR_IMAGE_TYPE3 = "TEST01-1044X36", // "NORM15",
parameter SIMULATE_CMPRS_CMODE0 = CMPRS_CBIT_CMODE_JPEG18,
parameter SIMULATE_CMPRS_CMODE1 = CMPRS_CBIT_CMODE_JPEG18,
parameter SIMULATE_CMPRS_CMODE2 = CMPRS_CBIT_CMODE_JP4,
parameter SIMULATE_CMPRS_CMODE3 = CMPRS_CBIT_CMODE_JP4,
// parameter SENSOR_IMAGE_TYPE0 = "TEST01-1044X36", // "NORM13",
// parameter SENSOR_IMAGE_TYPE1 = "TEST01-1044X36", // "NORM13",
// parameter SENSOR_IMAGE_TYPE2 = "TEST01-1044X36", // "NORM14", // 4",
// parameter SENSOR_IMAGE_TYPE3 = "TEST01-1044X36", // "NORM15",
// parameter SENSOR_IMAGE_TYPE0 = "TEST01-260X36", // "NORM13",
// parameter SENSOR_IMAGE_TYPE1 = "TEST01-260X36", // "NORM13",
// parameter SENSOR_IMAGE_TYPE2 = "TEST01-260X36", // "NORM14", // 4",
// parameter SENSOR_IMAGE_TYPE3 = "TEST01-260X36", // "NORM15",
// parameter SENSOR_IMAGE_TYPE0 = "TEST01-260X68", // "NORM13",
// parameter SENSOR_IMAGE_TYPE1 = "TEST01-260X68", // "NORM13",
// parameter SENSOR_IMAGE_TYPE2 = "TEST01-260X68", // "NORM14", // 4",
// parameter SENSOR_IMAGE_TYPE3 = "TEST01-260X68", // "NORM15",
// parameter SENSOR_IMAGE_TYPE0 = "260X260A", // "NORM13",
// parameter SENSOR_IMAGE_TYPE1 = "260X260A", // "NORM13",
// parameter SENSOR_IMAGE_TYPE2 = "260X260A", // "NORM14", // 4",
// parameter SENSOR_IMAGE_TYPE3 = "260X260A", // "NORM15",
parameter SENSOR_IMAGE_TYPE0 = "256X256A", // "NORM13",
parameter SENSOR_IMAGE_TYPE1 = "256X256A", // "NORM13",
parameter SENSOR_IMAGE_TYPE2 = "256X256A", // "NORM14", // 4",
parameter SENSOR_IMAGE_TYPE3 = "256X256A", // "NORM15",
// parameter SENSOR_IMAGE_TYPE0 = "512X512A", // "NORM13",
// parameter SENSOR_IMAGE_TYPE1 = "512X512A", // "NORM13",
// parameter SENSOR_IMAGE_TYPE2 = "512X512A", // "NORM14", // 4",
// parameter SENSOR_IMAGE_TYPE3 = "512X512A", // "NORM15",
//
parameter SIMULATE_CMPRS_CMODE0 = CMPRS_CBIT_CMODE_JP4, // CMPRS_CBIT_CMODE_JPEG18,
parameter SIMULATE_CMPRS_CMODE1 = CMPRS_CBIT_CMODE_JP4, // CMPRS_CBIT_CMODE_JPEG18,
parameter SIMULATE_CMPRS_CMODE2 = CMPRS_CBIT_CMODE_JP4, // CMPRS_CBIT_CMODE_JPEG18, // CMPRS_CBIT_CMODE_JP4,
parameter SIMULATE_CMPRS_CMODE3 = CMPRS_CBIT_CMODE_JP4, // CMPRS_CBIT_CMODE_JPEG18, // CMPRS_CBIT_CMODE_JP4,
// parameter SIMULATE_CMPRS_CMODE2 = CMPRS_CBIT_CMODE_JPEG18,
// parameter SIMULATE_CMPRS_CMODE3 = CMPRS_CBIT_CMODE_JPEG18,
// CMPRS_CBIT_CMODE_JPEG18, //input [31:0] cmode; // [13:9] color mode:
...
...
@@ -134,8 +160,8 @@
parameter HISTOGRAM_START_PAGE = 20'h12345,
parameter FRAME_WIDTH_ROUND_BITS = 9, // multiple of 512 pixels (32 16-byte bursts) (11 - ful SDRAM page)
parameter WOI_WIDTH= 1040, // 64,
parameter WOI_HEIGHT= 32,
parameter WOI_WIDTH=
256, // 512, // 256, //
1040, // 64,
parameter WOI_HEIGHT=
256, // 512, // 256, // 64, //
32,
parameter QUADRANTS_PXD_HACT_VACT = 6'h01, // 2 bits each: data-0, hact - 1, vact - 2
// 90-degree shifts for data [1:0], hact [3:2] and vact [5:4]
...
...
py393/x393_sens_cmprs.py
View file @
d189269a
...
...
@@ -155,7 +155,7 @@ class X393SensCmprs(object):
x393Rtc
=
None
x393Membridge
=
None
def
__init__
(
self
,
debug_mode
=
1
,
dry_mode
=
True
,
saveFileName
=
None
):
def
__init__
(
self
,
debug_mode
=
1
,
dry_mode
=
True
,
saveFileName
=
None
,
nomargins
=
True
):
# False
):
# global BUFFER_ADDRESS, BUFFER_LEN
global
BUFFER_ADDRESS
,
BUFFER_LEN
,
COMMAND_ADDRESS
,
DATAIN_ADDRESS
,
DATAOUT_ADDRESS
global
BUFFER_ADDRESS_H2D
,
BUFFER_LEN_H2D
,
BUFFER_ADDRESS_D2H
,
BUFFER_LEN_D2H
,
BUFFER_ADDRESS_BIDIR
,
BUFFER_LEN_BIDIR
...
...
@@ -173,6 +173,13 @@ class X393SensCmprs(object):
SENSOR_DEFAULTS
[
x393_sensor
.
SENSOR_INTERFACE_HISPI
][
"height"
]
=
vrlg
.
WOI_HEIGHT
+
4
SENSOR_DEFAULTS
[
x393_sensor
.
SENSOR_INTERFACE_HISPI
][
"top"
]
=
0
SENSOR_DEFAULTS
[
x393_sensor
.
SENSOR_INTERFACE_HISPI
][
"left"
]
=
0
if
nomargins
:
SENSOR_DEFAULTS
[
x393_sensor
.
SENSOR_INTERFACE_PARALLEL
][
"width"
]
=
vrlg
.
WOI_WIDTH
+
0
# 4
SENSOR_DEFAULTS
[
x393_sensor
.
SENSOR_INTERFACE_PARALLEL
][
"height"
]
=
vrlg
.
WOI_HEIGHT
+
0
SENSOR_DEFAULTS
[
x393_sensor
.
SENSOR_INTERFACE_HISPI
][
"width"
]
=
vrlg
.
WOI_WIDTH
+
0
#4
SENSOR_DEFAULTS
[
x393_sensor
.
SENSOR_INTERFACE_HISPI
][
"height"
]
=
vrlg
.
WOI_HEIGHT
+
0
print
(
"Using simulation size sensor defaults "
,
SENSOR_DEFAULTS
)
except
:
...
...
@@ -628,12 +635,15 @@ class X393SensCmprs(object):
# moved before camsync to have a valid timestamo w/o special waiting
if
verbose
>
0
:
print
(
"===================== MEMORY_SENSOR =========================
"
)
print
(
"===================== MEMORY_SENSOR =========================
, mode=
%
d"
%
(
cmode
)
)
window_height_memory
=
window_height
if
cmode
==
vrlg
.
CMPRS_CBIT_CMODE_JP4
:
if
(
cmode
==
vrlg
.
CMPRS_CBIT_CMODE_JP4
)
or
(
cmode
==
15
):
# vrlg.CMPRS_CBIT_CMODE_RAW)
:
window_height_memory
&=
0xfff0
# do not need extra margins
num_burst_in_line
&=
0xfffe
# make even (assuming left=0)
print
(
"===================== Mode is JP4 or raw ========================="
)
else
:
print
(
"===================== Mode is neither JP4 nor raw ========================="
)
self
.
x393Sensor
.
setup_sensor_memory
(
num_sensor
=
num_sensor
,
# input [1:0] num_sensor;
...
...
py393/x393_tiff_verilog.py
100644 → 100755
View file @
d189269a
#!/usr/bin/env python
# encoding: utf-8
from
__future__
import
division
from
__future__
import
print_function
...
...
@@ -47,7 +49,7 @@ except:
try
:
outname
=
sys
.
argv
[
3
]
except
IndexError
:
outname
=
fname
.
replace
(
".tiff"
,
".
vh
"
)
outname
=
fname
.
replace
(
".tiff"
,
".
dat
"
)
tif
=
Image
.
open
(
fname
)
...
...
simulation_modules/simul_lwir160x120_telemetry.v
0 → 100644
View file @
d189269a
/*!
* <b>Module:</b> simul_lwir160x120_telemetry
* @file simul_lwir160x120_telemetry.v
* @date 2019-04-01
* @author Andrey Filippov
*
* @brief Combine telemetry data into vospi packet payload
*
* @copyright Copyright (c) 2019 Elphel, Inc.
*
* <b>License </b>
*
* simul_lwir160x120_telemetry.v is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* simul_lwir160x120_telemetry.v is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/> .
*
* Additional permission under GNU GPL version 3 section 7:
* If you modify this Program, or any covered work, by linking or combining it
* with independent modules provided by the FPGA vendor only (this permission
* does not extend to any 3-rd party modules, "soft cores" or macros) under
* different license terms solely for the purpose of generating binary "bitstream"
* files and/or simulating the code, the copyright holders of this Program give
* you the right to distribute the covered work without those independent modules
* as long as the source code for them is available from the FPGA vendor free of
* charge, and there is no dependence on any encrypted modules for simulating of
* the combined code. This permission applies to you if the distributed code
* contains all the components and scripts required to completely simulate it
* with at least one of the Free Software programs.
*/
`timescale
1
ns
/
1
ps
module
simul_lwir160x120_telemetry
(
input
clk
,
input
en
,
// write all telemetry, but average
input
en_avg
,
// write frame average (may be simultaneous)
// telemetry data
input
[
15
:
0
]
telemetry_rev
,
input
[
31
:
0
]
telemetry_time
,
input
[
31
:
0
]
telemetry_status
,
input
[
63
:
0
]
telemetry_srev
,
input
[
31
:
0
]
telemetry_frame
,
input
[
15
:
0
]
telemetry_mean
,
input
[
15
:
0
]
telemetry_temp_counts
,
input
[
15
:
0
]
telemetry_temp_kelvin
,
input
[
15
:
0
]
telemetry_temp_last_kelvin
,
input
[
31
:
0
]
telemetry_time_last_ms
,
input
[
15
:
0
]
telemetry_agc_roi_top
,
input
[
15
:
0
]
telemetry_agc_roi_left
,
input
[
15
:
0
]
telemetry_agc_roi_bottom
,
input
[
15
:
0
]
telemetry_agc_roi_right
,
input
[
15
:
0
]
telemetry_agc_high
,
input
[
15
:
0
]
telemetry_agc_low
,
input
[
31
:
0
]
telemetry_video_format
,
//???
output
reg
[
160
*
16
-
1
:
0
]
telemetry_a
,
output
reg
[
160
*
16
-
1
:
0
]
telemetry_b
)
;
always
@
(
posedge
clk
)
if
(
en
)
begin
telemetry_a
<=
{
telemetry_rev
[
15
:
0
]
,
// word 0
telemetry_time
[
31
:
0
]
,
// words 1.. 2
telemetry_status
[
31
:
0
]
,
// words 3.. 4
{
8
{
16'b0
}},
// words 5..12
telemetry_srev
[
63
:
0
]
,
// words 13..16
{
3
{
16'b0
}},
// words 17..19
telemetry_frame
[
31
:
0
]
,
// words 20..21
en_avg
?
telemetry_mean
[
15
:
0
]
:
telemetry_a
[(
159
-
22
)
*
16
+:
16
]
,
// words 22
telemetry_temp_counts
[
15
:
0
]
,
// words 23
telemetry_temp_kelvin
[
15
:
0
]
,
// words 24
{
4
{
16'b0
}},
// words 25..28
telemetry_temp_last_kelvin
[
15
:
0
]
,
// words 29
telemetry_time_last_ms
[
31
:
0
]
,
// words 30..31
{
2
{
16'b0
}},
// words 32..33
telemetry_agc_roi_top
[
15
:
0
]
,
// words 34
telemetry_agc_roi_left
[
15
:
0
]
,
// words 35
telemetry_agc_roi_bottom
[
15
:
0
]
,
// words 36
telemetry_agc_roi_right
[
15
:
0
]
,
// words 37
telemetry_agc_high
[
15
:
0
]
,
// words 38
telemetry_agc_low
[
15
:
0
]
,
// words 39
{
32
{
16'b0
}},
// words 40..71
telemetry_video_format
[
31
:
0
]
,
// words 72..73
{
86
{
16'b0
}}
// words 74..159
};
telemetry_b
<=
0
;
end
else
if
(
en_avg
)
begin
telemetry_a
[(
159
-
22
)
*
16
+:
16
]
<=
telemetry_mean
[
15
:
0
]
;
end
endmodule
simulation_modules/simul_lwir160x120_vospi.v
0 → 100644
View file @
d189269a
/*!
* <b>Module:</b> simul_lwir160x120_vospi
* @file simul_lwir160x120_vospi.v
* @date 2019-03-30
* @author Andrey FIlippov
*
* @brief simulates FLIR Lepton 3.0 output over VoSPI
*
* @copyright Copyright (c) 2019 Elphel, Inc .
*
* <b>License </b>
*
* simul_lwir160x120_vospi.v is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* simul_lwir160x120_vospi.v is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/> .
*
* Additional permission under GNU GPL version 3 section 7:
* If you modify this Program, or any covered work, by linking or combining it
* with independent modules provided by the FPGA vendor only (this permission
* does not extend to any 3-rd party modules, "soft cores" or macros) under
* different license terms solely for the purpose of generating binary "bitstream"
* files and/or simulating the code, the copyright holders of this Program give
* you the right to distribute the covered work without those independent modules
* as long as the source code for them is available from the FPGA vendor free of
* charge, and there is no dependence on any encrypted modules for simulating of
* the combined code. This permission applies to you if the distributed code
* contains all the components and scripts required to completely simulate it
* with at least one of the Free Software programs.
*/
`timescale
1
ns
/
1
ps
module
simul_lwir160x120_vospi
#
(
parameter
DATA_FILE
=
"/data_ssd/nc393/elphel393/fpga-elphel/x393/input_data/pattern_160_120_14.dat"
,
//
parameter
WINDOW_WIDTH
=
160
,
//
parameter
WINDOW_HEIGHT
=
120
,
//
parameter
TELEMETRY
=
1
,
// 0 - disabled, 1 - as header, 2 - as footer
parameter
FRAME_PERIOD
=
946969
,
// 26.4 fps @25 MHz
parameter
FRAME_DELAY
=
100
,
// mclk period to start first frame 1
parameter
MS_PERIOD
=
25
// ahould actually be 25000
)(
input
mclk
,
input
nrst
,
input
sck
,
input
ncs
,
output
miso
,
// telemetry data
input
[
15
:
0
]
telemetry_rev
,
input
[
31
:
0
]
telemetry_status
,
input
[
63
:
0
]
telemetry_srev
,
input
[
15
:
0
]
telemetry_temp_counts
,
input
[
15
:
0
]
telemetry_temp_kelvin
,
input
[
15
:
0
]
telemetry_temp_last_kelvin
,
input
[
31
:
0
]
telemetry_time_last_ms
,
input
[
15
:
0
]
telemetry_agc_roi_top
,
input
[
15
:
0
]
telemetry_agc_roi_left
,
input
[
15
:
0
]
telemetry_agc_roi_bottom
,
input
[
15
:
0
]
telemetry_agc_roi_right
,
input
[
15
:
0
]
telemetry_agc_high
,
input
[
15
:
0
]
telemetry_agc_low
,
input
[
31
:
0
]
telemetry_video_format
//???
)
;
localparam
OUT_BITS
=
16
;
localparam
PACKET_PIXELS
=
80
;
localparam
PACKET_HEADER
=
2
;
localparam
PACKET_WORDS
=
PACKET_PIXELS
+
PACKET_HEADER
;
localparam
SEGMENT_PACKETS
=
60
;
// w/o telemetry
localparam
SEGMENT_PACKETS_TELEMETRY
=
SEGMENT_PACKETS
+
((
TELEMETRY
>
0
)
?
1
:
0
)
;
localparam
FRAME_SEGMENTS
=
4
;
localparam
FRAME_PACKETS
=
SEGMENT_PACKETS
*
FRAME_SEGMENTS
;
localparam
FRAME_PACKETS_FULL
=
FRAME_PACKETS
+
((
TELEMETRY
==
0
)
?
0
:
4
)
;
localparam
FRAMES
=
2
;
// 2 frames in a ping-pong buffer
localparam
FRAME_WORDS
=
FRAME_SEGMENTS
*
(
SEGMENT_PACKETS
+
((
TELEMETRY
>
0
)
?
1
:
0
))
*
PACKET_WORDS
;
wire
mrst
=
!
nrst
;
reg
[
OUT_BITS
-
1
:
0
]
sensor_data
[
0
:
WINDOW_WIDTH
*
WINDOW_HEIGHT
-
1
]
;
// SuppressThisWarning VEditor - Will be assigned by $readmem
reg
[
OUT_BITS
-
1
:
0
]
packed_data
[
0
:
FRAMES
*
FRAME_WORDS
-
1
]
;
wire
[
160
*
16
-
1
:
0
]
telemetry_a
;
wire
[
160
*
16
-
1
:
0
]
telemetry_b
;
// registers for copiing data to packet array
//'0xe7319'
reg
[
19
:
0
]
frame_dly_cntr
;
// delay till next frame start
reg
frame_start
;
reg
copy_page
;
reg
copy_run
;
wire
copy_done
;
// reg [2:0] copy_segment; // 4 - copy average and telemetry
reg
[
7
:
0
]
copy_packet
;
// 240 image packets, then telemetry
reg
[
6
:
0
]
copy_word
;
// word number to copy in a packet (0..82), last one copies CRC to word 1
reg
copy_crc
;
wire
[
7
:
0
]
copy_packet_full
;
wire
[
7
:
0
]
copy_telemetry_packet
;
// only 2 LSB
wire
[
7
:
0
]
copy_packet_segment
;
wire
[
11
:
0
]
copy_packet_indx
;
// high bits are always 0
wire
[
7
:
0
]
copy_packet_ttt
;
reg
[
15
:
0
]
copy_pxd
;
reg
[
30
:
0
]
frame_sum
;
wire
[
31
:
0
]
frame_average32
;
wire
[
15
:
0
]
frame_average
;
reg
[
15
:
0
]
copy_telemetry_d
;
reg
[
15
:
0
]
copy_d
;
wire
copy_pix_or_tel
;
wire
copy_pix_only
;
wire
copy_tel_only
;
// reg copy_pixels_r;
reg
copy_pixels_pix
;
// reg copy_pixels_tel;
wire
[
15
:
0
]
copy_din
;
wire
[
6
:
0
]
copy_wa
;
// address in a packet where to write data
wire
[
15
:
0
]
copy_wa_full
;
wire
[
15
:
0
]
crc_in
;
wire
[
15
:
0
]
crc_out
;
reg
en_avg
;
// write frame average value to telemetry
reg
[
31
:
0
]
frame_num
;
reg
[
31
:
0
]
time_ms
;
reg
[
31
:
0
]
ms_cntr
;
// wire [ 2:0] copy_segment;
//946,969 '0xe7319'
// assign copy_done = copy_run && copy_crc &&((TELEMETRY==0) ? (copy_packet== (FRAME_PACKETS -1)) : (FRAME_PACKETS + 3));
assign
copy_done
=
copy_run
&&
copy_crc
&&
(
copy_packet
==
(
FRAME_PACKETS_FULL
-
1
))
;
assign
copy_packet_full
=
(
copy_packet
<
FRAME_PACKETS
)
?
(
copy_packet
+
((
TELEMETRY
==
1
)
?
4
:
0
))
:
(
copy_packet
-
((
TELEMETRY
==
1
)
?
FRAME_PACKETS
:
0
))
;
assign
copy_telemetry_packet
=
copy_packet
-
FRAME_PACKETS
;
assign
copy_pix_or_tel
=
copy_run
&&
(
copy_word
<
PACKET_PIXELS
)
;
// && (copy_packet < FRAME_PACKETS);
assign
copy_pix_only
=
copy_pix_or_tel
&&
(
copy_packet
<
FRAME_PACKETS
)
;
assign
copy_tel_only
=
copy_pix_or_tel
&&
(
copy_packet
>=
FRAME_PACKETS
)
;
assign
copy_packet_segment
=
copy_packet_full
/
SEGMENT_PACKETS_TELEMETRY
;
assign
copy_packet_indx
=
copy_packet_full
%
SEGMENT_PACKETS_TELEMETRY
;
assign
copy_packet_ttt
=
(
copy_packet_indx
==
20
)
?
(
copy_packet_segment
+
1
)
:
8'b0
;
assign
crc_in
=
(
copy_word
==
0
)
?
{
4'b0
,
copy_packet_indx
[
11
:
0
]
}:
(
(
copy_word
==
1
)
?
16'b0
:
copy_d
[
15
:
0
])
;
assign
copy_din
=
(
copy_word
==
0
)
?
{
1'b0
,
copy_packet_ttt
[
2
:
0
]
,
copy_packet_indx
[
11
:
0
]
}:
(
(
copy_word
==
1
)
?
16'bxx
:
(
copy_crc
?
(
crc_out
)
:
copy_d
[
15
:
0
]))
;
assign
copy_wa
=
copy_crc
?
7'h01
:
copy_word
;
assign
copy_wa_full
=
copy_wa
+
(
PACKET_WORDS
*
copy_packet_full
)
+
(
FRAME_WORDS
*
copy_page
)
;
assign
frame_average32
=
(
frame_sum
/
(
WINDOW_WIDTH
*
WINDOW_HEIGHT
))
;
assign
frame_average
=
frame_average32
[
15
:
0
]
;
`ifndef
ROOTPATH
`include
"IVERILOG_INCLUDE.v"
// SuppressThisWarning VEditor - maybe not used
`ifndef
ROOTPATH
`define
ROOTPATH
"."
`endif
`endif
initial
begin
// $readmemh({`ROOTPATH,"/input_data/sensor_16.dat"},sensor_data);
$
readmemh
(
DATA_FILE
,
sensor_data
,
0
)
;
end
always
@
(
posedge
mclk
)
begin
if
(
mrst
||
(
ms_cntr
==
0
))
ms_cntr
<=
MS_PERIOD
-
1
;
else
ms_cntr
<=
ms_cntr
-
1
;
if
(
mrst
)
time_ms
<=
0
;
else
if
((
ms_cntr
==
0
))
time_ms
<=
time_ms
+
1
;
//restarting frames
if
(
mrst
)
frame_dly_cntr
<=
FRAME_DELAY
;
else
if
(
frame_start
)
frame_dly_cntr
<=
FRAME_PERIOD
;
else
frame_dly_cntr
<=
frame_dly_cntr
-
1
;
frame_start
<=
!
mrst
&&
(
frame_dly_cntr
==
0
)
;
if
(
mrst
)
frame_num
<=
0
;
else
if
(
frame_start
)
frame_num
<=
frame_num
+
1
;
if
(
mrst
)
copy_page
<=
0
;
else
if
(
frame_start
)
copy_page
<=
!
copy_page
;
if
(
mrst
||
copy_done
)
copy_run
<=
0
;
else
if
(
frame_start
)
copy_run
<=
1
;
copy_crc
<=
copy_word
==
(
PACKET_WORDS
-
1
)
;
if
(
!
copy_run
||
copy_crc
)
copy_word
<=
0
;
else
copy_word
<=
copy_word
+
1
;
if
(
!
copy_run
)
copy_packet
<=
0
;
else
if
(
copy_crc
)
copy_packet
<=
copy_packet
+
1
;
if
(
copy_pix_only
)
copy_pxd
<=
sensor_data
[
copy_packet
*
PACKET_PIXELS
+
copy_word
]
;
else
copy_pxd
<=
'bx
;
if
(
copy_tel_only
)
copy_telemetry_d
<=
copy_telemetry_packet
[
1
]
?
telemetry_b
[(
PACKET_PIXELS
*
(
2
-
copy_telemetry_packet
[
0
])
-
copy_word
-
1
)
*
16
+:
16
]
:
telemetry_a
[(
PACKET_PIXELS
*
(
2
-
copy_telemetry_packet
[
0
])
-
copy_word
-
1
)
*
16
+:
16
]
;
else
copy_telemetry_d
<=
'bx
;
copy_d
<=
(
copy_packet
<
FRAME_PACKETS
)
?
copy_pxd
:
copy_telemetry_d
;
// copy_pixels_r <= copy_pix_or_tel;
copy_pixels_pix
<=
copy_pix_or_tel
&&
(
copy_packet
<
FRAME_PACKETS
)
;
// copy_pixels_tel <= copy_pix_or_tel && (copy_packet >= FRAME_PACKETS);
if
(
frame_start
)
frame_sum
<=
0
;
else
if
(
copy_pixels_pix
)
frame_sum
<=
frame_sum
+
copy_pxd
;
if
(
copy_run
)
packed_data
[
copy_wa_full
]
<=
copy_din
;
// copy_d;
en_avg
<=
copy_crc
&&
(
copy_packet
==
(
FRAME_PACKETS
-
1
))
;
// 1 cycle after last pixel written
end
/* Instance template for module crc16_x16x12x5x0 */
crc16_x16x12x5x0
crc16_x16x12x5x0_i
(
.
clk
(
mclk
)
,
// input
.
srst
(
!
copy_run
||
copy_crc
)
,
// input
.
en
(
1'b1
)
,
// input
.
din
(
crc_in
)
,
// input[15:0]
.
dout
(
crc_out
)
// output[15:0]
)
;
/* Instance template for module simul_lwir160x120_telemetry */
simul_lwir160x120_telemetry
simul_lwir160x120_telemetry_i
(
.
clk
(
mclk
)
,
// input
.
en
(
frame_start
)
,
// input
.
en_avg
(
en_avg
)
,
// input
.
telemetry_rev
(
telemetry_rev
)
,
// input[15:0]
.
telemetry_time
(
time_ms
)
,
// input[31:0]
.
telemetry_status
(
telemetry_status
)
,
// input[31:0]
.
telemetry_srev
(
telemetry_srev
)
,
// input[63:0]
.
telemetry_frame
(
frame_num
)
,
// input[31:0]
.
telemetry_mean
(
frame_average
)
,
// input[15:0]
.
telemetry_temp_counts
(
telemetry_temp_counts
)
,
// input[15:0]
.
telemetry_temp_kelvin
(
telemetry_temp_kelvin
)
,
// input[15:0]
.
telemetry_temp_last_kelvin
(
telemetry_temp_last_kelvin
)
,
// input[15:0]
.
telemetry_time_last_ms
(
telemetry_time_last_ms
)
,
// input[31:0]
.
telemetry_agc_roi_top
(
telemetry_agc_roi_top
)
,
// input[15:0]
.
telemetry_agc_roi_left
(
telemetry_agc_roi_left
)
,
// input[15:0]
.
telemetry_agc_roi_bottom
(
telemetry_agc_roi_bottom
)
,
// input[15:0]
.
telemetry_agc_roi_right
(
telemetry_agc_roi_right
)
,
// input[15:0]
.
telemetry_agc_high
(
telemetry_agc_high
)
,
// input[15:0]
.
telemetry_agc_low
(
telemetry_agc_low
)
,
// input[15:0]
.
telemetry_video_format
(
telemetry_video_format
)
,
// input[31:0]
.
telemetry_a
(
telemetry_a
)
,
// output[2559:0] reg
.
telemetry_b
(
telemetry_b
)
// output[2559:0] reg
)
;
endmodule
/*
// Most significant bit first (big-endian)
// x^16+x^12+x^5+1 = (1) 0001 0000 0010 0001 = 0x1021
function crc(byte array string[1..len], int len) {
rem := 0
// A popular variant complements rem here
for i from 1 to len {
rem := rem xor (string[i] leftShift (n-8)) // n = 16 in this example
for j from 1 to 8 { // Assuming 8 bits per byte
if rem and 0x8000 { // if leftmost (most significant) bit is set
rem := (rem leftShift 1) xor 0x1021
} else {
rem := rem leftShift 1
}
rem := rem and 0xffff // Trim remainder to 16 bits
}
}
// A popular variant complements rem here
return rem
}
*/
simulation_modules/simul_sensor12bits.v
View file @
d189269a
...
...
@@ -55,7 +55,8 @@ module simul_sensor12bits # (
parameter
tDDO1
=
5
,
//
parameter
trigdly
=
8
,
// delay between trigger input and start of output (VACT) in lines
parameter
ramp
=
1
,
// 1 - ramp, 0 - random (now - sensor.dat)
parameter
new_bayer
=
0
// 0 - old (16x16), 1 - new (18x18)
parameter
new_bayer
=
0
,
// 0 - old (16x16), 1 - new (18x18)
parameter
EXTRA_PERIOD
=
0
// add these clockc before VACT
)
(
input
MCLK
,
// Master clock
input
MRST
,
// Master Reset - active low
...
...
@@ -83,7 +84,7 @@ module simul_sensor12bits # (
localparam
s_lastline
=
7
;
localparam
s_frame_done
=
8
;
localparam
t_preVACT
=
lline
*
trigdly
;
localparam
t_preVACT
=
lline
*
trigdly
+
EXTRA_PERIOD
;
localparam
t_firstline
=
nrowb
*
lline
+
1
;
// 1664
localparam
t_BPF
=
nbpf
;
// 16
localparam
t_preHACT
=
ngp1
;
// 8
...
...
@@ -92,7 +93,9 @@ module simul_sensor12bits # (
localparam
t_lastline
=
nrowa
*
lline
+
1
;
// 1664
//reg [15:0] sensor_data[0:4095]; // up to 64 x 64 pixels // SuppressThisWarning VEditor - Will be assigned by $readmem
reg
[
15
:
0
]
sensor_data
[
0
:
65535
]
;
// up to 1024 x 64 pixels // SuppressThisWarning VEditor - Will be assigned by $readmem
///reg [15:0] sensor_data[0:65535]; // up to 1024 x 64 pixels // SuppressThisWarning VEditor - Will be assigned by $readmem
reg
[
15
:
0
]
sensor_data
[
0
:
nrows
*
ncols
-
1
]
;
// up to 1024 x 64 pixels // SuppressThisWarning VEditor - Will be assigned by $readmem
// $readmemh("sensor.dat",sensor_data);
...
...
@@ -192,6 +195,11 @@ initial begin
else
if
(
SENSOR_IMAGE_TYPE
==
"NORM15"
)
$
readmemh
(
{
`ROOTPATH
,
"/input_data/sensor_15.dat"
},
sensor_data
)
;
else
if
(
SENSOR_IMAGE_TYPE
==
"NORM16"
)
$
readmemh
(
{
`ROOTPATH
,
"/input_data/sensor_16.dat"
},
sensor_data
)
;
else
if
(
SENSOR_IMAGE_TYPE
==
"TEST01-1044X36"
)
$
readmemh
(
{
`ROOTPATH
,
"/input_data/test01-1044x36.dat"
},
sensor_data
)
;
else
if
(
SENSOR_IMAGE_TYPE
==
"TEST01-260X36"
)
$
readmemh
(
{
`ROOTPATH
,
"/input_data/marching1_12b_260x36.dat"
},
sensor_data
)
;
else
if
(
SENSOR_IMAGE_TYPE
==
"TEST01-260X68"
)
$
readmemh
(
{
`ROOTPATH
,
"/input_data/marching1_12b_260x68.dat"
},
sensor_data
)
;
else
if
(
SENSOR_IMAGE_TYPE
==
"260X260A"
)
$
readmemh
(
{
`ROOTPATH
,
"/input_data/img260x260x12b.dat"
},
sensor_data
)
;
else
if
(
SENSOR_IMAGE_TYPE
==
"256X256A"
)
$
readmemh
(
{
`ROOTPATH
,
"/input_data/img256x256-12b.dat"
},
sensor_data
)
;
else
if
(
SENSOR_IMAGE_TYPE
==
"512X512A"
)
$
readmemh
(
{
`ROOTPATH
,
"/input_data/img516x516-12b.dat"
},
sensor_data
)
;
else
begin
$
display
(
"WARNING: Unrecognized sensor image :'%s', using default 'NORM': input_data/sensor.dat"
,
SENSOR_IMAGE_TYPE
)
;
$
readmemh
(
{
`ROOTPATH
,
"/input_data/sensor.dat"
},
sensor_data
)
;
...
...
simulation_modules/vospi.v
0 → 100644
View file @
d189269a
/*!
* <b>Module:</b> vospi
* @file vospi.v
* @date 2019-03-31
* @author Andrey Filippov
*
* @brief single packet ;processing with a ping-pong buffer
*
* @copyright Copyright (c) 2019 Elphel, Inc.
*
* <b>License </b>
*
* vospi.v is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* vospi.v is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/> .
*
* Additional permission under GNU GPL version 3 section 7:
* If you modify this Program, or any covered work, by linking or combining it
* with independent modules provided by the FPGA vendor only (this permission
* does not extend to any 3-rd party modules, "soft cores" or macros) under
* different license terms solely for the purpose of generating binary "bitstream"
* files and/or simulating the code, the copyright holders of this Program give
* you the right to distribute the covered work without those independent modules
* as long as the source code for them is available from the FPGA vendor free of
* charge, and there is no dependence on any encrypted modules for simulating of
* the combined code. This permission applies to you if the distributed code
* contains all the components and scripts required to completely simulate it
* with at least one of the Free Software programs.
*/
`timescale
1
ns
/
1
ps
module
vospi
(
input
clk
,
input
srst
,
input
[
15
:
0
]
data_in
,
output
packet_rdy
,
// @clk
input
sck
,
// SPI clk
input
ncs
,
// SPI active-low CS
output
miso
// SPI data out
)
;
endmodule
system_defines.vh
View file @
d189269a
...
...
@@ -64,7 +64,7 @@
`define PRELOAD_BRAMS
`define DISPLAY_COMPRESSED_DATA
// if HISPI is not defined, parallel sensor interface is used for all channels
//
`define HISPI /*************** CHANGE here and x393_hispi/x393_parallel in bitstream tool settings ****************/
`define HISPI /*************** CHANGE here and x393_hispi/x393_parallel in bitstream tool settings ****************/
`define MON_HISPI // Measure HISPI timing
// `define USE_OLD_XDCT393
// `define USE_PCLK2X
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment