clash-lib-1.2.0: prims/vhdl/Clash_Explicit_ROM.json
[ { "BlackBox" :
{ "name" : "Clash.Explicit.ROM.rom#"
, "kind" : "Declaration"
, "type" :
"rom# :: ( KnownDomain dom ARG[0]
, KnownNat n -- 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 a"
, "template" :
"-- rom begin
~GENSYM[~COMPNAME_rom][1] : block
signal ~GENSYM[ROM][2] : ~TYP[5];
signal ~GENSYM[rd][3] : integer range 0 to ~LIT[1]-1;
begin
~SYM[2] <= ~LIT[5];
~SYM[3] <= to_integer(~ARG[6])
-- pragma translate_off
mod ~LIT[1]
-- pragma translate_on
;
~GENSYM[romSync][6] : process (~ARG[3])
begin
if (~IF~ACTIVEEDGE[Rising][0]~THENrising_edge~ELSEfalling_edge~FI(~ARG[3])~IF ~ISACTIVEENABLE[4] ~THEN and ~ARG[4] ~ELSE ~FI) then~IF ~VIVADO ~THEN
~RESULT <= ~FROMBV[~SYM[2](~SYM[3])][~TYPO];~ELSE
~RESULT <= ~SYM[2](~SYM[3]);~FI
end if;
end process;
end block;
-- rom end"
}
}
]