Altera_Forum
Honored Contributor
8 years agoAcademic Q: Why doesn't Quartus Synthesis Allow Some Restricted Classes?
Was pleased to discover SV supports scalable tasks/functions to the extent that if you bury it in a class you can set the 'type' by parameter.
Why then can't this be synthesized? For example, why can't I synthesize this: class generic# (type T=logic);
static function int find_first_msb(input T vector);
for(int i=$bits(vector)-1;i>=0;i--)
if(vector)
return i;
return -1;
endfunction//find_first_msb
endclass
...
msb = generic#(uint32)::find_first_msb(decimal); Rather, I have to create a fixed-width version. function int find_first_msb(input uint32 vector);
for(int i=$bits(vector)-1;i>=0;i--)
if(vector)
return i;
return -1;
endfunction//find_first_msb There's nothing to prevent this limited (but useful!) functionality from being synthesized. ~SysTom