解析PCIe第50万行代码的风格

描述

来,看看S家的第509525行PCIe代码,一个寄存器在一个触发信号里面赋值两次,第一句所有bit直接全部赋值0,第二句部分低bit赋值,信号本身是9:0,第二句赋值那个是6:0的宽度。尊贵的ICer,您觉得这样可以吗?

编译

作为当代IC designer,看到这种代码风格首先视觉冲击就很大,辣眼睛。估计就没有做lint,是不是很像多驱动的罪名?跑一下lint看看报错情况。

但必须说明的是,这是S家的老版本代码了,硬核功能OK的,仿真行为也正确。所以这种代码风格的设计意图是后一句覆盖前一句,前一句先把所有bit赋0,后一句再部分低位bit赋值,那么各家综合工具编译会理解错设计者意图吗?个人强烈不推荐这种写法,虽然SV语法也支持这种,各家综合工具编译结果可能有偏差,况且前面的高位赋0,综合工具直接优化掉0的部分,那写出来干嘛?为了接口位宽不变,只是里面用的部分按参数定义位宽吗?还不如直接参数定义总位宽即可,这个就具体问题具体分析,小编造一个简单实例:

实践出真知,写一个代码实践下:

编译

spyglass运行lint检查:

编译

代码第45行报出来2个warning,我们来分别解析下两个warning:

(一)第一个warning:STARC05-2.2.3.3,用以发现initial value assignments to flip-flops in always constructs,我们知道,……下文请移步知识星球。

审核编辑:汤梓红

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分