> This virtually guarantees that you get the D flip-flop and
> combinational logic you are expecting. I generally recommend the two
> process model for synchronous designs anyway, because it enforces the
> idea of the clock explicitly.
The single clocked process is pretty clear that there is a clock and doesn't
require any extra gymnastics about remembering to have default assignments
like 'A_d <= A_q'.
> It also makes the demarcation between combinational and registered logic
> clear.
Not sure why this demarcation is important to you. But when writing code
that is intended to be synthesizable, as a general rule I only have clocked
processes, the combinatorial logic are not in a process at all. When you
can do that it totally avoids the problems of unintended latches due to
missing cases or missing signals in the sensitivity list. For the few cases
where it really is clearer to use statements only available in a process
(i.e. if/case) then I'll use a process knowing that I need to inspect that
code quite closely for just those issues, the FF processes do not need that
inspection.
For FFs you also don't have double the number of signals than you really
need (i.e. A_d and A_q....'almost' every time I'm really only interested in
the output of the FF, not the input). Cutting down on clutter in terms of
how many signals there are in play has real value as well.
But single versus dual process conventions seems to be more of a religion in
itself
KJ