这段代码会综合出latch吗 总感觉怪怪的
时间:10-02
整理:3721RD
点击:
- localparam N = 4;
- reg [4 -1:0] maxTemp;
- integer i;
- always @ *
- begin
- maxTemp = 0;
- for (i = 0; i<N; i=i+1)
- if(maxTemp<Sum[4*i +:4])
- maxTemp = Sum[4*i +:4];
- end
本来就是组合逻辑,这种写法省事,不过好像这堆组合逻辑有点长。
第7行去掉 怎样
对 问题就在第七行,如果去掉 必然会出现latch。事实是 我综合之后这段代码并未出现latch,但总感觉怪怪的
请问 有更好或者你认为更合理的写法吗 这里要求组合逻辑来取出最大值 谢谢
function的使用,一般单独包装成function,放在模块下方,在某些场合下挺好用的,我最近写了几个function。
这个写法很合理啊,我也喜欢这种写法,省事,只是提醒下这个组合逻辑很长。这种需要综合软件去翻译,可能会影响综合速度或者形式验证速度,我是猜的。累加求和的组合逻辑也是这样啊。比如
always @ (*)
sum =0;
for()
sum=sum+d[i];
所以我没看出你的代码有什么问题,就是不会有锁存,所以我没什么想说的就提醒一下这个组合逻辑很长。如果可以切开来,比如两两并行比较。
至于第七行,可以这么理解,假设你不给初始值,那么他可以是任何值,除非综合仿真工具会有一种default设定如果你不给初始就默认为0,那样也没事,但是万一没有,这种组合逻辑没初值肯定有问题。至于综合出什么就不知道了
明白了 谢谢你的耐心回答 包括楼中其他几位
