Although I'm somewhat proficient in writing VHDL
there's a relatively basic question I need answering: When to break down VHDL
?
A basic example: Say I was designing an 8bit ALU
in VHDL
, I have several options for its VHDL
implementation.
Simply design the whole ALU as one entity. With all the I/O required in the entity (can be done because of the IEEE_STD_ARITHMETIC library).
--OR--
Break that ALU down into its subsequent blocks, say a carry-lookahead adder and some multiplexors.
--OR--
Break that down further into the blocks which make a carry-lookahead; a bunch of partial-full adders, a carry path and multiplexors and then connect them all together using structural elements.
We could then (if we wanted) break all of that right down to gate level, creating entities, behaviours and structures for each.
Of course the further down we break up the ALU
the more VHDL
files we need.
Does this affect the physical implementation after synthesis and when should we stop breaking things up?