packages feed

clash-lib-1.8.0: prims/vhdl/Clash_Prelude_ROM.primitives.yaml

- BlackBox:
    name: Clash.Prelude.ROM.asyncRom#
    kind: Declaration
    type: |-
      asyncRom#
        :: ( KnownNat n  -- ARG[0]
           , NFDataX a)  -- ARG[1]
        => Vec n a       -- ARG[2]
        -> Int           -- ARG[3]
        -> a
    template: |-
      -- asyncRom begin
      ~GENSYM[asyncRom][0] : block
        signal ~GENSYM[ROM][1] : ~TYP[2];
        signal ~GENSYM[rd][2] : integer range 0 to ~LIT[0]-1;
      begin
        ~SYM[1] <= ~CONST[2];

        ~SYM[2] <= to_integer(~VAR[rdI][3](31 downto 0))
        -- pragma translate_off
                            mod ~LIT[0]
        -- pragma translate_on
                            ;~IF ~VIVADO ~THEN
        ~RESULT <= ~FROMBV[~SYM[1](~SYM[2])][~TYPO];~ELSE
        ~RESULT <= ~SYM[1](~SYM[2]);~FI
      end block;
      -- asyncRom end