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:
1 | function log2ceil(m : integer) return integer is |
2 | begin
|
3 | for i in 0 to integer'high loop |
4 | if 2 ** i >= m then |
5 | return i; |
6 | end if; |
7 | end loop; |
8 | end function log2ceil; |
9 | |
10 | constant x : integer := log2ceil(16); |
This way, it will not use up any logic during synthesis.
Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
Log in with Google account
No account? Register here.