请问大家做的设计,有没有没有复位的寄存器?
在此请教一下大家,有没有什么情况,寄存器是不能有复位端的?
我个人觉得所有寄存器都应该要复位,但那位同事不复位的理由比较奇怪,说复位就会添加了逻辑,面积也会增大。(我觉得只是复位端口的扇出增加)即使他说的理由成立,但能让电路运行在一个确定的状态不是更有优先权吗?
具体问题具体分析。有些部分是可以不用复位的,因为他们可以自恢复。其他的自然是用复位最好了。
关于增大面积我就不知道了,我只知道可能会在复位信号上多一个反向器,扇出倒不用考虑太多吧?
复位的问题是这样的,xilinx 有推荐这个coding style,就是说有的打拍的移位寄存器可以不用复位。比如,一个输入的数据,你要把它打几拍,这个打拍的signal就不用去复位了。
这样的话,ngdbuild可以用xilinx 芯片内部的特有的一种slice(叫什么SL16M还是什么的,忘记了,你可以查下,或者问下他们的FAE)的Shift register去实现,可以省一些slice,提高占用率。而且,跟你说的一样,会省掉很多的route的走线资源。因为xilinx号称V6的全局走线资源还是相对不多的,所以能省则省吧。还有他们推荐的什么高电平复位,高电平CE,就是为了去省一个反相器。
3楼正解,但在ASIC 片子上基本没碰到过需要不复位的设计情况,这个可能也和设计风格有关吧
你只要试一下,写一个没有复位端的触发器,如果是ASIC用你的库综合一下看看综合出来的触发器有没有复位端就可以了,如果是FPGA救灾RTL viewer里看一下就知道了
因为sl16r没有复位逻辑,如果需要使用到sl16r的时候,就不能进行复位,否则综合的时候就利用不上这些shift register了,只能使用一般的register来实现。
寄存器没有复位端一般没有问题的,除非你需要指定寄存器的初始状态。
没有复位端确实可以减少面积,我们用的tsmc的库就有不带复位端的寄存器,这样做没有问题,但前提是保证能满足你的要求。
没有reset的寄存器,在ASIC里面是很常见的。如果这个寄存器参与了其他组合逻辑,那么一定要reset;否则大可不必reset。确实reset会增加gate。
我觉得在FPGA内影响不大吧。一般来说没有特殊要求的话还是加上的稳妥。
首先要明确一点,使用的是同步复位还是异步复位。从物理上讲,同步复位其实就是没有复位端的flop。从后端来看,同步复位和异步复位完全是两码事,后端必须把异步复位当作clock来处理。从ASIC设计规范来讲,异步复位必须在数字电路之外产生,内部逻辑只能产生同步复位。
广义上讲,控制逻辑都需要复位信号,而数据通路一般不需要。
不好意思,是我描述得不够清楚,我的本意是问“有没有没有复位的寄存器”,无论是同步或者异步。看了大家的回复,算是有了个端倪。
当然会有,后仿的时候注意一下就行
