From 5bb92aed6133773474129ef5a7eef80eec694863 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Fri, 29 Sep 2023 14:11:13 +0200 Subject: [PATCH] FPGA: Modify HLS for jf_conversion, so it is running after HBM buffer --- fpga/hls/hls_jfjoch.h | 6 +- fpga/hls/jf_conversion.cpp | 177 +++++++++++++++----------------- fpga/scripts/jfjoch.tcl | 77 ++++++-------- receiver/HLSSimulatedDevice.cpp | 45 ++++---- 4 files changed, 140 insertions(+), 165 deletions(-) diff --git a/fpga/hls/hls_jfjoch.h b/fpga/hls/hls_jfjoch.h index d26ddad1..3c7331b6 100644 --- a/fpga/hls/hls_jfjoch.h +++ b/fpga/hls/hls_jfjoch.h @@ -123,15 +123,15 @@ void frame_generator(STREAM_512 &data_out, ap_uint<32> debug); void jf_conversion(STREAM_512 &data_in, STREAM_512 &data_out, - hls::stream &addr_in, - hls::stream &addr_out, + hls::stream &s_axis_completion, + hls::stream &m_axis_completion, hls::burst_maxi d_hbm_p0, hls::burst_maxi d_hbm_p1, hls::burst_maxi d_hbm_p2, hls::burst_maxi d_hbm_p3, hls::burst_maxi d_hbm_p4, hls::burst_maxi d_hbm_p5, hls::burst_maxi d_hbm_p6, hls::burst_maxi d_hbm_p7, hls::burst_maxi d_hbm_p8, hls::burst_maxi d_hbm_p9, hls::burst_maxi d_hbm_p10, hls::burst_maxi d_hbm_p11, - ap_uint<32> hbm_size_bytes); + ap_uint<32> hbm_size_bytes) ; void host_writer(STREAM_512 &data_in, hls::stream> &integration_in, diff --git a/fpga/hls/jf_conversion.cpp b/fpga/hls/jf_conversion.cpp index 586b82b3..2559699c 100644 --- a/fpga/hls/jf_conversion.cpp +++ b/fpga/hls/jf_conversion.cpp @@ -90,8 +90,8 @@ ap_uint<512> convert(ap_uint<512> data_in, } void jf_conversion(STREAM_512 &data_in, STREAM_512 &data_out, - hls::stream &addr_in, - hls::stream &addr_out, + hls::stream &s_axis_completion, + hls::stream &m_axis_completion, hls::burst_maxi d_hbm_p0, hls::burst_maxi d_hbm_p1, hls::burst_maxi d_hbm_p2, hls::burst_maxi d_hbm_p3, hls::burst_maxi d_hbm_p4, hls::burst_maxi d_hbm_p5, @@ -103,10 +103,10 @@ void jf_conversion(STREAM_512 &data_in, STREAM_512 &data_out, #pragma HLS INTERFACE register both axis port=data_in #pragma HLS INTERFACE register both axis port=data_out -#pragma HLS INTERFACE register both axis port=addr_in -#pragma HLS INTERFACE register both axis port=addr_out +#pragma HLS INTERFACE register both axis port=s_axis_completion +#pragma HLS INTERFACE register both axis port=m_axis_completion #pragma HLS INTERFACE register ap_none port=hbm_size_bytes - + #pragma HLS INTERFACE m_axi port=d_hbm_p0 bundle=d_hbm_p0 depth=512 offset=off \ max_read_burst_length=16 max_write_burst_length=2 latency=120 num_write_outstanding=2 num_read_outstanding=9 #pragma HLS INTERFACE m_axi port=d_hbm_p1 bundle=d_hbm_p1 depth=512 offset=off \ @@ -134,118 +134,109 @@ void jf_conversion(STREAM_512 &data_in, STREAM_512 &data_out, packet_512_t packet_in; - axis_addr addr; - addr_in >> addr; - addr_out << addr; - data_in >> packet_in; + data_out << packet_in; + ap_uint<64> mode = ACT_REG_MODE(packet_in.data); ap_uint<1> conversion = (mode & MODE_CONV) ? 1 : 0; ap_uint<5> modules = ACT_REG_NMODULES(packet_in.data); ap_uint<32> in_one_over_energy = ACT_REG_ONE_OVER_ENERGY(packet_in.data); - ap_uint<5> storage_cells = ACT_REG_NSTORAGE_CELLS(packet_in.data); - - ap_uint<32> offset_hbm_0 = 0 * hbm_size_bytes / 32; - ap_uint<32> offset_hbm_1 = 1 * hbm_size_bytes / 32; - ap_uint<32> offset_hbm_2 = 2 * hbm_size_bytes / 32; - ap_uint<32> offset_hbm_3 = 3 * hbm_size_bytes / 32; - ap_uint<32> offset_hbm_4 = 4 * hbm_size_bytes / 32; - ap_uint<32> offset_hbm_5 = 5 * hbm_size_bytes / 32; - ap_uint<32> offset_hbm_6 = 6 * hbm_size_bytes / 32; - ap_uint<32> offset_hbm_7 = 7 * hbm_size_bytes / 32; - ap_uint<32> offset_hbm_8 = 8 * hbm_size_bytes / 32; - ap_uint<32> offset_hbm_9 = 9 * hbm_size_bytes / 32; - ap_uint<32> offset_hbm_10 = 10 * hbm_size_bytes / 32; - ap_uint<32> offset_hbm_11 = 11 * hbm_size_bytes / 32; + ap_uint<5> storage_cells = ACT_REG_NSTORAGE_CELLS(packet_in.data); + + ap_uint<32> offset_hbm_0 = 0 * hbm_size_bytes / 32; + ap_uint<32> offset_hbm_1 = 1 * hbm_size_bytes / 32; + ap_uint<32> offset_hbm_2 = 2 * hbm_size_bytes / 32; + ap_uint<32> offset_hbm_3 = 3 * hbm_size_bytes / 32; + ap_uint<32> offset_hbm_4 = 4 * hbm_size_bytes / 32; + ap_uint<32> offset_hbm_5 = 5 * hbm_size_bytes / 32; + ap_uint<32> offset_hbm_6 = 6 * hbm_size_bytes / 32; + ap_uint<32> offset_hbm_7 = 7 * hbm_size_bytes / 32; + ap_uint<32> offset_hbm_8 = 8 * hbm_size_bytes / 32; + ap_uint<32> offset_hbm_9 = 9 * hbm_size_bytes / 32; + ap_uint<32> offset_hbm_10 = 10 * hbm_size_bytes / 32; + ap_uint<32> offset_hbm_11 = 11 * hbm_size_bytes / 32; one_over_energy_t one_over_energy; for (int i = 0; i < 32; i++) one_over_energy[i] = in_one_over_energy[i]; - data_out << packet_in; - if (conversion) { - ap_uint<7> counter = 0; - addr_in >> addr; - pixel_conversion: - while (!addr.last) { + axis_completion cmpl; + s_axis_completion >> cmpl; + convert_images: + while (!cmpl.last) { + m_axis_completion << cmpl; + for (ap_uint<15> i = 0; i < RAW_MODULE_SIZE * sizeof(uint16_t) / 64; i++) { #pragma HLS PIPELINE II=1 - //ap_uint<17> offset = packet_in.user(16,0); - if (counter % 16 == 0) { - ap_uint<19> gain_offset = (addr.module, addr.eth_packet, counter); - ap_uint<12> pedestal_location = addr.module; + if (i % 16 == 0) { + ap_uint<19> gain_offset = (cmpl.module, i(13,0)); + ap_uint<12> pedestal_location = cmpl.module; - if (storage_cells > 1) { - ap_uint<4> storage_cell_id = (addr.frame_number - 1) % storage_cells; - pedestal_location += modules * storage_cell_id; + if (storage_cells > 1) { + ap_uint<4> storage_cell_id = (cmpl.frame_number - 1) % storage_cells; + pedestal_location += modules * storage_cell_id; + } + + ap_uint<26> pedestal_offset = (pedestal_location, i(13,0)); + + d_hbm_p0.read_request(offset_hbm_0 + gain_offset, 16); + d_hbm_p1.read_request(offset_hbm_1 + gain_offset, 16); + d_hbm_p2.read_request(offset_hbm_2 + gain_offset, 16); + d_hbm_p3.read_request(offset_hbm_3 + gain_offset, 16); + d_hbm_p4.read_request(offset_hbm_4 + gain_offset, 16); + d_hbm_p5.read_request(offset_hbm_5 + gain_offset, 16); + d_hbm_p6.read_request(offset_hbm_6 + pedestal_offset, 16); + d_hbm_p7.read_request(offset_hbm_7 + pedestal_offset, 16); + d_hbm_p8.read_request(offset_hbm_8 + pedestal_offset, 16); + d_hbm_p9.read_request(offset_hbm_9 + pedestal_offset, 16); + d_hbm_p10.read_request(offset_hbm_10 + pedestal_offset, 16); + d_hbm_p11.read_request(offset_hbm_11 + pedestal_offset, 16); } + ap_uint<256> packed_gainG0_1 = d_hbm_p0.read(); + ap_uint<256> packed_gainG0_2 = d_hbm_p1.read(); + ap_uint<256> packed_gainG1_1 = d_hbm_p2.read(); + ap_uint<256> packed_gainG1_2 = d_hbm_p3.read(); + ap_uint<256> packed_gainG2_1 = d_hbm_p4.read(); + ap_uint<256> packed_gainG2_2 = d_hbm_p5.read(); + ap_uint<256> packed_pedeG0_1 = d_hbm_p6.read(); + ap_uint<256> packed_pedeG0_2 = d_hbm_p7.read(); + ap_uint<256> packed_pedeG1_1 = d_hbm_p8.read(); + ap_uint<256> packed_pedeG1_2 = d_hbm_p9.read(); + ap_uint<256> packed_pedeG2_1 = d_hbm_p10.read(); + ap_uint<256> packed_pedeG2_2 = d_hbm_p11.read(); - ap_uint<26> pedestal_offset = (pedestal_location, addr.eth_packet, counter); + data_in >> packet_in; + packet_in.data = convert(packet_in.data, + packed_gainG0_1, packed_gainG0_2, + packed_gainG1_1, packed_gainG1_2, + packed_gainG2_1, packed_gainG2_2, + packed_pedeG0_1, packed_pedeG0_2, + packed_pedeG1_1, packed_pedeG1_2, + packed_pedeG2_1, packed_pedeG2_2, + packet_in.id[0], + one_over_energy); + data_out << packet_in; - d_hbm_p0.read_request(offset_hbm_0 + gain_offset, 16); - d_hbm_p1.read_request(offset_hbm_1 + gain_offset, 16); - d_hbm_p2.read_request(offset_hbm_2 + gain_offset, 16); - d_hbm_p3.read_request(offset_hbm_3 + gain_offset, 16); - d_hbm_p4.read_request(offset_hbm_4 + gain_offset, 16); - d_hbm_p5.read_request(offset_hbm_5 + gain_offset, 16); - d_hbm_p6.read_request(offset_hbm_6 + pedestal_offset, 16); - d_hbm_p7.read_request(offset_hbm_7 + pedestal_offset, 16); - d_hbm_p8.read_request(offset_hbm_8 + pedestal_offset, 16); - d_hbm_p9.read_request(offset_hbm_9 + pedestal_offset, 16); - d_hbm_p10.read_request(offset_hbm_10 + pedestal_offset, 16); - d_hbm_p11.read_request(offset_hbm_11 + pedestal_offset, 16); } - ap_uint<256> packed_gainG0_1 = d_hbm_p0.read(); - ap_uint<256> packed_gainG0_2 = d_hbm_p1.read(); - ap_uint<256> packed_gainG1_1 = d_hbm_p2.read(); - ap_uint<256> packed_gainG1_2 = d_hbm_p3.read(); - ap_uint<256> packed_gainG2_1 = d_hbm_p4.read(); - ap_uint<256> packed_gainG2_2 = d_hbm_p5.read(); - ap_uint<256> packed_pedeG0_1 = d_hbm_p6.read(); - ap_uint<256> packed_pedeG0_2 = d_hbm_p7.read(); - ap_uint<256> packed_pedeG1_1 = d_hbm_p8.read(); - ap_uint<256> packed_pedeG1_2 = d_hbm_p9.read(); - ap_uint<256> packed_pedeG2_1 = d_hbm_p10.read(); - ap_uint<256> packed_pedeG2_2 = d_hbm_p11.read(); - - data_in >> packet_in; - packet_in.data = convert(packet_in.data, - packed_gainG0_1, packed_gainG0_2, - packed_gainG1_1, packed_gainG1_2, - packed_gainG2_1, packed_gainG2_2, - packed_pedeG0_1, packed_pedeG0_2, - packed_pedeG1_1, packed_pedeG1_2, - packed_pedeG2_1, packed_pedeG2_2, - packet_in.id[0], - one_over_energy); - data_out << packet_in; - - if (counter == 127) { - addr_out << addr; - addr_in >> addr; - } - counter++; + s_axis_completion >> cmpl; } + m_axis_completion << cmpl; } else { - addr_in >> addr; - forward_packets: - while (!addr.last) { + axis_completion cmpl; + s_axis_completion >> cmpl; + forward_packets: + while (!cmpl.last) { + m_axis_completion << cmpl; + for (int i = 0; i < RAW_MODULE_SIZE * sizeof(uint16_t) / 64; i++) { #pragma HLS PIPELINE II=1 - data_in >> packet_in; - data_out << packet_in; - if (packet_in.last) { - addr_out << addr; - addr_in >> addr; + data_in >> packet_in; + data_out << packet_in; } + s_axis_completion >> cmpl; } + m_axis_completion << cmpl; } data_in >> packet_in; -#ifndef __SYNTHESIS__ - if (!addr_in.empty()) throw std::runtime_error("Address in not empty"); - if (packet_in.user == 0) throw std::runtime_error("Something wrong with packet order"); - if (packet_in.last == 0) throw std::runtime_error("Something wrong with packet order"); -#endif - addr_out << addr; data_out << packet_in; } diff --git a/fpga/scripts/jfjoch.tcl b/fpga/scripts/jfjoch.tcl index 7952ef6f..c6b0dbe4 100644 --- a/fpga/scripts/jfjoch.tcl +++ b/fpga/scripts/jfjoch.tcl @@ -157,15 +157,6 @@ proc create_hier_cell_jungfraujoch { parentCell nameHier } { CONFIG.HAS_AFULL {1} \ ] $axis_addr_fifo_0 - # Create instance: axis_addr_fifo_1, and set properties - set axis_addr_fifo_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_data_fifo:2.0 axis_addr_fifo_1 ] - set_property -dict [ list \ - CONFIG.FIFO_DEPTH {64} \ - CONFIG.FIFO_MEMORY_TYPE {block} \ - CONFIG.HAS_AEMPTY {1} \ - CONFIG.HAS_AFULL {1} \ - ] $axis_addr_fifo_1 - # Create instance: axis_broadcast_0, and set properties set axis_broadcast_0 [ create_bd_cell -type ip -vlnv psi.ch:hls:axis_broadcast:1.0 axis_broadcast_0 ] @@ -182,6 +173,8 @@ proc create_hier_cell_jungfraujoch { parentCell nameHier } { set axis_compl_fifo_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_data_fifo:2.0 axis_compl_fifo_1 ] set_property -dict [ list \ CONFIG.FIFO_DEPTH {16} \ + CONFIG.HAS_AEMPTY {1} \ + CONFIG.HAS_AFULL {1} \ ] $axis_compl_fifo_1 # Create instance: axis_compl_fifo_2, and set properties @@ -196,6 +189,12 @@ proc create_hier_cell_jungfraujoch { parentCell nameHier } { CONFIG.FIFO_DEPTH {16} \ ] $axis_compl_fifo_3 + # Create instance: axis_compl_fifo_5, and set properties + set axis_compl_fifo_5 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_data_fifo:2.0 axis_compl_fifo_5 ] + set_property -dict [ list \ + CONFIG.FIFO_DEPTH {16} \ + ] $axis_compl_fifo_5 + # Create instance: axis_data_fifo_0, and set properties set axis_data_fifo_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_data_fifo:2.0 axis_data_fifo_0 ] set_property -dict [ list \ @@ -215,21 +214,17 @@ proc create_hier_cell_jungfraujoch { parentCell nameHier } { # Create instance: axis_data_fifo_2, and set properties set axis_data_fifo_2 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_data_fifo:2.0 axis_data_fifo_2 ] set_property -dict [ list \ - CONFIG.FIFO_DEPTH {4096} \ - CONFIG.FIFO_MEMORY_TYPE {ultra} \ + CONFIG.FIFO_DEPTH {16} \ ] $axis_data_fifo_2 # Create instance: axis_data_fifo_3, and set properties set axis_data_fifo_3 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_data_fifo:2.0 axis_data_fifo_3 ] set_property -dict [ list \ - CONFIG.FIFO_DEPTH {16} \ + CONFIG.FIFO_DEPTH {256} \ ] $axis_data_fifo_3 # Create instance: axis_data_fifo_4, and set properties set axis_data_fifo_4 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_data_fifo:2.0 axis_data_fifo_4 ] - set_property -dict [ list \ - CONFIG.FIFO_DEPTH {256} \ - ] $axis_data_fifo_4 # Create instance: axis_data_fifo_5, and set properties set axis_data_fifo_5 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_data_fifo:2.0 axis_data_fifo_5 ] @@ -392,18 +387,6 @@ proc create_hier_cell_jungfraujoch { parentCell nameHier } { CONFIG.REG_CONFIG {16} \ ] $axis_register_slice_1 - # Create instance: axis_register_slice_2, and set properties - set axis_register_slice_2 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_register_slice:1.1 axis_register_slice_2 ] - set_property -dict [ list \ - CONFIG.REG_CONFIG {16} \ - ] $axis_register_slice_2 - - # Create instance: axis_register_slice_3, and set properties - set axis_register_slice_3 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_register_slice:1.1 axis_register_slice_3 ] - set_property -dict [ list \ - CONFIG.REG_CONFIG {16} \ - ] $axis_register_slice_3 - # Create instance: axis_register_slice_data_in_0, and set properties set axis_register_slice_data_in_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_register_slice:1.1 axis_register_slice_data_in_0 ] set_property -dict [ list \ @@ -533,19 +516,19 @@ proc create_hier_cell_jungfraujoch { parentCell nameHier } { connect_bd_intf_net -intf_net axi_datamover_1_M_AXI_MM2S [get_bd_intf_pins m_axi_d_hbm_p14] [get_bd_intf_pins axi_datamover_1/M_AXI_MM2S] connect_bd_intf_net -intf_net axi_datamover_1_M_AXI_S2MM [get_bd_intf_pins m_axi_d_hbm_p15] [get_bd_intf_pins axi_datamover_1/M_AXI_S2MM] connect_bd_intf_net -intf_net axis_addr_fifo_0_M_AXIS [get_bd_intf_pins axis_addr_fifo_0/M_AXIS] [get_bd_intf_pins axis_register_slice_1/S_AXIS] - connect_bd_intf_net -intf_net axis_addr_fifo_1_M_AXIS [get_bd_intf_pins axis_addr_fifo_1/M_AXIS] [get_bd_intf_pins axis_register_slice_2/S_AXIS] connect_bd_intf_net -intf_net axis_broadcast_0_data_out_0 [get_bd_intf_pins axis_broadcast_0/data_out_0] [get_bd_intf_pins axis_data_fifo_6/S_AXIS] connect_bd_intf_net -intf_net axis_broadcast_0_data_out_1 [get_bd_intf_pins axis_broadcast_0/data_out_1] [get_bd_intf_pins axis_data_fifo_9/S_AXIS] connect_bd_intf_net -intf_net axis_compl_fifo_0_M_AXIS [get_bd_intf_pins axis_compl_fifo_0/M_AXIS] [get_bd_intf_pins load_from_hbm_0/s_axis_completion] connect_bd_intf_net -intf_net axis_compl_fifo_1_M_AXIS [get_bd_intf_pins axis_compl_fifo_1/M_AXIS] [get_bd_intf_pins mask_missing_0/s_axis_completion] - connect_bd_intf_net -intf_net axis_compl_fifo_2_M_AXIS [get_bd_intf_pins axis_compl_fifo_2/M_AXIS] [get_bd_intf_pins integration_0/s_axis_completion] - connect_bd_intf_net -intf_net axis_compl_fifo_3_M_AXIS [get_bd_intf_pins axis_compl_fifo_3/M_AXIS] [get_bd_intf_pins host_writer_0/s_axis_completion] + connect_bd_intf_net -intf_net axis_compl_fifo_2_M_AXIS [get_bd_intf_pins axis_compl_fifo_3/M_AXIS] [get_bd_intf_pins integration_0/s_axis_completion] + connect_bd_intf_net -intf_net axis_compl_fifo_2_M_AXIS1 [get_bd_intf_pins axis_compl_fifo_2/M_AXIS] [get_bd_intf_pins jf_conversion_0/s_axis_completion] + connect_bd_intf_net -intf_net axis_compl_fifo_3_M_AXIS [get_bd_intf_pins axis_compl_fifo_5/M_AXIS] [get_bd_intf_pins host_writer_0/s_axis_completion] connect_bd_intf_net -intf_net axis_data_fifo_0_M_AXIS [get_bd_intf_pins axis_data_fifo_0/M_AXIS] [get_bd_intf_pins timer_hbm/data_in] connect_bd_intf_net -intf_net axis_data_fifo_10_M_AXIS [get_bd_intf_pins axis_data_fifo_10/M_AXIS] [get_bd_intf_pins host_writer_0/spot_finder_in] connect_bd_intf_net -intf_net axis_data_fifo_1_M_AXIS [get_bd_intf_pins axis_data_fifo_1/M_AXIS] [get_bd_intf_pins axis_register_slice_0/S_AXIS] - connect_bd_intf_net -intf_net axis_data_fifo_2_M_AXIS [get_bd_intf_pins axis_data_fifo_2/M_AXIS] [get_bd_intf_pins axis_register_slice_3/S_AXIS] - connect_bd_intf_net -intf_net axis_data_fifo_3_M_AXIS [get_bd_intf_pins axis_data_fifo_3/M_AXIS] [get_bd_intf_pins load_from_hbm_0/data_in] - connect_bd_intf_net -intf_net axis_data_fifo_4_M_AXIS [get_bd_intf_pins axis_data_fifo_4/M_AXIS] [get_bd_intf_pins mask_missing_0/data_in] + connect_bd_intf_net -intf_net axis_data_fifo_3_M_AXIS [get_bd_intf_pins axis_data_fifo_2/M_AXIS] [get_bd_intf_pins load_from_hbm_0/data_in] + connect_bd_intf_net -intf_net axis_data_fifo_4_M_AXIS [get_bd_intf_pins axis_data_fifo_3/M_AXIS] [get_bd_intf_pins mask_missing_0/data_in] + connect_bd_intf_net -intf_net axis_data_fifo_4_M_AXIS1 [get_bd_intf_pins axis_data_fifo_4/M_AXIS] [get_bd_intf_pins jf_conversion_0/data_in] connect_bd_intf_net -intf_net axis_data_fifo_5_M_AXIS [get_bd_intf_pins axis_data_fifo_6/M_AXIS] [get_bd_intf_pins integration_0/data_in] connect_bd_intf_net -intf_net axis_data_fifo_5_M_AXIS1 [get_bd_intf_pins axis_broadcast_0/data_in] [get_bd_intf_pins axis_data_fifo_5/M_AXIS] connect_bd_intf_net -intf_net axis_data_fifo_6_M_AXIS [get_bd_intf_pins axis_data_fifo_7/M_AXIS] [get_bd_intf_pins timer_host/data_in] @@ -567,10 +550,8 @@ proc create_hier_cell_jungfraujoch { parentCell nameHier } { connect_bd_intf_net -intf_net axis_frame_generator_fifo_0_M_AXIS [get_bd_intf_pins axis_frame_generator_fifo_0/M_AXIS] [get_bd_intf_pins stream_merge_0/input_0] connect_bd_intf_net -intf_net axis_hbm_handles_fifo_M_AXIS [get_bd_intf_pins axis_hbm_handles_fifo/M_AXIS] [get_bd_intf_pins save_to_hbm_0/s_axis_free_handles] connect_bd_intf_net -intf_net axis_integration_result_fifo_M_AXIS [get_bd_intf_pins axis_integration_result_fifo/M_AXIS] [get_bd_intf_pins host_writer_0/integration_in] - connect_bd_intf_net -intf_net axis_register_slice_0_M_AXIS [get_bd_intf_pins axis_register_slice_0/M_AXIS] [get_bd_intf_pins jf_conversion_0/data_in] - connect_bd_intf_net -intf_net axis_register_slice_1_M_AXIS [get_bd_intf_pins axis_register_slice_1/M_AXIS] [get_bd_intf_pins jf_conversion_0/addr_in] - connect_bd_intf_net -intf_net axis_register_slice_2_M_AXIS [get_bd_intf_pins axis_register_slice_2/M_AXIS] [get_bd_intf_pins save_to_hbm_0/addr_in] - connect_bd_intf_net -intf_net axis_register_slice_3_M_AXIS [get_bd_intf_pins axis_register_slice_3/M_AXIS] [get_bd_intf_pins save_to_hbm_0/data_in] + connect_bd_intf_net -intf_net axis_register_slice_0_M_AXIS [get_bd_intf_pins axis_register_slice_0/M_AXIS] [get_bd_intf_pins save_to_hbm_0/data_in] + connect_bd_intf_net -intf_net axis_register_slice_1_M_AXIS [get_bd_intf_pins axis_register_slice_1/M_AXIS] [get_bd_intf_pins save_to_hbm_0/addr_in] connect_bd_intf_net -intf_net axis_register_slice_data_in_0_M_AXIS1 [get_bd_intf_pins axis_register_slice_data_in_0/M_AXIS] [get_bd_intf_pins load_calibration_0/host_memory_in] connect_bd_intf_net -intf_net axis_register_slice_host_mem_M_AXIS [get_bd_intf_pins axis_data_fifo_c2h_data/S_AXIS] [get_bd_intf_pins axis_register_slice_host_mem/M_AXIS] connect_bd_intf_net -intf_net axis_register_slice_udp_M_AXIS [get_bd_intf_pins axis_register_slice_udp/M_AXIS] [get_bd_intf_pins data_collection_fsm_0/eth_in] @@ -590,10 +571,9 @@ proc create_hier_cell_jungfraujoch { parentCell nameHier } { connect_bd_intf_net -intf_net integration_0_data_out [get_bd_intf_pins axis_data_fifo_7/S_AXIS] [get_bd_intf_pins integration_0/data_out] connect_bd_intf_net -intf_net integration_0_m_axi_d_hbm_p0 [get_bd_intf_pins m_axi_d_hbm_p16] [get_bd_intf_pins integration_0/m_axi_d_hbm_p0] connect_bd_intf_net -intf_net integration_0_m_axi_d_hbm_p1 [get_bd_intf_pins m_axi_d_hbm_p17] [get_bd_intf_pins integration_0/m_axi_d_hbm_p1] - connect_bd_intf_net -intf_net integration_0_m_axis_completion [get_bd_intf_pins axis_compl_fifo_3/S_AXIS] [get_bd_intf_pins integration_0/m_axis_completion] + connect_bd_intf_net -intf_net integration_0_m_axis_completion [get_bd_intf_pins axis_compl_fifo_5/S_AXIS] [get_bd_intf_pins integration_0/m_axis_completion] connect_bd_intf_net -intf_net integration_0_result_out [get_bd_intf_pins axis_integration_result_fifo/S_AXIS] [get_bd_intf_pins integration_0/result_out] - connect_bd_intf_net -intf_net jf_conversion_0_addr_out [get_bd_intf_pins axis_addr_fifo_1/S_AXIS] [get_bd_intf_pins jf_conversion_0/addr_out] - connect_bd_intf_net -intf_net jf_conversion_0_data_out [get_bd_intf_pins axis_data_fifo_2/S_AXIS] [get_bd_intf_pins jf_conversion_0/data_out] + connect_bd_intf_net -intf_net jf_conversion_0_data_out [get_bd_intf_pins axis_data_fifo_5/S_AXIS] [get_bd_intf_pins jf_conversion_0/data_out] connect_bd_intf_net -intf_net jf_conversion_0_m_axi_d_hbm_p0 [get_bd_intf_pins jf_conversion_0/m_axi_d_hbm_p0] [get_bd_intf_pins smartconnect_1/S00_AXI] connect_bd_intf_net -intf_net jf_conversion_0_m_axi_d_hbm_p1 [get_bd_intf_pins m_axi_d_hbm_p1] [get_bd_intf_pins jf_conversion_0/m_axi_d_hbm_p1] connect_bd_intf_net -intf_net jf_conversion_0_m_axi_d_hbm_p2 [get_bd_intf_pins jf_conversion_0/m_axi_d_hbm_p2] [get_bd_intf_pins smartconnect_2/S00_AXI] @@ -606,21 +586,22 @@ proc create_hier_cell_jungfraujoch { parentCell nameHier } { connect_bd_intf_net -intf_net jf_conversion_0_m_axi_d_hbm_p9 [get_bd_intf_pins m_axi_d_hbm_p9] [get_bd_intf_pins jf_conversion_0/m_axi_d_hbm_p9] connect_bd_intf_net -intf_net jf_conversion_0_m_axi_d_hbm_p10 [get_bd_intf_pins m_axi_d_hbm_p10] [get_bd_intf_pins jf_conversion_0/m_axi_d_hbm_p10] connect_bd_intf_net -intf_net jf_conversion_0_m_axi_d_hbm_p11 [get_bd_intf_pins m_axi_d_hbm_p11] [get_bd_intf_pins jf_conversion_0/m_axi_d_hbm_p11] + connect_bd_intf_net -intf_net jf_conversion_0_m_axis_completion [get_bd_intf_pins axis_compl_fifo_3/S_AXIS] [get_bd_intf_pins jf_conversion_0/m_axis_completion] connect_bd_intf_net -intf_net load_calibration_0_datamover_in_cmd [get_bd_intf_pins axis_data_fifo_h2c_cmd/S_AXIS] [get_bd_intf_pins load_calibration_0/datamover_in_cmd] connect_bd_intf_net -intf_net load_calibration_0_m_axi_d_hbm_p0 [get_bd_intf_pins load_calibration_0/m_axi_d_hbm_p0] [get_bd_intf_pins smartconnect_1/S01_AXI] connect_bd_intf_net -intf_net load_calibration_0_m_axi_d_hbm_p1 [get_bd_intf_pins load_calibration_0/m_axi_d_hbm_p1] [get_bd_intf_pins smartconnect_2/S01_AXI] - connect_bd_intf_net -intf_net load_from_hbm_0_data_out [get_bd_intf_pins axis_data_fifo_4/S_AXIS] [get_bd_intf_pins load_from_hbm_0/data_out] + connect_bd_intf_net -intf_net load_from_hbm_0_data_out [get_bd_intf_pins axis_data_fifo_3/S_AXIS] [get_bd_intf_pins load_from_hbm_0/data_out] connect_bd_intf_net -intf_net load_from_hbm_0_datamover_0_cmd [get_bd_intf_pins axis_datamover_cmd_fifo_2/S_AXIS] [get_bd_intf_pins load_from_hbm_0/datamover_0_cmd] connect_bd_intf_net -intf_net load_from_hbm_0_datamover_1_cmd [get_bd_intf_pins axis_datamover_cmd_fifo_3/S_AXIS] [get_bd_intf_pins load_from_hbm_0/datamover_1_cmd] connect_bd_intf_net -intf_net load_from_hbm_0_m_axis_completion [get_bd_intf_pins axis_compl_fifo_1/S_AXIS] [get_bd_intf_pins load_from_hbm_0/m_axis_completion] connect_bd_intf_net -intf_net load_from_hbm_0_m_axis_free_handles [get_bd_intf_pins axis_hbm_handles_fifo/S_AXIS] [get_bd_intf_pins load_from_hbm_0/m_axis_free_handles] connect_bd_intf_net -intf_net mailbox_0_M1_AXIS [get_bd_intf_pins axis_work_request_fifo_0/S_AXIS] [get_bd_intf_pins mailbox_0/M1_AXIS] - connect_bd_intf_net -intf_net mask_missing_0_data_out [get_bd_intf_pins axis_data_fifo_5/S_AXIS] [get_bd_intf_pins mask_missing_0/data_out] + connect_bd_intf_net -intf_net mask_missing_0_data_out [get_bd_intf_pins axis_data_fifo_4/S_AXIS] [get_bd_intf_pins mask_missing_0/data_out] connect_bd_intf_net -intf_net mask_missing_0_m_axis_completion [get_bd_intf_pins axis_compl_fifo_2/S_AXIS] [get_bd_intf_pins mask_missing_0/m_axis_completion] connect_bd_intf_net -intf_net network_stack_udp_addr_out [get_bd_intf_pins axis_udp_addr_fifo_0/S_AXIS] [get_bd_intf_pins network_stack/udp_addr_out] connect_bd_intf_net -intf_net network_stack_udp_out [get_bd_intf_pins axis_udp_fifo_0/S_AXIS] [get_bd_intf_pins network_stack/udp_out] connect_bd_intf_net -intf_net s_axi_1 [get_bd_intf_pins s_axi] [get_bd_intf_pins smartconnect_0/S00_AXI] - connect_bd_intf_net -intf_net save_to_hbm_0_data_out [get_bd_intf_pins axis_data_fifo_3/S_AXIS] [get_bd_intf_pins save_to_hbm_0/data_out] + connect_bd_intf_net -intf_net save_to_hbm_0_data_out [get_bd_intf_pins axis_data_fifo_2/S_AXIS] [get_bd_intf_pins save_to_hbm_0/data_out] connect_bd_intf_net -intf_net save_to_hbm_0_datamover_0_cmd [get_bd_intf_pins axis_datamover_cmd_fifo_0/S_AXIS] [get_bd_intf_pins save_to_hbm_0/datamover_0_cmd] connect_bd_intf_net -intf_net save_to_hbm_0_datamover_1_cmd [get_bd_intf_pins axis_datamover_cmd_fifo_1/S_AXIS] [get_bd_intf_pins save_to_hbm_0/datamover_1_cmd] connect_bd_intf_net -intf_net save_to_hbm_0_hbm_out_0 [get_bd_intf_pins axis_datamover_fifo_0/S_AXIS] [get_bd_intf_pins save_to_hbm_0/hbm_out_0] @@ -649,13 +630,13 @@ proc create_hier_cell_jungfraujoch { parentCell nameHier } { connect_bd_net -net action_config_0_nmodules [get_bd_pins action_config_0/nmodules] [get_bd_pins data_collection_fsm_0/nmodules] connect_bd_net -net action_config_0_nstorage_cells [get_bd_pins action_config_0/nstorage_cells] [get_bd_pins data_collection_fsm_0/nstorage_cells] connect_bd_net -net action_config_0_one_over_energy [get_bd_pins action_config_0/one_over_energy] [get_bd_pins data_collection_fsm_0/one_over_energy] - connect_bd_net -net ap_clk_1 [get_bd_pins axi_clk] [get_bd_pins action_config_0/clk] [get_bd_pins axi_datamover_0/m_axi_mm2s_aclk] [get_bd_pins axi_datamover_0/m_axi_s2mm_aclk] [get_bd_pins axi_datamover_0/m_axis_mm2s_cmdsts_aclk] [get_bd_pins axi_datamover_0/m_axis_s2mm_cmdsts_awclk] [get_bd_pins axi_datamover_1/m_axi_mm2s_aclk] [get_bd_pins axi_datamover_1/m_axi_s2mm_aclk] [get_bd_pins axi_datamover_1/m_axis_mm2s_cmdsts_aclk] [get_bd_pins axi_datamover_1/m_axis_s2mm_cmdsts_awclk] [get_bd_pins axis_addr_fifo_0/s_axis_aclk] [get_bd_pins axis_addr_fifo_1/s_axis_aclk] [get_bd_pins axis_broadcast_0/ap_clk] [get_bd_pins axis_compl_fifo_0/s_axis_aclk] [get_bd_pins axis_compl_fifo_1/s_axis_aclk] [get_bd_pins axis_compl_fifo_2/s_axis_aclk] [get_bd_pins axis_compl_fifo_3/s_axis_aclk] [get_bd_pins axis_data_fifo_0/s_axis_aclk] [get_bd_pins axis_data_fifo_1/s_axis_aclk] [get_bd_pins axis_data_fifo_10/s_axis_aclk] [get_bd_pins axis_data_fifo_2/s_axis_aclk] [get_bd_pins axis_data_fifo_3/s_axis_aclk] [get_bd_pins axis_data_fifo_4/s_axis_aclk] [get_bd_pins axis_data_fifo_5/s_axis_aclk] [get_bd_pins axis_data_fifo_6/s_axis_aclk] [get_bd_pins axis_data_fifo_7/s_axis_aclk] [get_bd_pins axis_data_fifo_8/s_axis_aclk] [get_bd_pins axis_data_fifo_9/s_axis_aclk] [get_bd_pins axis_data_fifo_c2h_cmd/s_axis_aclk] [get_bd_pins axis_data_fifo_c2h_data/s_axis_aclk] [get_bd_pins axis_data_fifo_h2c_cmd/s_axis_aclk] [get_bd_pins axis_data_fifo_h2c_data/s_axis_aclk] [get_bd_pins axis_datamover_cmd_fifo_0/s_axis_aclk] [get_bd_pins axis_datamover_cmd_fifo_1/s_axis_aclk] [get_bd_pins axis_datamover_cmd_fifo_2/s_axis_aclk] [get_bd_pins axis_datamover_cmd_fifo_3/s_axis_aclk] [get_bd_pins axis_datamover_fifo_0/s_axis_aclk] [get_bd_pins axis_datamover_fifo_1/s_axis_aclk] [get_bd_pins axis_datamover_fifo_2/s_axis_aclk] [get_bd_pins axis_datamover_fifo_3/s_axis_aclk] [get_bd_pins axis_eth_in_fifo/s_axis_aclk] [get_bd_pins axis_frame_generator_fifo_0/s_axis_aclk] [get_bd_pins axis_hbm_handles_fifo/s_axis_aclk] [get_bd_pins axis_integration_result_fifo/s_axis_aclk] [get_bd_pins axis_register_slice_0/aclk] [get_bd_pins axis_register_slice_1/aclk] [get_bd_pins axis_register_slice_2/aclk] [get_bd_pins axis_register_slice_3/aclk] [get_bd_pins axis_register_slice_data_in_0/aclk] [get_bd_pins axis_register_slice_host_mem/aclk] [get_bd_pins axis_register_slice_udp/aclk] [get_bd_pins axis_udp_addr_fifo_0/s_axis_aclk] [get_bd_pins axis_udp_fifo_0/s_axis_aclk] [get_bd_pins axis_work_completion_fifo_0/s_axis_aclk] [get_bd_pins axis_work_request_fifo_0/s_axis_aclk] [get_bd_pins data_collection_fsm_0/ap_clk] [get_bd_pins frame_generator_0/ap_clk] [get_bd_pins host_writer_0/ap_clk] [get_bd_pins integration_0/ap_clk] [get_bd_pins jf_conversion_0/ap_clk] [get_bd_pins load_calibration_0/ap_clk] [get_bd_pins load_from_hbm_0/ap_clk] [get_bd_pins mailbox_0/M1_AXIS_ACLK] [get_bd_pins mailbox_0/S0_AXI_ACLK] [get_bd_pins mailbox_0/S1_AXIS_ACLK] [get_bd_pins mask_missing_0/ap_clk] [get_bd_pins network_stack/axiclk] [get_bd_pins save_to_hbm_0/ap_clk] [get_bd_pins smartconnect_0/aclk] [get_bd_pins smartconnect_1/aclk] [get_bd_pins smartconnect_2/aclk] [get_bd_pins spot_finder_0/ap_clk] [get_bd_pins stream_merge_0/ap_clk] [get_bd_pins timer_hbm/ap_clk] [get_bd_pins timer_host/ap_clk] + connect_bd_net -net ap_clk_1 [get_bd_pins axi_clk] [get_bd_pins action_config_0/clk] [get_bd_pins axi_datamover_0/m_axi_mm2s_aclk] [get_bd_pins axi_datamover_0/m_axi_s2mm_aclk] [get_bd_pins axi_datamover_0/m_axis_mm2s_cmdsts_aclk] [get_bd_pins axi_datamover_0/m_axis_s2mm_cmdsts_awclk] [get_bd_pins axi_datamover_1/m_axi_mm2s_aclk] [get_bd_pins axi_datamover_1/m_axi_s2mm_aclk] [get_bd_pins axi_datamover_1/m_axis_mm2s_cmdsts_aclk] [get_bd_pins axi_datamover_1/m_axis_s2mm_cmdsts_awclk] [get_bd_pins axis_addr_fifo_0/s_axis_aclk] [get_bd_pins axis_broadcast_0/ap_clk] [get_bd_pins axis_compl_fifo_0/s_axis_aclk] [get_bd_pins axis_compl_fifo_1/s_axis_aclk] [get_bd_pins axis_compl_fifo_2/s_axis_aclk] [get_bd_pins axis_compl_fifo_3/s_axis_aclk] [get_bd_pins axis_compl_fifo_5/s_axis_aclk] [get_bd_pins axis_data_fifo_0/s_axis_aclk] [get_bd_pins axis_data_fifo_1/s_axis_aclk] [get_bd_pins axis_data_fifo_10/s_axis_aclk] [get_bd_pins axis_data_fifo_2/s_axis_aclk] [get_bd_pins axis_data_fifo_3/s_axis_aclk] [get_bd_pins axis_data_fifo_4/s_axis_aclk] [get_bd_pins axis_data_fifo_5/s_axis_aclk] [get_bd_pins axis_data_fifo_6/s_axis_aclk] [get_bd_pins axis_data_fifo_7/s_axis_aclk] [get_bd_pins axis_data_fifo_8/s_axis_aclk] [get_bd_pins axis_data_fifo_9/s_axis_aclk] [get_bd_pins axis_data_fifo_c2h_cmd/s_axis_aclk] [get_bd_pins axis_data_fifo_c2h_data/s_axis_aclk] [get_bd_pins axis_data_fifo_h2c_cmd/s_axis_aclk] [get_bd_pins axis_data_fifo_h2c_data/s_axis_aclk] [get_bd_pins axis_datamover_cmd_fifo_0/s_axis_aclk] [get_bd_pins axis_datamover_cmd_fifo_1/s_axis_aclk] [get_bd_pins axis_datamover_cmd_fifo_2/s_axis_aclk] [get_bd_pins axis_datamover_cmd_fifo_3/s_axis_aclk] [get_bd_pins axis_datamover_fifo_0/s_axis_aclk] [get_bd_pins axis_datamover_fifo_1/s_axis_aclk] [get_bd_pins axis_datamover_fifo_2/s_axis_aclk] [get_bd_pins axis_datamover_fifo_3/s_axis_aclk] [get_bd_pins axis_eth_in_fifo/s_axis_aclk] [get_bd_pins axis_frame_generator_fifo_0/s_axis_aclk] [get_bd_pins axis_hbm_handles_fifo/s_axis_aclk] [get_bd_pins axis_integration_result_fifo/s_axis_aclk] [get_bd_pins axis_register_slice_0/aclk] [get_bd_pins axis_register_slice_1/aclk] [get_bd_pins axis_register_slice_data_in_0/aclk] [get_bd_pins axis_register_slice_host_mem/aclk] [get_bd_pins axis_register_slice_udp/aclk] [get_bd_pins axis_udp_addr_fifo_0/s_axis_aclk] [get_bd_pins axis_udp_fifo_0/s_axis_aclk] [get_bd_pins axis_work_completion_fifo_0/s_axis_aclk] [get_bd_pins axis_work_request_fifo_0/s_axis_aclk] [get_bd_pins data_collection_fsm_0/ap_clk] [get_bd_pins frame_generator_0/ap_clk] [get_bd_pins host_writer_0/ap_clk] [get_bd_pins integration_0/ap_clk] [get_bd_pins jf_conversion_0/ap_clk] [get_bd_pins load_calibration_0/ap_clk] [get_bd_pins load_from_hbm_0/ap_clk] [get_bd_pins mailbox_0/M1_AXIS_ACLK] [get_bd_pins mailbox_0/S0_AXI_ACLK] [get_bd_pins mailbox_0/S1_AXIS_ACLK] [get_bd_pins mask_missing_0/ap_clk] [get_bd_pins network_stack/axiclk] [get_bd_pins save_to_hbm_0/ap_clk] [get_bd_pins smartconnect_0/aclk] [get_bd_pins smartconnect_1/aclk] [get_bd_pins smartconnect_2/aclk] [get_bd_pins spot_finder_0/ap_clk] [get_bd_pins stream_merge_0/ap_clk] [get_bd_pins timer_hbm/ap_clk] [get_bd_pins timer_host/ap_clk] connect_bd_net -net axis_addr_fifo_0_almost_empty [get_bd_pins action_config_0/calib_addr_fifo_empty] [get_bd_pins axis_addr_fifo_0/almost_empty] connect_bd_net -net axis_addr_fifo_0_almost_full [get_bd_pins action_config_0/calib_addr_fifo_full] [get_bd_pins axis_addr_fifo_0/almost_full] - connect_bd_net -net axis_addr_fifo_4_almost_empty [get_bd_pins action_config_0/last_addr_fifo_empty] [get_bd_pins axis_addr_fifo_1/almost_empty] - connect_bd_net -net axis_addr_fifo_4_almost_full [get_bd_pins action_config_0/last_addr_fifo_full] [get_bd_pins axis_addr_fifo_1/almost_full] connect_bd_net -net axis_compl_fifo_0_almost_empty [get_bd_pins action_config_0/hbm_compl_fifo_empty] [get_bd_pins axis_compl_fifo_0/almost_empty] connect_bd_net -net axis_compl_fifo_0_almost_full [get_bd_pins action_config_0/hbm_compl_fifo_full] [get_bd_pins axis_compl_fifo_0/almost_full] + connect_bd_net -net axis_compl_fifo_1_almost_empty [get_bd_pins action_config_0/last_addr_fifo_empty] [get_bd_pins axis_compl_fifo_1/almost_empty] + connect_bd_net -net axis_compl_fifo_1_almost_full [get_bd_pins action_config_0/last_addr_fifo_full] [get_bd_pins axis_compl_fifo_1/almost_full] connect_bd_net -net axis_data_fifo_10_almost_empty [get_bd_pins action_config_0/last_data_fifo_empty] [get_bd_pins axis_data_fifo_8/almost_empty] connect_bd_net -net axis_data_fifo_10_almost_full [get_bd_pins action_config_0/last_data_fifo_full] [get_bd_pins axis_data_fifo_8/almost_full] connect_bd_net -net axis_data_fifo_4_almost_empty [get_bd_pins action_config_0/calib_data_fifo_empty] [get_bd_pins axis_data_fifo_1/almost_empty] @@ -701,7 +682,7 @@ proc create_hier_cell_jungfraujoch { parentCell nameHier } { connect_bd_net -net network_stack_packets_udp [get_bd_pins action_config_0/packets_udp] [get_bd_pins network_stack/packets_udp] connect_bd_net -net network_stack_packets_udp_ap_vld [get_bd_pins action_config_0/packets_udp_valid] [get_bd_pins network_stack/packets_udp_ap_vld] connect_bd_net -net one_dout [get_bd_pins axi_datamover_0/m_axis_mm2s_sts_tready] [get_bd_pins axi_datamover_0/m_axis_s2mm_sts_tready] [get_bd_pins axi_datamover_1/m_axis_mm2s_sts_tready] [get_bd_pins axi_datamover_1/m_axis_s2mm_sts_tready] [get_bd_pins one/dout] - connect_bd_net -net reset_axi [get_bd_pins axi_rst_n] [get_bd_pins action_config_0/resetn] [get_bd_pins axis_addr_fifo_0/s_axis_aresetn] [get_bd_pins axis_addr_fifo_1/s_axis_aresetn] [get_bd_pins axis_compl_fifo_0/s_axis_aresetn] [get_bd_pins axis_compl_fifo_1/s_axis_aresetn] [get_bd_pins axis_compl_fifo_2/s_axis_aresetn] [get_bd_pins axis_compl_fifo_3/s_axis_aresetn] [get_bd_pins axis_data_fifo_0/s_axis_aresetn] [get_bd_pins axis_data_fifo_1/s_axis_aresetn] [get_bd_pins axis_data_fifo_10/s_axis_aresetn] [get_bd_pins axis_data_fifo_2/s_axis_aresetn] [get_bd_pins axis_data_fifo_3/s_axis_aresetn] [get_bd_pins axis_data_fifo_4/s_axis_aresetn] [get_bd_pins axis_data_fifo_5/s_axis_aresetn] [get_bd_pins axis_data_fifo_6/s_axis_aresetn] [get_bd_pins axis_data_fifo_7/s_axis_aresetn] [get_bd_pins axis_data_fifo_8/s_axis_aresetn] [get_bd_pins axis_data_fifo_9/s_axis_aresetn] [get_bd_pins axis_data_fifo_c2h_cmd/s_axis_aresetn] [get_bd_pins axis_data_fifo_c2h_data/s_axis_aresetn] [get_bd_pins axis_data_fifo_h2c_cmd/s_axis_aresetn] [get_bd_pins axis_data_fifo_h2c_data/s_axis_aresetn] [get_bd_pins axis_datamover_cmd_fifo_0/s_axis_aresetn] [get_bd_pins axis_datamover_cmd_fifo_1/s_axis_aresetn] [get_bd_pins axis_datamover_cmd_fifo_2/s_axis_aresetn] [get_bd_pins axis_datamover_cmd_fifo_3/s_axis_aresetn] [get_bd_pins axis_datamover_fifo_0/s_axis_aresetn] [get_bd_pins axis_datamover_fifo_1/s_axis_aresetn] [get_bd_pins axis_datamover_fifo_2/s_axis_aresetn] [get_bd_pins axis_datamover_fifo_3/s_axis_aresetn] [get_bd_pins axis_eth_in_fifo/s_axis_aresetn] [get_bd_pins axis_frame_generator_fifo_0/s_axis_aresetn] [get_bd_pins axis_hbm_handles_fifo/s_axis_aresetn] [get_bd_pins axis_integration_result_fifo/s_axis_aresetn] [get_bd_pins axis_register_slice_0/aresetn] [get_bd_pins axis_register_slice_1/aresetn] [get_bd_pins axis_register_slice_2/aresetn] [get_bd_pins axis_register_slice_3/aresetn] [get_bd_pins axis_register_slice_data_in_0/aresetn] [get_bd_pins axis_register_slice_host_mem/aresetn] [get_bd_pins axis_register_slice_udp/aresetn] [get_bd_pins axis_udp_addr_fifo_0/s_axis_aresetn] [get_bd_pins axis_udp_fifo_0/s_axis_aresetn] [get_bd_pins axis_work_completion_fifo_0/s_axis_aresetn] [get_bd_pins axis_work_request_fifo_0/s_axis_aresetn] [get_bd_pins network_stack/resetn] [get_bd_pins smartconnect_0/aresetn] [get_bd_pins smartconnect_1/aresetn] [get_bd_pins smartconnect_2/aresetn] + connect_bd_net -net reset_axi [get_bd_pins axi_rst_n] [get_bd_pins action_config_0/resetn] [get_bd_pins axis_addr_fifo_0/s_axis_aresetn] [get_bd_pins axis_compl_fifo_0/s_axis_aresetn] [get_bd_pins axis_compl_fifo_1/s_axis_aresetn] [get_bd_pins axis_compl_fifo_2/s_axis_aresetn] [get_bd_pins axis_compl_fifo_3/s_axis_aresetn] [get_bd_pins axis_compl_fifo_5/s_axis_aresetn] [get_bd_pins axis_data_fifo_0/s_axis_aresetn] [get_bd_pins axis_data_fifo_1/s_axis_aresetn] [get_bd_pins axis_data_fifo_10/s_axis_aresetn] [get_bd_pins axis_data_fifo_2/s_axis_aresetn] [get_bd_pins axis_data_fifo_3/s_axis_aresetn] [get_bd_pins axis_data_fifo_4/s_axis_aresetn] [get_bd_pins axis_data_fifo_5/s_axis_aresetn] [get_bd_pins axis_data_fifo_6/s_axis_aresetn] [get_bd_pins axis_data_fifo_7/s_axis_aresetn] [get_bd_pins axis_data_fifo_8/s_axis_aresetn] [get_bd_pins axis_data_fifo_9/s_axis_aresetn] [get_bd_pins axis_data_fifo_c2h_cmd/s_axis_aresetn] [get_bd_pins axis_data_fifo_c2h_data/s_axis_aresetn] [get_bd_pins axis_data_fifo_h2c_cmd/s_axis_aresetn] [get_bd_pins axis_data_fifo_h2c_data/s_axis_aresetn] [get_bd_pins axis_datamover_cmd_fifo_0/s_axis_aresetn] [get_bd_pins axis_datamover_cmd_fifo_1/s_axis_aresetn] [get_bd_pins axis_datamover_cmd_fifo_2/s_axis_aresetn] [get_bd_pins axis_datamover_cmd_fifo_3/s_axis_aresetn] [get_bd_pins axis_datamover_fifo_0/s_axis_aresetn] [get_bd_pins axis_datamover_fifo_1/s_axis_aresetn] [get_bd_pins axis_datamover_fifo_2/s_axis_aresetn] [get_bd_pins axis_datamover_fifo_3/s_axis_aresetn] [get_bd_pins axis_eth_in_fifo/s_axis_aresetn] [get_bd_pins axis_frame_generator_fifo_0/s_axis_aresetn] [get_bd_pins axis_hbm_handles_fifo/s_axis_aresetn] [get_bd_pins axis_integration_result_fifo/s_axis_aresetn] [get_bd_pins axis_register_slice_0/aresetn] [get_bd_pins axis_register_slice_1/aresetn] [get_bd_pins axis_register_slice_data_in_0/aresetn] [get_bd_pins axis_register_slice_host_mem/aresetn] [get_bd_pins axis_register_slice_udp/aresetn] [get_bd_pins axis_udp_addr_fifo_0/s_axis_aresetn] [get_bd_pins axis_udp_fifo_0/s_axis_aresetn] [get_bd_pins axis_work_completion_fifo_0/s_axis_aresetn] [get_bd_pins axis_work_request_fifo_0/s_axis_aresetn] [get_bd_pins network_stack/resetn] [get_bd_pins smartconnect_0/aresetn] [get_bd_pins smartconnect_1/aresetn] [get_bd_pins smartconnect_2/aresetn] connect_bd_net -net reset_hls [get_bd_pins ap_rst_n] [get_bd_pins axi_datamover_0/m_axi_mm2s_aresetn] [get_bd_pins axi_datamover_0/m_axi_s2mm_aresetn] [get_bd_pins axi_datamover_0/m_axis_mm2s_cmdsts_aresetn] [get_bd_pins axi_datamover_0/m_axis_s2mm_cmdsts_aresetn] [get_bd_pins axi_datamover_1/m_axi_mm2s_aresetn] [get_bd_pins axi_datamover_1/m_axi_s2mm_aresetn] [get_bd_pins axi_datamover_1/m_axis_mm2s_cmdsts_aresetn] [get_bd_pins axi_datamover_1/m_axis_s2mm_cmdsts_aresetn] [get_bd_pins axis_broadcast_0/ap_rst_n] [get_bd_pins data_collection_fsm_0/ap_rst_n] [get_bd_pins frame_generator_0/ap_rst_n] [get_bd_pins host_writer_0/ap_rst_n] [get_bd_pins integration_0/ap_rst_n] [get_bd_pins jf_conversion_0/ap_rst_n] [get_bd_pins load_calibration_0/ap_rst_n] [get_bd_pins load_from_hbm_0/ap_rst_n] [get_bd_pins mailbox_0/S0_AXI_ARESETN] [get_bd_pins mask_missing_0/ap_rst_n] [get_bd_pins network_stack/ap_rst_n] [get_bd_pins save_to_hbm_0/ap_rst_n] [get_bd_pins spot_finder_0/ap_rst_n] [get_bd_pins stream_merge_0/ap_rst_n] [get_bd_pins timer_hbm/ap_rst_n] [get_bd_pins timer_host/ap_rst_n] connect_bd_net -net timer_hbm_counter [get_bd_pins action_config_0/stalls_hbm] [get_bd_pins timer_hbm/counter] connect_bd_net -net timer_hbm_counter_ap_vld [get_bd_pins action_config_0/stalls_hbm_valid] [get_bd_pins timer_hbm/counter_ap_vld] @@ -710,4 +691,4 @@ proc create_hier_cell_jungfraujoch { parentCell nameHier } { # Restore current instance current_bd_instance $oldCurInst -} \ No newline at end of file +} diff --git a/receiver/HLSSimulatedDevice.cpp b/receiver/HLSSimulatedDevice.cpp index 2575b2dc..f2474286 100644 --- a/receiver/HLSSimulatedDevice.cpp +++ b/receiver/HLSSimulatedDevice.cpp @@ -228,13 +228,15 @@ void HLSSimulatedDevice::HLSMainThread() { STREAM_512 converted_5; STREAM_512 converted_6; STREAM_512 converted_7; + STREAM_512 converted_8; hls::stream addr0; hls::stream addr1; hls::stream addr2; hls::stream addr3; - hls::stream compl0, compl1, compl2, compl3; + hls::stream compl0, compl1, compl2, compl3, compl4; + hls::stream> hbm_handles; hls::stream> integration_result; hls::stream> spot_finder_result; @@ -304,9 +306,21 @@ void HLSSimulatedDevice::HLSMainThread() { // Timer procedure - count how many times pedestal_corr/gain_corr is not accepting input (to help track down latency issues) hls_cores.emplace_back([&] { timer_host(raw1, raw2, counter_hbm); }); + + // 3. Cache images in HBM + hls_cores.emplace_back([&] { save_to_hbm(raw2, converted_1, addr1, compl0, hbm_handles, + datamover_out_hbm_0.GetDataStream(), datamover_out_hbm_1.GetDataStream(), + datamover_out_hbm_0.GetCtrlStream(), datamover_out_hbm_1.GetCtrlStream(), + hbm_if_size);}); + + hls_cores.emplace_back([&] { load_from_hbm(converted_1, converted_2, compl0, compl1, hbm_handles, + datamover_in_hbm_0.GetDataStream(), datamover_in_hbm_1.GetDataStream(), + datamover_in_hbm_0.GetCtrlStream(), datamover_in_hbm_1.GetCtrlStream(), + hbm_if_size);}); + // 2. Apply pedestal & gain corrections - hls_cores.emplace_back([&] { jf_conversion(raw2, converted_0, - addr1, addr2, + hls_cores.emplace_back([&] { jf_conversion(converted_2, converted_3, + compl1, compl2, hbm.data(), hbm.data(), hbm.data(), @@ -321,36 +335,25 @@ void HLSSimulatedDevice::HLSMainThread() { hbm.data(), hbm_if_size); }); - // 3. Cache images in HBM - hls_cores.emplace_back([&] { save_to_hbm(converted_0, converted_1, addr2, compl0, hbm_handles, - datamover_out_hbm_0.GetDataStream(), datamover_out_hbm_1.GetDataStream(), - datamover_out_hbm_0.GetCtrlStream(), datamover_out_hbm_1.GetCtrlStream(), - hbm_if_size);}); - - hls_cores.emplace_back([&] { load_from_hbm(converted_1, converted_2, compl0, compl1, hbm_handles, - datamover_in_hbm_0.GetDataStream(), datamover_in_hbm_1.GetDataStream(), - datamover_in_hbm_0.GetCtrlStream(), datamover_in_hbm_1.GetCtrlStream(), - hbm_if_size);}); - // 4. Mask missing pixels - hls_cores.emplace_back([&] { mask_missing(converted_2, converted_3, compl1, compl2);}); + hls_cores.emplace_back([&] { mask_missing(converted_3, converted_4, compl2, compl3);}); - hls_cores.emplace_back([&] { axis_broadcast(converted_3, converted_4, converted_7);}); + hls_cores.emplace_back([&] { axis_broadcast(converted_4, converted_5, converted_8);}); // 5. Spot finding - hls_cores.emplace_back([&] { spot_finder(converted_7, spot_finder_result);}); + hls_cores.emplace_back([&] { spot_finder(converted_8, spot_finder_result);}); // 5. Integration of pixels - hls_cores.emplace_back([&] { integration(converted_4, converted_5, integration_result, compl2, compl3, + hls_cores.emplace_back([&] { integration(converted_5, converted_6, integration_result, compl3, compl4, hbm.data(), hbm.data(), hbm_if_size);}); // Timer procedure - count how many times write_data is not accepting input (to help track down latency issues) - hls_cores.emplace_back([&] { timer_host(converted_5, converted_6, counter_host); }); + hls_cores.emplace_back([&] { timer_host(converted_6, converted_7, counter_host); }); // 6. Prepare data to write to host memory hls_cores.emplace_back([&] { - host_writer(converted_6, integration_result, spot_finder_result, - compl3, datamover_out.GetDataStream(), + host_writer(converted_7, integration_result, spot_finder_result, + compl4, datamover_out.GetDataStream(), datamover_out.GetCtrlStream(), work_request_stream, completion_stream, packets_processed, host_writer_idle, err_reg); });