对初学者关于Coding Style的建议
扫描二维码
随时随地手机看文章
为了避免走弯路,编者特别提醒逻辑设计的初学者以下几个问题:
FPGA/CPLD、ASIC的逻辑设计所采用的硬件描述(HDL)语言是同软件语言(如C,C++等)是有本质区别的!虽然Verilog很多语法规则和C语言相似,但是Verilog是硬件描述语言,它的本质作用在于描述硬件。虽然它使用了C语言的形式,但是Verilog描述的硬件的抽象,它的最终实现结果是芯片内部的硬件电路。所以评判一段HDL代码的优劣的最终标准是:其描述并实现的硬件电路的性能(包括面积和速度两个方面)。初学者,特别是由软件转行的初学者,片面追求代码的整洁,简短,这是错误的!是与评价HDL的标准背道而驰的!正确的编码方法是,首先要做到对所需实现的硬件电路“心有成竹”,对该部分硬件的结构与连接十分清晰,然后用合适的HDL语句表达出来即可。
HDL语言描述是分层次的。其中比较重要的层次有系统级(System)、算法级(Algorithm)、寄存器传输级(RTL)、逻辑级(Logic)、门级(Gate)、电路开关级(Switch)设计等。由于综合器的编译与优化功能越来越强大,目前一般的FPGA设计代码都采用RTL级描述。RTL代码的最大特点是“可综合”。我们这里讨论的Coding Style也是主要针对RTL级代码而言,其它层次的代码风格并非本次讨论的主题。
虽然目前综合器越来越强大,其综合优化效果也越来越显著。但是读者必须明确,综合器的优化程度和正确性最终取决于设计的Coding Style的优劣。被动的依靠综合器的优化能力是大错特错的。好的设计能使综合器发挥最大的优势,得到最佳综合优化效果;坏的设计不但综合优化效果大打折扣,甚至造成不同的综合器得到差异巨大的综合结果。本专辑中“为什么XST与Synplify的综合结果不一样?”一文就讨论了代码风格对综合结果的影响。