VHDL编码风格
本编码风格基本基于VHDL-2008和Verilog编码风格指南,并结合多年设计经验的总结
A.1基本原则
知道状态在哪里 设计中的状态的每一位都应该被明确声明。在此风格中,所有状态都要明确是在触发器或者寄存器组件中,所有其他部分是纯组合逻辑。当在“if rising\edge(clk)then”声明中写入时序语句时,在一个进程内采用这一原则可以避免很多问题。当不是所有信号的所有值都被分配在条件语句的分支中时,这一原则使得检测潜在的锁存更容易。
知道设计实体会被综合成什么 当编写设计实体时,应该知道它对应着什么逻辑。如果设计实体时基于结构描述的,将其他部分连接在一起,结果时可预测的。小的行为设计实体和算术块也是可预测的。大型的行为设计实体,其综合结果是不可预测的,应该避免。
代码的可读性 在项目开发过程中,设计实体可能需要修改。修改的难易程度与设计实体的可读性有很大的关系。功能应该明确,例如使用case或“case?”来描述一个针织代码。当修改可读性好的实体时,将发现这样会更容易理解设计的功能并对其进行更改。如果设计实体使用奇怪的编码和隐喻名称,理解代码将边的很困难,特别是当此代码是很久之前写的。
保持警惕 想想你设计的实体可能会出什么问题。输入和输出的边界情况是什么?明确每种情况都是可以处理的,包括对必须维护的常量和可以被检查出的错误条件的断言。
让综合工具帮助设计 现代逻辑综合工具在优化小型组合设计实体(最多约10个输入)方面表现很好。在优化算法电路方面它们也做得很好。除非是非常罕见的情况,否则手动优化这些设计是没有意义的。设计实体描述应该是直接对行为进行描述,让工具做它们擅长的事情。
了解综合工具不能做的事情 现代综合工具不擅长进行高层次优化。它们不了解如何对逻辑进行因子