critical path都是因为连线延时占到路径延时的80%,怎么改善?
约束!
不加约束,通过在路径上插入寄存器能不能一定改善slack?
在路径上插入寄存器未必会有效果吧,连线的延时占到80%应该是由于你的布局不好,或者你在综合的时候应该把这些考虑进去。
加入area constrain.把一些大模块固定在一个范围内。
这种对输入输出尤其重要,输入输出逻辑应该尽量靠近IO
优先考虑2楼的设定约束。
因为,只要满足了你的约束条件,合成工具大多不做继续的优化了。
如果设定约束不管用,插入FF就是下一个选择了。
要是满足设计的时间要求,就没有必要再优化了。哈哈
要是已经按设计要求指定了约束条件,结果出错了。嘿嘿
直接用插入FF的方法吧。
我先开始是觉得插入寄存器是不起作用的,还有可能恶化slack。我的FPGA的资源占用60%作用,大部分的负的slack的连线延时过大是出现在,
内部逻辑和memory之间的连线上。在FPGA中,memory块的位置相对固定,综合工具会尽量安排使用memory近的寄存器,如果这样连线延时过大的话,
那么我觉得,插入寄存器会更恶化连线延时,因为在更浪费资源的情况下,寄存器离memory会更远吧。
大家觉得呢?我也不是很肯定我得想法!
有点儿清楚你的意思了。哈哈
60%的使用率并不是很高的拉。
现在的FPGA不到90%以上,不会出现你想象的布线紧张的吧。
因该是你的memory输出的时候没有用FF吧。(我猜的)
memory块里面就有输出FF的。
memory块中的FF已经用了。
我在memory的入口和出口处各FF了一拍,非但没有改善,反而恶化了:(
手动布线或者加驱动
如果memory输出FF到下一个FF之间的组合电路不是很大的话,可能是下一个FF被约束到很远的地方了。可以考虑在memory的输出FF到下一个FF之间插入FF,或者简单地在memory的输出FF之后再加一个FF,因为memory的输出FF是固定位置的。
看看布局图 是否两个模块之间相隔太远
另: 在逻辑延时 占主要作用是,可采用添加寄存器 分散组合逻辑 来改善 时序,
不是随便添加 寄存器都能改善时序的
从布局布线的图上看,是离得比较远,如果不能通过加寄存器打拍来改善的话,那只能通过约束来加以改善了,是这样吧?
是加FF还是修改约束条件还要看具体设计来决定比较好。
假如你的布局布线离得比较远的原因是为了保证输出端口的延迟,那还是加FF比较好吧。强加约束条件,或改变布局会导致输出特性恶化。
布局布线离得远是因为你的memory输出FF位置是固定在RAM模块的输出位置,没有起上作用吧。
碰到过类似情况。不过我当时是一个信号组合逻辑输出,从A模块到B又回到了A。同时A和B模块又被约束在了两个相距很远的模块内。
是一个同步fifo的状态信号,忘记后来怎么改的了。不是改了结构就是把fifo全部挪到B模块去了。
如果没有面积约束的话,60%的资源消耗应该不会这么夸张。
ps:ram利用率多少?
我用的是ALTERA的片子,Memory bit 利用率不到20%,Memory块利用可能有浪费
赫赫,怪我愚钝,从标题上没有看出来是fpga还是ic 的layout,
如果是ic, 更有可能是floorplay的原因造成的,只有多开几块地,让金属线的路上有放cell的地方。
如果是fpga,还是先查一下constraint,不排除设错了。