It seems to get out of hand when you design a 2 process state machine with 100+ states in the combinatorial process. The sensitivity list can get lengthy but the only way to keep the synthesizer from nagging is to add every right-hand-side signal.
The usual advice here is "don't write two-process state machines (unless you have a really good reason to do so, and even then think about it some more)." Forgetting to assign to each left-hand-side in each state results in latches. The
process(all) construct lets you not worry about the sensitivity list but you still have to make sure that you assign everything in every state.
And, on a different matter, provide a default value for every left-hand-side signal. This is where I have had the most problems. The state machine hangs because there is no value for a signal even though the next-state is clearly defined. Basically, I came up with the idea that 'if it doesn't work, look for missing default values first!'. This is another place where it is easy to mess up when adding additional logic and output signals.
I'm afraid this is both a tools problem and a device problem. VHDL allows you to write initializers for every signal in your design when those signals are declared. (My Verilog is out-of-date; I assume it has a similar mechanism.) In simulation, it's obvious what happens to those signals.
But what happens when the synthesizer gets ahold of them? That all depends.
Recall in VHDL the usual initializer:
signal foo : std_logic := '1';
For example, the Xilinx synthesizer (even in ISE, now still in Vivido) will take the initializer and use it to reset or preset each flip-flop in the design
at configuration time. Xilinx recommends never using an asynchronous reset in designs using their devices, so this guarantees that your flip-flops will have a reasonable value immediately after configuration, before any synchronous reset you might use. (What we do here is to use a reset supervisor chip to drive the FPGA's PROGRAM input; release of PROGRAM starts configuration and will basically be a chip-wide reset.)
Do other tools and devices support using initializers in this manner? Well, the Actel/MicroSemi devices do not. These devices require an explicit reset to get the to your desired default state. That is, at configuration (these parts have flash-based configuration so that's immediately after power-up) the flip-flops have an unknown state which is
not controlled by the VHDL initializer. And worse, at least with the Pro-ASIC3 devices, the flip-flops do not inherently support a synchronous reset (if you code one, you'll get a mux in front of your flip-flip with one side set to the reset/preset value and the other comes from the logic going into it). So you need to provide an external asynchronous reset (which should should synchronize and use that to drive the flip-flops's async reset input) to get everything ready.
So at least in the Actel case, you can't use initializers.
But in that case, since the design requires an async reset, the test bench should provide one. It doesn't have to be very long, either. This will solve your simulation's "lack of initializer" problem, assuming that all signals that require a reset get one.
As to what Intel wants, it's been awhile since I used one of their parts.