随着功能复杂度的快速提升,对芯片的要求也是随着提高,所以现在一款芯片的开发,往往需要数十人,长达几个月的共同开发才能完成。
因为Verilog HDL的语法相对开放,所以每个人开发的Verilog HDL之间的差异也是非常的大。但是一个设计团队之间,进行RTL模块的交叉review、相互调用是非常频繁的事情,所以为了增强RTL代码的可移植性,以及review的效率,我们通常在一个项目开始的时候,会统一整理一个RTL编码规则,里面的内容包括,命名的规则、单词的缩略原则,一些标准电路的常用写法等等。往往这个编码规则会写的很具体,但是个人认为,这是非常有必要的。在前面的五篇文章中,我们已经聊了一些,今天的文章,我就继续来聊一聊一般常见的规则。
采用合适的缩进来保证RTL代码的层次,提升可读性。对每一个RTL设计者来说,相信对缩进是非常熟悉的,在我看来,需要缩进的地方,主要有三处,分别是:
下面我们就来分别看看这三种情况。
大家知道,我们在always块里面进行编码时,一般通过begin-end的关键字来区分程序块,同一个begin-end里面的语句,我们看做是一个块内语句。例如:
reg[1:0] a;
reg[1:0] b;
always@(posedge clk or negedge rst_n)
begin :pos0
if(~rst_n)
begin:pos1
a <= 2'b00;
b <= 2'b00;
end
else
begin:pos2
a <= 2'b01;
b <= 2'b10;
end
end
在上面例子中,我们看到整个always块实现了对register a,b的初始化和赋值,里面分别有三对begin-end,pos0,pos1,pos2,pos0对应整个always块,pos1对应的是对register a,b的初始化,pos2对应的是对register a,b的赋值。我们在每个always块里面,都通过适当的缩进来凸显出这三对begin-end的之间逻辑关系。
这样做的好处是显而易见的,在阅读过程中,我们除了可以非常舒适的阅读感受之外,更加重要的是,可以根据缩进量,来判断RTL代码的相互操作关系,假如是严格对齐的多行代码,那么我们就可以认为他们的控制逻辑是相同的,会同时改变状态,这样大大减少了分析多行代码的时间。
今天我们只是介绍了缩进的第一类情况,在后面的文章中,我将继续介绍缩进的另外两种情况,欢迎大家和我讨论。
页面更新:2024-05-04
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号