本發(fā)明涉及集成電路設(shè)計領(lǐng)域,尤其涉及一種靜態(tài)時序分析方法和裝置。
背景技術(shù):
數(shù)字集成電路的設(shè)計必須滿足一定的時序關(guān)系,否則電路設(shè)計將無法達(dá)到預(yù)期的效果。時序分析的主要作用是根據(jù)電路內(nèi)部邏輯和布線的延時,驗(yàn)證是否滿足設(shè)計者的約束。時序分析分為動態(tài)時序分析和靜態(tài)時序分析。動態(tài)時序分析,也就是仿真,動態(tài)時序分析測試向量規(guī)模巨大并且可能測試向量不完備,最后耗費(fèi)大量開發(fā)資源又無法暴露出所有的時序問題。靜態(tài)時序分析的優(yōu)點(diǎn)在于它不需要輸入測試向量就能夠窮盡所有的路徑,可以對電路設(shè)計進(jìn)行全面的時序功能檢查,還能利用時序分析的結(jié)果來優(yōu)化EDA流程中綜合,布局布線等過程,靜態(tài)時序分析已經(jīng)越來越多的被用到數(shù)字集成電路的設(shè)計中。
而在集成電路的設(shè)計過程中,用戶在完成初步設(shè)計后,如果時序分析不滿足,則需要進(jìn)一步修改設(shè)計,然后重新查看時序分析結(jié)果,如果用戶的設(shè)計比較大,則重頭開始分析則需要耗費(fèi)的時間會很長,導(dǎo)致效率低下。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明旨在解決現(xiàn)有技術(shù)中在進(jìn)行靜態(tài)時序分析時,由于修改設(shè)計而導(dǎo)致效率低下的問題。
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供一種靜態(tài)時序分析方法,包括:
根據(jù)當(dāng)前網(wǎng)表,建立對應(yīng)的時序圖;
在所述網(wǎng)表發(fā)生變化時,記錄發(fā)生變化的所述網(wǎng)表中的實(shí)例及其變化的類型;
根據(jù)所述發(fā)生變化的實(shí)例及其變化的類型,更新所述時序圖;
根據(jù)更新后的所述時序圖進(jìn)行靜態(tài)時序分析,得出靜態(tài)時序分析結(jié)果。
可選的,所述根據(jù)當(dāng)前網(wǎng)表,建立對應(yīng)的時序圖包括:
遍歷所述網(wǎng)表中的所有對端口,并根據(jù)所述對端口信息建立時序節(jié)點(diǎn);
遍歷所述網(wǎng)表中的所述實(shí)例的管腳,并根據(jù)所述管腳信息建立時序節(jié)點(diǎn);
根據(jù)時序約束關(guān)系,并結(jié)合所述對端口信息的時序節(jié)點(diǎn)、管腳信息的時序節(jié)點(diǎn),建立所述時序圖。
可選的,所述記錄發(fā)生變化的網(wǎng)表中的實(shí)例及其變化的類型包括:將發(fā)生變化的所述實(shí)例添加至預(yù)設(shè)的變化列表中;所述實(shí)例的變化的類型包括:修改實(shí)例信息、增加實(shí)例信息、刪除實(shí)例信息中的任意一種。
可選的,所述根據(jù)發(fā)生變化的實(shí)例及其變化的類型,更新時序圖包括:
若所述實(shí)例的變化的類型是修改了實(shí)例信息,則:根據(jù)發(fā)生變化的所述實(shí)例的時序節(jié)點(diǎn),刪除所述時序節(jié)點(diǎn)之前的時序約束,并重新建立新的時序約束;
若所述實(shí)例的變化的類型是新增實(shí)例信息,則根據(jù)所述新增的實(shí)例信息確定其時序節(jié)點(diǎn),并將所述時序節(jié)點(diǎn)與當(dāng)前的所述時序圖中的時序節(jié)點(diǎn)建立時序約束;
若所述實(shí)例的變化的類型是刪除實(shí)例信息,則遍歷所述被刪除的實(shí)例的所有時序節(jié)點(diǎn),根據(jù)所述時序節(jié)點(diǎn)確定與所述時序節(jié)點(diǎn)相關(guān)的時序約束,并移除所述時序節(jié)點(diǎn)和時序約束。
可選的,所述根據(jù)更新后的所述時序圖進(jìn)行靜態(tài)時序分析包括:
對所述時序圖進(jìn)行時序檢查,所述時序檢查至少包括:檢查所述時序圖中是否有環(huán)路;
遍歷所述時序圖,所述遍歷包括前向遍歷和/或逆向遍歷,確定所有的時序路徑;
根據(jù)所述時序路徑的各組成部分的延時,確定所述時序路徑的到達(dá)時間和要求時間,并進(jìn)一步確定時序余量;
根據(jù)所述時序余量,生成靜態(tài)時序分析結(jié)果。
本發(fā)明還提供一種靜態(tài)時序分析裝置,包括:
創(chuàng)建模塊,用于根據(jù)當(dāng)前網(wǎng)表,建立對應(yīng)的時序圖;
記錄模塊,用于在所述網(wǎng)表發(fā)生變化時,記錄發(fā)生變化的所述網(wǎng)表中的實(shí)例及其變化的類型;
更新模塊,用于根據(jù)所述發(fā)生變化的實(shí)例及其變化的類型,更新所述時序圖;
分析模塊,用于根據(jù)更新后的所述時序圖進(jìn)行靜態(tài)時序分析,得出靜態(tài)時序分析結(jié)果。
可選的,所述創(chuàng)建模塊還用于:
遍歷所述網(wǎng)表中的所有對端口,并根據(jù)所述對端口信息建立時序節(jié)點(diǎn);
遍歷所述網(wǎng)表中的所述實(shí)例的管腳,并根據(jù)所述管腳信息建立時序節(jié)點(diǎn);
根據(jù)時序約束關(guān)系,并結(jié)合所述對端口信息的時序節(jié)點(diǎn)、管腳信息的時序節(jié)點(diǎn),建立所述時序圖。
可選的,所述記錄模塊還用于:將發(fā)生變化的所述實(shí)例添加至預(yù)設(shè)的變化列表中;所述實(shí)例的變化的類型包括:修改實(shí)例信息、增加實(shí)例信息、刪除實(shí)例信息中的任意一種。
可選的,所述更新模塊還用于:
若所述實(shí)例的變化的類型是修改了實(shí)例信息,則:根據(jù)發(fā)生變化的所述實(shí)例的時序節(jié)點(diǎn),刪除所述時序節(jié)點(diǎn)之前的時序約束,并重新建立新的時序約束;
若所述實(shí)例的變化的類型是新增實(shí)例信息,則根據(jù)所述新增的實(shí)例信息確定其時序節(jié)點(diǎn),并將所述時序節(jié)點(diǎn)與當(dāng)前的所述時序圖中的時序節(jié)點(diǎn)建立時序約束;
若所述實(shí)例的變化的類型是刪除實(shí)例信息,則遍歷所述被刪除的實(shí)例的所有時序節(jié)點(diǎn),根據(jù)所述時序節(jié)點(diǎn)確定與所述時序節(jié)點(diǎn)相關(guān)的時序約束,并移除所述時序節(jié)點(diǎn)和時序約束。
可選的,所述分析模塊還用于:
對所述時序圖進(jìn)行時序檢查,所述時序檢查至少包括:檢查所述時序圖中是否有環(huán)路;
遍歷所述時序圖,所述遍歷包括前向遍歷和/或逆向遍歷,確定所有的時序路徑;
根據(jù)所述時序路徑的各組成部分的延時,確定所述時序路徑的到達(dá)時間和要求時間,并進(jìn)一步確定時序余量;
根據(jù)所述時序余量,生成靜態(tài)時序分析結(jié)果。
本發(fā)明的有益效果是:
本發(fā)明實(shí)施例提供了一種靜態(tài)時序分析方法和裝置,根據(jù)當(dāng)前網(wǎng)表建立對應(yīng)的時序圖,在網(wǎng)表發(fā)生變化時,記錄發(fā)生變化的網(wǎng)表中的實(shí)例及其變化的類型,根據(jù)發(fā)生變化的實(shí)例及其變化的類型,更新時序圖,根據(jù)更新后的時序圖進(jìn)行靜態(tài)時序分析,得出靜態(tài)時序分析結(jié)果。通過本發(fā)明的實(shí)施,在網(wǎng)表發(fā)生變化時無需重新建立時序圖,提高了時序圖創(chuàng)建的效率,并進(jìn)一步提升了靜態(tài)時序分析的效率。
附圖說明
圖1為本發(fā)明實(shí)施例一的靜態(tài)時序分析方法流程圖;
圖2為本發(fā)明實(shí)施例一的時序圖的組成示意圖;
圖3為本發(fā)明實(shí)施例一的一種更新時序圖的方法圖;
圖4為本發(fā)明實(shí)施例一的一種更新時序圖的方法圖;
圖5為本發(fā)明實(shí)施例一的一種更新時序圖的方法圖;
圖6為本發(fā)明實(shí)施例二的靜態(tài)時序分析裝置組成示意圖;
圖7為本發(fā)明實(shí)施例二的靜態(tài)時序分析方法流程圖。
具體實(shí)施方式
下面通過具體實(shí)施方式結(jié)合附圖對本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)說明。
實(shí)施例一:
本實(shí)施例提供一種靜態(tài)時序分析方法,請參見圖1,具體包括:
S101、根據(jù)當(dāng)前網(wǎng)表,建立對應(yīng)的時序圖;
S102、在網(wǎng)表發(fā)生變化時,記錄發(fā)生變化的網(wǎng)表中的實(shí)例及其變化的類型;
S103、根據(jù)發(fā)生變化的實(shí)例及其變化的類型,更新時序圖;
S104、根據(jù)更新后的時序圖進(jìn)行靜態(tài)時序分析,得出靜態(tài)時序分析結(jié)果。
在數(shù)字集成電路的設(shè)計中,對電路的靜態(tài)時序分析往往是必不可少的,靜態(tài)時序分析可以根據(jù)電路內(nèi)部邏輯和布線的延時,驗(yàn)證電路設(shè)計是否滿足設(shè)計者的約束。靜態(tài)時序分析的優(yōu)點(diǎn)在于它可以在不輸入測試向量的前提下窮盡所有的路徑,可以對電路設(shè)計進(jìn)行全面的時序功能檢查,還能利用時序分析的結(jié)果來優(yōu)化EDA流程中綜合,布局布線等過程。
在本實(shí)施例中,首先需要對初始網(wǎng)表,建立對應(yīng)的時序分析的時序圖(timing graph)。請參考圖2,圖2中的時序圖基于網(wǎng)表文件,對端口(port),實(shí)例(inst)的管腳,分別建立時序節(jié)點(diǎn)(timing node),并根據(jù)時序模型和連線關(guān)系建立時序節(jié)點(diǎn)之間的時序約束(timing arc),最終組成一個時序圖。
實(shí)例是指對某個設(shè)計對象的實(shí)現(xiàn),這一過程稱之為實(shí)例化;在本實(shí)施例中,根據(jù)當(dāng)前網(wǎng)表,建立對應(yīng)的時序圖的步驟如下:
遍歷網(wǎng)表中的所有對端口,并根據(jù)對端口信息建立時序節(jié)點(diǎn)(timing node);
遍歷網(wǎng)表中的實(shí)例的管腳,并根據(jù)管腳信息建立時序節(jié)點(diǎn);
根據(jù)時序約束關(guān)系,并結(jié)合對端口信息的時序節(jié)點(diǎn)、管腳信息的時序節(jié)點(diǎn),建立時序圖。
其中,根據(jù)對端口信息建立時序節(jié)點(diǎn),即建立對端口類型的時序節(jié)點(diǎn);根據(jù)管腳信息建立時序節(jié)點(diǎn),即建立實(shí)例類型的時序節(jié)點(diǎn)。時序節(jié)點(diǎn)之間會有一定的時序約束關(guān)系(timing arc),在相應(yīng)的時序節(jié)點(diǎn)之間通過連線建立連線(net)類型的時序約束。或者,還可以根據(jù)實(shí)例對應(yīng)的時序模型,建立實(shí)例類型的時序約束。
此外,在創(chuàng)建時序圖中,還可以根據(jù)時序路徑的定義,標(biāo)記對應(yīng)時序路徑的起點(diǎn)和終點(diǎn)的時序節(jié)點(diǎn),根據(jù)時序路徑的起點(diǎn)和終點(diǎn)來輔助進(jìn)行時序圖的建立。
此外,在創(chuàng)建時序圖時,如果實(shí)例具有層次結(jié)構(gòu),則可以先對該實(shí)例按照上述的流程建立一個時序圖,然后在打平(flatten)到總的時序圖中,這樣做可以使建立時序圖更簡單清晰。
在利用創(chuàng)建的時序圖進(jìn)行靜態(tài)時序分析時,如果發(fā)現(xiàn)設(shè)計不符合要求,就需要對網(wǎng)表進(jìn)行調(diào)整,相應(yīng)的,對網(wǎng)表的調(diào)整對應(yīng)于對時序圖中的對應(yīng)的實(shí)例的調(diào)整,也就是,發(fā)生變化的網(wǎng)表中的實(shí)例,及其變化的類型。
在本實(shí)施例中,記錄發(fā)生變化的網(wǎng)表中的實(shí)例及其變化的類型可以包括:將發(fā)生變化的實(shí)例添加至預(yù)設(shè)的變化列表中;實(shí)例的變化類型則可以包括:修改實(shí)例信息、增加實(shí)例信息以及刪除實(shí)例信息中的任意一種或多種。發(fā)生變化的網(wǎng)表,具體到實(shí)例中,則可以包括:將某實(shí)例的管腳或者連線關(guān)系進(jìn)行調(diào)整,將某實(shí)例的位置調(diào)整,或者在網(wǎng)表中增加實(shí)例,或者將網(wǎng)表中已有的實(shí)例移除。
在本實(shí)施例中,根據(jù)發(fā)生變化的實(shí)例及其變化的類型,更新時序圖包括:
若實(shí)例的變化類型是修改了實(shí)例信息,則根據(jù)發(fā)生變化的實(shí)例的時序節(jié)點(diǎn),刪除時序節(jié)點(diǎn)之前的時序約束,并重新建立新的時序約束。
請參考圖3:
S301、判斷是否是實(shí)例上的連線發(fā)生了變化,若是,轉(zhuǎn)到S302,若否,轉(zhuǎn)到S304;
S302、找到該實(shí)例下的所有時序節(jié)點(diǎn);
S303、刪除之前的時序約束,并建立新的時序約束,然后轉(zhuǎn)到S307;
S304、判斷是否是實(shí)例的布局位置發(fā)生了變化,若是,轉(zhuǎn)到S305;
S305、更新之前布局位置的時序圖,并創(chuàng)建新的位置的實(shí)例的時序圖;
S306、將之前布局位置的時序圖和新的位置的時序圖打平到總時序圖中;
S307、遍歷更新時序路徑信息。
如果是修改了實(shí)例信息,這里的修改可以包括實(shí)例上的連線發(fā)生了變化,也可以是實(shí)例的布局位置發(fā)生了變化;如果是實(shí)例上的連線發(fā)生了變化,根據(jù)發(fā)生變化的實(shí)例上的時序節(jié)點(diǎn),刪除該時序節(jié)點(diǎn)以前的時序約束,即與該時序節(jié)點(diǎn)相關(guān)的時序約束,重新建立新的時序約束;如果是實(shí)例的布局位置發(fā)生了變化,即實(shí)例的位置發(fā)生了改變,該實(shí)例從原位置移動到了新的位置,如果在之前的位置已經(jīng)沒有了實(shí)例,則直接將原位置的實(shí)例圖刪除;如果之前的位置上有其他實(shí)例,則對原位置的實(shí)例的時序圖進(jìn)行更新,可以按照新增實(shí)例處理,而原來的改變了布局位置的實(shí)例則需要創(chuàng)建該實(shí)例的時序圖,將原位置的時序圖和新位置的時序圖都打平到總的時序圖中。
若實(shí)例的變化類型是新增實(shí)例信息,則根據(jù)新增的實(shí)例信息確定時序節(jié)點(diǎn),并將時序節(jié)點(diǎn)與當(dāng)前的時序圖中的時序節(jié)點(diǎn)建立時序約束。
請參考圖4:
S401、對新增的實(shí)例建立時序圖;
S402、打平該時序圖到總的時序圖中;
S403、建立相應(yīng)的時序約束;
S404、遍歷更新時序路徑信息。
如果是新增實(shí)例信息,則需要建立該實(shí)例的時序圖,然后將該時序圖打平到總的時序圖中;增加新的實(shí)例,則必然會增加新的時序約束,進(jìn)而會增加新的時序節(jié)點(diǎn),根據(jù)設(shè)計人員的設(shè)計將新增的時序節(jié)點(diǎn)和原有的時序節(jié)點(diǎn)之間建立時序約束,利用時序約束將新增的時序節(jié)點(diǎn)和總的時序圖中的時序節(jié)點(diǎn)連接起來即完成了打平處理。
若實(shí)例的變化類型是刪除實(shí)例信息,則遍歷被刪除的實(shí)例的所有時序節(jié)點(diǎn),根據(jù)時序節(jié)點(diǎn)確定與時序節(jié)點(diǎn)相關(guān)的時序約束,并移除時序節(jié)點(diǎn)和時序約束。
請參考圖5:
S501、找到刪除的實(shí)例的所有時序節(jié)點(diǎn);
S502、根據(jù)時序節(jié)點(diǎn)找到源時序節(jié)點(diǎn)和目的時序節(jié)點(diǎn);
S503、更新源時序節(jié)點(diǎn)的輸出時序約束和目的時序節(jié)點(diǎn)的輸入時序約束;
S504、從時序圖中移除該實(shí)例的時序節(jié)點(diǎn)和時序約束;
S505、刪除實(shí)例的所有時序節(jié)點(diǎn)、時序約束,并從變化列表中移除該實(shí)例;
S506、遍歷更新時序路徑信息。
如果是刪除實(shí)例信息,則需要遍歷該實(shí)例的所有時序節(jié)點(diǎn),根據(jù)時序約束關(guān)系,找到與時序節(jié)點(diǎn)相連的源時序節(jié)點(diǎn)和目的時序節(jié)點(diǎn),更新輸出和輸入時序約束,然后,從時序圖中移除時序節(jié)點(diǎn)和相應(yīng)的時序約束,達(dá)到最終刪除被刪除的實(shí)例的所有時序節(jié)點(diǎn)和時序約束的目的。
顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述本發(fā)明實(shí)施例的各模塊或各步驟可以用通用的計算裝置來實(shí)現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲在計算機(jī)存儲介質(zhì)(ROM/RAM、磁碟、光盤)中由計算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實(shí)現(xiàn)。所以,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
當(dāng)變化列表中的所有操作更新完時序圖后,遍歷時序圖中所有時序路徑信息,生成相應(yīng)的靜態(tài)時序分析結(jié)果,即:進(jìn)行靜態(tài)時序分析。
在本實(shí)施例中,根據(jù)更新后的時序圖進(jìn)行靜態(tài)時序分析包括:
對時序圖進(jìn)行時序檢查,時序檢查至少包括:檢查時序圖中是否有環(huán)路;
遍歷時序圖,遍歷包括前向遍歷和/或逆向遍歷,確定所有的時序路徑;
根據(jù)時序路徑的各組成部分的延時,確定時序路徑的到達(dá)時間和要求時間,并進(jìn)一步確定時序余量;
根據(jù)時序余量,生成靜態(tài)時序分析結(jié)果。
在本實(shí)施例中,靜態(tài)時序分析的過程,首先,可以根據(jù)用戶約束文件,在時序圖的時序節(jié)點(diǎn)上建立時鐘約束,對時序圖做時序檢查,這個檢查過程主要是檢查是否有環(huán)路等方面的檢查。而遍歷時序圖,可以從類型為時序路徑的起點(diǎn)的時序節(jié)點(diǎn)根據(jù)時序約束做前向遍歷,或者從類型為時序路徑終點(diǎn)時序節(jié)點(diǎn)根據(jù)時序約束做逆向遍歷,前向遍歷和逆向遍歷都是可行的遍歷方案,在本實(shí)施例中可以采取其中任意一種,或者結(jié)合兩種進(jìn)行,遍歷完成后,可以找出所有的時序路徑。從時序模型中,得到時序路徑的各組成部分的延時,并據(jù)此計算時序路徑的到達(dá)時間,以及要求時間,根據(jù)到達(dá)時間和要求時間可以確定相應(yīng)的時序余量(slack)。最后,根據(jù)時序余量,得到對應(yīng)的靜態(tài)時序分析結(jié)果,其中,可以根據(jù)時序余量進(jìn)行排序,得出靜態(tài)時序分析的關(guān)鍵時序路徑,然后按照預(yù)先的設(shè)置給出時序報告。
靜態(tài)時序分析的過程在建立完成時序圖后即可進(jìn)行,靜態(tài)時序分析的結(jié)果不符合預(yù)期設(shè)計,則驅(qū)使設(shè)計人員修改網(wǎng)表,即進(jìn)一步修改時序圖,修改完成后,則繼續(xù)進(jìn)行靜態(tài)時序分析,重復(fù)以上過程,直到最后靜態(tài)時序分析的結(jié)果滿足預(yù)計要求為止。
本實(shí)施例提供了一種靜態(tài)時序分析方法,根據(jù)當(dāng)前網(wǎng)表建立對應(yīng)的時序圖,在網(wǎng)表發(fā)生變化時,記錄發(fā)生變化的網(wǎng)表中的實(shí)例及其變化的類型,根據(jù)發(fā)生變化的實(shí)例及其變化的類型,更新時序圖,然后根據(jù)更新后的時序圖進(jìn)行靜態(tài)時序分析,得出靜態(tài)時序分析結(jié)果。通過本發(fā)明的實(shí)施,在網(wǎng)表發(fā)生變化時無需重新建立時序圖,提高了時序圖創(chuàng)建的效率,并進(jìn)一步提升了靜態(tài)時序分析的效率。
實(shí)施例二
本實(shí)施例提供一種靜態(tài)時序分析裝置,請參見圖6,具體包括:
創(chuàng)建模塊601,用于根據(jù)當(dāng)前網(wǎng)表,建立對應(yīng)的時序圖;
記錄模塊602,用于在網(wǎng)表發(fā)生變化時,記錄發(fā)生變化的網(wǎng)表中的實(shí)例及其變化的類型;
更新模塊603,用于根據(jù)發(fā)生變化的實(shí)例及其變化的類型,更新時序圖;
分析模塊604,用于根據(jù)更新后的時序圖進(jìn)行靜態(tài)時序分析,得出靜態(tài)時序分析結(jié)果。
在數(shù)字集成電路的設(shè)計中,對電路的靜態(tài)時序分析往往是必不可少的,靜態(tài)時序分析可以根據(jù)電路內(nèi)部邏輯和布線的延時,驗(yàn)證電路設(shè)計是否滿足設(shè)計者的約束。靜態(tài)時序分析的優(yōu)點(diǎn)在于它可以在不輸入測試向量的前提下窮盡所有的路徑,可以對電路設(shè)計進(jìn)行全面的時序功能檢查,還能利用時序分析的結(jié)果來優(yōu)化EDA流程中綜合,布局布線等過程。
在本實(shí)施例中,首先需要對初始網(wǎng)表,建立對應(yīng)的時序分析的時序圖。請參考圖1,圖1中的時序圖基于網(wǎng)表文件,對端口,實(shí)例的管腳,分別建立時序節(jié)點(diǎn),并根據(jù)時序模型和連線關(guān)系建立時序節(jié)點(diǎn)之間的時序約束,最終組成一個時序圖。
實(shí)例是指對某個設(shè)計對象的實(shí)現(xiàn),這一過程稱之為實(shí)例化;在本實(shí)施例中,創(chuàng)建模塊601還可以用于:
遍歷網(wǎng)表中的所有對端口,并根據(jù)對端口信息建立時序節(jié)點(diǎn);
遍歷網(wǎng)表中的實(shí)例的管腳,并根據(jù)管腳信息建立時序節(jié)點(diǎn);
根據(jù)時序約束關(guān)系,并結(jié)合對端口信息的時序節(jié)點(diǎn)、管腳信息的時序節(jié)點(diǎn),建立時序圖。
其中,根據(jù)對端口信息建立時序節(jié)點(diǎn),即建立對端口類型的時序節(jié)點(diǎn);根據(jù)管腳信息建立時序節(jié)點(diǎn),即建立實(shí)例類型的時序節(jié)點(diǎn)。時序節(jié)點(diǎn)之間會有一定的時序約束關(guān)系,在相應(yīng)的時序節(jié)點(diǎn)之間通過連線建立連線類型的時序約束?;蛘撸€可以根據(jù)實(shí)例對應(yīng)的時序模型,建立實(shí)例類型的時序約束。
此外,在創(chuàng)建時序圖中,還可以根據(jù)時序路徑的定義,標(biāo)記對應(yīng)時序路徑的起點(diǎn)和終點(diǎn)的時序節(jié)點(diǎn),根據(jù)時序路徑的起點(diǎn)和終點(diǎn)來輔助進(jìn)行時序圖的建立。
此外,在創(chuàng)建時序圖時,如果實(shí)例具有層次結(jié)構(gòu),則可以先對該實(shí)例按照上述的流程建立一個時序圖,然后在打平到總的時序圖中,這樣做可以使建立時序圖更簡單清晰。
在利用創(chuàng)建的時序圖進(jìn)行靜態(tài)時序分析時,如果發(fā)現(xiàn)設(shè)計不符合要求,就需要對網(wǎng)表進(jìn)行調(diào)整,相應(yīng)的,對網(wǎng)表的調(diào)整對應(yīng)于對時序圖中的對應(yīng)的實(shí)例的調(diào)整,也就是,發(fā)生變化的網(wǎng)表中的實(shí)例,及其變化的類型。
在本實(shí)施例中,記錄模塊602還可以用于:將發(fā)生變化的實(shí)例添加至預(yù)設(shè)的變化列表中;實(shí)例的變化類型則可以包括:修改實(shí)例信息、增加實(shí)例信息以及刪除實(shí)例信息中的任意一種或多種。發(fā)生變化的網(wǎng)表,具體到實(shí)例中,則可以包括:將某實(shí)例的管腳或者連線關(guān)系進(jìn)行調(diào)整,將某實(shí)例的位置調(diào)整,或者在網(wǎng)表中增加實(shí)例,或者將網(wǎng)表中已有的實(shí)例移除。
在本實(shí)施例中,更新模塊603還可以用于:
若實(shí)例的變化類型是修改了實(shí)例信息,則根據(jù)發(fā)生變化的實(shí)例的時序節(jié)點(diǎn),刪除時序節(jié)點(diǎn)之前的時序約束,并重新建立新的時序約束。
如果是修改了實(shí)例信息,這里的修改可以包括實(shí)例上的連線發(fā)生了變化,也可以是實(shí)例的布局位置發(fā)生了變化;如果是實(shí)例上的連線發(fā)生了變化,根據(jù)發(fā)生變化的實(shí)例上的時序節(jié)點(diǎn),刪除該時序節(jié)點(diǎn)以前的時序約束,即與該時序節(jié)點(diǎn)相關(guān)的時序約束,重新建立新的時序約束;如果是實(shí)例的布局位置發(fā)生了變化,即實(shí)例的位置發(fā)生了改變,該實(shí)例從原位置移動到了新的位置,如果在之前的位置已經(jīng)沒有了實(shí)例,則直接將原位置的實(shí)例圖刪除;如果之前的位置上有其他實(shí)例,則對原位置的實(shí)例的時序圖進(jìn)行更新,可以按照新增實(shí)例處理,而原來的改變了布局位置的實(shí)例則需要創(chuàng)建該實(shí)例的時序圖,將原位置的時序圖和新位置的時序圖都打平到總的時序圖中。
若實(shí)例的變化類型是新增實(shí)例信息,則根據(jù)新增的實(shí)例信息確定時序節(jié)點(diǎn),并將時序節(jié)點(diǎn)與當(dāng)前的時序圖中的時序節(jié)點(diǎn)建立時序約束。
如果是新增實(shí)例信息,則需要建立該實(shí)例的時序圖,然后將該時序圖打平到總的時序圖中;增加新的實(shí)例,則必然會增加新的時序約束,進(jìn)而會增加新的時序節(jié)點(diǎn),根據(jù)設(shè)計人員的設(shè)計將新增的時序節(jié)點(diǎn)和原有的時序節(jié)點(diǎn)之間建立時序約束,利用時序約束將新增的時序節(jié)點(diǎn)和總的時序圖中的時序節(jié)點(diǎn)連接起來即完成了打平處理。
若實(shí)例的變化類型是刪除實(shí)例信息,則遍歷被刪除的實(shí)例的所有時序節(jié)點(diǎn),根據(jù)時序節(jié)點(diǎn)確定與時序節(jié)點(diǎn)相關(guān)的時序約束,并移除時序節(jié)點(diǎn)和時序約束。
如果是刪除實(shí)例信息,則需要遍歷該實(shí)例的所有時序節(jié)點(diǎn),根據(jù)時序約束關(guān)系,找到與時序節(jié)點(diǎn)相連的源時序節(jié)點(diǎn)和目的時序節(jié)點(diǎn),更新輸出和輸入時序約束,然后,從時序圖中移除時序節(jié)點(diǎn)和相應(yīng)的時序約束,達(dá)到最終刪除被刪除的實(shí)例的所有時序節(jié)點(diǎn)和時序約束的目的。
當(dāng)變化列表中的所有操作更新完時序圖后,遍歷時序圖中所有時序路徑信息,生成相應(yīng)的靜態(tài)時序分析結(jié)果,即:進(jìn)行靜態(tài)時序分析。
在本實(shí)施例中,分析模塊604還可以用于:
對時序圖進(jìn)行時序檢查,時序檢查至少包括:檢查時序圖中是否有環(huán)路;
遍歷時序圖,遍歷包括前向遍歷和/或逆向遍歷,確定所有的時序路徑;
根據(jù)時序路徑的各組成部分的延時,確定時序路徑的到達(dá)時間和要求時間,并進(jìn)一步確定時序余量;
根據(jù)時序余量,生成靜態(tài)時序分析結(jié)果。
具體的,請參考圖7,本實(shí)施例中的靜態(tài)時序分析過程可以包括:
S701、根據(jù)用戶約束文件,在時序圖的時序節(jié)點(diǎn)上建立時鐘約束;
S702、對時序圖做時序檢查,主要包括是否有環(huán)路等方面的檢查;
S703、對時序圖做深度遍歷,可以從類型為時序路徑起點(diǎn)的時序節(jié)點(diǎn)根據(jù)時序約束做前向遍歷,或者從類型為時序路徑終點(diǎn)的時序節(jié)點(diǎn)根據(jù)時序約束做逆向遍歷,遍歷完成后,找出所有的時序路徑;
S704、從時序模型中得到時序路徑各組成部分的延時,計算時序路徑的到達(dá)時間以及要求時間,并進(jìn)一步計算時序余量;
S705、按照時序余量做排序,得出時序分析的關(guān)鍵路徑,并按照用戶設(shè)置給出時序報告提供給用戶。
在本實(shí)施例中,靜態(tài)時序分析的過程,首先,可以根據(jù)用戶約束文件,在時序圖的時序節(jié)點(diǎn)上建立時鐘約束,對時序圖做時序檢查,這個檢查過程主要是檢查是否有環(huán)路等方面的檢查。而遍歷時序圖,可以從類型為時序路徑的起點(diǎn)的時序節(jié)點(diǎn)根據(jù)時序約束做前向遍歷,或者從類型為時序路徑終點(diǎn)時序節(jié)點(diǎn)根據(jù)時序約束做逆向遍歷,前向遍歷和逆向遍歷都是可行的遍歷方案,在本實(shí)施例中可以采取其中任意一種,或者結(jié)合兩種進(jìn)行,遍歷完成后,可以找出所有的時序路徑。從時序模型中,得到時序路徑的各組成部分的延時,并據(jù)此計算時序路徑的到達(dá)時間,以及要求時間,根據(jù)到達(dá)時間和要求時間可以確定相應(yīng)的時序余量(slack)。最后,根據(jù)時序余量,得到對應(yīng)的靜態(tài)時序分析結(jié)果,其中,可以根據(jù)時序余量進(jìn)行排序,得出靜態(tài)時序分析的關(guān)鍵時序路徑,然后按照預(yù)先的設(shè)置給出時序報告。
靜態(tài)時序分析的過程在建立完成時序圖后即可進(jìn)行,靜態(tài)時序分析的結(jié)果不符合預(yù)期設(shè)計,則驅(qū)使設(shè)計人員修改網(wǎng)表,即進(jìn)一步修改時序圖,修改完成后,則繼續(xù)進(jìn)行靜態(tài)時序分析,重復(fù)以上過程,直到最后靜態(tài)時序分析的結(jié)果滿足預(yù)計要求為止。
本實(shí)施例提供了一種靜態(tài)時序分析裝置,根據(jù)當(dāng)前網(wǎng)表建立對應(yīng)的時序圖,在網(wǎng)表發(fā)生變化時,記錄發(fā)生變化的網(wǎng)表中的實(shí)例及其變化的類型,根據(jù)發(fā)生變化的實(shí)例及其變化的類型,更新時序圖,然后根據(jù)更新后的時序圖進(jìn)行靜態(tài)時序分析,得出靜態(tài)時序分析結(jié)果。通過本發(fā)明的實(shí)施,在網(wǎng)表發(fā)生變化時無需重新建立時序圖,提高了時序圖創(chuàng)建的效率,并進(jìn)一步提升了靜態(tài)時序分析的效率。
顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述本發(fā)明實(shí)施例的各模塊或各步驟可以用通用的計算裝置來實(shí)現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲在計算機(jī)存儲介質(zhì)(ROM/RAM、磁碟、光盤)中由計算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實(shí)現(xiàn)。所以,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
以上內(nèi)容是結(jié)合具體的實(shí)施方式對本發(fā)明實(shí)施例所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。