[ { "BlackBox" : { "name" : "Clash.Explicit.BlockRam.blockRam#" , "kind" : "Declaration" , "type" : "blockRam# :: ( KnownDomain dom ARG[0] , HasCallStack -- ARG[1] , Undefined a ) -- ARG[2] => Clock dom -- clk, ARG[3] -> Enable dom -- en, ARG[4] -> Vec n a -- init, ARG[5] -> Signal dom Int -- rd, ARG[6] -> Signal dom Bool -- wren, ARG[7] -> Signal dom Int -- wr, ARG[8] -> Signal dom a -- din, ARG[9] -> Signal dom a" , "template" : "-- blockRam begin ~GENSYM[~RESULT_blockRam][1] : block signal ~GENSYM[~RESULT_RAM][2] : ~TYP[5] := ~CONST[5]; signal ~GENSYM[rd][4] : integer range 0 to ~LENGTH[~TYP[5]] - 1; signal ~GENSYM[wr][5] : integer range 0 to ~LENGTH[~TYP[5]] - 1; begin ~SYM[4] <= to_integer(~ARG[6]) -- pragma translate_off mod ~LENGTH[~TYP[5]] -- pragma translate_on ; ~SYM[5] <= to_integer(~ARG[8]) -- pragma translate_off mod ~LENGTH[~TYP[5]] -- pragma translate_on ; ~IF ~VIVADO ~THEN ~SYM[6] : process(~ARG[3]) begin if ~IF~ACTIVEEDGE[Rising][0]~THENrising_edge~ELSEfalling_edge~FI(~ARG[3]) then if ~ARG[7] ~IF ~ISACTIVEENABLE[4] ~THEN and ~ARG[4] ~ELSE ~FI then ~SYM[2](~SYM[5]) <= ~TOBV[~ARG[9]][~TYP[9]]; end if; ~RESULT <= fromSLV(~SYM[2](~SYM[4])); end if; end process; ~ELSE ~SYM[6] : process(~ARG[3]) begin if ~IF~ACTIVEEDGE[Rising][0]~THENrising_edge~ELSEfalling_edge~FI(~ARG[3]) then if ~ARG[7] ~IF ~ISACTIVEENABLE[4] ~THEN and ~ARG[4] ~ELSE ~FI then ~SYM[2](~SYM[5]) <= ~ARG[9]; end if; ~RESULT <= ~SYM[2](~SYM[4]); end if; end process; ~FI end block; --end blockRam" } } , { "BlackBox" : { "name" : "Clash.Explicit.BlockRam.blockRamU#" , "kind" : "Declaration" , "type" : "blockRamU# :: ( KnownDomain dom ARG[0] , HasCallStack -- ARG[1] , Undefined a ) -- ARG[2] => Clock dom -- clk, ARG[3] -> Enable dom -- en, ARG[4] -> SNat n -- len, ARG[5] -> Signal dom Int -- rd, ARG[6] -> Signal dom Bool -- wren, ARG[7] -> Signal dom Int -- wr, ARG[8] -> Signal dom a -- din, ARG[9] -> Signal dom a" , "template" : "-- blockRamU begin ~GENSYM[~RESULT_blockRam][1] : block~IF~VIVADO~THEN type ~GENSYM[ram_t][8] is array (0 to integer'(~LIT[5])-1) of std_logic_vector(~SIZE[~TYP[9]]-1 downto 0);~ELSE type ~SYM[8] is array (0 to integer'(~LIT[5])-1) of ~TYP[9];~FI signal ~GENSYM[~RESULT_RAM][2] : ~SYM[8]; signal ~GENSYM[rd][4] : integer range 0 to ~LIT[5] - 1; signal ~GENSYM[wr][5] : integer range 0 to ~LIT[5] - 1; begin ~SYM[4] <= to_integer(~ARG[6]) -- pragma translate_off mod ~LIT[5] -- pragma translate_on ; ~SYM[5] <= to_integer(~ARG[8]) -- pragma translate_off mod ~LIT[5] -- pragma translate_on ; ~IF ~VIVADO ~THEN ~SYM[6] : process(~ARG[3]) begin if ~IF~ACTIVEEDGE[Rising][0]~THENrising_edge~ELSEfalling_edge~FI(~ARG[3]) then if ~ARG[7] ~IF ~ISACTIVEENABLE[4] ~THEN and ~ARG[4] ~ELSE ~FI then ~SYM[2](~SYM[5]) <= ~TOBV[~ARG[9]][~TYP[9]]; end if; ~RESULT <= fromSLV(~SYM[2](~SYM[4])); end if; end process; ~ELSE ~SYM[6] : process(~ARG[3]) begin if ~IF~ACTIVEEDGE[Rising][0]~THENrising_edge~ELSEfalling_edge~FI(~ARG[3]) then if ~ARG[7] ~IF ~ISACTIVEENABLE[4] ~THEN and ~ARG[4] ~ELSE ~FI then ~SYM[2](~SYM[5]) <= ~ARG[9]; end if; ~RESULT <= ~SYM[2](~SYM[4]); end if; end process; ~FI end block; --end blockRamU" } } , { "BlackBox" : { "name" : "Clash.Explicit.BlockRam.blockRam1#" , "kind" : "Declaration" , "type" : "blockRam1# :: ( KnownDomain dom ARG[0] , HasCallStack -- ARG[1] , Undefined a ) -- ARG[2] => Clock dom -- clk, ARG[3] -> Enable dom -- en, ARG[4] -> SNat n -- len, ARG[5] -> a -- init, ARG[6] -> Signal dom Int -- rd, ARG[7] -> Signal dom Bool -- wren, ARG[8] -> Signal dom Int -- wr, ARG[9] -> Signal dom a -- din, ARG[10] -> Signal dom a" , "template" : "-- blockRam1 begin ~GENSYM[~RESULT_blockRam][1] : block~IF~VIVADO~THEN type ~GENSYM[ram_t][8] is array (0 to integer'(~LIT[5])-1) of std_logic_vector(~SIZE[~TYP[6]]-1 downto 0);~ELSE type ~SYM[8] is array (0 to integer'(~LIT[5])-1) of ~TYP[6];~FI signal ~GENSYM[~RESULT_RAM][2] : ~SYM[8] := (others => ~IF~VIVADO~THEN~TOBV[~CONST[6]][~TYP[6]]~ELSE~CONST[6]~FI); signal ~GENSYM[rd][4] : integer range 0 to ~LIT[5] - 1; signal ~GENSYM[wr][5] : integer range 0 to ~LIT[5] - 1; begin ~SYM[4] <= to_integer(~ARG[7]) -- pragma translate_off mod ~LIT[5] -- pragma translate_on ; ~SYM[5] <= to_integer(~ARG[9]) -- pragma translate_off mod ~LIT[5] -- pragma translate_on ; ~IF ~VIVADO ~THEN ~SYM[6] : process(~ARG[3]) begin if ~IF~ACTIVEEDGE[Rising][0]~THENrising_edge~ELSEfalling_edge~FI(~ARG[3]) then if ~ARG[8] ~IF ~ISACTIVEENABLE[4] ~THEN and ~ARG[4] ~ELSE ~FI then ~SYM[2](~SYM[5]) <= ~TOBV[~ARG[10]][~TYP[10]]; end if; ~RESULT <= fromSLV(~SYM[2](~SYM[4])); end if; end process; ~ELSE ~SYM[6] : process(~ARG[3]) begin if ~IF~ACTIVEEDGE[Rising][0]~THENrising_edge~ELSEfalling_edge~FI(~ARG[3]) then if ~ARG[8] ~IF ~ISACTIVEENABLE[4] ~THEN and ~ARG[4] ~ELSE ~FI then ~SYM[2](~SYM[5]) <= ~ARG[10]; end if; ~RESULT <= ~SYM[2](~SYM[4]); end if; end process; ~FI end block; --end blockRam1" } } ]