包含多個矩形的Pblock
- 2019 年 10 月 30 日
- 筆記
pblock是否可以嵌套
Pblock是可以嵌套的,儘管這種應用方式並不常見。嵌套Pblock是為了更細粒度的對相關邏輯進行布局約束。從設計層次角度講,嵌套的Pblock對應的邏輯單元是父層與子層的關係。
看下面一個例子。模組arnd1和模組transformLoop[0].ct關係如下圖所示。對這兩個模組分別畫Pblock,得到pblock_arnd1和pblock_transformLoop[0].ct,這兩個pblock是嵌套的。


對於嵌套的pblock,它們在Physical Constraints窗口中也是按層次方式顯示的,如下圖所示。這樣就可以清晰且直觀地看到pblock的關係。

嵌套的兩個pblock,它們的一些屬性是不相同的。最典型的是PARENT不同,如下圖所示。頂層的pblock其PARENT值為ROOT,而子層的pblock其PARENT是頂層的pblock。

pblock是否可以包含多個矩形
Vivado還支援創建多個矩形構成一個pblock,從而使得該pblock形狀不是矩形。這在某些場合是非常有用的。相應的操作非常簡單。
首先,對指定的cell創建一個pblock;其次,在Device View中選中該pblock,點擊右鍵,選擇Add Pblock Rectangle,如下圖所示。此時會創建一個新的矩形。這兩個矩形共同構成一個新的pblock。可以反覆選中pblock,點擊右鍵添加多個矩形pblock,從而形成多個矩形pblock共同構成一個非矩形的pblock。

對於多個矩形構成一個pblock的情形,這些矩形之間會以虛線形式連接,表面它們隸屬於同一個pblock。如下圖所示。從Tcl命令角度講,無非是增加了幾行resize_pblock命令而已。


pblock是否可以佔據整個Clock Region
此外,pblock的大小可以是整個時鐘區域(Clock Region,包括相應的IO Bank)。只需要在畫pblock時,將整個時鐘區域框住即可,如下圖所示。


此時,相應的Tcl命令就很簡單,可以看到只需要一條resize_pblock命令即可確定pblock的大小和位置。實際上,在SSI晶片設計中,給每個die畫一個大的pblock時(整個Pblock將整個die包含其中),只用指定左下角和右上角的時鐘區域坐標即可。
