都是pin,有什麼區別

  • 2020 年 2 月 17 日
  • 筆記

打開任何階段的DCP,選中一個cell,按F4,都會顯示其Schematic視圖。在這個視圖中,可以清楚地看到每個cell的pin。小到一個觸發器、查找表,大到用戶的RTL模組甚至整個頂層設計,都有相應的pin。這裡,我們重點了解一下pin的特徵,藉助這些特徵可以幫助我們高效地搜到到目標pin。

Pin的REF_PIN_NAME屬性

類似於每個Cell都有REF_NAME,每個Pin都有REF_PIN_NAME。例如,設計描述的觸發器映射為SLICE中的FF(這裡為FDPE),其時鐘管腳的REF_PIN_NAME是C,使能管腳的REF_PIN_NAME是CE,輸入數據管腳的REF_PIN_NAME是D,複位管腳的REF_PIN_NAME是PRE,輸出數據管腳的REF_PIN_NAME是Q。

可以看到,這裡觸發器的REF_PIN_NAME是固定不變的,例如,無論RTL程式碼中觸發器的時鐘如何命名,其REF_PIN_NAME都是C。此外,REF_PIN_NAME也是唯一的,也就是說同屬於同一個cell的不同pin,其REF_PIN_NAME是不同的,據此可找到目標pin,如下圖所示,這裡要找到目標cell的時鐘管腳。

Pin的DIRECTION屬性

Pin的另一個重要屬性是DIRECTION。這個不難理解,其實就是表徵pin是輸入管腳還是輸出管腳。據此,可以只獲得輸入管腳或者輸出管腳。如下圖所示,通過DIRECTION值為IN可得到所有的輸入管腳;通過DRIECTION值為OUT可得到所有的輸出管腳。

Pin的IS_X屬性

這裡IS_X是對IS_CLOCK、IS_CLEAR、IS_ENABLE、IS_PRESET、IS_RESET和IS_SET的統稱,分別表示是否為時鐘管腳、非同步複位管腳、同步使能管腳、非同步置位管腳和同步置位管腳。這類屬性其TYPE為Bool,其值非0即1。例如,對於時鐘管腳,其IS_CLOCK的值為1,IS_CLEAR的值為0。利用此屬性也可以過濾出目標pin。例如,藉助IS_CLOCK搜索到目標時鐘管腳,如下圖所示。

Pin的IS_LEAF屬性

這個屬性非常重要。藉助下面的電路圖,我們解釋一下什麼是leaf pin。圖中pin 1是cell rst_gen_i0的pin,pin 2是cell reset_bridge_clk_rx_i0的pin。pin 1和pin 2通過net相連,但兩者均不是底層單元的pin。其對應的底層單元的pin是圖中觸發器的PRE管腳。用IS_LEAF屬性可判定該pin是不是leaf pin。

get_pins中的-leaf選項

在使用get_pins時,有個選項-leaf,其目的是只獲取leaf pin。結合上圖,假如已獲得連接pin 1和pin 2的net。通過該net獲取與該net相連的輸入管腳。如果添加選項-leaf,則獲得最底層的leaf pin。對比添加-leaf選項和不添加-leaf選項的輸出值,觀察兩者的差異,體會-leaf選項的含義。

如果pin是多位的,選中這個pin,在property窗口的Magnify目錄下,會顯示該pin的具體組成與連接關係,如下圖所示。

如果需要同時獲取這些pin,可使用通配符「*」,具體命令如下圖所示。

Pin還有其他重要的屬性,例如IS_CONNECTED,藉助該屬性可確定pin是否懸空。Pin的這些屬性可以在其property窗口中查看。