电子产业一站式赋能平台

PCB联盟网

搜索
查看: 21|回复: 0
收起左侧

硅芯思见:【194】如何写出满头冒水的RTL代码

[复制链接]
匿名  发表于 昨天 15:02 |阅读模式
虽然目前世界上都在推行可读性好、可维护性好的RTL编码规则,一大堆公司机构也都推出了各种各样的编码规范,网上一搜索各种好的编码规则规范一箩筐,但是当你实际打开代码后,你会发现理想很丰满,现实很骨感,你看到的代码简直比散文还要散。下面给出一些编写散装代码的建议。
1 注释中英结合
注释主打一个老外看不懂,国人也看不明白,也可以直接各语种不定长切换,反正这代码写出来也么指望让别人看懂。
GOOD
chip udut(); // zhun bei test de di you t
BAD
chip udut(); // chip instance
2 命名尽可能的浓缩
写的越多,给读你代码的人的信息也就越多,为了尽可能的晦涩难懂,我们键入的东西越少,把腾出来的时间留给读代码的人去思考
GOOD
reg [31:0] i;
BAD
reg [31:0] data_in;
3 标识符混合命名风格
为了体现代码命名的多样性,标识符也需要高低起伏沟壑万千。
GOOD
reg [31:0] rEsetN;
BAD
reg [31:0] Reset_n;
4 代码能写成一行绝对不分行
相关过程语句块中的代码要尽可能写在一行。
GOOD
always@(posedge c) if (set == 1)begin sig1 :sig5 end
BAD
always @(posedge clk) begin
if(rst == 1’b0) begin
dout
end else begin
dout
end
end
5 冗余代码
增加一些绝对不会运行到的代码。
GOOD
bit sig;
if (sig == 1’b0) begin
...
end else if(sig == 1’b1) begin
...
else begin
... // 冗余
end
BAD
bit sig;
if (sig == 1’b0) begin
...
else begin
...
end
6 条件嵌套层数尽可能多
如果代码一定要将各种判断条件单独列出来,逐一嵌套判断,最好每层嵌套中间夹杂一些其他语句。
GOOD
if (condition1) begin
if(condition2) beign
if(condition3) begin
...
end
end
end
BAD
if (condition1 || condition2) begin
...
end else begin
...
end
7 混合缩进
Tab键和空格穿插使用,可以增加代码的高低不平。
8 方法、状态机能写多长写多长
不要将整体逻辑分成一些小的代码块,尽可能把相关代码都写在一个源文件中,单一文件上万行也不成问题,能一次性写成上百万行的网表水平,更能体现编码水平和工作量。
9 减少代码的复用
代码复用,会明显减少你的工作量,所以能重复绝对绝对要重复。
10 使用全局变量
面向设计全域共享变量,广泛使用全局变量,秉承你的就是我的原则。
11 不加入任何debug代码
设计运行错误,也不能报出任何问题,因为其他人不需要了解,主打一个悄无声息。
12 /**/注释
/**/注释跨多行添加在代码右侧,主打有效代码能干掉多少是多少。
GOOD
ecc[0] = dat_in[0] ^ dat_in[2];/* encode
ecc[1] = dat_in[1] ^ dat_in[2];*
ecc[2] = dat_in[0] ^ dat_in[1];*/
ecc[3] = dat_in[1] ^ dat_in[4];
BAD
/*encode*/
ecc[0] = dat_in[0] ^ dat_in[2];
ecc[1] = dat_in[1] ^ dat_in[2];
ecc[2] = dat_in[0] ^ dat_in[1];
ecc[3] = dat_in[1] ^ dat_in[4];
13 敏感信号列表能省就省
GOOD
always begin
reasult = d1 + d2;
end
BAD
always @(d1 or d2)begin
reasult = d1 + d2;
end
14 逻辑折叠
尽可能使用位运算和归约操作符嵌套使用
GOOD
assign dout = (|(dat_in & ‘hAA)^^{5{(&a)}})
BAD
assign dout = sel ? (dat_in &’h55) : (dat_in &’hAA);
15 代码中使用换行符
GOOD
`define STATE \
2’b11
BAD
`define STATE 2’b11
16 代码无组织管理
代码尽可能分散在多个不同层次不同的文件夹中,我找不到别人也休想找得到,保密效果杠杠的。
总之,我们的目标是,没有最难懂的代码,只有更难懂代码!
                     

















本文纯属学习之用,欢迎指正文中不足,
封面图片若有侵权,请及时沟通!
历史短文可在公众号下方菜单选择“历史消息”查看!
  















本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条


联系客服 关注微信 下载APP 返回顶部 返回列表