diff --git a/libraries/base/dp/src/vhdl/dp_offload_tx_v3.vhd b/libraries/base/dp/src/vhdl/dp_offload_tx_v3.vhd index f72352cd6925c80356551b0c2fa3b6761b1f9877..66551c1bc892ba343176675715242c43d81916b7 100644 --- a/libraries/base/dp/src/vhdl/dp_offload_tx_v3.vhd +++ b/libraries/base/dp/src/vhdl/dp_offload_tx_v3.vhd @@ -135,12 +135,24 @@ BEGIN snk_out_arr(i).xon <= src_in_arr(i).xon; -- Wire hdr_fields_out_arr - -- MM override bits determine source for each field - gen_field_wires: FOR j IN g_hdr_field_arr'RANGE GENERATE - hdr_fields_out_arr(i)(field_hi(g_hdr_field_arr, j) DOWNTO field_lo(g_hdr_field_arr, j)) <= mm_fields_slv_out_arr(i)(field_hi(g_hdr_field_arr, j) DOWNTO field_lo(g_hdr_field_arr, j)) - WHEN field_override_arr(j) = '1' ELSE - hdr_fields_in_arr(i)(field_hi(g_hdr_field_arr, j) DOWNTO field_lo(g_hdr_field_arr, j)); - END GENERATE; + p_hdr_fields_out_arr : PROCESS(mm_fields_slv_out_arr, hdr_fields_in_arr) + VARIABLE v_hi : NATURAL; + VARIABLE v_lo : NATURAL; + BEGIN + -- Default drive unused slv bit to 0 to avoid Warning: (vsim-8684) No drivers exist on out port + -- hdr_fields_out_arr(0)(1023 downto ...), and its initial value is not used. + hdr_fields_out_arr(i) <= (OTHERS => '0'); + FOR j IN g_hdr_field_arr'RANGE LOOP + v_hi := field_hi(g_hdr_field_arr, j); + v_lo := field_lo(g_hdr_field_arr, j); + -- MM override bits determine source for each field + IF field_override_arr(j) = '1' THEN + hdr_fields_out_arr(i)(v_hi DOWNTO v_lo) <= mm_fields_slv_out_arr(i)(v_hi DOWNTO v_lo); + ELSE + hdr_fields_out_arr(i)(v_hi DOWNTO v_lo) <= hdr_fields_in_arr(i)(v_hi DOWNTO v_lo); + END IF; + END LOOP; + END PROCESS; --------------------------------------------------------------------------------------- -- mm_fields for MM access to each field