Some rules for VHDL coding and implementation:

 

·         When starting a project, use the most recent design tools only

·         Try to keep up with new design tools

·         If required to freeze the

·         For reason of compatibility, do not assume the use of graphical tools for representation of code, make sure your VHDL plain text is humanly digestible

o   Do not excessively partition your code in separate entities and separate files

o   Do not use large numbers of processes. A single process per clock should do (see also latency), with a maximum of two conditional sections dependent on the clock

§  If rising_edge …,  If falling_edge …

§  Do not use clock’event

·         Use automatically generated code where appropriate

o   Do not modify the generated code, since it might have to be regenerated for new design software versions

·         Use fully synchronous code only

o   Identify clocks, make sure they

o   Capture all input signals on flip-flops

o   Register all output signals on flip-flops

o   No asynchronous paths

o   No latches

o   Minimize number of clocks

§  Use clock enables rather than divided clocks

§  If necessary, derive secondary clocks with help of clock managers only

o   Cross clock domains with help of well documented IP only, do not write your own synchronizers

·         Use processes dependent on a single clock only

·         Use timing constraints on all clocks

·         Follow the L1Calo coding rules

·         Signals, variables, comments in (meaningful) English language only

·         For any code violating above rules, consult your colleagues!

Finally: read and understand all warnings generated by your synthesis and implementation tools !