在S家的后端設(shè)計(jì)工具里,包括DC、ICC、ICC2、PT , 大體的命令都是相通的。并且主要命令的命名和分類(lèi)都是有一定的相似性的(但是要注意:盡管在相同的命令下,由于輸入和參數(shù)配置的差異,命令的結(jié)果可能會(huì)有不同,尤其是在delay計(jì)算方面)。
簡(jiǎn)單總結(jié)如下
| 命令組 | 解釋 | 舉例 |
|---|---|---|
| get_* | 得到目標(biāo)的返回值 | get_cells .get_pins |
| report_* | 返回目標(biāo)的屬性,內(nèi)容的詳細(xì)報(bào)告 | report_timing, report,report_power_domain |
這里,一起來(lái)關(guān)注一下get_* 命令家族,并且了解一下通用的選項(xiàng)filler。
先一起看一下這類(lèi)命令的選項(xiàng)描述。
既然是一個(gè)命令組,當(dāng)然會(huì)有一些類(lèi)似點(diǎn),這個(gè)命令家族一般有如下的選項(xiàng)設(shè)計(jì):
$cmd -filter -quiet -nocase -exact-OTHER_OPTIONpatterns
通用的選項(xiàng)細(xì)節(jié)描述如下
| 選項(xiàng) | 描述 |
|---|---|
| -filter | 使用某種屬性來(lái)做進(jìn)一步過(guò)濾 |
| -quiet | 安靜的運(yùn)行,不打印可能出現(xiàn)的warning |
| -nocase | 關(guān)閉patterns的大小寫(xiě)敏感 |
| -exact | 需要對(duì)patterns進(jìn)行完全匹配 |
后三個(gè)選項(xiàng)比較好理解,這里一起來(lái)仔細(xì)看一下filter這個(gè)選項(xiàng)。
filter簡(jiǎn)單地說(shuō),是在當(dāng)前的get_* 命令下的一個(gè)二次過(guò)濾的選項(xiàng)。具體可以使用什么樣的過(guò)濾方式方法,是基于這個(gè)命令所屬于的類(lèi)(class)的,這個(gè)命令組的命名方式,一般是get_$class,譬如說(shuō)get_cell所對(duì)應(yīng)的類(lèi)(class)就是cell;get_clocks所對(duì)應(yīng)的類(lèi)(class)就是clock。所以,所有filter可以操作的范圍就是這個(gè)class里邊的數(shù)據(jù)/屬性。
下圖是cell的attribute的摘錄
用戶(hù)可以根據(jù)這個(gè)attribute列表的具體細(xì)節(jié)來(lái)對(duì)cell來(lái)進(jìn)行二次過(guò)濾,一個(gè)舉例如下
得到所有full name中包含 lace的器件
# get all *lace* cell get_cells -filter "full_name=~*lace*"
通過(guò)運(yùn)行,會(huì)得到所有名字為*lace* 的cell,返回值如下:

這里使用條件運(yùn)算符**=~** 是一個(gè)模糊匹配,place也是*lace*的模糊匹配的結(jié)果,這里就被正確的返回出來(lái)了。
再看一個(gè)稍微復(fù)雜一點(diǎn)的例子
得到所有的buffer cell,
但是cell名字一定是包含*lace*字符串的
# get all *lace* buffer get_cells -filter "full_name=~*lace* && ref_name=~*BUF*"
另外一個(gè)很常用的filter例子是:
得到數(shù)據(jù)庫(kù)里所有的std-cell
然后計(jì)算它們的面積總和
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"
這個(gè)執(zhí)行結(jié)果如下

什么,這還不夠厲害,還有更彪悍的操作?
得到所有面積大于3 area_unit的
buffer/invert
get_cells -filter "area>3 && number_of_pins==2"
運(yùn)行結(jié)果如下
這么復(fù)雜的操作,最好驗(yàn)證一下,先來(lái)看一下面積

沒(méi)有問(wèn)題,都是大于3的器件
再來(lái)看一下pin的數(shù)目

也都正確,都是兩個(gè)pin
最后來(lái)看一下,是不是都是buffer/invert

完美,所有的結(jié)果都被驗(yàn)證正確無(wú)誤。
到這里,想必同學(xué)們都有了一種體會(huì)了吧。這里的get_attribute和-filter有著天人合一的感覺(jué),一個(gè)是query 一個(gè)是 status。通過(guò)這種按需查找的方法。數(shù)據(jù)庫(kù)里的東東基本上都會(huì)被你摸個(gè)遍了。
這里再來(lái)看一個(gè)命令嵌套的組合拳
面積大于3 并且
有兩個(gè)以上的pin的非SPARE cell 的器件
它們的output pin
get_pins -of [get_cells -filter "area>3 && number_of_pins>2"] -filter "pin_direction==out && full_name!~*SPARE*"
嵌套,就是無(wú)休無(wú)止的嵌套,就是要在浩如煙海的數(shù)據(jù)大海中,找到你要的那根針!靈活使用這些命令,理論上講不存在命令行里找不到的那根針。
審核編輯:劉清
-
Filter
+關(guān)注
關(guān)注
0文章
48瀏覽量
21804 -
過(guò)濾器
+關(guān)注
關(guān)注
1文章
442瀏覽量
20838 -
PIN管
+關(guān)注
關(guān)注
0文章
36瀏覽量
6772
原文標(biāo)題:Synopsys工具中命令中filter的妙用
文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
TAS5805M 128 Tap FIR filter的作用是什么?
php中rename()函數(shù)的妙用
IC設(shè)計(jì):Synopsys2018 版本 EDA 工具免費(fèi)分享
C語(yǔ)言的結(jié)構(gòu)體和共用體在單片機(jī)中的妙用是什么
S參數(shù)在高頻測(cè)量中的妙用
Linux中xargs命令簡(jiǎn)介和選項(xiàng)說(shuō)明
Synopsys工具中命令中filter的妙用

Synopsys工具中命令中filter的妙用是什么
評(píng)論