第 1 页 共 7 页 VHDL 常见错误分析 一、较好的 RTL 代码风格 1、可综合 用 HDL 语言编程,应时刻牢记所写代码能否反映期望的硬件及其功能,而且电路结构是可实现的
为保证设计的可综合,代码中的指令和数据类型必须是综合工具所支持的,同时代码的结构也必须使综合得到的硬件功能和代码所体现的功能一致
2、简洁清晰,易于理解 最易懂的写法也就是效率最高的写法
使用一致的命名规则
3、注释清楚 4、模块化程度高,易于修改、移植和复用 需要将代码中的常数写成参数化的形式
5、模块例化时,为清楚起见,使用显示的端口说明 6、为了避免很大的路径延时,不要使用特别长的嵌套的 if 结构
7、资源共享 资源共享的主要思想是通过数据缓冲器或多路选择的方法来共享数据通路中工作单元(为了提高速度,对于关键路径不要使用该技术
一般在算术单元和关键路径中不采用资源复用
) 8、避免使用门限时钟 门限时钟可能会引入短脉冲干扰,增加时钟延时、时钟扭曲以及其他一些后果
9、代码中不要带有延时信息(行为级描述与 testbench 例外) 10、进行数学运算时,要有好的顺序和分组
好的顺序及分组可能影响综合结果
ADD=A1+A2+A3+A4; --三级加法,较差 ADD=(A1+A2)+(A3+A4); --二级加法,较好 为了符合时序要求,综合工具能重新构造算术单元
我们还是要按所需结果书写代码
11、代码中不要带初始化赋值语句
综合工具会忽略掉这种初始化的语句,所以会导致综合前后仿真结果不一致
二、对可综合设计的一些建议 1、在电路内部应尽量避免使用三态门,但是在电路边缘引脚处可以使用
2、内部总线应该尽量避免使用双向总线,一般使用单向总线
3、模块的划分应该尽量以寄存器为边界
4、应该尽量避免使用锁存器,因为有可能传输毛刺,而寄存器不会传输毛刺
5、时序逻辑应该