低功耗設計——基于UPF進行設計

????????UPF,?統一電源格式UPF(Unified Power Format)是新思(Synopsys)公司通用的電源格式,是一組標準的類Tcl 語言的集合,用來描述芯片設計中的低功耗意圖(Low-Power Design Intent)。

????????使用UPF 的語言,可以描述供電電源網絡,電源開關,隔離單元,保持寄存器單元等等和功耗設計相關的元素。這些語言可以在設計,分析,驗證,實現這些流程中應用。在低功耗設計流程中加入UPF可以保證功耗意圖在IC 設計流程中的一致性體現,這樣的一致性可以讓低功耗信息在仿真、邏輯一致性檢查、設計驗證環節更容易實現。

????????2007 年2 月,Synopsys 工具經過Accellera 的批準被設計成可以支持UPF 1.0標準。Accellera 是一個電子行業組織,致力于發展電子設計自動化標準并推廣到整個電子行業中。這個組織的成員包括一大部分EDA 公司,其中有Magma Design Automation, Mentor Graphics 和Synopsys。這些公司相互合作來升級各家的工具支持UPF 標準。現在,Accellera 已經將UPF 的版權交給了IEEE P1801 工作組,這個工作組負責今后的UPF 標準擴展和完善以及將UPF 列入IEEE 標準的工作。

一、概述

????????UPF文件可以在設計早期引入對功耗的考慮。在RTL級設計中, 可以把電源方案相關信息關聯到代碼中。下圖展示了UPF對整個設計流程的支持。UPF提供了低功耗設計流程前后一致的功耗信息格式。

????????

?????????UPF 的運用貫穿低功耗電路始終,比如仿真驗證、邏輯綜合、物理實現、等價性驗證和最終簽核(SignOff)的過程都能使用。該流程相比于其他設計思路有如下優點:更加方便集中管理和實施各種低功耗方法;統一電源格式使設計整個過程更加高效,減少設計周期;提升電路的設計質量;減少低功耗設計風險,此流程已被行業內多家企業成功使用。

????????RTL 描述的是電路中的邏輯功能,而UPF 可以方便的描述RTL 不方便在電路中直接體現的電源信息,所以UPF 也是低功耗設計不可或缺的源文件,與RTL 文件一起被多種EDA 工具讀入來實現設計者需要的電路功能。

????????綜合階段:讀入RTL 文件和初始UPF 文件,產生門級網表及新的UPF 文件,新的UPF 文件與產生的門級網表對應,不僅包括初始UPF 信息,并且描述了在綜合過程中插入的低功耗元器件(如電源開關單元等)之間的電源連接關系。

????????物理實現階段:讀入綜合產生的網表和UPF,執行布局布線后,生成包含完整電源信息的網表和新的UPF。布局布線產生的UPF 包含初始UPF 所有信息,并且包含有布局布線時對低功耗設計調整的信息。

????????UPF 在流程上的等價性如RTL 一樣可以通過等價性驗證工具保證,比如用等價性驗證工具讀入RTL、UPF 和基于UPF 綜合出的網表進行比較,然后讀入基于UPF 綜合出的網表和布局布線產生出的網表進行比對,由此來保證邏輯與功耗意圖在整個流程中都是等價的。

二、UPF的概念

????????功耗意圖(Power Intent)是指實現芯片低功耗設計所需要的思想和方法。UPF 語言提供了一種描述芯片功耗要求的方法,但是卻沒有精確的描述這些要求是如何實現的。UPF 語言描述了如何連接每一個設計單元的供電電源,供電網絡的模型,以及電路的邏輯功能如何來支持動態電壓切換等等,但卻沒有任何關于布局布線的描述。UPF 語言獨立于RTL 語言,并且像RTL 語言一樣都是設計的輸入文件。

????????UPF 能表述出IC 電路低功耗設計的供電意圖,比如描述電壓域、電壓域的供電端口、電壓域的電壓變換、電壓域的供電電壓、電壓域之間怎樣加入低功耗元件,以及定義電路的電源網絡、電源線間的行為等等。下面舉例說明如何用UPF 命令描述功耗意圖。

1、對供電網絡的描述

1)電壓域

????????電路設計時為了更好的整體調配控制每個部分的電壓,設計人員會給芯片劃分不同的電源區域,每一個電源區域內的所有單元供電電壓一致,每一個區域即為一個電壓域。

?????????默認情況下,同一個電壓區域里所有的邏輯單元連接到相同的主要供電電源和地線上,其他次要的供電電源也可以定義在這個電壓區域里。一般情況下,一個電壓區域在芯片物理版圖上被劃做一個連續的區域(Voltage Area)。(但這并不是UPF 強制要求的)。

????????每一個電壓區域都有一個邊界(Scope)和范圍(Extent)。邊界表示在指定的電壓區域在邏輯層次的深度。范圍表示同屬于一個電壓域的邏輯單元的集合,他們共用相同的供電電源。所以定義邊界可以明確電壓域的邏輯所屬關系,定義范圍可以明確電壓域的大小。

?????????定義命令示例如下:

????????set_design_top用來指定該UPF文件所描述的頂層模塊名為design_top。然后使用set_scope 這個命令來指定當前UPF 文件的命令對應在RTL 代碼中的層次結構,如果沒有寫這條命令,則當前的UPF 文件的是對應于設計的最頂層。-create_power_domain 命令用來創建電壓區域,-elements 用來表示設計層次結構中哪些部分是屬于這個電壓區域的。在一個UPF 文件中,一定要有一個電壓區域作為頂層區域,使用-include_scope 來指定當前所有的在接下來未被指定的層次結構屬于該頂層區域的電壓區域。

2)供電端口與網絡

????????每一個電壓區域的邊界上都每一個電壓區域的邊界上都必須定義供電端口(Supply Port)和供電網絡(Supply Net)。供電網絡是指貫穿于電壓域中提供電源的“導線”,并且可以穿過多個電壓域達到重用的效果。供電端口是指兩個電壓區域的供電電源連接點。供電網絡從一級邏輯穿過供電端口到達另外一級邏輯。?

? ? ? ? 定義命令示例如下:

????????

?

????????示例中create_supply_port 創建了一個電源端口,作用是和上一級電壓區域進行連接,create_supply_net 在電壓區域里創建了一組電源網絡,-reuse 可以在指定的電壓區域里創建一組與之前創建的名字相同的電源網絡相連接的電源網絡。connect_supply_net 把電源網絡連接到電源端口上。

3)電源開關

????????電源開關(Power Switch)是用來連通或切斷供電網絡的器件。一個電源開關包括一個輸入供電網絡,一個可以被連通或切斷的輸出供電網絡,和至少一個輸入控制信號,還可以選擇性的增加為多個輸入控制信號以及輸出一個或多個應答信號。

? ? ? ? 定義命令示例如下:

????????在做完之前的電源網絡創建和連接工作后,接下來使用create_power_switch命令來建立和連接電源開關。示例中在電壓域PD_2中插入電源開關SW_PD_2,此命令中詳細的描述了該開關的電源輸入網絡為VDD_HIGH,電源輸出網絡為VDD_OFF1,即VDD_HIGH在經過了電源關斷單元后變成了VDD_OFF1。控制信號為PD2_sleep_en,當控制信號為高電平的時候,電源開關關斷。反之,控制信號為低電平時,VDD_OFF1與VDD_HIGH接通,電壓域PD_2處于上電狀態。

????????后面再用map_power_switch 命令把抽象的電源開關和單元庫中的電源開關模型對應起來,這樣后端工具在布局布線的時候就能正確的插入所需要的電源開關。

????????供電端口(Supply Ports)、供電連接線(Supply Net)、開關(Switches)組成了供電網絡(Supply Network),供電連接線連接到供電端口給電壓域供電,電源關斷與否由開關操控。

????????

????????使用set_domain_supply_net 命令就把指定電壓區域里的所有單元默認連接到主要的供電電源和地上,這樣一來,電壓區域內基本的電源網絡結構已經構建好了?。

2、對電源狀態表的描述

????????在之前的功耗意圖設計完畢之后,還需要再描述一個電壓狀態表(Power State Table),其內容是定義了所有芯片在工作的時候各個電壓區域合理的電壓狀態。電壓狀態包括了電壓區域的開關和電源端口上的電壓值。其主要目的是確定功耗意圖正確無誤的實現在芯片設計中。根據電源狀態表,EDA 工具能夠判斷出在各電壓域之間是否需要插入特殊單元,如電平轉換器等。

????????比如電壓區域A 的輸出經過了電壓區域B 到達了電壓區域C,如果電壓區域B 是常開的,那么沒有問題;但如果電壓區域B 是可以關斷的,而且在電壓狀態表里存在A,C 打開而B 關閉的狀態,那么A 的輸出在電壓區域B 里如果需要插入緩沖器的話,則插入的必須是常開電源供電的緩沖器。定義好電壓狀態表之后,后端工具會根據這個狀態表來對之前設計的功耗意圖進行檢查和綜合。

? ? ? ? 定義示例如下:

????????首先用命令add_port_state定義電源端口有哪些狀態,然后再用creat_pst命令以一系列特定順序的電源線來創建一個電源狀態表。最后用add_pst_state命令來定義一組電源線狀態組合。?

3、其他

? ? ? ? 其他會用到的單元見

數字后端——低功耗單元庫_滄海一升的博客-CSDN博客_數字后端工具為了實現例如門控時鐘,多電源電壓,多閾值電壓,門控電源等低功耗技術,芯片設計的單元庫必須有一些特殊的器件來支持完成這些低功耗技術的實現。https://blog.csdn.net/qq_21842097/article/details/122638582

1)隔離單元

? ? ? ? 隔離單元定義示例如下:

????????上面的UPF 命令set_isolation 和set_isolation_control 都是用來定義隔離單元的策略,包括加在指定電壓區域的輸入還是輸出,隔離單元的電源網絡連接,隔離單元控制信號的電平是高有效還是低有效,隔離單元插入的位置是在電壓區域的里面還是外面等。

????????一般來說,可以定義兩組策略,一組是默認隔離到邏輯值“0”的一組,一組是隔離到邏輯值“1”的一組,這樣定義的好處是可以避免漏掉未定義隔離單元的輸入輸出,而且讀起來也很直觀。

2)電壓轉換單元

? ? ? ? 對于level shifter,如果是只是插入普通的電壓轉換單元,就可以簡單的使用UPF 的命令set_level_shifter 來描述插入電壓轉換單元的策略。這里需要的是帶有隔離功能的電壓轉換單元也就是帶有使能端的電壓轉換單元,在UPF 中應該既使用set_isolation 和set_isolation_control 來定義隔離單元策略,又需要使用set_level_shifter 來定義電壓轉換單元策略,后端工具會自動識別并在綜合中插入帶有使能端的電壓轉換單元。

????????通常電平轉換單元應放置在目的電壓域,定義示例如下:

?????????“-threshold”選項用來定義當電壓差超過了由其指定的大小時,才能插入電平轉換單元。?

?3)保持寄存器

? ? ? ? 定義示例如下:

? ? ? ? ?示例中把電壓域PD_2內斷電后需要保存數據的寄存器替換為保持寄存器,包括保持寄存器在save控制信號為高電平時保存數據,在restore控制信號為低電平時恢復數據,在電源關斷時保持寄存器使用的電源是VDD_HIGH。

三、設計流程

????????基于UPF 的低功耗設計流程是從寄存器傳輸級(RTL)開始并加上一個獨立的含有低功耗設計意圖的UPF 文件。RTL 設計和UPF 設計分別存放在不同的文件中,這樣可以讓RTL 和UPF 的修改互相不受影響。下圖所示為基于UPF 的低功耗設計流程。?

?????????在設計的每一個階段,EDA 工具都需要UPF 的設計輸入。其中用來做邏輯仿真,低功耗下的邏輯仿真和靜態電源網絡驗證的工具分別為VCS,MVSIM和MVRC。邏輯綜合工具Design Compiler 和物理版圖實現工具IC Compiler 負責后端實現工作。使用Formality 進行RTL 與UPF 的等價性驗證。PrimeTime,PrimeTimePX,PrimeRail 這些工具可以用來分析整體設計的時序約束要求和功耗大小。

????????綜合工具Design Compiler 讀入RTL 代碼和初始的UPF 文件,在綜合后產生網表和與其對應的UPF’。新產生的UPF’既包含了原始UPF 的信息,同時也包含了綜合時Design Compiler 插入的特殊單元(如隔離單元,電壓轉換單元等)的電源連接關系。

????????物理實現工具IC Compiler 讀入綜合后的網表和UPF’文件,來進行布局布線操作,從而得到具有完整電源網絡的門級網表和UPF’’。UPF’’包含了UPF’中的所有信息,并且加入了布局布線時UPF 的低功耗設計的意圖(比如插入電源開關等)。

????????RTL 或綜合后網表與對應的UPF 可以通過仿真工具,等價性驗證工具和時序分析工具來進行驗證和分析。例如等價性驗證工具Formality 可以通過讀入RTL與UPF,綜合后網表與UPF’來比較RTL 代碼和綜合后網表的邏輯功能與低功耗設計意圖的等價性。

????????VCS 仿真器和MVSIM 多電壓域仿真工具可以用來在不同的設計階段(綜合前RTL,綜合后加入電源網絡相關單元門級網表,布局布線后加入電源開關的門級網表)進行帶有電源信息的功能邏輯仿真。在每一個設計階段,都可以用這種帶有電源信息的仿真來檢查電源電壓的變化對設計的影響,精確的定位出低功耗設計的問題所在。MVRC 可以根據UPF 的描述來對電源網絡的連接性,結構及功耗意圖的一致性進行檢查。

????????PrimeTime 讀入Design Compiler 或IC Compiler 生成的門級網表和對應生成的UPF 文件,用來進行的時序分析。PrimeTime 使用UPF 的電源信息來構造一個虛擬的電源網絡模型,并且將電壓值標注在每一個實例化門單元的電源地引腳上。PrimeTime 只是進行時序分析,不會對電源網絡結構進行任何結構或者功能的修改,所以PrimeTime 不會生成任何修改的UPF 文件。

1、基于UPF的邏輯綜合

????????相比于一般的邏輯綜合,基于UPF的邏輯綜合需要增加以下步驟:讀入UPF文件、對不同的電壓域設定不同的電壓、檢查UPF對多電壓設計的描述是否正確等。

????????首先需要在target_library里添加在低功耗設計時需要用到的庫,庫中包含隔離器、電平轉換器、電源開關等特殊單元,且這個庫應添加在標準單元庫的后面。

????????在DC綜合腳本里的主要步驟如下:

????????1) 設置相關變量;

????????2) 讀入設計及相關約束;

????????3) 用load_upf命令讀入UPF文件?

????????4) 用命令set_voltage設定各電源線的工作電壓。工具會根據各電源線給定的工作電壓,自動選擇相應的工作環境對RTL進行綜合。如下,設置VDD_HIGH、VDD_OFF1的工作電壓為0.9V,VDD_GLB、VDD_OFF的工作電壓為0.8V,VSS的工作電壓為0V。

????????5) 用check_mv_design命令檢查UPF對多電壓設計的描述是否正確;

????????6) 生成功耗報告,保存Design Compiler綜合后生成的UPF文件以供布局布線工具使用。

? ? ? ? 然后最后用工具PrimeTime讀入綜合之后生成的門級網表和UPF文件UPF’進行了帶電源信息的時序檢查,保證時序滿足要求。?

2、低功耗設計下的功能仿真

????????Synopsys公司有一款基于UPF的低功耗動態驗證工具MVSIM。它可以與目前主流的功能仿真器比如Modelsim,VCS協同仿真。設計者可以在RTL設計階段結合UPF文件來驗證低功耗設計的正確性,檢查UPF文件所描述的低功耗設計意圖是否正確,這樣能夠在設計初期發現問題,大幅度地降低設計的成本和風險。隨著低功耗設計復雜度的提高,設計者們對低功耗設計的仿真驗證技術提出了越來越高的要求,Synopsys公司為了提高低功耗仿真驗證的速度,把MVSIM工具的低功耗引擎整合到了VCS仿真器里面,所以叫MVSIM-Native Mode。

?????????如圖所示為MVSIM-Native Mode仿真流程,與一般的VCS仿真相比,工具是通過在編譯時增加一個選項“-upf upf_file_name”來讀入UPF文件的,這樣工具就可以做帶有電源信息的邏輯功能仿真了。

????????在設計中做Power Aware Simulation的簡單步驟如下所示:

????????1) 在VCS編譯時增加-upf選項讀入UPF文件,增加-power_top選項

????????2) 在測試平臺里添加語句給電源上電

????????3) 主要針對于門控電源技術,在測試平臺里添加一些功耗控制語句,檢查控制信號(如電源開關單元、隔離單元、保持寄存器的save和restore信號)變化后,電路是否按照設計要求正確的工作。

????????4) 運行過程與一般的VCS仿真相同。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253485.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253485.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253485.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用公眾號獲取 任意公眾號文章列表 軟件還是免費

用公眾號獲取 任意公眾號文章列表 軟件還是免費還不快點下載 下載 地址 https://pan.baidu.com/s/1jI44Wjs轉載于:https://www.cnblogs.com/wx85437898/p/7488590.html

CentOS7時間設置問題

本地安裝一個VMWare player虛擬機客戶端,并安裝了Linux CentOS7 Basic Web Server系統,時區在安裝時已經選擇了Asia/Shanghai,但是安裝完成后,時間和當前外部的時間不一致,如下圖 圖一 圖二 圖三 后經搜索發現,由于未開…

關于Nand ECC 錯誤

Nand flash ECC數據錯誤怎么辦? 我編譯過kernel 當時選了ECC校驗 啟動以后報錯 去掉了,就不報錯了 所以我會先考慮是不是這個問題 一般來說,硬件ECC校驗出錯可能性比較小吧? 我啥也不懂 -----摘自網絡經典文章:“LINU…

低功耗設計——功耗估算

根據在功耗分析的過程中是否有輸入向量的提供,功耗估算方法可以分為仿真的方法(Simulative)和非仿真的方法(Non-simulative): 仿真的方法是根據用戶所提供的大量輸入向量來對電路進行模擬,利用…

uboot 與系統內核中 MTD分區的關系

分類: Nand 驅動 2011-11-06 23:48 705人閱讀 評論(2) 收藏 舉報 uboot 與系統內核中 MTD分區的關系: 分區只是內核的概念,就是說A~B地址放內核,C~D地址放文件系統,等等。 1:在內核…

Deep Learning(深度學習)學習筆記整理系列三

Deep Learning(深度學習)學習筆記整理系列 聲明: 1)該Deep Learning的學習系列是整理自網上很大牛和機器學習專家所無私奉獻的資料的。具體引用的資料請看參考文獻。具體的版本聲明也參考原文獻。 2)本文僅供學術交流&…

輾轉相除法 求最大公約數和最小公倍數

# include<stdio.h> int main() { int a,b,c,x,y; printf("請輸入兩個正整數&#xff0c;用逗號間隔&#xff1a;"); scanf("%d,%d",&a,&b); xa; yb; if (a<b) { ca; ab;      //要保證 a>b bc; } while (b!0) { ca; ab; bc%b; …

Conformal ECO 流程介紹

之前聽說過一句話&#xff0c;沒有修過ECO的人生是不完整的。最近就給我整得再次完整了。。。。。。 最近趕項目&#xff0c;RTL freeze之后&#xff0c;后仿發現出了bug&#xff08;還好攔下來了&#xff0c;不然頭更大&#xff09;&#xff0c;于是做了一次function ECO&…

最新天貓面試題(含總結):線程池+并發編程+分布式設計+中間件

最新天貓面試題&#xff08;含總結&#xff09;&#xff1a;線程池并發編程分布式設計中間件https://my.oschina.net/u/3892...

關于NAND flash的MTD分區與uboot中分區的理解 .

今天做內核移植&#xff0c;準備添加NAND flash的驅動&#xff0c;做到MTD分區時&#xff0c;想起在一本書上看到的一句話&#xff0c;說的是分區時每個區之間沒有間隙&#xff0c;前一個區的結束地址是后一個區的起始地址。可是當我看我的開發板的教程時&#xff0c;分區如下&…

Zabbix discoverer processes more than 75% busy

原文發表于cu&#xff1a;2016-06-22 Zabbix discoverer processes more than 75% busy原因及處理。 一&#xff0e;現象 配置了discovery任務后&#xff0c;zabbix dashboard 告警如下&#xff1a; Zabbix discoverer processes more than 75% busy 二&#xff0e;原因 1. 配置…

Begin()

好&#xff0c;要開始在新的博客里寫東西了&#xff0c;上一個博客的賬號和密碼都忘了... 我開通博客的申請里寫&#xff0c;我博文的內容會以機器學習和控制算法的學習筆記為主。 那我寫的估計是假的申請。 好吧&#xff0c;既然是這樣寫申請的一定程度上也是要兌現承諾的&…

圖像紫邊消除(depurple)

圖像紫邊廣泛存在于目前的手機攝像頭、數碼相機、監控攝像頭等數字成像系統所得圖像中,當我們使用這些設備在逆光、大光圈等條件下拍攝時,所得圖像的局部區域,特別是高反差區域(亮暗對比反差很大的圖像區域,比如天空、燈管與物體相接的邊緣)會比較容易觀察到紫邊,解決圖…

Swift 性能相關

起初的疑問源自于「在 Swift 中的, Struct:Protocol 比 抽象類 好在哪里&#xff1f;」。但是找來找去都是 Swift 性能相關的東西。整理了點筆記&#xff0c;供大家可以參考一下。 一些疑問 在正題開始之前&#xff0c;不知道你是否有如下的疑問&#xff1a; 為什么說 Swift 相…

linux_NandFlash_driver_超詳細分析 .

分類&#xff1a; Linux 驅動 Nand 驅動 2011-11-06 23:16 474人閱讀 評論(0) 收藏 舉報 今天學習了NandFlash的驅動&#xff0c;硬件操作非常簡單&#xff0c;就是這個linux下的驅動比較復雜&#xff0c;主要還是MTD層的問題&#xff0c;用了一下午時間整理出來一份詳細的分析…

HTTPS 路徑配置

1: 首先安裝 fiddlercertmaker.exe 文件2:Tools -> HTTPS 3: Connections 勾中Allow remote computer to connect轉載于:https://www.cnblogs.com/eason-d/p/7492177.html

CMOS圖像傳感器——相位對焦

之前介紹了許多自動對焦的方案 自動對焦方法學習_滄海一升的博客-CSDN博客自動對焦的各類方法學習介紹https://blog.csdn.net/qq_21842097/article/details/121373263 在里面提到了遮蔽像素相位檢測法,原理上算是相位檢測法(Phase Detection Auto Focus,PDAF)的一種。…

51nod 1343 行列式的根

這題分塊搞一搞&#xff0c;算到最后發現結果就是算矩陣J的行列式&#xff0c;要取模m&#xff0c;那個sign消掉了。 參考文獻在這&#xff0c;歐幾里德算法的應用&#xff0c;金斌 代碼還是比較好寫的&#xff0c;python代碼 n,mmap(int,raw_input().split()) a[] for i in ra…

Spring Cloud Config 和Spring Cloud Bus實現配置中心

2019獨角獸企業重金招聘Python工程師標準>>> Spring Cloud是很多組件的集合&#xff0c;Spring將常用的技術框架進行包裝和整合&#xff0c;如mybatis zookeeper rabbitmq redis等等&#xff0c;還有一些科技公司貢獻出來的一些經過生產環境驗證的組件如奈飛公司貢獻…

ARM Linux啟動過程分析

1. 引 言 Linux 最初是由瑞典赫爾辛基大學的學生 Linus Torvalds在1991 年開發出來的&#xff0c;之后在 GNU的支持下&#xff0c;Linux 獲得了巨大的發展。雖然 Linux 在桌面 PC 機上的普及程度遠不及微軟的 Windows 操作系統&#xff0c;但它的發展速度之快、用戶數量的日益…