process ( clock ) is
begin
if rising_edge (clock) then
y ( to_integer ( pointer ) + 8 downto to_integer ( pointer ) ) <= x ; -- pointer isn't a constant
end if ;
end process ;
Are you still using this forum as a VHDL compiler?
yes it's legal VHDL. But might not work as expected as a synthesisor (ive seen odd results from quartus - but that was a few years ago).
Not today
This time my question comes after the fact.
I have a synthesis process with a similar block of code stuck at >45 minutes (Synplify, not Quartus).
Logic wise, I'm asking the tool to implement a bunch of muxes - nothing special...
I remember however that there's a VHDL rule that states that the boundaries on the right side of "downtown" must be static or something like that...
Can you remind me please about it?
Its legal VHDL - otherwise it wouldnt have got past the elaboration phase (and it wouldnt be 45 minutes in).
Slow synths often come from large memories that didnt infer ram primitives.
Why not try running the synth with a case statement instead to see if this actually is the problem?
I know. I'm not impling that this is the case here...
I simply remember that VHDL has restricitions on using non constant values for boundaries under some circumstances. I forgot the exact restriction - do you remember it?
I remember however that there's a VHDL rule that states that the boundaries on the right side of "downtown" must be static or something like that...
Can you remind me please about it?
I simply remember that VHDL has restricitions on using non constant values for boundaries under some circumstances. I forgot the exact restriction - do you remember it?