Skip to content
Snippets Groups Projects
Commit 3cff2b35 authored by Eric Kooistra's avatar Eric Kooistra
Browse files

Fix Quartus error : Can only use constant for LOOP range in...

Fix Quartus error : Can only use constant for LOOP range in func_sdp_map_crosslets_info() and func_sdp_step_crosslets_info().
parent 7641575d
Branches
No related tags found
No related merge requests found
...@@ -518,11 +518,9 @@ PACKAGE sdp_pkg is ...@@ -518,11 +518,9 @@ PACKAGE sdp_pkg is
FUNCTION func_sdp_map_stat_data_id(g_statistics_type : STRING; data_id_slv : STD_LOGIC_VECTOR) RETURN t_sdp_stat_data_id; FUNCTION func_sdp_map_stat_data_id(g_statistics_type : STRING; data_id_slv : STD_LOGIC_VECTOR) RETURN t_sdp_stat_data_id;
FUNCTION func_sdp_map_stat_data_id(g_statistics_type : STRING; data_id_rec : t_sdp_stat_data_id) RETURN STD_LOGIC_VECTOR; FUNCTION func_sdp_map_stat_data_id(g_statistics_type : STRING; data_id_rec : t_sdp_stat_data_id) RETURN STD_LOGIC_VECTOR;
FUNCTION func_sdp_map_crosslets_info(info_slv : STD_LOGIC_VECTOR; nof_crosslets : NATURAL) RETURN t_sdp_crosslets_info; -- map only the used offsets FUNCTION func_sdp_map_crosslets_info(info_slv : STD_LOGIC_VECTOR) RETURN t_sdp_crosslets_info; -- map all c_sdp_N_crosslets_max offsets
FUNCTION func_sdp_map_crosslets_info(info_slv : STD_LOGIC_VECTOR) RETURN t_sdp_crosslets_info; -- map all c_sdp_N_crosslets_max offsets FUNCTION func_sdp_map_crosslets_info(info_rec : t_sdp_crosslets_info) RETURN STD_LOGIC_VECTOR; -- map all c_sdp_N_crosslets_max offsets
FUNCTION func_sdp_map_crosslets_info(info_rec : t_sdp_crosslets_info; nof_crosslets : NATURAL) RETURN STD_LOGIC_VECTOR; -- map only the used offsets FUNCTION func_sdp_step_crosslets_info(info_rec : t_sdp_crosslets_info) RETURN t_sdp_crosslets_info; -- step all c_sdp_N_crosslets_max offsets
FUNCTION func_sdp_map_crosslets_info(info_rec : t_sdp_crosslets_info) RETURN STD_LOGIC_VECTOR; -- map all c_sdp_N_crosslets_max offsets
FUNCTION func_sdp_step_crosslets_info(info_rec : t_sdp_crosslets_info; nof_crosslets : NATURAL) RETURN t_sdp_crosslets_info;
END PACKAGE sdp_pkg; END PACKAGE sdp_pkg;
...@@ -794,41 +792,31 @@ PACKAGE BODY sdp_pkg IS ...@@ -794,41 +792,31 @@ PACKAGE BODY sdp_pkg IS
END func_sdp_map_stat_data_id; END func_sdp_map_stat_data_id;
FUNCTION func_sdp_map_crosslets_info(info_slv : STD_LOGIC_VECTOR; nof_crosslets : NATURAL) RETURN t_sdp_crosslets_info IS FUNCTION func_sdp_map_crosslets_info(info_slv : STD_LOGIC_VECTOR) RETURN t_sdp_crosslets_info IS
VARIABLE v_info : t_sdp_crosslets_info; VARIABLE v_info : t_sdp_crosslets_info;
BEGIN BEGIN
FOR I IN 0 TO nof_crosslets-1 LOOP -- map only used offsets FOR I IN 0 TO c_sdp_crosslets_info_nof_offsets-1 LOOP -- map al offsets
v_info.offset_arr(I) := TO_UINT(info_slv((I+1)*c_sdp_crosslets_index_w-1 DOWNTO I*c_sdp_crosslets_index_w)); v_info.offset_arr(I) := TO_UINT(info_slv((I+1)*c_sdp_crosslets_index_w-1 DOWNTO I*c_sdp_crosslets_index_w));
END LOOP; END LOOP;
v_info.step := TO_UINT(info_slv(c_sdp_crosslets_info_reg_w-1 DOWNTO c_sdp_crosslets_info_reg_w - c_sdp_crosslets_index_w)); v_info.step := TO_UINT(info_slv(c_sdp_crosslets_info_reg_w-1 DOWNTO c_sdp_crosslets_info_reg_w - c_sdp_crosslets_index_w));
RETURN v_info; RETURN v_info;
END func_sdp_map_crosslets_info; END func_sdp_map_crosslets_info;
FUNCTION func_sdp_map_crosslets_info(info_slv : STD_LOGIC_VECTOR) RETURN t_sdp_crosslets_info IS FUNCTION func_sdp_map_crosslets_info(info_rec : t_sdp_crosslets_info) RETURN STD_LOGIC_VECTOR IS
BEGIN
RETURN func_sdp_map_crosslets_info(info_slv, c_sdp_crosslets_info_nof_offsets); -- map all offsets
END func_sdp_map_crosslets_info;
FUNCTION func_sdp_map_crosslets_info(info_rec : t_sdp_crosslets_info; nof_crosslets : NATURAL) RETURN STD_LOGIC_VECTOR IS
VARIABLE v_info : STD_LOGIC_VECTOR(c_sdp_crosslets_info_reg_w-1 DOWNTO 0); VARIABLE v_info : STD_LOGIC_VECTOR(c_sdp_crosslets_info_reg_w-1 DOWNTO 0);
BEGIN BEGIN
FOR I IN 0 TO nof_crosslets-1 LOOP -- map only used offsets FOR I IN 0 TO c_sdp_crosslets_info_nof_offsets-1 LOOP -- map all offsets
v_info((I+1)*c_sdp_crosslets_index_w-1 DOWNTO I*c_sdp_crosslets_index_w) := TO_UVEC(info_rec.offset_arr(I), c_sdp_crosslets_index_w); v_info((I+1)*c_sdp_crosslets_index_w-1 DOWNTO I*c_sdp_crosslets_index_w) := TO_UVEC(info_rec.offset_arr(I), c_sdp_crosslets_index_w);
END LOOP; END LOOP;
v_info(c_sdp_crosslets_info_reg_w-1 DOWNTO c_sdp_crosslets_info_reg_w - c_sdp_crosslets_index_w) := TO_UVEC(info_rec.step, c_sdp_crosslets_index_w); v_info(c_sdp_crosslets_info_reg_w-1 DOWNTO c_sdp_crosslets_info_reg_w - c_sdp_crosslets_index_w) := TO_UVEC(info_rec.step, c_sdp_crosslets_index_w);
RETURN v_info; RETURN v_info;
END func_sdp_map_crosslets_info; END func_sdp_map_crosslets_info;
FUNCTION func_sdp_map_crosslets_info(info_rec : t_sdp_crosslets_info) RETURN STD_LOGIC_VECTOR IS
BEGIN
RETURN func_sdp_map_crosslets_info(info_rec, c_sdp_crosslets_info_nof_offsets); -- map all offsets
END func_sdp_map_crosslets_info;
FUNCTION func_sdp_step_crosslets_info(info_rec : t_sdp_crosslets_info; nof_crosslets : NATURAL) RETURN t_sdp_crosslets_info IS FUNCTION func_sdp_step_crosslets_info(info_rec : t_sdp_crosslets_info) RETURN t_sdp_crosslets_info IS
VARIABLE v_info : t_sdp_crosslets_info := info_rec; VARIABLE v_info : t_sdp_crosslets_info := info_rec;
BEGIN BEGIN
FOR I IN 0 TO nof_crosslets-1 LOOP -- step only the used offsets FOR I IN 0 TO c_sdp_crosslets_info_nof_offsets-1 LOOP -- step all offsets
v_info.offset_arr(I) := v_info.offset_arr(I) + v_info.step; v_info.offset_arr(I) := v_info.offset_arr(I) + v_info.step;
END LOOP; END LOOP;
RETURN v_info; RETURN v_info;
......
...@@ -280,7 +280,7 @@ BEGIN ...@@ -280,7 +280,7 @@ BEGIN
-- next in_sosi.sync -- next in_sosi.sync
IF in_sosi.sync = '1' THEN IF in_sosi.sync = '1' THEN
v.nof_crosslets := TO_UINT(nof_crosslets); v.nof_crosslets := TO_UINT(nof_crosslets);
v.crosslets_info_rec := func_sdp_map_crosslets_info(crosslets_info, TO_UINT(nof_crosslets)); v.crosslets_info_rec := func_sdp_map_crosslets_info(crosslets_info);
END IF; END IF;
-- Issue start_pulse per packet offload -- Issue start_pulse per packet offload
......
...@@ -261,7 +261,7 @@ BEGIN ...@@ -261,7 +261,7 @@ BEGIN
END IF; END IF;
IF i = 0 AND j = 1 THEN IF i = 0 AND j = 1 THEN
-- Increment crosslets_info offsets for next sync interval -- Increment crosslets_info offsets for next sync interval
in_crosslets_info_rec <= func_sdp_step_crosslets_info(in_crosslets_info_rec, g_nof_crosslets); in_crosslets_info_rec <= func_sdp_step_crosslets_info(in_crosslets_info_rec);
END IF; END IF;
IF j = 0 THEN IF j = 0 THEN
in_sosi.sop <= '1'; in_sosi.sop <= '1';
...@@ -277,7 +277,7 @@ BEGIN ...@@ -277,7 +277,7 @@ BEGIN
WAIT; WAIT;
END PROCESS; END PROCESS;
in_crosslets_info_slv <= func_sdp_map_crosslets_info(in_crosslets_info_rec, g_nof_crosslets); in_crosslets_info_slv <= func_sdp_map_crosslets_info(in_crosslets_info_rec);
-- Enable the statistics offload when input is running -- Enable the statistics offload when input is running
p_enable_trigger : PROCESS p_enable_trigger : PROCESS
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment