I have the following line of code: constant DPRAM_DEPTH : integer := integer(ceil(log2(real(NUM_SLOTS)))); When NUM_SLOTS equals 0, I want my DPRAM_WIDTH to be 0, however log2 of 0 is negative infinity so I get an invalid result. How can I obtain 0 when NUM_SLOTS is 0, and still get the functionality I want out of that snippet of code? Thanks
If you just need this to define a constant, you can do something like this:
function log2ceil(m : integer) return integer is begin for i in 0 to integer'high loop if 2 ** i >= m then return i; end if; end loop; end function log2ceil; constant x : integer := log2ceil(16);
This way, it will not use up any logic during synthesis.