尽可能避免在RTL中调用门级电路

电子说

1.4w人已加入

描述

随着功能复杂度的快速提升,对芯片的要求也是随着提高,所以现在一款芯片的开发,往往需要数十人,长达几个月的共同开发才能完成。

因为Verilog HDL的语法相对开放,所以每个人开发的Verilog HDL之间的差异也是非常的大。但是一个设计团队之间,进行RTL模块的交叉review、相互调用是非常频繁的事情,所以为了增强RTL代码的可移植性,以及review的效率,我们通常在一个项目开始的时候,会统一整理一个RTL编码规则,里面的内容包括,命名的规则、单词的缩略原则,一些标准电路的常用写法等等。往往这个编码规则会写的很具体,但是个人认为,这是非常有必要的。在前面的五篇文章中,我们已经聊了一些,今天的文章,我就继续来聊一聊一般常见的规则。

RTL推荐编码规则

门级电路的使用,我们一定要特别注意。在RTL编码过程中,很多时候我们出于时序或者其他的需要,可能需要调用门级电路,那么门级电路是不是真的那么好用,可以随意调用?答案不是的。

门级电路的特点是可读性不强,难于阅读,从而导致后期维护、修改的困难很大,我们来看一个门级电路的例子。

and u_2x2and (out, input1, input2);

上面就是一个与门电路的实例化调用,我们再来解释一下这个调用方式以及门级电路的含义,首先是门级电路的类型,紧接着是实例化名,括号里面是端口名,包括input端口和output端口。具体到这个例子就是,调用一个2输入与门and,实例化名是u_2x2and,括号里面包括output端口out,以及两个输入端口input1和input2,写成RTL的形式就是out = input1 & input2,另外需要注意的是,端口中的input端口和output端口的顺序一定要和所调用门级电路中的顺序相对应。

从上面的例子可以看出,门级电路在使用的时候,因为并没有逻辑表达式,只是调用工艺库或者其他库里面的固有电路,所以如果大量调用这类门级电路进行电路描述,则一定要增加阅读以及维护的复杂度。并且因为很多门级电路是在某个工艺库下面特有的,所以如果调用这类门级电路,就只能在这种工艺下面使用,不能移植到别的工艺,这基本上是不能允许的。

所以如果我们一定要调用门级电路的话,就必须调用独立于具体工艺库的门电路,这样便于后面的电路移植。一般我们常见的独立于某种工艺的如Synopsys的GTECH库,里面包含了很多常用的门级电路,可以方便调用。

小结

门级电路可以作为RTL建模的一种补充方式可以调用,但是我们在编写RTL的时候,还是要尽可能避免,因为Verilog表达式确实更容易阅读和维护了。

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

全部0条评论

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

×
20
完善资料,
赚取积分