在S家的后端設(shè)計工具里,包括DC、ICC、ICC2、PT , 大體的命令都是相通的。并且主要命令的命名和分類都是有一定的相似性的(但是要注意:盡管在相同的命令下,由于輸入和參數(shù)配置的差異,命令的結(jié)果可能會有不同,尤其是在delay計算方面)。
簡單總結(jié)如下
命令組 | 解釋 | 舉例 |
---|---|---|
get_* | 得到目標(biāo)的返回值 | get_cells .get_pins |
report_* | 返回目標(biāo)的屬性,內(nèi)容的詳細報告 | report_timing, report,report_power_domain |
這里,一起來關(guān)注一下get_* 命令家族,并且了解一下通用的選項filler。
先一起看一下這類命令的選項描述。
既然是一個命令組,當(dāng)然會有一些類似點,這個命令家族一般有如下的選項設(shè)計:
$cmd -filter -quiet -nocase -exact-OTHER_OPTIONpatterns
通用的選項細節(jié)描述如下
選項 | 描述 |
---|---|
-filter | 使用某種屬性來做進一步過濾 |
-quiet | 安靜的運行,不打印可能出現(xiàn)的warning |
-nocase | 關(guān)閉patterns的大小寫敏感 |
-exact | 需要對patterns進行完全匹配 |
后三個選項比較好理解,這里一起來仔細看一下filter這個選項。
filter簡單地說,是在當(dāng)前的get_* 命令下的一個二次過濾的選項。具體可以使用什么樣的過濾方式方法,是基于這個命令所屬于的類(class)的,這個命令組的命名方式,一般是get_$class,譬如說get_cell所對應(yīng)的類(class)就是cell;get_clocks所對應(yīng)的類(class)就是clock。所以,所有filter可以操作的范圍就是這個class里邊的數(shù)據(jù)/屬性。
下圖是cell的attribute的摘錄
用戶可以根據(jù)這個attribute列表的具體細節(jié)來對cell來進行二次過濾,一個舉例如下
得到所有full name中包含 lace的器件
# get all *lace* cell get_cells -filter "full_name=~*lace*"
通過運行,會得到所有名字為*lace* 的cell,返回值如下:
這里使用條件運算符**=~** 是一個模糊匹配,place也是*lace*的模糊匹配的結(jié)果,這里就被正確的返回出來了。
再看一個稍微復(fù)雜一點的例子
得到所有的buffer cell,
但是cell名字一定是包含*lace*字符串的
# get all *lace* buffer get_cells -filter "full_name=~*lace* && ref_name=~*BUF*"
另外一個很常用的filter例子是:
得到數(shù)據(jù)庫里所有的std-cell
然后計算它們的面積總和
get_cells -hier -filter "mask_layout_type==std" set area 0 foreach_in_collection c [get_cells -hier -filter "mask_layout_type==std"] { set area [expr [get_attribute $c area] + $area] } puts "Total std-cell area is $area"
這個執(zhí)行結(jié)果如下
什么,這還不夠厲害,還有更彪悍的操作?
得到所有面積大于3 area_unit的
buffer/invert
get_cells -filter "area>3 && number_of_pins==2"
運行結(jié)果如下
這么復(fù)雜的操作,最好驗證一下,先來看一下面積
沒有問題,都是大于3的器件
再來看一下pin的數(shù)目
也都正確,都是兩個pin
最后來看一下,是不是都是buffer/invert
完美,所有的結(jié)果都被驗證正確無誤。
到這里,想必同學(xué)們都有了一種體會了吧。這里的get_attribute和-filter有著天人合一的感覺,一個是query 一個是 status。通過這種按需查找的方法。數(shù)據(jù)庫里的東東基本上都會被你摸個遍了。
這里再來看一個命令嵌套的組合拳
面積大于3 并且
有兩個以上的pin的非SPARE cell 的器件
它們的output pin
get_pins -of [get_cells -filter "area>3 && number_of_pins>2"] -filter "pin_direction==out && full_name!~*SPARE*"
嵌套,就是無休無止的嵌套,就是要在浩如煙海的數(shù)據(jù)大海中,找到你要的那根針!靈活使用這些命令,理論上講不存在命令行里找不到的那根針。
審核編輯:劉清
-
Filter
+關(guān)注
關(guān)注
0文章
48瀏覽量
21070 -
過濾器
+關(guān)注
關(guān)注
1文章
427瀏覽量
19519 -
PIN管
+關(guān)注
關(guān)注
0文章
36瀏覽量
6305
原文標(biāo)題:Synopsys工具中命令中filter的妙用
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論