自己怎樣做淘客網(wǎng)站91永久免費海外地域網(wǎng)名
附錄B:UPF命令語法
本章介紹了文本中引用的所選UPF命令的語法。
節(jié)選自“統(tǒng)一電源格式(UPF)標(biāo)準(zhǔn),1.0版”,經(jīng)該Accellera許可復(fù)制。版權(quán)所有:(c)2006-2007。Accellera不聲明或代表摘錄材料的準(zhǔn)確性或內(nèi)容,并明確否認(rèn)任何明示或默示保證。提供了附件標(biāo)準(zhǔn)的摘錄“AS IS”。
完整的標(biāo)準(zhǔn)文檔可以在www.accellera.org下找到。
(譯者:翻譯的過程中發(fā)現(xiàn)該書在copy IEEE1801的部分UPF命令時出現(xiàn)了一些復(fù)制粘貼的混亂,如果對UPF有興趣建議去IEEE官網(wǎng)下載官方Standard)
B.1 add_pst_state
用途 | 為一種可能的設(shè)計狀態(tài)定義每個供電網(wǎng)絡(luò)的狀態(tài) |
語法 | add_pst_state state_name -pst table_name -state supply_states |
表達(dá)式 | state_name 電源狀態(tài)。 -pst table_name?此狀態(tài)所應(yīng)用的電源狀態(tài)表(PST)。 -state supply_states 供電網(wǎng)絡(luò)的狀態(tài)名列表,依照?create_pst?命令中-supplies列寫的順序進(jìn)行列寫。 |
返回值 | 成功返回1;失敗返回0。 |
add_pst_state命令為一種可能的設(shè)計狀態(tài)定義每個供電網(wǎng)絡(luò)的狀態(tài)。
如果supply_state_names的數(shù)量與PST中的供電網(wǎng)絡(luò)數(shù)量不同,則會報錯。
語法示例:
create_pst pt -supplies { PN1 PN2 SOC/OTC/PN3 }
add_pst_state s1 –pst pt –state { s08 s08 s08 }
add_pst_state s2 –pst pt –state { s08 s08 off }
add_pst_state s3 –pst pt –state { s08 s09 off }
B.2 connect_supply_net
用途 | 給供電端口或引腳連接一條供電線 |
語法 | connect_supply_net net_name ????????[-ports list] [-pins list] ????????[<-cells list |-domain domain_name>] ????????[<-rail_connection rail_type | -pg_type pg_type>]* ????????[-vct vct_name] |
表達(dá)式 | net_name 供電線狀態(tài) -ports?list?連接的端口列表 -pins?list?連接單元的引腳列表 -cells?list?使用-rail_connection或者-pg_type命令的單元的列表 -domain?domain_name?-rail_connection或者-pg_type命令所需使用的域 -rail_connection?rail_type 軌道類型(對于較老的工藝庫) -pg_type?pg_type 電源/地 引腳類型 -vct?vct_name VCT定義如何將值從UPF映射到HDL模型或從HDL模型映射到UPF |
返回值 | 如果成功,返回供應(yīng)網(wǎng)絡(luò)的完全限定名稱;如果不成功,返回0。 |
?任何端口、引腳、單元、供電網(wǎng)絡(luò)或域都是相對于當(dāng)前UPF范圍引用的。
connect_supply_net 命令提供顯式連接到任何端口和覆蓋(優(yōu)先級高于)自動連接語義(無顯式聲明時則會使用自動連接)。在-rail_connection 或者-pg_type選項聲明時可能需要-domain或者-cells。
用法:
-ports?連接到電源端口;
-pins?連接到庫單元上的引腳;
-cells?連接到特定單元上適當(dāng)類型(電源或接地)的所有引腳;
-rail_connection 連接到有此(軌道)類型的引腳;僅在-cells 和 -domain選項被聲明時使用。
-pg_type?只連接到有這種電源/地類型的引腳(庫模型中定義的引腳類型用于決定這種連接);僅在-cells 和 -domain選項被聲明時使用。
-vct?以指示端口所連接的每個HDL端口,如果供電網(wǎng)絡(luò)狀態(tài)正在傳播到HDL端口中,則應(yīng)轉(zhuǎn)換供電網(wǎng)絡(luò)狀態(tài),或者如果HDL端口值正在傳播到供電網(wǎng)絡(luò)中,則應(yīng)對其進(jìn)行轉(zhuǎn)換。對于電源網(wǎng)絡(luò)到UPF中定義的引腳或電源端口的任何連接,則會忽略-vct?。
下面這些也適用:
-ports 和 -pins 選項和 -cells,-domain,-rail_connection,-pg_type選項相互排斥;
-rail_connection 和 -pg_type選項相互排斥;
供電網(wǎng)只能連接到與該供電網(wǎng)域(電壓域)相同范圍內(nèi)的端口、引腳或單元。
如果以前沒有創(chuàng)建net_name,則會報錯;在這種情況下,應(yīng)返回0。
如果此命令中指定的任何設(shè)計元素不存在,則為錯誤。
如果在VCT中指定的值轉(zhuǎn)換與HDL端口的類型不匹配,則為錯誤。
語法示例:
connect_supply_net v09 -ports {VDD U18/v9 U21/v9}connect_supply_net pd1_vdd-ports pll_inst/vdd-vct upf2vlog_vdd
B.3?create_power_domain
用途 | 為一組設(shè)計元素定義配電網(wǎng) |
語法 | create_power_domain domain_name ????????[-elements list] ????????[-include_scope] ????????[-scope instance_name] |
表達(dá)式 | domain_name 新的電壓域;是一個簡單的(非層級化的 non-hierarchical)名稱。 -elements list 使用電壓域中設(shè)計單元的列表 -include_scope 將域的范圍包含在電壓域內(nèi) -scope instance_name?在此邏輯層次結(jié)構(gòu)范圍內(nèi)創(chuàng)建電源域。 |
返回值 | 返回已創(chuàng)建的域(來自當(dāng)前作用域)的完全限定名稱,如果未創(chuàng)建電源域,則返回空字符串。 |
create_power_domain命令通常為電壓域內(nèi)的設(shè)計單元列表定義了電源供電分布網(wǎng)絡(luò)。一個power_domain就是一個或多個設(shè)計單元的邏輯群。一個電源域有一個主電源(power)網(wǎng)和一個主地(ground)網(wǎng)。一個電源域可能還有其他額外的供電網(wǎng)絡(luò),供電端口,開關(guān)等。
僅當(dāng)指定了主電源和接地電源網(wǎng)絡(luò)時,電源域才起作用。
–elements (或者?add_domain_elements 命令)聲明包含電壓域內(nèi)的設(shè)計單元完整集,即那些實例及其所有子實例(除非另有規(guī)定)。
list?是根據(jù)當(dāng)前范圍指定的;它不受 -scope 語句的影響。
如果 -include_scope 也聲明了,那么域的范圍包含在域的界限之內(nèi)。
當(dāng) -elements 和 -include_scope 都不聲明,電壓域由當(dāng)前范圍以及另一條? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? create_power_domain 命令未聲明的任何子模塊(或者單元)組成。
-scope聲明了范圍,也即實例化的模塊,將在這里創(chuàng)建域。scope指的是此條命令的當(dāng)前范圍;它定義了邏輯設(shè)計內(nèi)域的界限。如果 -scope 沒有聲明,電壓域?qū)⒃诋?dāng)前范圍內(nèi)創(chuàng)建。
語法示例:
create_power_domain PD1 -elements {top/U1}set_scope /top/U1
create_power_domain PD2
B.4?create_power_switch
用途 | 定義電壓域的開關(guān) |
語法 | create_power_switch switch_name ????????-domain domain_name ????????-output_supply_port {port_name supply_net_name} ????????{-input_supply_port {port_name supply_net_name}}* ????????{-control_port {port_name net_name}}* ????????{-on_state {state_name input_supply_port {boolean_function}}}* ????????[-on_partial_state {state_name input_supply_port {boolean_function}}]* ????????[-ack_port {port_name net_name [{boolean_function}]}]* ????????[-ack_delay {port_name delay}]* ????????[-off_state {state_name {boolean_function}}]* ????????[-error_state {state_name {boolean_function}}]* |
表達(dá)式 | switch_name 將要創(chuàng)建開關(guān)的實例化名稱;一個簡單的名稱; -domain domain_name 包含此開關(guān)的電壓域 -output_supply_port {port_name supply_net_name} 開關(guān)的輸出供電端口以及此端口連接的供電線 -input_supply_port {port_name?supply_net_name} 開關(guān)的輸入供電端口以及此端口連接的供電線 -control_port?{port_name net_name}??開關(guān)的控制端口以及此端口連接的線 -on_state {state_name?input_supply_port?{boolean_function}} 命名的開關(guān)開啟狀態(tài),? ? ? ? ? ? ? ? input_supply_port為已經(jīng)定義的輸入供電端口,以及對應(yīng)的布爾函數(shù); -on_partial_state?{state_name?input_supply_port?{boolean_function}}命名的開關(guān)部分打開狀態(tài),input_supply_port為已經(jīng)定義的輸入供電端口,以及對應(yīng)的布爾函數(shù); -ack_port {port_name?net_name?[{boolean_function}]} 開關(guān)的確認(rèn)端口,以及與之連接的邏輯線,以及對應(yīng)的布爾邏輯表達(dá)式;如果將空字符串用作-ack_port的net_name,則會定義端口及其布爾表達(dá)式,但端口本身未連接。 -ack_delay {port_name delay} 給定ack_port的確認(rèn)延遲; -off_state {state_name?{boolean_function}} 命名的開關(guān)關(guān)閉狀態(tài),以及與之對應(yīng)的布爾表達(dá)式。 -error_state?{state_name?{boolean_expression}} 命名的開關(guān)出錯狀態(tài),以及與之對應(yīng)的布爾表達(dá)式。 |
返回值 | 如果成功則返回所創(chuàng)建開關(guān)的全路徑名稱,否則返回空字符串。 |
create_power_switch 命令定義了電源域中的電源開關(guān)的實例。該開關(guān)是在電源域的范圍內(nèi)創(chuàng)建的。這個開關(guān)不是開啟就是關(guān)閉。
如果控制端口上的值等于“開啟”狀態(tài)的表達(dá)式,則開關(guān)打開;這將驅(qū)動輸出端口進(jìn)入“打開”狀態(tài)。如果在輸入電源端口上有電壓值,則該值將在輸出電源端口上被驅(qū)動。
如果開關(guān)未打開,則關(guān)閉,“關(guān)閉”狀態(tài)驅(qū)動到輸出端口。一些“關(guān)閉”狀態(tài)可以被識別為錯誤狀態(tài)。這些錯誤狀態(tài)的仿真語義依賴于工具。
如果為-ack_port指定了一個布爾表達(dá)式,則控制端口轉(zhuǎn)變(比如有關(guān)閉或者打開開關(guān)的控制請求)后,等待若干個所聲明的延遲時間單位后,boolean_function的結(jié)果的驅(qū)動至-ack_port的端口名稱(port_name)。否則,開關(guān)關(guān)閉后在port_name延遲若干個時間單位后驅(qū)動邏輯1,開關(guān)打開后在port_name延遲若干個時間單位后驅(qū)動邏輯0。延遲(默認(rèn)為0)可指定為非單位自然整數(shù)或Verilog時間單位。如果指定為自然整數(shù),則時間單位應(yīng)與仿真的時間精度相同。
任何-ack_port、-on_state、?-error_state的布爾表達(dá)式都應(yīng)為SystemVerilog的布爾表達(dá)式。
以下內(nèi)容也適用。
如果指定的控制端口不存在,則為錯誤??刂贫丝诘默F(xiàn)有連接性不可被修改。
所有不被三個狀態(tài)(開、關(guān)和錯誤(on, off, and error))覆蓋的狀態(tài)都是匿名錯誤狀態(tài)。
每個狀態(tài)的名稱都應(yīng)為唯一的名稱。
任何相互沖突的狀態(tài)定義都是錯誤的。
沒有任何綜合(synthesis)語義與任何布爾函數(shù)相關(guān)聯(lián),除了被映射的開關(guān)必須提供該功能。
語法示例:
create_power_switch sw1
-domain PD_SODIUM
-output_supply_port {vout VN3}
-input_supply_port {vin1 VN1}
-input_supply_port {vin2 VN2}
-control_port {ctrl_small ON1}
-control_port {ctrl_large ON2}
-control_port {ss SUPPLY_SELECT}
-on_state {partial_s1 vin1 {ctrl_small & !ctrl_large & ss}}
-on_state {full_s1 vin1 {ctrl_small & ctrl_large & ss}}
-on_state {partial_s2 vin2 {ctrl_small & !ctrl_large & !ss}}
-on_state {full_s2 vin2 {ctrl_small & ctrl_large & !ss}}
-error_state {no_small {!ctrl_small & ctrl_large}}
B.5?create_pst
用途 | 創(chuàng)建一個具有特定供電網(wǎng)絡(luò)順序的電源狀態(tài)表 |
語法 | create_pst table_name?-supplies list |
表達(dá)式 | table_name 電源狀態(tài)表名稱 -supplies list 包含在設(shè)計中電源狀態(tài)的供電網(wǎng)絡(luò)和端口列表 |
返回值 | 如果創(chuàng)建成功返回電源狀態(tài)表名稱,否則返回空字符串。 |
create_pst 命令創(chuàng)建了一個PST,具有特定供電網(wǎng)絡(luò)順序。
電源狀態(tài)表用于實現(xiàn)(布局布線)——特別是綜合、分析和優(yōu)化。定義了狀態(tài)的合法組合,也即那些狀態(tài)的組合在設(shè)計運行期間同時存在。
電源狀態(tài)表沒有仿真語義。這個是依賴于工具的,如果非法的(未聲明的)狀態(tài)組合發(fā)生,仿真工具可能會報告一個錯誤。
如果聲明的供電網(wǎng)絡(luò)沒有創(chuàng)建則會出錯。
語法示例:
create_pst MyPowerStateTable -supplies {PN1 PN2 SOC/OTC/PN3}
B.6?create_supply_net
用途 | 創(chuàng)建一個電源或者接地供電線 |
語法 | create_supply_net net_name?-domain domain_name?[-reuse] [-resolve <unresolved | one_hot | parallel>] |
表達(dá)式 | net_name 供電線名稱; -domain domain_name 創(chuàng)建的供電線所在的電壓域; -reuse 將net_name擴(kuò)展為一個包含domain_name的供電線。不創(chuàng)建新的網(wǎng)絡(luò)。 -resolve <unresolved |?one_hot | parallel>?一種解析機(jī)制,根據(jù)每個單獨開關(guān)提供的狀態(tài)和電壓值來確定供電網(wǎng)的狀態(tài)和電壓。默認(rèn)值未解析(unresolved)。 |
返回值 | 返回已創(chuàng)建供電線(來自當(dāng)前作用域)的完全限定名稱,如果未創(chuàng)建,則返回空字符串。 |
create_supply_net 命令創(chuàng)建一條供電線。為電壓域定義的供電線,創(chuàng)建所在的邏輯層級和domain_name所在的范圍相同。根據(jù)需要通過邏輯層次結(jié)構(gòu)通過隱式創(chuàng)建的端口和網(wǎng)絡(luò)進(jìn)行傳播。
以下內(nèi)容也適用。
如果domain_name沒有指示一個之前創(chuàng)建的電壓域,則會報錯。
當(dāng)聲明-reused時,如果net_name不存在則會報錯;
當(dāng)聲明-resolve unresolved時,此供電線只允許單個驅(qū)動器。
語法示例:
create_supply_net v09 -domain PD1
B.7?create_supply_port
用途 | 在電壓域創(chuàng)建一個端口 |
語法 | create_supply_port port_name [-domain domain_name]?[-direction <in |out>] |
表達(dá)式 | port_name 供電端口名稱。允許使用層級化名稱,除非同時指定了-domain。 -domain domain_name?此端口定義供電網(wǎng)連接點的域。 -direction <in |out> 端口的方向,默認(rèn)為輸入 in。 |
返回值 | 返回已創(chuàng)建的端口(來自當(dāng)前作用域)的完全限定名稱,如果未創(chuàng)建,則返回空字符串。 |
?create_supply_port 命令在-domain聲明時在電壓域范圍內(nèi)定義供電端口,如果沒有聲明-domain則在當(dāng)前域的范圍內(nèi)創(chuàng)建供電端口。
-direction定義狀態(tài)信息在連接到端口時如何通過供電網(wǎng)絡(luò)傳播。如果端口是輸入端口,則連接到端口的外部供應(yīng)網(wǎng)絡(luò)的狀態(tài)信息應(yīng)傳播到域中。同樣,對于輸出端口,連接到該端口的內(nèi)部供應(yīng)網(wǎng)絡(luò)的狀態(tài)信息應(yīng)在域外傳播。
如果port_name創(chuàng)建了一個與邏輯層級相沖突的名稱,或者聲明了一個之前創(chuàng)建過的端口,則會報錯。
如果domain_name不能指示一個已創(chuàng)建的電壓域,則會報錯。
語法示例:
create_supply_port VN1 -domain PD1 reg/wire, Bit, Logic
B.8?set_domain_supply_net
用途 | 為電壓域設(shè)置默認(rèn)的電源線和地線 |
語法 | set_domain_supply_net domain_name?-primary_power_net supply_net_name -primary_ground_net supply_net_name |
表達(dá)式 | domain_name 默認(rèn)供電線所在的電壓域; -primary_power_net?supply_net_name 主電源供電線; -primary_ground_net supply_net_name?主地線; |
返回值 | 設(shè)置成功返回1;否則返回0. |
set_domain_supply_net 命令將默認(rèn)的電源線/地線與電壓域的邏輯單元相聯(lián)系。
primary power 和?ground nets為連接到電壓域內(nèi)邏輯單元(或推斷單元)的默認(rèn)主電源線和地線。執(zhí)行電源線和地線用于電壓域內(nèi)的所有單元。在門級,這意味著所有的所有推斷的門的所有電源/地引腳連接到主電源線/地線。否則除非用?connect_supply_net, set_retention, set_isolation等命令進(jìn)行聲明。
如果domain_name不能指示一個已創(chuàng)建的電壓域,則會報錯。
如果domain_name已經(jīng)包含了一個主要的電源/地供應(yīng)線。
語法示例:
set_domain_supply_net PD1 -primary_power_net PG1 -primary_ground_net PG0
?B.9?set_isolation
用途 | 用聲明的策略設(shè)置電壓域中單元的隔離。 |
語法 | set_isolation isolation_name -domain domain_name <-isolation_power_net net_name | -isolation_ground_net net_name | -isolation_power_net net_name -isolation_ground_net net_name | -no_isolation> [-elements list] [-clamp_value <0 | 1 | latch | Z>] [-applies_to <inputs | outputs | both>] |
表達(dá)式 | isolation_name 隔離策略名稱 -domain domain_name 應(yīng)用此策略的電壓域 <-isolation_power_net?net_name |?-isolation_ground_net?net_name |? -elements list 此策略使用的設(shè)計單元列表,輸入端口/引腳,輸出端口/引腳,以及線網(wǎng)。 -clamp_value <0 | 1 | latch | Z> 設(shè)置輸入或者輸出被鉗夾的邏輯值。默認(rèn)為 0. -applies_to <inputs | outputs | both> 電壓域的輸入或者輸出端口隔離,或者都隔離。默認(rèn)為輸出outputs。 |
返回值 | 成功返回 1 ,失敗返回0。 |
set_isolation?用聲明的策略設(shè)置電壓域中單元的隔離。隔離使能信號為公共信號,鉗夾值以及位置。
–isolation_supply_nets 可以聲明單一的電源線,單一的地線或者二者都聲明。如果只聲明隔離單元的電源線,那么主地線作為隔離地線。如果只聲明隔離單元的地線,那么主電源線作為隔離電源。
-isolation_power_net 和?-isolation_ground_net兩個至少有一個需要聲明,除非-no_isolation已經(jīng)聲明。如果只聲明-isolation_power_net,那么主地線則作為隔離的地線供應(yīng)。如果只聲明-isolation_ground_net,那么主電源線則作為隔離的電源線供應(yīng)。如果兩個都聲明了,那么所聲明的供電線作為隔離的電源和地供應(yīng)線。
隔離電源和接地網(wǎng)自動連接到隱含的隔離過程,當(dāng)-clamp_value為latch時,自動連接到完整規(guī)范第5節(jié)中所述的隔離寄存器,或如果隔離單元與map_isolation_cell命令明確映射,則自動連接到隔離單元的電源和接地引腳。隱式隔離過程和隔離寄存器的關(guān)閉和開啟語義,如果存在,則如完整規(guī)范的第5節(jié)所述。
如果一個域有多個隔離策略,對于每個策略,-elements用來指定要隔離的單元。如果聲明了? ? ? ? ?-elements,則元素應(yīng)在domain_name中。如果-elements直接按名稱指定端口(間接指定端口實例或該實例的更深一層實例),則隔離策略應(yīng)應(yīng)用于該端口,無論該端口模式是否與-applies_to選項指定的端口匹配。當(dāng)沒有指定-elements時,這相當(dāng)于使用定義的電壓域單元列表。
-clamp_value的值可以為:
邏輯0;
邏輯1;
latch(鎖存,當(dāng)隔離信號有效時,非隔離端口的值)
邏輯Z;
以下內(nèi)容也適用。
這個命令不可用于inout端口。
如果聲明?-no_isolation ,那么-elements 顯式或者隱式聲明的所有端口,以及與-applies_to(模式)相匹配的聲明都不將會被隔離。
如果使用-domain、-elements或-applies_to以外的任何其他參數(shù)指定-no_isolation,則是一個錯誤。
如果聲明多條電源線/地線,則會報錯。
如果多個不同的隔離策略對相同的設(shè)計單元、引腳、端口、線網(wǎng)等作用時會報錯。
語法示例:
set_isolation outputs_only-domain PD1-isolation_power_net VDDbackup-clamp_value 1-applies_to outputs
B.10?set_isolation_control
用途 | 為已經(jīng)定義的隔離策略聲明控制信號。 |
語法 | set_isolation_control isolation_name -domain domain_name -isolation_signal signal_name [-isolation_sense <high | low>] [-location <self | parent | sibling | fanout | automatic>] |
表達(dá)式 | isolation_name 隔離策略名稱; -domain domain_name 應(yīng)用此策略的電壓域; -isolation_signal signal_name 隔離控制信號,即在控制下導(dǎo)致聲明的單元被驅(qū)動值鉗夾電平值。 -location <self | parent| sibling | fanout |automatic> 隔離單元在邏輯層級中放置的位置。默認(rèn)為自動automatic。 |
返回值 | 成功返回 1 ,失敗返回0。 |
set_isolation_control命令允許與set_isolation命令分離地指定隔離控制信號和感知,用于那些隔離策略已知但控制信號直到以后才知道的情況。
除了set_isolation_control命令是在當(dāng)前范圍內(nèi)執(zhí)行的,以及–location選項的添加之外,這里的語義相當(dāng)于指定了隔離控制信號,并使用set_isolation命令進(jìn)行感知。
–location定義隔離單元在邏輯層次結(jié)構(gòu)中的位置。
self 將隔離單元放置在被隔離的模型/單元內(nèi)。
parent 隔離單元被放置在被隔離的父模型/單元內(nèi)。sibling?創(chuàng)建一個新的兄類,將隔離單元放置到其中。
fanout 隔離發(fā)生在被隔離端口的所有扇出位置(匯點)。
automatic 實現(xiàn)工具可以自由選擇適當(dāng)?shù)奈恢?#xff08;默認(rèn)值)。
語法示例:
set_isolation outputs_only
-domain PD1
-isolation_power_net VDDbackup
-clamp_value 1
-applies_to outputsset_isolation_control outputs_only
-domain PD1
-isolation_signal cpu_iso
-isolation_sense low
-location parent
B.11?set_level_shifter
用途 | 聲明電平轉(zhuǎn)換器策略 |
語法 | set_level_shifter level_shifter_name ????????-domain domain_name ????????[-elements list] [-applies_to <inputs | outputs | both>] ????????[-threshold value] [-rule <low_to_high | high_to_low | both>] ????????[-location <self | parent | sibling | fanout | automatic>] [-no_shift] |
表達(dá)式 | level_shifter_name 電平轉(zhuǎn)換器策略名稱(僅在報告(reporting)時使用) -domain domain_name 應(yīng)用此策略的電壓域 -elements list 此策略使用的設(shè)計單元列表,輸入端口/引腳,輸出端口/引腳,以及線網(wǎng)。 -applies_to <inputs |outputs | both> 設(shè)置電壓域的輸入或者輸出端口或雙端口電平轉(zhuǎn)換。默認(rèn)為both。 -threshold value 設(shè)置電壓閾值(單位,伏特),用于決定何時需要電平轉(zhuǎn)換器。默認(rèn)為0。 -rule <low_to_high |high_to_low | both> 電平轉(zhuǎn)換器類型。默認(rèn)為both。 -location <self | parent| sibling | fanout |automatic> 電平轉(zhuǎn)換器在邏輯層級中的放置位置。默認(rèn)為?automatic。 -no_shift 可以用–elements選項進(jìn)行聲明,防止在聲明的端口/引腳/線網(wǎng)插入電平轉(zhuǎn)換器。 |
返回值 | 成功返回 1 ,失敗返回0。 |
set_level_shifter命令可用于設(shè)置實現(xiàn)過程中的電平轉(zhuǎn)換策略。電平轉(zhuǎn)換器被放置在具有在不同電壓下操作的源頭和交匯的信號上,因為它們的相關(guān)設(shè)計元件被連接到不同的供電網(wǎng)絡(luò)。如果沒有在特定功率域上指定電平轉(zhuǎn)換器策略,則默認(rèn)電平轉(zhuǎn)換器策略由功率域中的所有單元組成,并使用默認(rèn)策略設(shè)置。
如果指定了–elements,則這些元素應(yīng)位于domain_name中。如果–elements用于指定端口或引腳,則無論-threshold 或?-rule如何聲明,都會在該端口上插入電平轉(zhuǎn)換器。-threshold聲明定義了在插入電平移位器之前驅(qū)動器和接收器之間的電壓差需要有多大。通常,這個閾值是從單元庫中確定的;使用此選項可以覆蓋庫中的值。
–rule可以是low_to_high、high_to_low,也可以同時為兩者。如果指定了low_to_high,則當(dāng)電壓差超過–threshold指定的電壓差時,從較低電壓到較高電壓的信號將得到電平轉(zhuǎn)換器。如果指定high_to_low,則當(dāng)電壓差超過–threshold指定的電壓差時,從較高電壓到較低電壓的信號將得到電平轉(zhuǎn)換器。如果同時指定了這兩個規(guī)則,則相當(dāng)于在策略中同時使用兩個規(guī)則。
–location定義電平轉(zhuǎn)換器在邏輯層次結(jié)構(gòu)中的位置。在聲明的位置上所有必要的供電必須可以獲取到。
self 將電平轉(zhuǎn)換器放置在被轉(zhuǎn)換的模型/單元內(nèi)。
parent 電平轉(zhuǎn)換器被放置在被轉(zhuǎn)換的父模型/單元內(nèi)。sibling?創(chuàng)建一個新的兄類,將電平轉(zhuǎn)換器放置到其中。
fanout 轉(zhuǎn)換發(fā)生在被轉(zhuǎn)換端口的所有扇出位置(匯點)。
automatic 實現(xiàn)工具可以自由選擇適當(dāng)?shù)奈恢谩?/p>
以下內(nèi)容也適用。
這個命令不可用于inout端口。
如果聲明的位置不在以設(shè)計根目錄開始的位置,會報錯。
語法示例:
set_level_shifter shift_up
-domain PowerDomainZ
-applies_to outputs
-threshold 0.02
-rule both
B.12?set_retention
用途 | 指定域中哪些寄存器需要作為保留寄存器,并設(shè)置保留功能的保存和恢復(fù)信號。 |
語法 | set_retention retention_name -domain domain_name <-retention_power_net net_name | -retention_ground_net net_name | -retention_power_net net_name -retention_ground_net net_name> [-elements list] |
表達(dá)式 | retention_name 保留策略的名稱。 -domain domain_name 應(yīng)用此策略的電壓域 <-retention_power_net?net_name | -elements list 電壓域中的對象列表:應(yīng)用此策略的設(shè)計單元,命名的過程,或者時序寄存器reg,以及信號名。 |
返回值 | 成功返回 1 ,失敗返回0。 |
set_retention命令指定域中哪些寄存器需要作為保留寄存器,并標(biāo)識保留功能的保存和恢復(fù)信號。只有元素列表中隱含的寄存器才應(yīng)具有保留能力。如果指定了設(shè)計單元,則設(shè)計單元內(nèi)的所有寄存器都會獲取指定的保留策略。如果指定了過程,則該過程推斷的所有寄存器都會獲取指定的保留策略。如果指定了reg、信號或變量,并且該對象是時序單元,則隱含寄存器獲取指定的保留策略。任何指定的reg、信號或變量,如果不能推斷出時序單元,則不得通過該命令進(jìn)行更改。
應(yīng)至少指定-reretion_power_net或-reretion_ground_net中的一個。如果僅指定了? ? ? ? ? ? ? ? ? ? ? ? ? ? -retention_power_net,則應(yīng)使用主接地線作為保留接地供應(yīng)。如果只指定了? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -reretention_rground_net,則應(yīng)使用主電網(wǎng)作為保留電源。如果同時指定了這兩個選項,則這些選項指定要用作保留電源和接地網(wǎng)的供電網(wǎng)。
當(dāng)保留單元用map_retention_cell命令顯式映射時,保留電源和接地線自動連接到隱式保存和恢復(fù)過程以及影子寄存器,或者連接到保留單元的電源和接地點引腳。隱式保存和恢復(fù)過程以及影子寄存器的關(guān)閉和打開語義如完整規(guī)范的第5節(jié)所述。
如果指定了-save_signal,則應(yīng)指定-restore_signal。如果未指定-save_signal,則不應(yīng)指定? ? ? ? ? ? -restore_signal。如果未指定保存和恢復(fù)信號,則應(yīng)在set_retension_control命令中指定。
如果指定了–elements,則這些單元應(yīng)位于domain_name中。如果未指定–elements,則相當(dāng)于使用定義電源域的elements列表。
以下內(nèi)容也適用。
如果domain_name不能指示一個已創(chuàng)建的電壓域,則會報錯。
如果聲明多條電源線/地線,則會報錯。
語法示例:
set_retention my_retention
-domain PDA
-retention_power_net volt_high
B.13?set_retention_control
用途 | 為已定義的保留策略聲明控制信號和斷言。 |
語法 | set_retention_control retention_name -domain domain_name -save_signal {{net_name <high | low | posedge | negedge>}} -restore_signal {{net_name <high | low | posedge | negedge>}} [-assert_r_mutex {{net_name <high | low | posedge | negedge>}}]* [-assert_s_mutex {{net_name <high | low | posedge | negedge>}}]* [-assert_rs_mutex {{net_name <high | low | posedge | negedge>}}]* |
表達(dá)式 | retention_name 保留策略的名稱。 -domain domain_name 應(yīng)用此策略的電壓域 -save_signal save_net SAVE控制信號,將寄存器的數(shù)值保存到影子寄存器中。 -restore_signal restore_net RESTORE控制信號,將影子寄存器的數(shù)值恢復(fù)到寄存器中。 -assert_r_mutex {{net_name <high | low | posedge | negedge>}} 恢復(fù)信號斷言 -assert_s_mutex {{net_name <high | low | posedge | negedge>}}保存信號斷言 -assert_rs_mutex {{net_name <high | low| posedge | negedge>}}保存和恢復(fù)信號斷言 |
返回值 | 成功返回 1 ,失敗返回0。 |
set_retension_control命令允許與set_retenten命令分離地指定保持控制信號和感測,用于那些保持策略是已知的,但是直到稍后才知道控制信號的情況。由于斷言與保存和恢復(fù)信號有關(guān),因此也可以使用此命令指定斷言。
除了在當(dāng)前范圍內(nèi)執(zhí)行set_retension_control命令外,這里的語義相當(dāng)于用set_retension命令指定了保留控制信號、感知和斷言。
set_retension命令也可以用于指定任何斷言選項。每個選項都會創(chuàng)建一個或多個斷言,當(dāng)指示的RTL信號同時處于活動狀態(tài)時,驗證工具可以觸發(fā)這些斷言。如果-assert_rs_mutex沒有指定信號列表,這表明保存和恢復(fù)信號本身是互斥的。
以下內(nèi)容也適用。
保存信號應(yīng)當(dāng)是一個設(shè)計中已存在的邏輯線,端口,或者引腳。
恢復(fù)信號應(yīng)當(dāng)是一個設(shè)計中已存在的邏輯線,端口,或者引腳。
語法示例:
set_retention my_retention_strategy
-domain PDAset_retention_control my_retention_strategy
-domain PDA
-save_signal {power_controller_inst/save_1 high}
-restore_signal {power_controller_inst/restore_1 low}
-assert_rs_mutex {clock_a posedge}
B.14?set_scope
用途 | 聲明當(dāng)前UPF的作用范圍 |
語法 | set_scope instance |
表達(dá)式 | instance?完成命令后成為當(dāng)前作用域的實例。 |
返回值 | 如果成功,則返回執(zhí)行命令前的當(dāng)前作用域,作為相對于當(dāng)前設(shè)計頂部的完整路徑字符串;如果失敗(例如,如果實例(instance)不存在),則返回空字符串。 |
如果 set_scope命令調(diào)用時沒有指定instance,或者UFP的作用范圍沒有設(shè)置,則認(rèn)為設(shè)置的作用范圍是最頂層設(shè)計。
如果instance是 . ,這個作用范圍依然是當(dāng)前實例。如果instance是 .. ,則作用范圍按照實例的層級上移一個級別。如果instance以 / 開始,作用范圍則回歸到 / 后面的路徑(相對于頂層而言)范圍中。?
語法示例:
set_scope foo/bar
set_scope ..
附錄B翻譯完了,但是UPF指令絕不止這些,要想更多了解,建議閱讀IEEE的官方Standards(IEEE 1801)