Reply by gtwrek May 31, 20182018-05-31
In article <48c017ed-9e97-4ff3-94eb-2fd4e39f5524@googlegroups.com>,
Haimanot Tizazu  <htizazu@gmail.com> wrote:
> > >architecture structural of prince_core is > type round_constants is array(0 to 11) of std_logic_vector(63 downto 0); > type intermediate_signals is array(0 to 11) of std_logic_vector(63 downto 0); > > -- Round constants for each round > constant rcs: round_constants := (x"0000000000000000", > x"13198A2E03707344", > x"A4093822299F31D0", > x"082EFA98EC4E6C89", > x"452821E638D01377", > x"BE5466CF34E90C6C", > x"7EF84F78FD955CB1", > x"85840851F1AC43AA", > x"C882D32F25323C54", > x"64A51195E0E3610D", > x"D3B5A399CA0C2399", > x"C0AC29B7C97C50DD"); > > -- Signals for transporting the data between rounds > signal ims: intermediate_signals; > signal middle1, middle2: std_logic_vector(63 downto 0);
How's this for a start? typedef bit [ 0 : 11 ] [ 63 : 0 ] round_constants; typedef bit [ 0 : 11 ] [ 63 : 0 ] intermediate_signals; round_constants rcs = { 'h0, 'h13198A2E03707344, ... }; // Verilog has a "const" tag too, however, I never use it - can't // see the point of using it. intermediate_signals ims; bit [ 63 : 0 ] middle1. middle2; Regards, Mark
Reply by Haimanot Tizazu May 31, 20182018-05-31

architecture structural of prince_core is
    type round_constants is array(0 to 11) of std_logic_vector(63 downto 0);
    type intermediate_signals is array(0 to 11) of std_logic_vector(63 downto 0);

    -- Round constants for each round
    constant rcs: round_constants := (x"0000000000000000",
                                      x"13198A2E03707344",
                                      x"A4093822299F31D0",
                                      x"082EFA98EC4E6C89",
                                      x"452821E638D01377",
                                      x"BE5466CF34E90C6C",
                                      x"7EF84F78FD955CB1",
                                      x"85840851F1AC43AA",
                                      x"C882D32F25323C54",
                                      x"64A51195E0E3610D",
                                      x"D3B5A399CA0C2399",
                                      x"C0AC29B7C97C50DD");

    -- Signals for transporting the data between rounds
    signal ims: intermediate_signals;
    signal middle1, middle2: std_logic_vector(63 downto 0);