相關閱讀
SDC命令詳解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm=1001.2014.3001.5482
????????get_libs命令用于創建一個庫對象集合,關于設計對象和集合的更詳細介紹,可以參考下面的博客。需要注意的是,在有些工具中還存在get_lib命令,它們沒有任何差別。?
Synopsys:設計對象https://chenzhang.blog.csdn.net/article/details/147015140?spm=1001.2014.3001.5502
????????本文針對Design Compiler,但該命令同樣存在于PrimeTime、IC Compiler等工具中,它們大致相同,略有差別。get_libs命令的BNF范式(有關BNF范式,可以參考以往文章)為:
get_libs[-quiet][-regexp | -exact][-nocase][-filter expression][-scenarios scenario_names][patterns | -of_objects objects]//注:該命令的選項和參數順序任意
指定靜默
????????-quiet選項用于指定靜默輸出,如果嘗試匹配的庫對象不存在,不會報錯或警告(不過語法錯誤仍會報錯),如例1所示。
// 例1
dc_shell> get_libs a
Error: Can't find library 'a'. (UID-109)
dc_shell> get_libs -quiet a
dc_shell>
指定使用正則表達式
????????-regexp選項用于指定使用正則表達式,patterns參數將被視為正則表達式,而不是通配符模式串(默認),如例2所示。該選項還會修改-filter選項的expression過濾表達式中=~和!~的行為,使其使用正則表達式,而不是通配符模式串。
????????需要注意的是,正則表達式默認是開頭和結尾“錨定”的:即表達式被假定為從對象名稱的開頭開始匹配,并在對象名稱的結尾結束匹配,可以通過在表達式的開頭或結尾添加".*"來擴大匹配范圍。
????????-regexp選項和-exact選項是互斥的,只能使用其中一個。
// 例2
dc_shell> get_libs -regexp {fast}
{fast}
dc_shell> get_libs -regexp {fas}
Error: Can't find library 'fas'. (UID-109)
dc_shell> get_libs -regexp {ast}
Error: Can't find library 'ast'. (UID-109)
dc_shell> get_libs -regexp {.*ast}
{fast}
dc_shell> get_libs -regexp {fast.*}
{fast fastz}
指定精確匹配
????????-exact選項用于指定精確匹配,patterns參數將不被視為正則表達式或通配符模式串(默認),如例3所示。該選項還會修改-filter選項的expression過濾表達式中=~和!~的行為,使其不被視為正則表達式或通配符模式串。
????????-regexp選項和-exact選項是互斥的,只能使用其中一個。
// 例3
dc_shell> get_libs fas*
{fast fastz}
dc_shell> get_libs -exact fas*
Error: Can't find library 'fas*'. (UID-109)
指定大小寫不敏感
????????-nocase選項用于指定patterns參數和-filter選項的expression過濾表達式中==、=~和!~不區分大小寫,如例4所示。
// 例4
dc_shell> get_libs FAST
Error: Can't find library 'FAST'. (UID-109)
dc_shell> get_libs -nocase FAST
{fast}
指定過濾
????????-filter選項指定基于庫屬性對得到的庫對象集合進行過濾,如例5所示。類似于filter_collection命令那樣,可以使用==、!=、>、<、>=、<=、=~、!~構成布爾表達式,其中=~和!~支持在布爾表達式右端使用正則表達式或通配符。使用list_attributes -class lib -application命令可以列出一個庫對象可以擁有的屬性(Attribute)。
// 例5
dc_shell> get_libs -filter "time_unit_name==ns"
{gtech fast slow fastz}
dc_shell> get_libs -filter "time_unit_name==ps"
dc_shell>
指定場景
????????-scenario選項指定在特定場景中進行搜索,默認情況下會搜索加載到內存中的所有庫。
指定patterns參數
????????patterns參數用于指定一個字符串,根據-regexp選項和-exact選項的指定情況,作為正則表達式、通配符模式串或普通字符串。該字符串中可以包含層次分隔符/和通配符*與?,需要注意的是,通配符不能匹配層次分隔符/。
????????patterns參數和-of_objects選項是互斥的,只能使用其中一個。如果沒有使用這些選項中的任何一個,則會以加載到內存中的所有庫創建庫對象集合(即以*為默認patterns參數)。
指定設計對象?
????????-of_objects選項用于指定設計對象,創建與這些設計對象相聯系的庫對象集合。對象可以是庫單元(Lib Cell),如例6所示。
? ? ? ?patterns參數和-of_objects選項是互斥的,只能使用其中一個。如果沒有使用這些選項中的任何一個,則會以加載到內存中的所有庫創建庫對象集合(即以*為默認patterns參數)。
// 例6
dc_shell> get_libs -of_objects [get_lib_cells fast/AND2X1]
{fast}