1、高质量Verilog代码的几个要素
高质量的verilog代码主要包含以下几个要素:可读性、功能、性能、标准化、稳定性、可定位。
标准化:iterlaken MAC PCIE 这些模块的设计必须要符合协议标准,能够与其他厂商的产品进行正常对接。
可读性:代码是容易阅读,是否容易理解原理。
功能:功能是否正确,功能点是否全面,是否灵活可配置。
性能:读写、传输速率是否达标
稳定性:跨时钟等是否处理细致,异常情况代码是否能够保持稳定,是否能够自恢复,状态机是否会卡住。
可定位:定位手段是否添加全面、遇到故障,是否能够快速定位。
2、Verilog:可读性
代码是否容易阅读理解,需要注意代码格式、关键信号命令、尽量多添加注释
代码格式:代码编写需要采用普遍的格式、如空格的插入、if else的位置放置、特别是复杂的逻辑判断,该断行的需要断行,该添加括号的地方添加括号。
信号命令:信号命令需要注意:如请求信号以req命令,响应信号ack,流控信号fc,信号命令需要通俗易懂,采用常见的缩写。
注释清晰:一定要多写注释,很多代码时间长了,自己都看不明白了,就算能看明白,也需要花费不少时间
3、Verilog:功能
代码功能点是否全面。
各个功能是否能够正常实现。
各功能是否灵活可配置,如是否具有使能开关
4、Verilog:性能
模块性能是否达标,最差速率是否满足需求,最大速率是否达标。是否能够及时处理突发数据。
5、Verilog:标准化
模块设计是否符合标准协议,如IEEE802.3 MAC 模块设计是否符合标准,PCIE 是否能够与其他厂商的PCIE进行对接传输数据。如interlaken接口是否能够与FPGA的interlaken进行正常对接。
6、Verilog:稳定性
代码的稳定性需要关注常见的spyglass lint cdc、跨时钟信号、代码是否能够自恢复。
常见spyglass lint检查:信号位宽是否匹配,技术是否会溢出、是否产生了latch等等
跨时钟:跨时钟的信号是否都进行了同步处理、单bit、多bit信号是否正确同步。电平单bit、多bit数据、单bit脉冲、复位信号的同步方式各不相同,是否都正确同步了。信号同步的max_delay 延时是否符合要求。
自恢复:异常情况下,模块是否能够自行恢复,当异常情况消失后,模块是否够能够正常工作。异常情况有:
1)不符合规定的信号输入:输入信号eop_in/sop_in/vld_in/error_in的有效状态有一定的规律,不符合规律的输入信号是否会导致模块无法正常处理后面正确的输入数据。
2)状态机没有响应:状态机跳转信号没有响应,是否会导致状态机卡死,无法跳转到IDLE状态。
3)关键信号异常跳变:偶发性强电磁反应导致的信号跳变是否会导致模块一直无法正常工作。
7、Verilog:可定位
常见的定位手段是否添加全面,比如:各类统计计数、关键信号状态是否可读、中断信号添加是否全面。
统计计数:模块进入数据包多少,输出数据包多少。完成了多少次xx操作。
关键信号可读:状态机当前状态要求可读,关键信号要求可读
中断:fifo和ram的写溢出、空读、ECC、parity要求接入中断。
版权声明:本文为CSDN博主「IC小鸽」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/icxiaoge/article/details/88604903