Jos De Laender wrote:
This was indeed my remark after reading previous paragraphs : grouping
like you say (that's in a structural way) should in my opinion be done
by using entities. Is there by the way any reason why using multiple
processes would be more overseeable than multiple entities ?
Sometimes you have to model every flipflop manually - including very
special async set/reset and the normal D-type input (comb. logic). Often
two flipflops not very similar and have nothing more in common, than
maybe they are groupd into a bigger vector (that is read by another
component in parallel).
If you would put such two flipflops into on process, it is difficult to
see what part belongs to the one ff and what part to the other and
easily you may add unwanted overhead.
For combinational logic this makes really a difference, because you have
to assign a value (at least don't care 'X') in every possible branch to
avoid modelling a latch. If you put some similar, but not equal signals
into one process, it may be, that your if/case-branches become ugly.
Reading you design some days or weeks later may be not really nice.
For the synthesis breaking the desing into smaller processes means doing
a part of the synthesis manually. Usually the best advice for synthsis
is a clear description without to much manual modelling, but if it is
really clear what you want to model, it helps the synthesis tool a
little bit find out, what exactly you have described. For example if you
just write a<=b+c; somewhere in a process within one branch of
if/case-statements and a<=b+d; in an other the synthesis tool has two
options how to implement it
* two adders followed by a mux
* a mux followed by an adder
Obviously the 2nd option occupies less area. Are you shure, that every
synthesis tool, that will be used with your code will choose the 2nd
alternative?
Ok - often (yes - sometimes very often ;-)) the designer does not choose
the best solution and the sythesis tool is smarter. Then it might be not
the best option to break everything down, but on the other hand, if you
can break it down, then the synthesis tool will do it too and
additionally you really know whats going on in your design. (It is not
just a bunch of magic gates that do the job, which makes bugtracking and
bug-avoiding easy.)
Ralf