專利名稱:集成電路流水線設(shè)計(jì)驗(yàn)證方法、系統(tǒng)及其模型實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本申請涉及集成電路設(shè)計(jì)和驗(yàn)證領(lǐng)域,具體涉及集成電路流水線設(shè)計(jì)驗(yàn)證方法、系統(tǒng)及其模型實(shí)現(xiàn)方法。
背景技術(shù):
集成電路設(shè)計(jì)的規(guī)模和復(fù)雜度在逐漸提升,盡早發(fā)現(xiàn)設(shè)計(jì)中存在的問題可以有效的降低設(shè)計(jì)成本,因此在集成電路設(shè)計(jì)的前端設(shè)計(jì)中對硬件設(shè)計(jì)進(jìn)行功能和性能的建模設(shè)計(jì),以預(yù)先調(diào)整好設(shè)計(jì)架構(gòu),通過驗(yàn)證建模設(shè)計(jì)思路及目標(biāo)功能理解的正確性來驗(yàn)證集成電路設(shè)計(jì)的正確性,已經(jīng)成為了大型集成電路設(shè)計(jì)環(huán)節(jié)中不 可缺少的一步。集成電路流水線設(shè)計(jì)主要包括流水線RTL (寄存器傳輸級)設(shè)計(jì),在復(fù)雜的流水線RTL設(shè)計(jì)中通常還會(huì)設(shè)計(jì)流水線控制單元來管理各級流水。流水線控制單元主要負(fù)責(zé)多周期指令、寫讀沖突指令、中斷和異常等多種情況的流水線管理,對流水線上各級流水單元的寄存器進(jìn)行凍結(jié)和刷新。因此,對集成電路流水線設(shè)計(jì)的RTL設(shè)計(jì)采用建模方式進(jìn)行的驗(yàn)證包括建立與流水線RTL設(shè)計(jì)對應(yīng)的流水線模型,流水線模型由流水單元組成,當(dāng)存在流水線控制單元的RTL設(shè)計(jì)時(shí),該流水線模型還相應(yīng)包括流水線控制單元的模型。其驗(yàn)證方式是在保證流水線模型正確的前提下,同時(shí)對流水線的RTL設(shè)計(jì)和流水線模型輸入同一激勵(lì),比對兩者各級單元的輸出是否一致,若不一致則說明流水線的RTL設(shè)計(jì)出錯(cuò)。由上述可知,在利用流水線模型驗(yàn)證集成電路流水線設(shè)計(jì)的RTL設(shè)計(jì)之前需對流水線模型的正確性和完備性進(jìn)行驗(yàn)證。但現(xiàn)有技術(shù)中須同時(shí)驗(yàn)證流水線模型中的全部單元以確定出錯(cuò)之處并進(jìn)行糾錯(cuò),因此糾錯(cuò)效率較低。
發(fā)明內(nèi)容
本申請?zhí)峁┮环N采用流水線模型對集成電路流水線設(shè)計(jì)進(jìn)行驗(yàn)證的方法,所述流水線模型包括根據(jù)集成電路流水線設(shè)計(jì)確定的至少二級流水單元,每級流水單元中至少包括一個(gè)模型單元,每個(gè)模型單元包括后端接口,用于接收前一級流水單元輸出的狀態(tài)值和邏輯值;前端接口,用于將該模型單元的狀態(tài)值和邏輯值輸出到下一級模型單元;功能單元,用于對后端接口發(fā)來的邏輯值進(jìn)行功能函數(shù)運(yùn)算并輸出邏輯值;內(nèi)部控制單元,包括控制器和狀態(tài)處理單元,所述控制器根據(jù)后端接口發(fā)來的數(shù)據(jù)和本身的控制邏輯輸出選擇信號,所述狀態(tài)處理單元根據(jù)后端接口發(fā)來的數(shù)據(jù)和本身的狀態(tài)處理邏輯輸出狀態(tài)值至前端接口; 選擇單元,根據(jù)控制器輸出的選擇信號,在功能單元輸出的邏輯值、該模型單元的復(fù)位值、置位值和上一狀態(tài)的邏輯值中進(jìn)行擇一輸出至前端接口;上述方法包括驗(yàn)證流水線模型的完備性和正確性;
流水線模型驗(yàn)證通過后,利用該流水線模型驗(yàn)證流水線設(shè)計(jì)的正確性;所述驗(yàn)證流水線模型的完備性和正確性包括以下步驟對流水線模型中各個(gè)模型單元的狀態(tài)及其之間的關(guān)系進(jìn)行聲明,并預(yù)先設(shè)計(jì)各級流水狀態(tài)斷言;測例產(chǎn)生器產(chǎn)生驗(yàn)證激勵(lì),并按照時(shí)間順序?qū)Ⅱ?yàn)證激勵(lì)發(fā)送到流水線模型,所述驗(yàn)證激勵(lì)包括邏輯值和狀態(tài)值;流水線模型的第一級流水接收測例產(chǎn)生器產(chǎn)生的 驗(yàn)證激勵(lì),根據(jù)驗(yàn)證激勵(lì)進(jìn)行運(yùn)算,輸出本級的邏輯值和狀態(tài)值到第二級流水;第二級流水根據(jù)上一級流水輸出的邏輯值和狀態(tài)值進(jìn)行運(yùn)算,輸出本級邏輯值和狀態(tài)值到下一級流水;依此類推;實(shí)時(shí)檢測各級流水輸出的狀態(tài)值,根據(jù)預(yù)先設(shè)計(jì)的流水狀態(tài)斷言對流水線模型進(jìn)行狀態(tài)斷言判斷,判斷是否出現(xiàn)違反斷言的現(xiàn)象,若是則發(fā)出報(bào)告,認(rèn)為流水線模型沒有通過驗(yàn)證。進(jìn)一步,將實(shí)時(shí)檢測的各級流水輸出的狀態(tài)值進(jìn)行緩存,根據(jù)預(yù)先設(shè)計(jì)的流水狀態(tài)斷言對流水線模型進(jìn)行狀態(tài)斷言判斷步驟包括從預(yù)先設(shè)計(jì)的流水狀態(tài)斷言群中按照順序讀取流水狀態(tài)斷言;從緩存的各級流水輸出的狀態(tài)值中讀取當(dāng)前流水狀態(tài)斷言中涉及到的某級或某些級流水的狀態(tài)值進(jìn)行判斷;當(dāng)判斷出現(xiàn)違反斷言的現(xiàn)象時(shí)則發(fā)出報(bào)告,否則繼續(xù)讀取下一條流水狀態(tài)斷言進(jìn)行判斷,直到流水狀態(tài)斷言群中流水狀態(tài)斷言讀取完畢。進(jìn)一步,當(dāng)出現(xiàn)違反斷言的現(xiàn)象時(shí),則執(zhí)行以下步驟分別對產(chǎn)生當(dāng)前流水狀態(tài)的模型單元控制邏輯和上一級輸出單元進(jìn)行驗(yàn)證。此外,本申請還提供了一種集成電路流水線模型的實(shí)現(xiàn)方法,其包括模擬硬件運(yùn)行方式,以寄存器為界劃分模型單元;將當(dāng)前寄存器和其前面一級或多級的寄存器之間的邏輯劃分為一個(gè)模型單元,其中,組合邏輯中的功能函數(shù)運(yùn)算劃入模型單元的功能單元中,組合邏輯中的選擇和控制邏輯劃入模型單元的選擇單元和控制器中,時(shí)序邏輯中的處理周期劃入內(nèi)部驅(qū)動(dòng)單元;根據(jù)集成電路流水線級數(shù)設(shè)計(jì)將流水單元連接成至少二級流水,構(gòu)成集成電路流水線模型。進(jìn)一步,上述實(shí)現(xiàn)方法還包括采用外部驅(qū)動(dòng)單元作為流水線模型各流水單元的驅(qū)動(dòng)時(shí)鐘;在每個(gè)流水單元內(nèi)部設(shè)置內(nèi)部驅(qū)動(dòng)單元,所述內(nèi)部驅(qū)動(dòng)單元根據(jù)本流水單元接收和發(fā)送數(shù)據(jù)的時(shí)鐘周期,將外部驅(qū)動(dòng)單元輸出的驅(qū)動(dòng)時(shí)鐘信號處理成本流水單元需要的時(shí)鐘信號。同時(shí),本申請還提供了一種集成電路流水線設(shè)計(jì)驗(yàn)證系統(tǒng),其包括根據(jù)集成電路流水線設(shè)計(jì)確定的至少二級流水單元,每級流水單元中至少包括一個(gè)模型單元,每個(gè)模型單元包括后端接口,用于接收前一級流水單元輸出的狀態(tài)值和邏輯值;前端接口,用于將該模型單元的狀態(tài)值和邏輯值輸出到下一級模型單元;功能單元,用于對后端接口發(fā)來的邏輯值進(jìn)行多種功能函數(shù)運(yùn)算并輸出多個(gè)邏輯值;內(nèi)部控制單元,包括控制器和狀態(tài)處理單元,所述控制器根據(jù)后端接口發(fā)來的數(shù)據(jù)和本身的控制邏輯輸出選擇信號,所述狀態(tài)處理單元根據(jù)后端接口發(fā)來的數(shù)據(jù)和本身的狀態(tài)處理邏輯輸出狀態(tài)值至前端接口 ;和選擇單元,根據(jù)控制器輸出的選擇信號,在功能單元輸出的多個(gè)邏輯值、該模型單元的復(fù)位值、置位值和上一狀態(tài)的邏輯值中進(jìn)行擇一輸出至前端接口 ;測例產(chǎn)生器,用于產(chǎn)生驗(yàn)證激勵(lì),并按照時(shí)間 順序?qū)Ⅱ?yàn)證激勵(lì)發(fā)送到流水線模型,所述驗(yàn)證激勵(lì)包括邏輯值和狀態(tài)值;狀態(tài)斷言單元,用于對流水線模型中各個(gè)模型單元的狀態(tài)及其之間的關(guān)系進(jìn)行聲明,并設(shè)計(jì)各級流水狀態(tài)斷言;狀態(tài)判斷單元,用于實(shí)時(shí)檢測各級流水輸出的狀態(tài)值,根據(jù)狀態(tài)斷言單元的狀態(tài)斷言對流水線模型進(jìn)行狀態(tài)斷言判斷,若出現(xiàn)違反斷言的現(xiàn)象則發(fā)出報(bào)告,認(rèn)為流水線模型沒有通過驗(yàn)證。進(jìn)一步,上述系統(tǒng)還包括狀態(tài)存儲(chǔ)單元,用于緩存各級流水輸出的狀態(tài)值;所述狀態(tài)判斷單元包括狀態(tài)讀取子單元,用于讀取狀態(tài)斷言單元中預(yù)先設(shè)計(jì)的各級流水的狀態(tài)斷言,還用于從狀態(tài)存儲(chǔ)單元中讀取當(dāng)前流水的狀態(tài)斷言中涉及到的某級或某些級流水的狀態(tài)值;狀態(tài)判斷子單元,用于根據(jù)狀態(tài)讀取子單元讀取的各級流水的斷言狀態(tài)、當(dāng)前流水的狀態(tài)斷言中涉及到的某級或某些級流水的狀態(tài)值,進(jìn)行斷言判斷;狀態(tài)報(bào)告子單元用于當(dāng)狀態(tài)判斷子單元判斷出現(xiàn)違反斷言的現(xiàn)象時(shí)則發(fā)出報(bào)
生口 o進(jìn)一步,所述流水線模型還包括流水線控制單元,用于全局控制流水線模型上各模型單元邏輯值和狀態(tài)值的選擇輸出。進(jìn)一步,所述模型單元還包括緩存單元,用于在所述功能單元運(yùn)算過程中提供存儲(chǔ)空間;包括緩存運(yùn)算過程的中間值,或者按照模型單元的處理周期,存儲(chǔ)中間周期的運(yùn)算結(jié)果。進(jìn)一步,所述流水線模型還包括外部驅(qū)動(dòng)單元,作為流水線模型各流水單元的驅(qū)動(dòng)時(shí)鐘;所述模型單元還包括內(nèi)部驅(qū)動(dòng)單元,根據(jù)外部驅(qū)動(dòng)單元的驅(qū)動(dòng)信號,計(jì)算本模型單元中前端接口和后端接口發(fā)送和接收數(shù)據(jù)的時(shí)間,驅(qū)動(dòng)所述前端接口和后端接口完成發(fā)送和接收任務(wù)。本申請的有益效果是本申請驗(yàn)證集成電路流水線設(shè)計(jì)中首先對流水線模型的完備性和正確性來進(jìn)行驗(yàn)證,流水線模型驗(yàn)證通過后,可來驗(yàn)證集成電路流水線設(shè)計(jì)。而在該流水線模型的驗(yàn)證中,通過預(yù)先設(shè)計(jì)各級流水狀態(tài)斷言,其次實(shí)時(shí)檢測各級流水輸出的狀態(tài)值,進(jìn)而判斷是否出現(xiàn)違反斷言來驗(yàn)證。一旦流水線模型的設(shè)計(jì)出錯(cuò)則會(huì)出現(xiàn)違反斷言的情況,如此則可直接驗(yàn)證與違反斷言的流水中模型單元相關(guān)的各級流水及模型單元,即直接將出錯(cuò)的地方定位到具體的某級或某些級流水的模型單元中,不需要驗(yàn)證所有的流水線模型的全部單元,提高了糾錯(cuò)效率。
圖I為實(shí)施例提供的流水線模型的實(shí)現(xiàn)方法流程圖;圖2為實(shí)施例提供的流水線模型結(jié)構(gòu)示意圖;圖3為實(shí)施例提供的模型單元結(jié)構(gòu)示意圖;圖4為實(shí)施例提供的內(nèi)部驅(qū)動(dòng)單元應(yīng) 用示意圖;圖5為實(shí)施例提供的驗(yàn)證流水線模型的完備性和正確性流程圖;圖6為實(shí)施例提供的驗(yàn)證流水線模型的完備性和正確性的實(shí)例圖;圖7為實(shí)施例提供的利用流水線模型驗(yàn)證流水線RTL設(shè)計(jì)的驗(yàn)證環(huán)境示意圖和波形圖;圖8為實(shí)施例提供的利用流水線模型對集成電路流水線設(shè)計(jì)進(jìn)行驗(yàn)證的系統(tǒng)示意圖。
具體實(shí)施例方式下面通過具體實(shí)施方式
結(jié)合附圖對本發(fā)明作進(jìn)一步詳細(xì)說明。本申請中,用于驗(yàn)證集成電路流水線設(shè)計(jì)的流水線模型包括多級流水單元,每級流水單元中包括多個(gè)模型單元,本實(shí)施例首先描述該流水線模型的實(shí)現(xiàn)方法,請參閱圖1,該方法包括SlOl :模擬硬件運(yùn)行方式,以寄存器為界劃分模型單元。將當(dāng)前寄存器和其前面一級或多級的寄存器之間的邏輯劃分為一個(gè)模型單元,其中,組合邏輯中的功能函數(shù)運(yùn)算劃入模型單元的功能單元中,組合邏輯中的選擇和控制邏輯劃入模型單元的選擇單元和控制器中,時(shí)序邏輯中的處理周期劃入內(nèi)部驅(qū)動(dòng)單元。S102:根據(jù)集成電路流水線級數(shù)設(shè)計(jì)將流水單元連接成多級流水,構(gòu)成集成電路流水線模型。完成以上基本步驟后,還包括為該流水線模型各級流水單元提供驅(qū)動(dòng)信號,即S103 :采用外部驅(qū)動(dòng)單元作為流水線模型各流水單元的驅(qū)動(dòng)時(shí)鐘;在每個(gè)流水單元內(nèi)部設(shè)置內(nèi)部驅(qū)動(dòng)單元,內(nèi)部驅(qū)動(dòng)單元根據(jù)本流水單元接收和發(fā)送數(shù)據(jù)的時(shí)鐘周期,將外部驅(qū)動(dòng)單元輸出的驅(qū)動(dòng)時(shí)鐘信號處理成本流水單元需要的時(shí)鐘信號。本實(shí)施例中的流水線模型請參考圖2,圖I中劃分了三級流水,每級流水單元中至少包括一個(gè)模型單元,各模型單元用模型單元1_A至模型單元3_C表示,其中,模型單元1_A模型單元1_B模型單元1_C為第一級流水線寄存器模型(第一級流水單元),模型單元2_A模型單元2_B為第二級流水線寄存器模型(第二級流水單元),模型單元3_A模型單元3_B模型單元3_C為第三級流水線寄存器模型(第三級流水單元)。對這些寄存器模型(流水單元)的外部驅(qū)動(dòng)統(tǒng)一由時(shí)鐘驅(qū)動(dòng)單元。同時(shí),圖2還預(yù)設(shè)了流水線控制單元控制,該流水線控制單元控制可用于全局控制流水線模型上各模型單元邏輯值的選擇輸出。圖3是模型單元100的結(jié)構(gòu)示意圖(圖3同時(shí)示出了用于模型單元之間接收與分發(fā)數(shù)據(jù)的接收與分發(fā)通路200),其包括后端接口 101、前端接口 102、內(nèi)部驅(qū)動(dòng)單元103、內(nèi)部控制單元104、功能單元105、選擇單元106和緩存單元107。后端接口 101,用于接收前一級流水單元輸出的狀態(tài)值和邏輯值。前端接口 102,用于將該模型單元的狀態(tài)值和邏輯值輸出到下一級模型單元。內(nèi)部驅(qū)動(dòng)單元103,根據(jù)時(shí)鐘驅(qū)動(dòng)單元40的驅(qū)動(dòng)信號,計(jì)算本模型單元中前端接口 102和后端接口 101發(fā)送和接收數(shù)據(jù)的時(shí)間,驅(qū)動(dòng)前端接口 102和后端接口 101完成發(fā)送和接收任務(wù)。該模型單元100可以直接由外部驅(qū)動(dòng)單元來驅(qū)動(dòng),還可設(shè)計(jì)自身內(nèi)部驅(qū)動(dòng)對外部驅(qū)動(dòng)進(jìn)行預(yù)處理以供本模型單元使用。故內(nèi)部驅(qū)動(dòng)單元103為本實(shí)施例優(yōu)選設(shè)計(jì)。如圖3所示,時(shí)鐘驅(qū)動(dòng)單元40為外部驅(qū)動(dòng)單元,其為 模型單元100提供驅(qū)動(dòng)事件,內(nèi)部驅(qū)動(dòng)單元103會(huì)對時(shí)鐘驅(qū)動(dòng)單元40的驅(qū)動(dòng)事件作出反應(yīng),根據(jù)需求驅(qū)動(dòng)前端接口 102、后端接口 101對數(shù)據(jù)的發(fā)送和接收。比如,當(dāng)該模型單元100設(shè)計(jì)為兩個(gè)周期的時(shí)間才能做完運(yùn)算,而時(shí)鐘驅(qū)動(dòng)單元40為正常的時(shí)鐘信號時(shí),內(nèi)部驅(qū)動(dòng)單元103需要對外部時(shí)鐘驅(qū)動(dòng)信號進(jìn)行分頻,從而使得模型單元100對每一筆收到的數(shù)據(jù)進(jìn)行處理,兩個(gè)時(shí)鐘周期后再將處理結(jié)果發(fā)送出去。對內(nèi)部驅(qū)動(dòng)單元做進(jìn)一步詳細(xì)介紹,請參閱圖4,假設(shè)整個(gè)集成電路的功能規(guī)格定義為最多900周期完成(圖4中周期用cycle表示),對整個(gè)集成電路功能集合進(jìn)行分解,分為功能子集合A、功能子集合B、功能子集合C,分別定義在900周期的前350個(gè)周期內(nèi)、中間100個(gè)周期內(nèi)、最后450個(gè)周期內(nèi)。分別對劃分后的功能子集合進(jìn)行建模,用模型單元替代,即模型單元A、模型單元B、模型單元C。外部驅(qū)動(dòng)單元每周期對每個(gè)模型單元輸出一個(gè)時(shí)鐘信號。模型單元通過內(nèi)部驅(qū)動(dòng)單元控制有效值的輸出,即模型單元A每350個(gè)周期輸出一次有效值、模型單元B每100個(gè)周期輸出一次有效值、模型單元C每450個(gè)周期輸出一次有效值。模型單元的建模屬于流水結(jié)構(gòu),例如在第I個(gè)周期第一筆有效數(shù)據(jù)進(jìn)入模型單元A,第一筆數(shù)據(jù)經(jīng)模型單元A處理后在第350個(gè)周期輸出。第2個(gè)周期第二筆有效數(shù)據(jù)進(jìn)入模型單元A,第二筆數(shù)據(jù)經(jīng)模型單元A處理后在第351個(gè)周期輸出。進(jìn)一步細(xì)化,將模型單元C,分解成更小粒度的單元結(jié)構(gòu),即模型單元C_l、模型單元C_2、模型單元C_3、模型單元C_4、模型單元(_5,分別通過其各自的內(nèi)部驅(qū)動(dòng)單元,調(diào)節(jié)其有效值的輸出為200周期、200周期、300周期、100周期、50周期。此過程模型單元A和模型單元B不需要改動(dòng),只修改模型單元C就可以在原有的平臺上直接運(yùn)行。而且對模型單元C細(xì)化過程的正確性,可以由模型單元C作為參考模型,保證模型單元C_l、模型單元C_2、模型單元C_3、模型單元C_4、模型單元C_5的組合和模型單元C功能的一致性。內(nèi)部控制單元104,包括控制器104a和狀態(tài)處理單元104b,控制器104a根據(jù)后端接口 101發(fā)來的數(shù)據(jù)和本身的控制邏輯輸出選擇信號,狀態(tài)處理單元104b根據(jù)后端接口101發(fā)來的數(shù)據(jù)和本身的狀態(tài)處理邏輯輸出狀態(tài)值至前端接口 102。當(dāng)模型單元100外部接有流水線控制單元時(shí),外部流水線控制單元在控制權(quán)上高于內(nèi)部控制單元104。如圖3所示,流水線控制單元50在控制權(quán)上高于內(nèi)部控制單元104,一般將模型單元100常態(tài)(按正常狀態(tài)運(yùn)行)的控制邏輯作為內(nèi)部控制,將模型單元100異常態(tài)(例如出現(xiàn)異常事件需要臨時(shí)中斷原來的運(yùn)行狀態(tài)執(zhí)行其他事件)的控制邏輯作為外部控制(該外部控制由流水線控制單元50執(zhí)行)。功能單元105,用于對后端接口 101發(fā)來的邏輯值進(jìn)行功能函數(shù)運(yùn)算并輸出邏輯值。功能單元105配置有多個(gè)功能函數(shù),其運(yùn)算結(jié)果將作為本模型單元當(dāng)前的輸出邏輯值選項(xiàng)之一發(fā)給選擇單元106。圖3所示的功能單元105包括n個(gè)功能函數(shù),功能函數(shù)運(yùn)算時(shí)需要的數(shù)據(jù)即參數(shù)從后端接口 101取得。在一種實(shí)施例中,功能單元105選擇哪個(gè)功能函數(shù)執(zhí)行運(yùn)算,可根據(jù)控制器的控制信號來確定。在另一種實(shí)施例中,功能單元105也可對從后端接口 101取得的參數(shù)經(jīng)過多個(gè)功能函數(shù)的運(yùn)算,輸出多個(gè)邏輯值,后續(xù)由選擇單元106在輸出的多個(gè)邏輯值中進(jìn)行選擇。選擇單兀106,用于根據(jù)控制器104a輸出的選擇信號,在功能單兀105輸出的多個(gè)邏輯值、該模型單元的復(fù)位值、置位值和上一狀態(tài)的邏輯值中進(jìn)行擇一輸出至前端接口102。緩存單元107,用于在功能單元105運(yùn)算過程中 提供存儲(chǔ)空間;包括緩存運(yùn)算過程的中間值,或者按照模型單元100的處理周期,存儲(chǔ)中間周期的運(yùn)算結(jié)果。此外,圖3還包括了接收與分發(fā)通路200,用于為各個(gè)模型單元之間的數(shù)據(jù)接收和分發(fā)通路,其通過連接各個(gè)相關(guān)模型單元的前后端接口( 102、101)而成。采用上述流水線模型對集成電路流水線設(shè)計(jì)進(jìn)行驗(yàn)證的方法。請參閱圖5,該方法包括驗(yàn)證流水線模型的完備性和正確性;流水線模型驗(yàn)證通過后,利用該流水線模型驗(yàn)證集成電路流水線設(shè)計(jì)的正確性。驗(yàn)證流水線模型的完備性和正確性包括以下步驟S210:對流水線模型中各個(gè)模型單元的狀態(tài)及其之間的關(guān)系進(jìn)行聲明,并預(yù)先設(shè)計(jì)各級流水狀態(tài)斷言。S220 :測例產(chǎn)生器產(chǎn)生驗(yàn)證激勵(lì),并按照時(shí)間順序?qū)Ⅱ?yàn)證激勵(lì)發(fā)送到流水線模型,所述驗(yàn)證激勵(lì)包括邏輯值和狀態(tài)值。S230:流水線模型的第一級流水接收測例產(chǎn)生器產(chǎn)生的驗(yàn)證激勵(lì),根據(jù)驗(yàn)證激勵(lì)進(jìn)行運(yùn)算,輸出本級的邏輯值和狀態(tài)值到第二級流水。S240:第二級流水根據(jù)上一級流水輸出的邏輯值和狀態(tài)值進(jìn)行運(yùn)算,輸出本級邏輯值和狀態(tài)值到下一級流水;依此類推。S250:實(shí)時(shí)檢測各級流水輸出的狀態(tài)值,根據(jù)預(yù)先設(shè)計(jì)的流水狀態(tài)斷言對流水線模型進(jìn)行狀態(tài)斷言判斷,判斷是否出現(xiàn)違反斷言的現(xiàn)象,若是則發(fā)出報(bào)告,認(rèn)為流水線模型沒有通過驗(yàn)證。更具體的,上述步驟S250中還將實(shí)時(shí)檢測的各級流水輸出的狀態(tài)值進(jìn)行緩存。同時(shí),上述根據(jù)預(yù)先設(shè)計(jì)的流水狀態(tài)斷言對流水線模型進(jìn)行狀態(tài)斷言判斷的步驟包括(I)從預(yù)先設(shè)計(jì)的流水狀態(tài)斷言群中按照順序讀取流水狀態(tài)斷言。(2)從緩存的各級流水輸出的狀態(tài)值中讀取當(dāng)前流水狀態(tài)斷言中涉及到的某級或某些級流水的狀態(tài)值進(jìn)行判斷。(3)當(dāng)判斷出現(xiàn)違反斷言的現(xiàn)象時(shí)則發(fā)出報(bào)告,否則繼續(xù)讀取下一條流水狀態(tài)斷言進(jìn)行判斷,直到流水狀態(tài)斷言群中流水狀態(tài)斷言讀取完畢。當(dāng)步驟S250中出現(xiàn)違反斷言的現(xiàn)象時(shí),則執(zhí)行以下步驟分別對產(chǎn)生當(dāng)前流水狀態(tài)的模型單元控制邏輯、上一級輸出單元進(jìn)行驗(yàn)證。由于當(dāng)前流水狀態(tài)由本模型單元自身的控制邏輯、上一級輸出單元(例如上一模型單元)二者決定,若流水線模型還包括流水線控制單元的話,當(dāng)前流水狀態(tài)還包括由流水線控制單元三者共同決定,因此僅需對以上二者或三者進(jìn)行修正,并重新驗(yàn)證即可。
請參考圖6,圖6所示為驗(yàn)證流水線模型的完備性和正確性的一個(gè)實(shí)例。其中時(shí)鐘驅(qū)動(dòng)單元為clk,內(nèi)部驅(qū)動(dòng)單元保持時(shí)鐘驅(qū)動(dòng)單元的驅(qū)動(dòng)性不變,即內(nèi)部收發(fā)數(shù)據(jù)也為一個(gè)時(shí)鐘周期。流水線模型中各模型單元包含ad_i_mem、i_mem_out、pc_creg、IF_reg、ID_reg、EX_reg等模型單元。流水線控制單元包括if_flush、id_fIush等,其產(chǎn)生的邏輯值可以控制 ad_i_mem、i_mem_out、pc_creg、IF_reg、ID_reg、EX_reg 的狀態(tài)值。例如,if_flush 邏輯值為高時(shí),可以使IF_reg的狀態(tài)值變?yōu)?狀態(tài);if_flush邏輯值為為低時(shí),IF_reg接受上一級模型單元輸入的狀態(tài)值作為自己的狀態(tài)值,保持一個(gè)周期后傳出。id_flush邏輯值為高時(shí),可以使ID_reg的狀態(tài)值變?yōu)?狀態(tài),為低時(shí)ID_reg接受上一級模型單元輸入的狀態(tài)值作為自己的狀態(tài)值,保持一個(gè)周期后傳出。作為狀態(tài)斷言單元的state_assert_branch斷言了 EX_reg模型單元的狀態(tài),如果遇到BZ狀態(tài)并 且發(fā)生了跳轉(zhuǎn),那么BZ之后的兩個(gè)狀態(tài)必須為0狀態(tài),而實(shí)際的流水線模型中EX_reg模型單元在此條件下沒有緊跟兩個(gè)0狀態(tài),所以狀態(tài)斷言單元發(fā)出違反斷言的錯(cuò)誤發(fā)生。此時(shí)根據(jù)狀態(tài)錯(cuò)誤,可以調(diào)整流水線控制單元的控制邏輯,而不用關(guān)心流水線模型中模型單元產(chǎn)生的具體邏輯值。通過狀態(tài)值將流水線設(shè)計(jì)的出錯(cuò)之處定位至具體的某個(gè)單元之后,便可針對該出錯(cuò)的單元進(jìn)行修正,如有必要可繼續(xù)按上述方法進(jìn)行驗(yàn)證,直至不再出錯(cuò)為止。接著將流水線模型與的流水線RTL設(shè)計(jì)進(jìn)行比對,比較在同一驗(yàn)證激勵(lì)下,兩者輸出的邏輯值是否一致,來驗(yàn)證流水線RTL設(shè)計(jì)的正確性,即驗(yàn)證集成電路流水線設(shè)計(jì)的正確性。圖7所示為利用流水線模型驗(yàn)證流水線RTL設(shè)計(jì)的驗(yàn)證環(huán)境示意圖和波形圖,其中流水線模型中各模型單元的波形分別用模型單元1_A、模型單元2_B、模型單元3_C表示;流水線RTL設(shè)計(jì)的各寄存器的波形用Reg_l_A、Reg_2_B、Reg_3_C表示。驗(yàn)證流水線模型及流水線控制單元RTL設(shè)計(jì)時(shí),測例產(chǎn)生器產(chǎn)生驗(yàn)證激勵(lì),同時(shí)加載到流水線RTL設(shè)計(jì)各寄存器和流水線模型各模型單元上,流水線控制單元和流水線控制單元RTL設(shè)計(jì)分別控制流水線模型各模型單元和流水線RTL設(shè)計(jì)各寄存器。之前流水線模型各模型單元和流水線控制單元已經(jīng)完成圖6中的狀態(tài)驗(yàn)證,本驗(yàn)證環(huán)境用于對比集成電路流水線設(shè)計(jì)的建模結(jié)構(gòu)和RTL設(shè)計(jì)中對應(yīng)單元的輸出邏輯值,完成邏輯值的對比檢查,從而驗(yàn)證流水線RTL設(shè)計(jì)(包括流水線控制單元RTL)的正確性。采用上述流水線模型對集成電路流水線設(shè)計(jì)進(jìn)行驗(yàn)證的系統(tǒng)請參閱圖8,該系統(tǒng)主要包括測例產(chǎn)生器Z100,用于產(chǎn)生驗(yàn)證激勵(lì),并按照時(shí)間順序?qū)Ⅱ?yàn)證激勵(lì)發(fā)送到流水線模型,所述驗(yàn)證激勵(lì)包括邏輯值和狀態(tài)值。狀態(tài)斷言單元Z200,用于對流水線模型中各個(gè)模型單元的狀態(tài)及其之間的關(guān)系進(jìn)行聲明,并設(shè)計(jì)各級流水狀態(tài)斷言。狀態(tài)判斷單元Z300,用于實(shí)時(shí)檢測各級流水輸出的狀態(tài)值,根據(jù)狀態(tài)斷言單元的狀態(tài)斷言對流水線模型進(jìn)行狀態(tài)斷言判斷,若出現(xiàn)違反斷言的現(xiàn)象則發(fā)出報(bào)告,認(rèn)為流水線模型沒有通過驗(yàn)證。為更好實(shí)現(xiàn)本實(shí)施例的方案,上述系統(tǒng)還包括狀態(tài)存儲(chǔ)單元Z400,用于緩存各級流水輸出的狀態(tài)值。同時(shí)狀態(tài)判斷單元Z300細(xì)分為多個(gè)子單元,具體包括狀態(tài)讀取子單元Z310,用于讀取狀態(tài)斷言單元中預(yù)先設(shè)計(jì)的各級流水的狀態(tài)斷言,還用于從狀態(tài)存儲(chǔ)單元中讀取當(dāng)前流水的狀態(tài)斷言中涉及到的某級或某些級流水的狀態(tài)值。狀態(tài)判斷子單元Z320,用于根據(jù)狀態(tài)讀取子單元讀取的各級流水的斷言狀態(tài)、當(dāng)前流水的狀態(tài)斷言中涉及到的某級或某些級流水的狀態(tài)值,進(jìn)行斷言判斷。狀態(tài)報(bào)告子單元Z330 :用于當(dāng)狀態(tài)判斷子單元判斷出現(xiàn)違反斷言的現(xiàn)象時(shí)則發(fā)出報(bào)告。利用上述系統(tǒng)對流水線模型的完備性和正確性進(jìn)行驗(yàn)證,流水線模型本身設(shè)計(jì)的驗(yàn)證通過后,可用于驗(yàn)證流水線RTL設(shè)計(jì),其驗(yàn)證方式請參照上述關(guān)于圖7的描述。以上內(nèi)容是結(jié)合具體的實(shí)施方式對本發(fā)明所作的進(jìn) 一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換。
權(quán)利要求
1.一種采用流水線模型對集成電路流水線設(shè)計(jì)進(jìn)行驗(yàn)證的方法,所述流水線模型包括根據(jù)集成電路流水線設(shè)計(jì)確定的至少二級流水單元,每級流水單元中至少包括一個(gè)模型單元,每個(gè)模型單元包括 后端接口,用于接收前一級流水單元輸出的狀態(tài)值和邏輯值; 前端接口,用于將該模型單元的狀態(tài)值和邏輯值輸出到下一級模型單元; 功能單元,用于對后端接口發(fā)來的邏輯值進(jìn)行功能函數(shù)運(yùn)算并輸出邏輯值; 內(nèi)部控制單元,包括控制器和狀態(tài)處理單元,所述控制器根據(jù)后端接口發(fā)來的數(shù)據(jù)和本身的控制邏輯輸出選擇信號,所述狀態(tài)處理單元根據(jù)后端接口發(fā)來的數(shù)據(jù)和本身的狀態(tài)處理邏輯輸出狀態(tài)值至前端接口; 選擇單元,根據(jù)控制器輸出的選擇信號,在功能單元輸出的邏輯值、該模型單元的復(fù)位值、置位值和上一狀態(tài)的邏輯值中進(jìn)行擇一輸出至前端接口; 其特征在于,所述方法包括 驗(yàn)證流水線模型的完備性和正確性; 流水線模型驗(yàn)證通過后,利用該流水線模型驗(yàn)證流水線設(shè)計(jì)的正確性; 所述驗(yàn)證流水線模型的完備性和正確性包括以下步驟 對流水線模型中各個(gè)模型單元的狀態(tài)及其之間的關(guān)系進(jìn)行聲明,并預(yù)先設(shè)計(jì)各級流水狀態(tài)斷言; 測例產(chǎn)生器產(chǎn)生驗(yàn)證激勵(lì),并按照時(shí)間順序?qū)Ⅱ?yàn)證激勵(lì)發(fā)送到流水線模型,所述驗(yàn)證激勵(lì)包括邏輯值和狀態(tài)值; 流水線模型的第一級流水接收測例產(chǎn)生器產(chǎn)生的驗(yàn)證激勵(lì),根據(jù)驗(yàn)證激勵(lì)進(jìn)行運(yùn)算,輸出本級的邏輯值和狀態(tài)值到第二級流水; 第二級流水根據(jù)上一級流水輸出的邏輯值和狀態(tài)值進(jìn)行運(yùn)算,輸出本級邏輯值和狀態(tài)值到下一級流水;依此類推; 實(shí)時(shí)檢測各級流水輸出的狀態(tài)值,根據(jù)預(yù)先設(shè)計(jì)的流水狀態(tài)斷言對流水線模型進(jìn)行狀態(tài)斷言判斷,判斷是否出現(xiàn)違反斷言的現(xiàn)象,若是則發(fā)出報(bào)告,認(rèn)為流水線模型沒有通過驗(yàn)證。
2.如權(quán)利要求I所述的方法,其特征在于,將實(shí)時(shí)檢測的各級流水輸出的狀態(tài)值進(jìn)行緩存,根據(jù)預(yù)先設(shè)計(jì)的流水狀態(tài)斷言對流水線模型進(jìn)行狀態(tài)斷言判斷步驟包括 從預(yù)先設(shè)計(jì)的流水狀態(tài)斷言群中按照順序讀取流水狀態(tài)斷言; 從緩存的各級流水輸出的狀態(tài)值中讀取當(dāng)前流水狀態(tài)斷言中涉及到的某級或某些級流水的狀態(tài)值進(jìn)行判斷; 當(dāng)判斷出現(xiàn)違反斷言的現(xiàn)象時(shí)則發(fā)出報(bào)告,否則繼續(xù)讀取下一條流水狀態(tài)斷言進(jìn)行判斷,直到流水狀態(tài)斷言群中流水狀態(tài)斷言讀取完畢。
3.如權(quán)利要求2所述的方法,其特征在于,當(dāng)出現(xiàn)違反斷言的現(xiàn)象時(shí),則執(zhí)行以下步驟 分別對產(chǎn)生當(dāng)前流水狀態(tài)的模型單元控制邏輯和上一級輸出單元進(jìn)行驗(yàn)證。
4.一種集成電路流水線模型的實(shí)現(xiàn)方法,其特征在于,包括 模擬硬件運(yùn)行方式,以寄存器為界劃分模型單元;將當(dāng)前寄存器和其前面一級或多級的寄存器之間的邏輯劃分為一個(gè)模型單元,其中,組合邏輯中的功能函數(shù)運(yùn)算劃入模型單元的功能單元中,組合邏輯中的選擇和控制邏輯劃入模型單元的選擇單元和控制器中,時(shí)序邏輯中的處理周期劃入內(nèi)部驅(qū)動(dòng)單元; 根據(jù)集成電路流水線級數(shù)設(shè)計(jì)將流水單元連接成至少二級流水,構(gòu)成集成電路流水線模型。
5.如權(quán)利要求4所述的實(shí)現(xiàn)方法,其特征在于,還包括 采用外部驅(qū)動(dòng)單元作為流水線模型各流水單元的驅(qū)動(dòng)時(shí)鐘;在每個(gè)流水單元內(nèi)部設(shè)置內(nèi)部驅(qū)動(dòng)單元,所述內(nèi)部驅(qū)動(dòng)單元根據(jù)本流水單元接收和發(fā)送數(shù)據(jù)的時(shí)鐘周期,將外部驅(qū)動(dòng)單元輸出的驅(qū)動(dòng)時(shí)鐘信號處理成本流水單元需要的時(shí)鐘信號。
6.一種集成電路流水線設(shè)計(jì)驗(yàn)證系統(tǒng),其特征在于包括 根據(jù)集成電路流水線設(shè)計(jì)確定的至少二級流水單元,每級流水單元中至少包括一個(gè)模型單元,每個(gè)模型單元包括 后端接口,用于接收前一級流水單元輸出的狀態(tài)值和邏輯值; 前端接口,用于將該模型單元的狀態(tài)值和邏輯值輸出到下一級模型單元; 功能單元,用于對后端接口發(fā)來的邏輯值進(jìn)行多種功能函數(shù)運(yùn)算并輸出多個(gè)邏輯值;內(nèi)部控制單元,包括控制器和狀態(tài)處理單元,所述控制器根據(jù)后端接口發(fā)來的數(shù)據(jù)和本身的控制邏輯輸出選擇信號,所述狀態(tài)處理單元根據(jù)后端接口發(fā)來的數(shù)據(jù)和本身的狀態(tài)處理邏輯輸出狀態(tài)值至前端接口 ;和 選擇單元,根據(jù)控制器輸出的選擇信號,在功能單元輸出的多個(gè)邏輯值、該模型單元的復(fù)位值、置位值和上一狀態(tài)的邏輯值中進(jìn)行擇一輸出至前端接口 ; 測例產(chǎn)生器,用于產(chǎn)生驗(yàn)證激勵(lì),并按照時(shí)間順序?qū)Ⅱ?yàn)證激勵(lì)發(fā)送到流水線模型,所述驗(yàn)證激勵(lì)包括邏輯值和狀態(tài)值; 狀態(tài)斷言單元,用于對流水線模型中各個(gè)模型單元的狀態(tài)及其之間的關(guān)系進(jìn)行聲明,并設(shè)計(jì)各級流水狀態(tài)斷言; 狀態(tài)判斷單元,用于實(shí)時(shí)檢測各級流水輸出的狀態(tài)值,根據(jù)狀態(tài)斷言單元的狀態(tài)斷言對流水線模型進(jìn)行狀態(tài)斷言判斷,若出現(xiàn)違反斷言的現(xiàn)象則發(fā)出報(bào)告,認(rèn)為流水線模型沒有通過驗(yàn)證。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,還包括 狀態(tài)存儲(chǔ)單元,用于緩存各級流水輸出的狀態(tài)值; 所述狀態(tài)判斷單元包括 狀態(tài)讀取子單元,用于讀取狀態(tài)斷言單元中預(yù)先設(shè)計(jì)的各級流水的狀態(tài)斷言,還用于從狀態(tài)存儲(chǔ)單元中讀取當(dāng)前流水的狀態(tài)斷言中涉及到的某級或某些級流水的狀態(tài)值; 狀態(tài)判斷子單元,用于根據(jù)狀態(tài)讀取子單元讀取的各級流水的斷言狀態(tài)、當(dāng)前流水的狀態(tài)斷言中涉及到的某級或某些級流水的狀態(tài)值,進(jìn)行斷言判斷; 狀態(tài)報(bào)告子單元用于當(dāng)狀態(tài)判斷子單元判斷出現(xiàn)違反斷言的現(xiàn)象時(shí)則發(fā)出報(bào)告。
8.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述流水線模型還包括 流水線控制單元,用于全局控制流水線模型上各模型單元邏輯值和狀態(tài)值的選擇輸出。
9.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述模型單元還包括 緩存單元,用于在所述功能單元運(yùn)算過程中提供存儲(chǔ)空間;包括緩存運(yùn)算過程的中間值,或者按照模型單元的處理周期,存儲(chǔ)中間周期的運(yùn)算結(jié)果。
10.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述流水線模型還包括 外部驅(qū)動(dòng)單元,作為流水線模型各流水單元的驅(qū)動(dòng)時(shí)鐘; 所述模型單元還包括 內(nèi)部驅(qū)動(dòng)單元,根據(jù)外部驅(qū)動(dòng)單元的驅(qū)動(dòng)信號,計(jì)算本模型單元中前端接口和后端接口發(fā)送和接收數(shù)據(jù)的時(shí)間,驅(qū)動(dòng)所述前端接口和后端接口完成發(fā)送和接收任務(wù)。
全文摘要
本申請公開了一種采用流水線模型對集成電路流水線設(shè)計(jì)進(jìn)行驗(yàn)證的方法。其首先對流水線模型的完備性和正確性進(jìn)行驗(yàn)證,流水線模型驗(yàn)證通過后,可來驗(yàn)證集成電路流水線設(shè)計(jì)。而在該流水線模型的驗(yàn)證中,通過預(yù)先設(shè)計(jì)各級流水狀態(tài)斷言,其次實(shí)時(shí)檢測各級流水輸出的狀態(tài)值,進(jìn)而判斷是否出現(xiàn)違反斷言來驗(yàn)證。一旦流水線模型的設(shè)計(jì)出錯(cuò)則會(huì)出現(xiàn)違反斷言的情況,如此則可直接驗(yàn)證與違反斷言的流水中模型單元相關(guān)的各級流水及模型單元,即直接將出錯(cuò)的地方定位到具體的某級或某些級流水的模型單元中,不需要驗(yàn)證所有的流水線模型中的全部單元,提高了糾錯(cuò)效率。
文檔編號G06F17/50GK102789521SQ20121021550
公開日2012年11月21日 申請日期2012年6月27日 優(yōu)先權(quán)日2012年6月27日
發(fā)明者周芝麗, 張興, 李世軍, 王新安, 蘇吉婷, 謝崢, 趙蕾, 陳旭 申請人:北京大學(xué)深圳研究生院