- Store each VHDL unit into a separate file except package header and body
- Signal assignments for renaming purposes should be avoided
- The names of clocks and resets should be unique in the whole design
- Soft macros: Data types at ports: std_(u)logic(_vector)
- Avoid custom data types (e.g., multidimensional arrays, records, enumeration types)
- Avoid gated clocks unless absolutely necessary
- Avoid latches unless absolutely necessary
- All outputs of synchronous modules should be registered
- Process only one clock in RTL-units
- Do not use the value of type’left for initializing of a signal or variable during reset
- Avoid unused ports, busses must be split accordingly
- Avoid homographs
- Do not define a subprogram for a subtype only
- Comment each process, each subprogram and global aspects
- Processes should be labeled
- Aliases are not recommended
- Bussed ports of width one are forbidden
- Use case-statements instead of if-statements when the conditions are mutually exclusive
- All signals and variables should be read at least once
- Static ports should not exist
- Use a separate library clause for each declared resource library
- Use a separate use clause for each declared package
- Maximum line-length is 100 characters
- Order of ports in entity, component and instance should be the same
- Do not have unused signals
- Minimize the number of signals of your sensitivity list
- Avoid unnecessary computations within loops
- Use sensitivity lists instead of wait statements
- Subprograms may not have any side effects
HDL Coding Guidelines - Part 6
Written by
Sunday, January 20, 2008
0
To Avoid common Warnings
Your comments will be moderated before it can appear here. Win prizes for being an engaged reader.