[Synthesis][VHDL] HowTo prevent Removal of Registers ...

Aug 19, 2004 2 Replies

Hi all,



in order to comply with the timing requirements, I did explicitly replicate an output register.


-- Code Snip Below



I2 : a_reg generic map ( n => 20 ) port map ( clk => clk, din => addro_i, rst => rst, dout => addr_a_out);



I3 : a_reg generic map ( n => 20 ) port map ( clk => clk, din => addro_i, rst => rst, dout => addr_b_out);



Register instances are sourced from the very same signal. However synthesis tries to be 'clever' and removes one register instance, making it impossible to have them in the IOB section. Any advice how I can avoid this removal without going 'to-deep' and instantiate IOB-Register Primitives as 'Black-Box-Instances'.



Thank's



Markus


there are several ways... but it depends on your tool chain.... VHDL "supports" attributes to loc various things you might have to use a mixture of 'keep' to stop nets getting optimised away and 'iob' constraints to force the flip flop into an io block. I don't think that XST supports 'keep' constraints... but other tools do.

You will need to look up the documentation to find how to use them

Simon

Hi,

XST support the keep and keep_hierarchy constraint, you will find them in the constraint guide. You can also use the save_net_flag (S) constraint to prevent the synthesis tool to remove your second register.

V> Hi all,

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required