最近有小伙伴问,能不能一个信号,在block出两个terminal。
从工具的角度是完全可以的,不止两个,出多个terminal也是没有任何问题的。
尽管会有这样的需求,但是强烈建议不要采用这样的方式。哪怕中间加个buffer,出两个不同的pin。
那么这里解释一下原因。
1
首先,两个terminal之间的连线不能加buffer。
假设block内对于信号有两个terminal。而这连个terminal距离比较远的话,是需要一个很长的线来将他们进行连接的。而这两个terminal之间是没有办法加buffer的。这是因为虽然在物理上是两个点,而逻辑上,他们是一个pin,一个点。而这条长线,可能没有一个cell能够驱动得了。
2
其次,top层在处理block的两个同名terminal时具有随机性。也就是说,工具会认为这两个terminal是相连的。因此,会就近连上其中一个terminal。这可能不是想要的。
3
第三,如果在top层,确实需要将两个terminal都需要连的话,是需要手工进行连接的。但是这时候还是会有问题的。在抽RC的时候,工具会认为这条net是open的,因此会插入一个非常大的电阻。导致这条net的delay大的惊人。当然,时序工具可以选择不同的处理方式,例如将这种open处理为0电阻,但是这也是有风险的。
4
在设计中,如果以上三点都考虑到了并且避免的话,那么你就可以将一个信号pin,处理为多个terminal了。这种情况在实际应用中还是比较常见的。举个例子,我们的信号IO。会有一个terminal连接外部的pad,一个terminal连接内部的信号。