在我看过的很多代码中,发现许多人在对变量赋初始值(或常量值)0时的做法各种各样,现在来分析下这几种情况对设计的影响。以对64位变量a赋初始值0为例:
(1)第一种:a <= 64’d0; 对于这种指定变量具体位宽的代码风格,我是直接否定的,因为它不利于参数化设计;
(2)第二种:a <= 0;(或a <= (0);)而对于这种直接赋一个0的做法呢,一般情况下对设计是没有影响的,而且还能进行参数化设计,但是在另外一种情况下是要注意的,就是例化子模块时对位宽大于32的变量赋0,就会出现意想不到的情况。现在举个简单的例子来证实这种情况。假设在子模块中对一个64位的输入变量取反后进行输出,而在顶层模块中将子模块输出变量的第33位进行输出,用于硬件led的测试。
顶层模块:
[color=blue !important][size=1em][color=blue !important]+ 查看代码 |