新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 一種SoC芯片在Magma Talus下的物理實(shí)現(xiàn)

一種SoC芯片在Magma Talus下的物理實(shí)現(xiàn)

作者: 時(shí)間:2010-04-22 來源:網(wǎng)絡(luò) 收藏

第二章 時(shí)序約束設(shè)計(jì)

芯片時(shí)序約束設(shè)計(jì)的關(guān)鍵在于功耗管理控制模塊的時(shí)序約束。

2.1 功耗管理控制(Power Management Controller, PMC)模塊簡(jiǎn)介

整個(gè)設(shè)計(jì)中首先考慮的是PMC模塊的約束。PMC模塊是系統(tǒng)用來控制系統(tǒng)功耗的的控制器,可以通過寄存器配置,使芯片在不同工作模式之間進(jìn)行切換:Slow、Normal、Idle 和Sleep。這些工作模式可以讓用戶根據(jù)芯片不同的應(yīng)用,通過動(dòng)態(tài)地管理芯片內(nèi)部各子模塊的時(shí)鐘源供給和系統(tǒng)的工作頻率來控制芯片的整體功耗。另外,PMC 還包含了各個(gè)子模塊的初粒度的時(shí)鐘門控電路,通過寄存器配置可以集中控制、關(guān)閉不必要打開的模塊,從而達(dá)到降低功耗的目的。模塊具有以下性能指標(biāo):

?內(nèi)置鎖相環(huán)、可動(dòng)態(tài)變頻;
? 支持Slow、Normal、Idle、Sleep等4種工作模式;
? 支持模塊工作時(shí)鐘集中控制策略,芯片各模塊的時(shí)鐘可以通過PMC來關(guān)閉和打開;
? 低功耗sleep模式下支持DRAM/SDRAM 的數(shù)據(jù)自刷新,使得DRAM 中的數(shù)據(jù)可以得到保持;
? 內(nèi)部具有完整的reset 解決方案,提供3 種reset 選擇:hard reset、soft reset、watchdog reset;
? 內(nèi)部具有完整的喚醒功能。

PMC模塊包含了異步時(shí)鐘動(dòng)態(tài)選擇電路、同步時(shí)鐘動(dòng)態(tài)選擇電路、時(shí)鐘分頻電路、時(shí)鐘門控電路、跨時(shí)鐘域電路,既存在輸入時(shí)鐘,又存在輸出時(shí)鐘,是一個(gè)與時(shí)鐘高度相關(guān)、時(shí)序違例集中、時(shí)序分析較為復(fù)雜的電路。PMC模塊的時(shí)鐘生成電路結(jié)構(gòu)示意圖如圖4所示:

圖4 時(shí)鐘生成圖

系統(tǒng)時(shí)鐘經(jīng)過可配置參數(shù)的系統(tǒng)PLL和動(dòng)態(tài)選擇邏輯后分頻(有1:1、1:2、1:3、1:4四種)。選擇默認(rèn)的2分頻為CPU 提供時(shí)鐘,動(dòng)態(tài)選擇默認(rèn)的3分頻為高速總線提供時(shí)鐘,高速總線時(shí)鐘通過分頻后(有1:1、1:2、1:4、1:8四種),動(dòng)態(tài)選擇默認(rèn)的2分頻為低速總線提供時(shí)鐘。

2.2 時(shí)序約束的一些策略

一個(gè)完整的時(shí)序約束文件包含時(shí)鐘的創(chuàng)建、時(shí)鐘的約束、輸入輸出端口的約束及時(shí)序違例等。SDC格式的約束可以采用豐富的語法表達(dá)出上述內(nèi)容。而后端工具可以比較容易地識(shí)別出該格式的約束。我們采用SDC v1.7格式編寫時(shí)序約束,這樣既能為后端實(shí)現(xiàn)工具blast、talus識(shí)別,又能被靜態(tài)時(shí)序分析工具PrimeTime識(shí)別。

首先根據(jù)設(shè)計(jì)規(guī)格要求確定時(shí)鐘周期,在整個(gè)后端設(shè)計(jì)過程中的不同階段加以調(diào)整和修改。為保守計(jì),我們采取冗余設(shè)計(jì),最終設(shè)定的周期值比規(guī)格要求的值嚴(yán)格。Clock latency和clock skew的設(shè)置也要根據(jù)實(shí)際的時(shí)鐘樹結(jié)構(gòu)不斷地進(jìn)行調(diào)整和修改。最終合理的時(shí)序約束文件是經(jīng)過反復(fù)地實(shí)驗(yàn)不斷地修正而得到的。

復(fù)雜的時(shí)鐘,復(fù)雜的功能模式,必然帶來復(fù)雜的時(shí)序約束。對(duì)其正確、完備的約束施加,是保證后端設(shè)計(jì)時(shí)序分析和優(yōu)化有效的關(guān)鍵所在。

而PMC模塊的主要電路,如時(shí)鐘門控電路、分頻電路,動(dòng)態(tài)選擇電路等,采用例化的標(biāo)準(zhǔn)單元以網(wǎng)表的形式直接給出,在用 Blast Rtl進(jìn)行邏輯綜合前,將這些以網(wǎng)表形式存在的單元使用force keep命令,保證時(shí)序約束施加點(diǎn)的固定。

在Fix Time前設(shè)置時(shí)序約束時(shí),采用的方法是3分頻PLL后的源時(shí)鐘作為高速總線上的時(shí)鐘,低速總線時(shí)鐘與高速總線時(shí)鐘頻率一致,這樣在邏輯綜合階段時(shí)因?yàn)檫€沒有真正的時(shí)鐘樹,而設(shè)置的約束又比較保守,使綜合結(jié)果的時(shí)序有較大的冗余,又加快了綜合的速度。

在時(shí)鐘樹優(yōu)化時(shí),采用MMMC來進(jìn)行。我們僅以功耗模式中Normal模式里的兩種在應(yīng)用時(shí)較常用的時(shí)鐘使用模式來設(shè)置MMMC:一種是3分頻PLL后的源時(shí)鐘作為高速總線上的時(shí)鐘,低速總線時(shí)鐘是高速總線時(shí)鐘的2分頻;另外一種模式是使用 1分頻PLL后的源時(shí)鐘作為高速總線時(shí)鐘,低速總線時(shí)鐘與高速總線時(shí)鐘頻率及PLL后的源時(shí)鐘頻率一致,此時(shí)低速總線時(shí)鐘頻率高于前一種模式下的時(shí)鐘頻率,達(dá)到低速總線上模塊能達(dá)到的最高頻率。其他模式僅用來分析及優(yōu)化。這樣可以有效加速時(shí)鐘樹創(chuàng)建的時(shí)間及分析效率。

在約束設(shè)計(jì)過程中,不可避免的會(huì)涉及到各種模式下時(shí)鐘間異步關(guān)系的設(shè)置,我們采用SDC v1.7里面的set_clock_group命令來進(jìn)行,該命令能有效的表征各個(gè)時(shí)鐘之間的異步關(guān)系,避免了set_false_path繁瑣的設(shè)置,并且能夠被 軟件轉(zhuǎn)換為force timing clockgroups命令。下面是該設(shè)計(jì)中的兩個(gè)clock group設(shè)置的例子:

set_clock_group -name func_async_ck1 -logically_exclusive
-group [get_clocks "fck2_n"]
-group [get_clocks "hck3_n hck2anu3_n"]
-group [get_clocks "hck2anu4_n"]
set_clock_group -name func_async_ck2 -asynchronous
-group [get_clocks "usb_dev_ck"]
-group [get_clocks "usb_pll_ck"

另外分頻時(shí)鐘與源時(shí)鐘關(guān)系的設(shè)置上,我們根據(jù)仿真波形來確定分頻時(shí)鐘與源時(shí)鐘之間的相位關(guān)系,從而為create_generated_clock命令在-divide_by,-edges,-invert,-combinational間選擇不同的選項(xiàng),使分頻時(shí)鐘和源時(shí)鐘之間的source latency關(guān)系很容易就能確定下來,簡(jiǎn)化了時(shí)序分析。 下面是該設(shè)計(jì)中幾個(gè)分頻時(shí)鐘約束的例子:

create_generated_clock -name usb_dev_ck
-divide_by 4 -invert
-source [get_pins "…/OR2CLK_Inst/Z"]
-master_clock [get_clocks "pllout48m"] -add
[get_pins "…/clk_1x_reg/Q"]
create_generated_clock -name rngck8
-edges "7 15 23"
-source [get_pins "…/OR4CLK_Inst/Z"]
-master_clock [get_clocks "pck_n"] -add
[get_pins "…/CLK_CNT_reg[2]/Q"]
create_generated_clock -name pck8_n
-edges "3 11 19"
-source [get_pins "…/OR4CLK_Inst/Z"]
-master_clock [get_clocks "hck3_n"] -add
[get_pins "…/PCLK_DIV8_reg/Q"]
create_generated_clock -name hck_out
-combinational
-source [get_pins "…/OR2CLK_Inst/Z"]
-master_clock [get_clocks "hck3_n"] -add
[get_ports "hclk"]

2.3非時(shí)序邏輯時(shí)序?。╠ata-to-data timing arc)的處理

中使用到的EE模塊是一個(gè)異步IP,時(shí)序模型存在非時(shí)序邏輯的時(shí)序弧(non-sequential library arc,也即data-to-data timing arc):輸入的數(shù)據(jù)或控制信號(hào)與輸入pin——CEN、WEN之間有data-to-data 的時(shí)序弧存在、其中的控制信號(hào)CHER、CHWR、ER_ONLY、WR_ONLY與輸出pin——READY之間也存在著data-to-data 的時(shí)序弧。綜合工具并不區(qū)分時(shí)序邏輯與非時(shí)序邏輯的時(shí)序弧,只要設(shè)計(jì)中有時(shí)序弧的單元存在,綜合工具就認(rèn)為應(yīng)該在相應(yīng)pin腳設(shè)置時(shí)鐘,因此在綜合的過程中會(huì)認(rèn)為在CEN、WEN、READY這幾個(gè)信號(hào)pin應(yīng)設(shè)置時(shí)鐘。如果不設(shè)置,在綜合過程中,綜合工具的時(shí)序分析引擎是報(bào)不出任何經(jīng)過或到CEN、WEN、READY的路徑。而一旦設(shè)置為時(shí)鐘,就會(huì)產(chǎn)生很多false path。我們最后的做法是不在邏輯綜合階段將其設(shè)為時(shí)鐘,而是將該問題留到時(shí)鐘樹優(yōu)化時(shí),使用config timing check data_to_data on 將data-to-data check選項(xiàng)打開,并使用force timing check命令約束相應(yīng)的時(shí)序關(guān)系。



關(guān)鍵詞: Magma Talus SoC

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉