diff --git a/libraries/technology/mult/hdllib.cfg b/libraries/technology/mult/hdllib.cfg index ed74842532049ef208ecbc2e37f799a35fbd66dc..1aef3e45b664868eb2bceeb29a048de65c2c11d2 100644 --- a/libraries/technology/mult/hdllib.cfg +++ b/libraries/technology/mult/hdllib.cfg @@ -5,6 +5,7 @@ hdl_lib_uses_synth = common technology ip_arria10_mult ip_arria10_complex_mult ip_arria10_complex_mult_rtl + ip_arria10_e1sg_complex_mult ip_arria10_e3sge3_mult_add4 ip_arria10_e1sg_mult_add4 hdl_lib_uses_sim = @@ -14,6 +15,7 @@ hdl_lib_disclose_library_clause_names = ip_arria10_mult ip_arria10_mult_lib ip_arria10_complex_mult ip_arria10_complex_mult_altmult_complex_150 ip_arria10_complex_mult_rtl ip_arria10_complex_mult_rtl_lib + ip_arria10_e1sg_complex_mult ip_arria10_e1sg_complex_mult_altmult_complex_170 ip_arria10_e3sge3_mult_add4 ip_arria10_e3sge3_mult_add4_lib ip_arria10_e1sg_mult_add4 ip_arria10_e1sg_mult_add4_lib diff --git a/libraries/technology/mult/tech_complex_mult.vhd b/libraries/technology/mult/tech_complex_mult.vhd index a5698bd82355f3a8dea337b958f57b6cdc3bf748..7b1368e19f3a4422d4777bb4f1f357ed3d3aebbf 100644 --- a/libraries/technology/mult/tech_complex_mult.vhd +++ b/libraries/technology/mult/tech_complex_mult.vhd @@ -31,6 +31,7 @@ LIBRARY ip_stratixiv_mult_lib; --LIBRARY ip_arria10_mult_lib; --LIBRARY ip_arria10_mult_rtl_lib; LIBRARY ip_arria10_complex_mult_altmult_complex_150; +LIBRARY ip_arria10_e1sg_complex_mult_altmult_complex_170; LIBRARY ip_arria10_complex_mult_rtl_lib; @@ -164,8 +165,9 @@ begin result_im <= RESIZE_SVEC(mult_im, g_out_p_w); END GENERATE; - - gen_ip_arria10_rtl : IF (g_sim=FALSE OR (g_sim=TRUE AND g_sim_level=0)) AND (g_technology=c_tech_arria10 AND g_variant="RTL") GENERATE + -- RTL variant is the same for unb2, unb2a and unb2b + gen_ip_arria10_rtl : IF (g_sim=FALSE OR (g_sim=TRUE AND g_sim_level=0)) AND + ((g_technology=c_tech_arria10 OR g_technology=c_tech_arria10_e3sge3 OR g_technology=c_tech_arria10_e1sg ) AND g_variant="RTL") GENERATE u0 : ip_arria10_complex_mult_rtl GENERIC MAP( g_in_a_w => g_in_a_w, @@ -190,6 +192,35 @@ begin ); END GENERATE; + + gen_ip_arria10_e1sg_ip : IF (g_sim=FALSE OR (g_sim=TRUE AND g_sim_level=0)) AND (g_technology=c_tech_arria10_e1sg AND g_variant="IP") GENERATE + + -- Adapt DSP input widths + ar <= RESIZE_SVEC(in_ar, c_dsp_dat_w); + ai <= RESIZE_SVEC(in_ai, c_dsp_dat_w); + br <= RESIZE_SVEC(in_br, c_dsp_dat_w); + bi <= RESIZE_SVEC(in_bi, c_dsp_dat_w) WHEN g_conjugate_b=FALSE ELSE TO_SVEC(-TO_SINT(in_bi), c_dsp_dat_w); + + + u0 : ip_arria10_e1sg_complex_mult + PORT MAP ( + aclr => rst, + clock => clk, + dataa_imag => ai, + dataa_real => ar, + datab_imag => bi, + datab_real => br, + ena => clken, + result_imag => mult_im, + result_real => mult_re + ); + + -- Back to true input widths and then resize for output width + result_re <= RESIZE_SVEC(mult_re, g_out_p_w); + result_im <= RESIZE_SVEC(mult_im, g_out_p_w); + + END GENERATE; + ------------------------------------------------------------------------------- -- Model: forward concatenated inputs to the 'result' output --