diff --git a/modules/common/gencores_pkg.vhd b/modules/common/gencores_pkg.vhd index aa1bc5f03ce8d00623c0046dc141901c0769ed11..7d6e0179e10217a39bd246fb316f415684da33b4 100644 --- a/modules/common/gencores_pkg.vhd +++ b/modules/common/gencores_pkg.vhd @@ -611,6 +611,16 @@ package gencores_pkg is function f_to_std_logic_vector (c : character) return std_logic_vector; function f_to_std_logic_vector (s : string) return std_logic_vector; + -- Functions for short-hand if assignments + function f_pick (cond : boolean; if_1 : std_logic; if_0 : std_logic) + return std_logic; + function f_pick (cond : boolean; if_1 : std_logic_vector; if_0 : std_logic_vector) + return std_logic_vector; + function f_pick (cond : std_logic; if_1 : std_logic; if_0 : std_logic) + return std_logic; + function f_pick (cond : std_logic; if_1 : std_logic_vector; if_0 : std_logic_vector) + return std_logic_vector; + end package; package body gencores_pkg is @@ -802,4 +812,43 @@ package body gencores_pkg is return rv; end function f_to_std_logic_vector; + ------------------------------------------------------------------------------ + -- Functions for short-hand if assignments + ------------------------------------------------------------------------------ + function f_pick (cond : std_logic; if_1 : std_logic; if_0 : std_logic) + return std_logic + is + begin + if cond = '1' then + return if_1; + else + return if_0; + end if; + end function f_pick; + + function f_pick (cond : std_logic; if_1 : std_logic_vector; if_0 : std_logic_vector) + return std_logic_vector + is + begin + if cond = '1' then + return if_1; + else + return if_0; + end if; + end function f_pick; + + function f_pick (cond : boolean; if_1 : std_logic; if_0 : std_logic) + return std_logic + is + begin + return f_pick (f_to_std_logic(cond), if_1, if_0); + end function f_pick; + + function f_pick (cond : boolean; if_1 : std_logic_vector; if_0 : std_logic_vector) + return std_logic_vector + is + begin + return f_pick (f_to_std_logic(cond), if_1, if_0); + end function f_pick; + end gencores_pkg;