在S家的后端設(shè)計(jì)工具里,包括DC、ICC、ICC2、PT , 大體的命令都是相通的。并且主要命令的命名和分類都是有一定的相似性的(但是要注意:盡管在相同的命令下,由于輸入和參數(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 |
這里,一起來關(guān)注一下get_* 命令家族,并且了解一下通用的選項(xiàng)filler。
先一起看一下這類命令的選項(xiàng)描述。
既然是一個(gè)命令組,當(dāng)然會(huì)有一些類似點(diǎn),這個(gè)命令家族一般有如下的選項(xiàng)設(shè)計(jì):
$cmd -filter -quiet -nocase -exact-OTHER_OPTIONpatterns
通用的選項(xiàng)細(xì)節(jié)描述如下
選項(xiàng) | 描述 |
---|---|
-filter | 使用某種屬性來做進(jìn)一步過濾 |
-quiet | 安靜的運(yùn)行,不打印可能出現(xiàn)的warning |
-nocase | 關(guān)閉patterns的大小寫敏感 |
-exact | 需要對(duì)patterns進(jìn)行完全匹配 |
后三個(gè)選項(xiàng)比較好理解,這里一起來仔細(xì)看一下filter這個(gè)選項(xiàng)。
filter簡(jiǎn)單地說,是在當(dāng)前的get_* 命令下的一個(gè)二次過濾的選項(xiàng)。具體可以使用什么樣的過濾方式方法,是基于這個(gè)命令所屬于的類(class)的,這個(gè)命令組的命名方式,一般是get_$class,譬如說get_cell所對(duì)應(yīng)的類(class)就是cell;get_clocks所對(duì)應(yīng)的類(class)就是clock。所以,所有filter可以操作的范圍就是這個(gè)class里邊的數(shù)據(jù)/屬性。
下圖是cell的attribute的摘錄
用戶可以根據(jù)這個(gè)attribute列表的具體細(xì)節(jié)來對(duì)cell來進(jìn)行二次過濾,一個(gè)舉例如下
得到所有full name中包含 lace的器件
# get all *lace* cell get_cells -filter "full_name=~*lace*"
通過運(yùn)行,會(huì)得到所有名字為*lace* 的cell,返回值如下:
這里使用條件運(yùn)算符**=~** 是一個(gè)模糊匹配,place也是*lace*的模糊匹配的結(jié)果,這里就被正確的返回出來了。
再看一個(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ù)庫里所有的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)證一下,先來看一下面積
沒有問題,都是大于3的器件
再來看一下pin的數(shù)目
也都正確,都是兩個(gè)pin
最后來看一下,是不是都是buffer/invert
完美,所有的結(jié)果都被驗(yàn)證正確無誤。
到這里,想必同學(xué)們都有了一種體會(huì)了吧。這里的get_attribute和-filter有著天人合一的感覺,一個(gè)是query 一個(gè)是 status。通過這種按需查找的方法。數(shù)據(jù)庫里的東東基本上都會(huì)被你摸個(gè)遍了。
這里再來看一個(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*"
嵌套,就是無休無止的嵌套,就是要在浩如煙海的數(shù)據(jù)大海中,找到你要的那根針!靈活使用這些命令,理論上講不存在命令行里找不到的那根針。
審核編輯:劉清
-
Filter
+關(guān)注
關(guān)注
0文章
48瀏覽量
21215 -
過濾器
+關(guān)注
關(guān)注
1文章
434瀏覽量
19860 -
PIN管
+關(guān)注
關(guān)注
0文章
36瀏覽量
6414
原文標(biāo)題:Synopsys工具中命令中filter的妙用
文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
TAS5805M 128 Tap FIR filter的作用是什么?
php中rename()函數(shù)的妙用
IC設(shè)計(jì):Synopsys2018 版本 EDA 工具免費(fèi)分享
C語言的結(jié)構(gòu)體和共用體在單片機(jī)中的妙用是什么
S參數(shù)在高頻測(cè)量中的妙用
Synopsys工具中命令中filter的妙用

評(píng)論