来,看看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,我们知道,……下文请移步知识星球。
审核编辑:汤梓红
-
寄存器
+关注
关注
31文章
5332浏览量
120191 -
PCIe
+关注
关注
15文章
1232浏览量
82537 -
代码
+关注
关注
30文章
4767浏览量
68468 -
编译
+关注
关注
0文章
655浏览量
32836
原文标题:解析PCIe第50万行代码的风格
文章出处:【微信号:全栈芯片工程师,微信公众号:全栈芯片工程师】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
向代码致敬,寻找你的第83行
嵌入式C代码怎么实现?
800万行代码的鸿蒙系统,在世界上处于什么水平?
【HarmonyOS】800万行代码的鸿蒙系统,在世界上处于什么水平?
微软发布了使用最多的应用程序之一——Windows 计算器的源代码
涛思数据开源TDengine,10多万行C代码,登顶GitHub!
移植了20万行代码才发现树莓派Pico双核MCU竟是三无产品?是真香还是真不香?

什么样的Verilog代码风格是好的风格?
为什么 MySQL 单表不能超过 2000 万行?

再创新高!深开鸿OpenHarmony社区代码贡献量超过200万行!

评论