




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
EDA設(shè)計(jì)技術(shù)教學(xué)課件第9章設(shè)計(jì)校驗(yàn)第一頁(yè),共86頁(yè)。設(shè)計(jì)校驗(yàn)針對(duì)不同的校驗(yàn)對(duì)象和校驗(yàn)級(jí)別,采用合適的校驗(yàn)策略和校驗(yàn)方法,驗(yàn)證系統(tǒng)設(shè)計(jì)的功能和時(shí)序是否滿足設(shè)計(jì)要求的過(guò)程??笨舜髽蛴?907年8月29日倒塌第二頁(yè),共86頁(yè)。未進(jìn)行設(shè)計(jì)校驗(yàn)招致的嚴(yán)重后果魁北克大橋在設(shè)計(jì)過(guò)程中未執(zhí)行設(shè)計(jì)校驗(yàn),于1907年8月29日倒塌。第三頁(yè),共86頁(yè)。為什么進(jìn)行設(shè)計(jì)校驗(yàn)?系統(tǒng)設(shè)計(jì)的行為級(jí)描述和RTL級(jí)描述階段,由于設(shè)計(jì)實(shí)踐、不同硬件描述代碼風(fēng)格的差異等原因,導(dǎo)致綜合的門級(jí)網(wǎng)表和設(shè)計(jì)模塊之間與設(shè)計(jì)規(guī)定的功能不匹配。利用門級(jí)網(wǎng)表進(jìn)行優(yōu)化、布置、布線的過(guò)程中,需要結(jié)合所使用的邏輯器件,按照系統(tǒng)設(shè)計(jì)技術(shù)條件要求制定的時(shí)序約束條件,對(duì)系統(tǒng)模塊和布線延時(shí)模型進(jìn)行時(shí)序檢查。第四頁(yè),共86頁(yè)。設(shè)計(jì)校驗(yàn)分類功能校驗(yàn)
以等價(jià)驗(yàn)證為評(píng)估標(biāo)準(zhǔn),利用硬件描述語(yǔ)言(也包括來(lái)自外部的數(shù)據(jù)文件或其他語(yǔ)言程序),遵循相應(yīng)的設(shè)計(jì)規(guī)范、標(biāo)準(zhǔn),設(shè)計(jì)測(cè)試平臺(tái),向目標(biāo)系統(tǒng)創(chuàng)建預(yù)先確定的輸入,獲得目標(biāo)系統(tǒng)的響應(yīng),以比較目標(biāo)系統(tǒng)的功能是否滿足設(shè)計(jì)要求。借助仿真工具實(shí)施各功能校驗(yàn)環(huán)節(jié),又稱之為前仿真或功能仿真。時(shí)序校驗(yàn)
將時(shí)序指令置入指定的系統(tǒng)模塊中,校驗(yàn)設(shè)計(jì)系統(tǒng)在給定的時(shí)間限制范圍內(nèi),關(guān)鍵事件的發(fā)生是否滿足時(shí)序要求。時(shí)序約束條件驗(yàn)證過(guò)程一般安排在布線后對(duì)門級(jí)仿真平臺(tái)上進(jìn)行,稱為時(shí)序校驗(yàn)或后仿真。第五頁(yè),共86頁(yè)。校驗(yàn)標(biāo)準(zhǔn)校驗(yàn)標(biāo)準(zhǔn)是校驗(yàn)設(shè)計(jì)必須滿足的規(guī)定的集合,包括標(biāo)準(zhǔn)規(guī)定、標(biāo)準(zhǔn)解釋、校驗(yàn)起點(diǎn)、校驗(yàn)二次收斂點(diǎn),要求在校驗(yàn)域內(nèi),自校驗(yàn)起點(diǎn)開始,經(jīng)RTL代碼(對(duì)于功能校驗(yàn))或門級(jí)延時(shí)模型路徑(對(duì)于時(shí)序校驗(yàn))至二次收斂點(diǎn)、校驗(yàn)路徑構(gòu)成的閉域,校驗(yàn)結(jié)果必須是收斂的。第六頁(yè),共86頁(yè)。校驗(yàn)方式有很多方式實(shí)現(xiàn)設(shè)計(jì)校驗(yàn)的二次收斂:手動(dòng)、自動(dòng)、Poka-Yoka式防呆看板、冗余等。對(duì)于硬件設(shè)計(jì)來(lái)說(shuō),常采用自動(dòng)方式與手動(dòng)方式相結(jié)合的校驗(yàn)方式。不同起點(diǎn)和二次收斂點(diǎn)決定不同的校驗(yàn)方法:形式驗(yàn)證、模塊檢查、功能與時(shí)序校驗(yàn)、測(cè)試平臺(tái),其中,構(gòu)建測(cè)試平臺(tái),以功能驗(yàn)證和時(shí)序驗(yàn)證為目的,以形式驗(yàn)證的等價(jià)驗(yàn)證為評(píng)估標(biāo)準(zhǔn),是設(shè)計(jì)驗(yàn)證最常用的主要方法和實(shí)施標(biāo)準(zhǔn)。第七頁(yè),共86頁(yè)。等價(jià)驗(yàn)證等價(jià)驗(yàn)證是形式驗(yàn)證過(guò)程之一,其驗(yàn)證起點(diǎn)和驗(yàn)證輸出在邏輯上是等價(jià)的,驗(yàn)證過(guò)程中發(fā)生的RTL網(wǎng)表變換,不改變網(wǎng)表的功能和時(shí)序。與門級(jí)仿真相比,等價(jià)驗(yàn)證更快速地發(fā)現(xiàn)RTL級(jí)抽象的問題所在。第八頁(yè),共86頁(yè)。模塊檢查按設(shè)計(jì)要求生成的解釋,結(jié)合RTL網(wǎng)表的模塊檢查結(jié)果,獲得系統(tǒng)設(shè)計(jì)的斷言,斷言直接輸出RTL代碼的系統(tǒng)設(shè)計(jì)結(jié)果:被接受或者被否決,校驗(yàn)過(guò)程獲得的被接受或者被否決集合稱為模塊檢查校驗(yàn)標(biāo)準(zhǔn)。模塊檢查還不能實(shí)施并證明高級(jí)斷言,僅適用于確定的、低級(jí)的寄存器級(jí)斷言。第九頁(yè),共86頁(yè)。校驗(yàn)重用校驗(yàn)重用以信任同級(jí)別的設(shè)計(jì)結(jié)果為基礎(chǔ),向他方提供可配置、可編程、可重用的校驗(yàn)設(shè)計(jì),以利于他方在完全可能的配置環(huán)境和完全可能的應(yīng)用環(huán)境下進(jìn)行設(shè)計(jì)校驗(yàn),所有的可重用設(shè)計(jì)資源都滿足可重用條款要求,而且完全可以向用戶演示和再生。第十頁(yè),共86頁(yè)。校驗(yàn)方法校驗(yàn)方法可分為三類:黑箱校驗(yàn)白箱校驗(yàn)灰箱校驗(yàn)黑箱校驗(yàn)方法是在沒有任何系統(tǒng)結(jié)構(gòu)知識(shí)、無(wú)法通過(guò)接口直接訪問系統(tǒng)的內(nèi)部狀態(tài)條件下對(duì)校驗(yàn)?zāi)P偷男r?yàn)方法。常用于與系統(tǒng)設(shè)計(jì)實(shí)施規(guī)定無(wú)關(guān)的場(chǎng)合。第十一頁(yè),共86頁(yè)。校驗(yàn)方法白箱校驗(yàn)的對(duì)象是完全可觀測(cè)、可控的,可直接訪問系統(tǒng)的內(nèi)部結(jié)構(gòu)并實(shí)施各校驗(yàn)環(huán)節(jié),可快速建立系統(tǒng)的狀態(tài)方程,隔離系統(tǒng)的特定功能,可以方便地觀察校驗(yàn)過(guò)程的輸出和結(jié)果,并即時(shí)報(bào)告與期望行為的差異?;蚁湫r?yàn)的模型介于黑箱和白箱之間,對(duì)系統(tǒng)設(shè)計(jì)的觀測(cè)和控制全部集中在系統(tǒng)的頂層接口。第十二頁(yè),共86頁(yè)。功能校驗(yàn)結(jié)構(gòu)利用硬件描述語(yǔ)言設(shè)計(jì)測(cè)試平臺(tái),與設(shè)計(jì)模塊連接,向設(shè)計(jì)模塊發(fā)送激勵(lì)信號(hào),接收設(shè)計(jì)模塊的響應(yīng),報(bào)告功能不匹配情況。第十三頁(yè),共86頁(yè)。測(cè)試平臺(tái)是一個(gè)按行為抽象進(jìn)行代碼封裝的模塊,其層次結(jié)構(gòu)、語(yǔ)法規(guī)則、數(shù)據(jù)流及設(shè)計(jì)方法等方面,與系統(tǒng)各級(jí)抽象的建模方法相同,其目的是向設(shè)計(jì)模塊輸出激勵(lì)信號(hào),接收并處理設(shè)計(jì)模塊的響應(yīng)。例:全加器與功能校驗(yàn)測(cè)試平臺(tái)第十四頁(yè),共86頁(yè)。測(cè)試平臺(tái)///////////////////////////測(cè)試平臺(tái)////////////////////////////////
////////////////////////設(shè)計(jì)模塊/////////////////`timescale1ns/1nsmoduleAdder(sum,cout,a,b,cin);moduletest_bench;inputa,b,cin;
rega,b,cin;outputsum,cout;
wiresum,cout;assignsum=a^b^cin;Adderdut1(sum,cout,a,b,cin);assigncout=(a&b)|(a&cin)|(b&cin);initialendmodule
begin{a,b,cin}=3’b000;
#10{a,b,cin}=3'b010;
#10{a,b,cin}=3'b100;
#10{a,b,cin}=3'b110;
#10{a,b,cin}=3'b001;
#10{a,b,cin}=3'b011;#10{a,b,cin}=3'b101;#10{a,b,cin}=3'b111;end//測(cè)試平臺(tái)以文本形式輸出功能校驗(yàn)信息initialbegin$display("stimeabcinsumcout");$monitor($stime,,a,,b,,,cin,,,,sum,,,,,cout);endendmodule測(cè)試平臺(tái)的功能校驗(yàn)以文本形式輸出結(jié)果如下,stime為仿真時(shí)間:#stimeabcinsumcout#000000#1001010#2010010#3011001#4000110#5001101#6010101#7011111第十五頁(yè),共86頁(yè)。代碼封裝封裝是結(jié)構(gòu)化設(shè)計(jì)原則的應(yīng)用隱藏對(duì)象的屬性,僅公開接口使用戶在訪問模塊的過(guò)程中不必了解模塊內(nèi)部的結(jié)構(gòu)和細(xì)節(jié),僅通過(guò)接口和特定的訪問權(quán)限即可訪問模塊。第十六頁(yè),共86頁(yè)。代碼封裝例:integeri;alwaysbeginfor(i=0;i<10;i=i+1)begin//(1)…endendalwaysbeginfor(i=20;i>0;i=i-1)begin//(2)…endend第十七頁(yè),共86頁(yè)。代碼封裝例:alwaysbegin:Block1intergeri;//(1)for(i=0;i<10;i=i+1)begin…end
end
always
begin:Block2
intergeri;//(2)
for(i=20;i>0;i=i-1)begin
…
end
end第十八頁(yè),共86頁(yè)。數(shù)據(jù)抽象(1)宏定義`define符號(hào)定義數(shù)據(jù)。 `defineK4.016(2)參數(shù)定義parameter parameterK=4.016(3)實(shí)數(shù)變換系統(tǒng)任務(wù)$realtobits和$bitstoreal第十九頁(yè),共86頁(yè)。數(shù)據(jù)抽象moduleTransmitter(T_buffer);outputT_buffer;realInternal_bus;wire[63:0]T_buffer=$realtobits(Internal_bus);endmodulemoduleReceiver(R_buffer);inputR_buffer;wire[64:1]R_buffer;realInternal_bus;initialassignInternal_bus=$bitstoreal(R_buffer);endmodule第二十頁(yè),共86頁(yè)。數(shù)據(jù)抽象記錄模塊創(chuàng)建一個(gè)RM記錄模塊:moduleRM;reg[7:0]x;reg[15:0]y;reg[2:0]z;regu;reg[15:0]v;reg[7:0]w[0:47];endmodule第二十一頁(yè),共86頁(yè)。數(shù)據(jù)抽象在測(cè)試平臺(tái)模塊中引用記錄模塊:moduletestbench;RM();//引用記錄initialbegin:test_procedureintegeri;cell.x=0;//(1),模塊多級(jí)訪問for(i=0;i<48;i=i+1)begincell.w[i]=8'hFF;endendendmodule第二十二頁(yè),共86頁(yè)。數(shù)據(jù)抽象記錄文件創(chuàng)建一個(gè)testbench.h記錄文件:
`timescale1ns/1nsrega,b,cin;wiresum,cout;parameterK=1.45;`defineUART_Buffer[31:0]`defineSPI_Buffer[1023:0]`defineR[7:0]`defineG[7:0]`defineB[7:0]第二十三頁(yè),共86頁(yè)。數(shù)據(jù)抽象在測(cè)試平臺(tái)模塊中,直接引用testbench.h記錄文件:moduletest_bench;`include"testbench.h"reg`UART_BufferUART1_Buffer;//(1)reg`UART_BufferUART2_Buffer;//(2)initialbeginif(UART1_Buffer!=UART2_Buffer)…..end…….endmodule語(yǔ)句(1)和(2)分別等價(jià)于:reg[31:0]UART1_Buffer;reg[31:0]UART2_Buffer;第二十四頁(yè),共86頁(yè)。數(shù)據(jù)抽象系統(tǒng)任務(wù)$readmemb和$readmemh$readmemb("",memory_name[,start_addr[,finish_addr]]);$readmemh("",memory_name[,start_addr[,finish_addr]]);例:
reg[7:0]mem[0:255];initial$readmemb("mem.data",mem);initial$readmemh("mem.data",mem,16);initial$readmemh("mem.data",mem,128,1);第二十五頁(yè),共86頁(yè)。競(jìng)爭(zhēng)是一個(gè)狀態(tài)變化輸入導(dǎo)致兩個(gè)或多個(gè)不可預(yù)測(cè)的狀態(tài)變化輸出的過(guò)程,須避免或消除競(jìng)爭(zhēng)條件,以消除競(jìng)爭(zhēng)。兩種競(jìng)爭(zhēng):讀寫競(jìng)爭(zhēng)和初始化競(jìng)爭(zhēng)。第二十六頁(yè),共86頁(yè)。讀寫競(jìng)爭(zhēng)是指模塊內(nèi)兩個(gè)或兩個(gè)以上的initial語(yǔ)句塊或always語(yǔ)句塊同時(shí)對(duì)一個(gè)變量進(jìn)行讀寫操作;競(jìng)爭(zhēng)條件中,語(yǔ)句塊之間的關(guān)系是并行執(zhí)行,因此輸出無(wú)法預(yù)知的結(jié)果。第二十七頁(yè),共86頁(yè)。讀寫競(jìng)爭(zhēng)例:moduleRW_race(clk);inputclk;integercount;always@(posedgeclk)begincount=count+1;//(1)endalways@(posedgeclk)begin$write("Countisequalto%0d\n",count);//(2)endendmodulemoduleRW_race(clk);inputclk;integercount;always@(posedgeclk)begincount<=count+1;endalways@(posedgeclk)begin$write("Countisequalto%0d\n",count);
endendmodule第二十八頁(yè),共86頁(yè)。讀寫競(jìng)爭(zhēng)在同一時(shí)刻對(duì)非阻塞式賦值語(yǔ)句的變量賦不同的邏輯值,將產(chǎn)生競(jìng)爭(zhēng)條件。例:moduleevents;regstrobe;always@(strobe)begin$write("Stobeis%b\n",strobe);end
initialbeginstrobe=1'b0;strobe<=#101'b1;//(1)strobe<=#101'b0;//(2)endendmoduleinitialbeginstrobe=1'b0;strobe=#101'b1;//(1)strobe=#101'b0;//(2)end第二十九頁(yè),共86頁(yè)。初始化競(jìng)爭(zhēng)是指模塊內(nèi)兩個(gè)或兩個(gè)以上的initial語(yǔ)句塊同時(shí)對(duì)一個(gè)變量進(jìn)行賦值操作競(jìng)爭(zhēng)條件中,各initial語(yǔ)句塊之間的關(guān)系是并行執(zhí)行,因此輸出無(wú)法預(yù)知的結(jié)果。例:moduleInitial_race;integercount;wire[7:0]out;assignout=count+1;//(1),在0時(shí)刻讀countinitialbegin
count=0;//(2),在0時(shí)刻對(duì)count初始化賦值,向count寫初始值
$write("Out=%b\n",out);//(3)
endendmodule第三十頁(yè),共86頁(yè)。初始化競(jìng)爭(zhēng)moduleInitial_race;integercount;wire[7:0]out;
assign#2out=count+1;
//(1),增加2個(gè)時(shí)間單位的延時(shí)賦值
initialbegincount=0;//(2)#4$write("Out=%b\n",out);
//(3),增加4個(gè)時(shí)間單位的延時(shí)賦值endendmodule第三十一頁(yè),共86頁(yè)。時(shí)序校驗(yàn)可選擇使用三類延時(shí)模型:分布延時(shí)、塊延時(shí)和引腳至引腳延時(shí)(即路徑延時(shí))。分布延時(shí)是對(duì)電路中每個(gè)獨(dú)立的門級(jí)原語(yǔ)或用戶定義原語(yǔ)進(jìn)行延時(shí)賦值,在原語(yǔ)的輸入變化時(shí),按指定的延時(shí)值輸出,可精確控制模塊的延時(shí)。moduleDDM(Z,A,B,C,D);inputA,B,C,D;outputZ;wirew1,w2;
and#4G1(w1,A,B);//分布延時(shí)賦值and#3G2(w2,C,D);//分布延時(shí)賦值xor#3G3(Z,w1,w2);//分布延時(shí)賦值endmodule第三十二頁(yè),共86頁(yè)。時(shí)序校驗(yàn)塊延時(shí)是將整個(gè)模塊的延時(shí)賦值集中在模塊內(nèi)某一個(gè)原語(yǔ)上,一般對(duì)模塊內(nèi)最后一個(gè)原語(yǔ)進(jìn)行延時(shí)賦值。moduleDUM(Z,A,B,C,D);inputA,B,C,D;outputZ;wirew1,w2;
andG1(w1,A,B);andG2(w2,C,D);xor#10G3(Z,w1,w2);//塊延時(shí)賦值endmodule第三十三頁(yè),共86頁(yè)。時(shí)序校驗(yàn)路徑延時(shí)可由標(biāo)準(zhǔn)數(shù)字邏輯集成電路的說(shuō)明書或通過(guò)仿真獲得,是最精確、最容易實(shí)現(xiàn)的延時(shí)控制方式,只需要模塊的輸入輸出口之間的延時(shí)規(guī)定即可,不必關(guān)心模塊的內(nèi)部結(jié)構(gòu)。第三十四頁(yè),共86頁(yè)。路徑延時(shí)關(guān)鍵字specify和endspecify例:moduleSBM(Z,A,B,C,D);inputA,B,C,D;outputZ;wirew1,w2;specify//路徑延時(shí)語(yǔ)句的指定塊(A=>Z)=7;(B=>Z)=7;(C=>Z)=6;(D=>Z)=6;
endspecify
andG1(w1,A,B);//例化門級(jí)原語(yǔ)andG2(w2,C,D);xorG3(Z,w1,w2);endmodule
指定塊的模塊路徑延時(shí)由兩部分組成:模塊路徑描述和路徑延時(shí)賦值。
模塊路徑分為簡(jiǎn)單路徑、邊沿敏感路徑、狀態(tài)相關(guān)路徑,路徑源端必須是連接到模塊的輸入端口或雙向端口的網(wǎng)絡(luò)類型端口,路徑目的端必須是連接到模塊輸出端口或雙向端口的網(wǎng)絡(luò)型或變量型端口,而且在一個(gè)模塊內(nèi),路徑目的端只有一個(gè)驅(qū)動(dòng)源。例如,上述模塊SBM中,路徑源端為A、B、C、D,路徑目的端是Z,共有四條簡(jiǎn)單路徑:A至Z路徑、B至Z路徑、C至Z路徑、D至Z路徑。第三十五頁(yè),共86頁(yè)。簡(jiǎn)單路徑延時(shí)簡(jiǎn)單路徑申明有全連接描述和并行連接描述兩種形式,描述路徑源端和路徑目的端之間的連接關(guān)系:
全連接描述:
路徑源端*>路徑目的端
并行連接描述:路徑源端=>路徑目的端第三十六頁(yè),共86頁(yè)。簡(jiǎn)單路徑延時(shí)例:利用簡(jiǎn)單路徑的并行連接形式指定模塊路徑延時(shí)specifyspecparamt_rise=150,t_fall=200;specparamt_setup=70;(clk=>q)=(t_rise,t_fall);//模塊路徑描述和路徑延時(shí)賦值$setup(d,posedgeclk,t_setup);endspecify第三十七頁(yè),共86頁(yè)。邊沿敏感路徑延時(shí)是指路徑源端是邊沿敏感傳輸?shù)哪K路徑,用于指定路徑源端在邊沿信號(hào)事件到來(lái)時(shí),輸入至輸出端口之間的延時(shí)時(shí)間。采用全連接符號(hào)“*>”或并行連接符號(hào)“=>”,結(jié)合關(guān)鍵詞posedge或negedge指定正極性邊沿或負(fù)極性邊沿,描述模塊路徑。還包括路徑傳輸數(shù)據(jù)表達(dá)式和輸出端極性指定;數(shù)據(jù)流表達(dá)式與數(shù)據(jù)和事件在模塊路徑中的傳輸無(wú)關(guān);輸出端極性以“+”或“-”指定數(shù)據(jù)在傳輸路徑上是否允許可逆?zhèn)鬏?。第三十八?yè),共86頁(yè)。邊沿敏感路徑延時(shí)例:(posedgeclk=>(out+:in))=(10,8);
(negedgeclk=>(out-:in))=(10,8);
(clk=>(out:in))=(10,8);第三十九頁(yè),共86頁(yè)。狀態(tài)相關(guān)路徑延時(shí)狀態(tài)相關(guān)路徑延時(shí)指滿足條表達(dá)式的條件下,指定路徑源端信號(hào)和路徑目的端信號(hào)在傳輸路徑的延時(shí)。例:moduleHalf_adder(Z,A,B);inputA,B;outputZ;xorM1(Z,A,B);specifyspecparamt_rise_noninvert=1,t_fall_noninvert=2;specparamt_rise_invert=2,t_fall_invert=3;if(A==1)(B=>Z)=(t_rise_invert,t_fall_invert);if(B==1)(A=>Z)=(t_rise_invert,t_fall_invert);if(A!=1)(B=>Z)=(t_rise_noninvert,t_fall_noninvert);if(B1=1)(A=>Z)=(t_rise_noninvert,t_fall_noninvert);
endspecifyendmodule第四十頁(yè),共86頁(yè)。狀態(tài)相關(guān)路徑延時(shí)VerilogHDL規(guī)定19種可用于條件表達(dá)式的操作符操作符操作描述
操作符操作描述~位非運(yùn)算&規(guī)約與運(yùn)算&位與運(yùn)算|規(guī)約或運(yùn)算|位或運(yùn)算^規(guī)約異或運(yùn)算^位異或運(yùn)算~&規(guī)約與非運(yùn)算^~~^位同或運(yùn)算~|規(guī)約或非運(yùn)算=邏輯相等^~~^規(guī)約同或運(yùn)算!=邏輯不等{}連接&&與邏輯{{}}復(fù)制||或邏輯?:條件!非邏輯
第四十一頁(yè),共86頁(yè)。狀態(tài)相關(guān)路徑延時(shí)例:1)if(A==1)(B=>Z)=(t_rise_invert,t_fall_invert);if({C,D}!=2’b10)(C,D*>Z)=11;
(A,B,C*>Z1,Z2)=5;2)specify
(posedgeclk=>(q[0]:data))=(10,5);
(negedgeclk=>(q[0]:data))=(20,12);
if(reset==1)
(posedgeclk=>(q[0]:data))=(15,8);if(!reset&&cntrl)
(posedgeclk=>(q[0]:data))=(6,2);endspecify第四十二頁(yè),共86頁(yè)。狀態(tài)相關(guān)路徑延時(shí)當(dāng)條件表達(dá)式的所有條件為假,則采用ifnone表達(dá)相關(guān)路徑延時(shí)的默認(rèn)條件,但不能與條件表達(dá)式的任意條件有交集。例:if(a)(b=>out)=(2,2);if(b)(a=>out)=(2,2);ifnone(a=>out)=(1,1);(a=>out)=(1,1);語(yǔ)句(1)的條件集合與語(yǔ)句(2)條件的條件集合有交集,需按照設(shè)計(jì)需要?jiǎng)h除其一。第四十三頁(yè),共86頁(yè)。模塊路徑的極性模塊路徑的極性指是否允許信號(hào)從傳輸路徑源端至目的端的反向傳輸,極性描述與數(shù)據(jù)和事件的實(shí)際傳輸方向無(wú)關(guān)(由模塊的內(nèi)部邏輯決定),分為三種極性:未知極性、正極性和負(fù)極性。第四十四頁(yè),共86頁(yè)。模塊路徑的極性默認(rèn)情況下,模塊路徑為未知極性:傳輸路徑源端的上升沿傳輸可能在目的端獲得上升沿、下降沿或無(wú)傳輸結(jié)果;傳輸路徑源端的下降沿傳輸可能在目的端獲得上升沿、下降沿或無(wú)傳輸結(jié)果。指定為全連接或并行連接的簡(jiǎn)單路徑,無(wú)極性操作符“+”或“-”的情況下,模塊路徑的極性默認(rèn)為未知極性。例:(X=>Q)=t_s_to_d;(A=>Q)=t_d_to_s;第四十五頁(yè),共86頁(yè)。模塊路徑的極性模塊路徑指定為正極性時(shí),傳輸路徑源端的上升沿傳輸可能在目的端獲得上升沿或無(wú)傳輸結(jié)果;傳輸路徑源端的下降沿傳輸可能在目的端獲得下降沿或無(wú)傳輸結(jié)果。指定為全連接或并行連接的簡(jiǎn)單路徑,正極性操作符“+”或“-”置于路徑類型申明的之前。例:(X+=>Q)=t_s_to_d;(A+=>Q)=t_d_to_s;第四十六頁(yè),共86頁(yè)。模塊路徑的極性模塊路徑指定為負(fù)極性時(shí),傳輸路徑源端的上升沿傳輸可能在目的端獲得下降沿或無(wú)傳輸結(jié)果;傳輸路徑源端的下降沿傳輸可能在目的端獲得上升沿或無(wú)傳輸結(jié)果。指定為全連接或并行連接的簡(jiǎn)單路徑,正極性操作符“+”或“-”置于路徑類型申明的之前。例:(X-=>Q)=t_s_to_d;(A-=>Q)=t_d_to_s;第四十七頁(yè),共86頁(yè)。時(shí)序檢查時(shí)序檢查利用指定塊內(nèi)的時(shí)序檢查任務(wù),檢查系統(tǒng)設(shè)計(jì)的關(guān)鍵事件的時(shí)序是否滿足約束條件。時(shí)序檢查任務(wù)分為兩組,一組按照固定時(shí)間窗口條件檢查時(shí)序:$setup$hold$setuphold$recovery$removal$recrem另一組按照兩個(gè)事件的時(shí)間差檢查時(shí)鐘和控制信號(hào):$skew$timeskew$fullskew$width$period$nochange第四十八頁(yè),共86頁(yè)。固定時(shí)間窗口檢查固定時(shí)間窗口檢查任務(wù)有兩個(gè)信號(hào):參考事件信號(hào)和數(shù)據(jù)事件信號(hào),以一個(gè)信號(hào)定義時(shí)間窗口,檢查并報(bào)告時(shí)間窗口內(nèi)另一個(gè)信號(hào)的傳輸時(shí)間。建立時(shí)間檢查$setup用于檢查以邊沿觸發(fā)原語(yǔ)的信號(hào)在時(shí)鐘沿到來(lái)之前、數(shù)據(jù)必須處于穩(wěn)態(tài)的最小時(shí)間;保持時(shí)間檢查$hold用于檢查以邊沿觸發(fā)原語(yǔ)的信號(hào)在時(shí)鐘沿到來(lái)之后、數(shù)據(jù)必須保持穩(wěn)態(tài)的最小時(shí)間。第四十九頁(yè),共86頁(yè)。固定時(shí)間窗口檢查建立時(shí)間檢查有四個(gè)參數(shù),基本形式如下:
$setup(reference_event,data_event,limit,notifier);若參考事件時(shí)間Treference_event與數(shù)據(jù)事件時(shí)間Tdata_event之差小于沖突限制,即:(Treference_event-Tdata_event)<limit則由可選參數(shù)notifier輸出沖突報(bào)告信息。notifier是模塊中申明的寄存器類型的形式參數(shù),當(dāng)時(shí)序沖突發(fā)生時(shí),notifier的值發(fā)生跳變。沖突發(fā)生之前notifier的值沖突發(fā)生之后notifier的值x00110zz第五十頁(yè),共86頁(yè)。固定時(shí)間窗口檢查例:設(shè)數(shù)據(jù)事件為數(shù)據(jù)信號(hào)data,參考事件為上升沿時(shí)鐘信號(hào)clk,建立時(shí)間檢查任務(wù)$setup,設(shè)定時(shí)間限制范圍為10個(gè)時(shí)間單位,時(shí)序沖突報(bào)告寄存器notify_reg保存沖突信息:specify$setup(data,posedgeclk,10,notify_reg);
endspecify第五十一頁(yè),共86頁(yè)。固定時(shí)間窗口檢查保持時(shí)間檢查任務(wù)$hold的limit定義為:(Tdata_event-Treference_event)<limit例:specify$hold(data,posedgeclk,10,notify_reg);endspecify第五十二頁(yè),共86頁(yè)。固定時(shí)間窗口檢查建立時(shí)間和保持時(shí)間檢查任務(wù)$setuphold是$setup和$hold的合成任務(wù),增加四個(gè)可選項(xiàng)參數(shù):開始時(shí)間戳條件、檢查時(shí)間記錄條件、參考延時(shí)條件和數(shù)據(jù)延時(shí)條件,其形式如下:$setuphold(reference_event,data_event,setup_limit,hold_limit,notifier,timestamp_cond,timecheck_cond,delayed_reference,delayed_data);第五十三頁(yè),共86頁(yè)。固定時(shí)間窗口檢查例:設(shè)參考事件clk,數(shù)據(jù)事件data,建立時(shí)間限制tSU,保持時(shí)間限制tHLD,則建立時(shí)間和保持時(shí)間檢查任務(wù)$setuphold為:$setuphold(posedgeclk,data,tSU,tHLD);等同于下述兩個(gè)任務(wù):$setup(data,posedgeclk,tSU);$hold(posedgeclk,data,tHLD);第五十四頁(yè),共86頁(yè)。固定時(shí)間窗口檢查數(shù)據(jù)恢復(fù)時(shí)間檢查$recovery用于檢查信號(hào)被清除、復(fù)位或置位操作后,穩(wěn)態(tài)數(shù)據(jù)的恢復(fù)時(shí)間是否滿足時(shí)間約束條件;數(shù)據(jù)移除時(shí)間檢查$removal用于檢查信號(hào)被清除、復(fù)位或置位操作后移除穩(wěn)態(tài)數(shù)據(jù)的時(shí)間是否滿足時(shí)間約束條件。第五十五頁(yè),共86頁(yè)。固定時(shí)間窗口檢查數(shù)據(jù)的恢復(fù)時(shí)間檢查任務(wù)和移除時(shí)間檢查任務(wù)各有四個(gè)參數(shù),基本形式分別如下:$recovery(reference_event,data_event,limit,notifier);//恢復(fù)時(shí)間檢查任務(wù)$removal(reference_event,data_event,limit,notifier);//移除時(shí)間檢查任務(wù)例:$removal(posedgeclear,posedgeclk,tREM);//(1)
$recovery(posedgeclear,posedgeclk,tREC);//(2)
第五十六頁(yè),共86頁(yè)。固定時(shí)間窗口檢查恢復(fù)時(shí)間和移除時(shí)間檢查任務(wù)$recrem是$removal和$recovery的合成任務(wù),增加四個(gè)可選項(xiàng)參數(shù):開始時(shí)間戳條件、檢查時(shí)間記錄條件、參考延時(shí)條件和數(shù)據(jù)延時(shí)條件,其形式如下:
$recrem(reference_event,data_event,setup_limit,hold_limit,notifier,timestamp_cond,timecheck_cond,delayed_reference,delayed_data);上例中語(yǔ)句(1)、(2)可以合成為$recrem任務(wù):$recrem(posedgeclear,posedgeclk,tREC,tREM);第五十七頁(yè),共86頁(yè)。時(shí)鐘和控制信號(hào)時(shí)序檢查時(shí)間偏斜檢查$skew是以數(shù)據(jù)事件求信號(hào)的時(shí)間偏斜是否與時(shí)間偏斜限制相沖突,若(Tdata_event-Treference_event)>limit則報(bào)告沖突。$skew(reference_event,data_event,limit,notifier);參考事件申明為邊沿觸發(fā)類型(圖中A點(diǎn),以上升沿觸發(fā)為例),數(shù)據(jù)事件也設(shè)置為邊沿觸發(fā)類型(圖中C點(diǎn),以下降沿觸發(fā)為例),A與B之間是偏斜限制時(shí)間窗。在時(shí)間窗內(nèi)數(shù)據(jù)事件的C點(diǎn),$skew不發(fā)出沖突報(bào)告,而D、E、F點(diǎn)的數(shù)據(jù)事件都不滿足時(shí)間窗限制范圍,因此在D、E、F點(diǎn)$skew發(fā)出時(shí)間偏斜沖突報(bào)告信息。第五十八頁(yè),共86頁(yè)。時(shí)鐘和控制信號(hào)時(shí)序檢查例:設(shè)參考事件為上升沿時(shí)鐘CLK,數(shù)據(jù)事件為下降沿信號(hào)Data,偏斜限制為50個(gè)時(shí)間單位,檢查報(bào)告為skew_notifier:specify$skew(posedgeCLK,negedgeData,50,
skew_notifier);endspecify第五十九頁(yè),共86頁(yè)。時(shí)鐘和控制信號(hào)時(shí)序檢查$timeskew是$skew任務(wù)的擴(kuò)展,其形式如下:$timeskew(reference_event,data_event,limit,notifier,event_based_flag,remain_active_flag);$timeskew在$skew的基礎(chǔ)上增加事件標(biāo)志控制參數(shù)event_based_flag和事件標(biāo)志保留參數(shù)remain_active_flag,時(shí)間偏移檢查結(jié)果與參數(shù)設(shè)置密切相關(guān)。第六十頁(yè),共86頁(yè)。時(shí)鐘和控制信號(hào)時(shí)序檢查禁止事件標(biāo)志event_based_flag,禁止保留標(biāo)志remain_active_flag;
此時(shí),$timeskew在B點(diǎn)輸出時(shí)間偏移沖突報(bào)告。B點(diǎn)之后不再報(bào)告沖突信息。使能事件標(biāo)志event_based_flag,禁止保留標(biāo)志remain_active_flag;
事件標(biāo)志的作用域延伸至G點(diǎn),C點(diǎn)在limit范圍內(nèi),不發(fā)出沖突報(bào)告;D點(diǎn)超出limit范圍,發(fā)出沖突報(bào)告;E、F點(diǎn)對(duì)應(yīng)的區(qū)間沒有激活參考事件,$timeskew處于休眠狀態(tài),因此也不發(fā)出沖突報(bào)告。禁止事件標(biāo)志event_based_flag,使能保留標(biāo)志remain_active_flag;
在此條件下$timeskew被禁止。使能事件標(biāo)志event_based_flag,使能保留標(biāo)志remain_active_flag;
事件標(biāo)志的作用域覆蓋時(shí)間偏移檢查區(qū)間,C點(diǎn)在limit范圍內(nèi),不發(fā)出沖突報(bào)告;D點(diǎn)超出limit范圍,發(fā)出沖突報(bào)告;E、F點(diǎn)對(duì)應(yīng)的區(qū)間被保留標(biāo)志設(shè)為激活區(qū),再次激活參考事件AB,但超出limit范圍,發(fā)出沖突報(bào)告。G點(diǎn)之后$timeskew一直處于激活狀態(tài),相當(dāng)于$skew。第六十一頁(yè),共86頁(yè)。時(shí)鐘和控制信號(hào)時(shí)序檢查例:設(shè)參考事件為上升沿時(shí)鐘CLK,數(shù)據(jù)事件為下降沿信號(hào)Data,偏斜限制為50個(gè)時(shí)間單位,檢查報(bào)告為timeskew_notifier,事件標(biāo)志為EFlag,激活標(biāo)志為AFlag:specify$timeskew(posedgeCLK,negedgeData,50,
timeskew_notifier,EFlag,AFlag);
endspecify也可以利用協(xié)作操作符“&&&”將事件標(biāo)志與參考事件協(xié)同表達(dá):specify
$timeskew(posedgeCLK&&&EFlag,negedgeData,50,timeskew_notifier,AFlag);endspecify第六十二頁(yè),共86頁(yè)。時(shí)鐘和控制信號(hào)時(shí)序檢查$fullskew與$timeskew的用法類似,不同之處在于$fullskew將時(shí)間窗分為初始時(shí)間窗和激活時(shí)間窗,初始時(shí)間窗與$timeskew的AB段時(shí)間窗限制等價(jià),之后以激活時(shí)間窗代替時(shí)間窗限制,按激活條件檢查偏移時(shí)間。其形式如下:$fullskew(reference_event,data_event,limit1,limit2,notifier,event_based_flag,remain_active_flag);第六十三頁(yè),共86頁(yè)。時(shí)鐘和控制信號(hào)時(shí)序檢查事件標(biāo)志控制參數(shù)event_based_flag和事件標(biāo)志保留參數(shù)remain_active_flag的組合產(chǎn)生三種檢查方式:(1)禁止事件標(biāo)志event_based_flag,禁止保留標(biāo)志remain_active_flag。(2)使能事件標(biāo)志event_based_flag,禁止保留標(biāo)志remain_active_flag。(3)使能事件標(biāo)志event_based_flag,使能保留標(biāo)志remain_active_flag。第六十四頁(yè),共86頁(yè)。時(shí)鐘和控制信號(hào)時(shí)序檢查例:設(shè)參考事件為上升沿時(shí)鐘CLK,數(shù)據(jù)事件為下降沿信號(hào)Data,偏斜限制初始時(shí)間窗l(fā)imit1為50個(gè)時(shí)間單位,激活時(shí)間窗l(fā)imit2為70個(gè)時(shí)間單位,檢查報(bào)告為fullskew_notifier,事件標(biāo)志為EFlag,激活標(biāo)志為AFlag:specify$fullskew(posedgeCLK&&&EFlag,negedgeData,50,70,
fullskew_notifier,AFlag);
endspecify第六十五頁(yè),共86頁(yè)。時(shí)鐘和控制信號(hào)時(shí)序檢查脈沖寬度檢查$width和周期檢查$period分別檢查信號(hào)的脈沖寬度和周期是否超出時(shí)間限制,若超出,則報(bào)告沖突信息。形式如下:$width(reference_event,limit,threshold,notifier);$period(reference_event,limit,notifier);例:指定CLK信號(hào)的脈沖寬度限制limit_width為20個(gè)時(shí)間單位,閥值門限limit_threshold設(shè)為4,周期限制limit_period為50個(gè)時(shí)間單位:specifyspecparamlimit_width=20;specparamlimit_threshold=4;specparamlimit_period=50;$width(posedgeCLK,limit_width,limit_threshold,width_notifer);$period(posedgeCLK,limit_period,period_notifier);endspecify第六十六頁(yè),共86頁(yè)。時(shí)鐘和控制信號(hào)時(shí)序檢查數(shù)據(jù)變化檢查$nochange是以上升沿或下降沿的參考事件檢查數(shù)據(jù)事件的數(shù)據(jù)變化是否超過(guò)起始點(diǎn)start_edge_offset和結(jié)束點(diǎn)end_edge_offset區(qū)間的限制范圍,若超出限制,則報(bào)告沖突信息。其形式如下:$nochange(reference_event,data_event,start_edge_offset,end_edge_
offset,notifier);例:設(shè)參考事件clk的上升沿起點(diǎn)偏移時(shí)間為0,結(jié)束點(diǎn)偏移時(shí)間為0,考察數(shù)據(jù)事件Data的數(shù)據(jù)變化檢查:$nochange(posedgeclk,Data,0,0);第六十七頁(yè),共86頁(yè)。邊沿控制方式指定邊沿控制方式指定是針對(duì)時(shí)序檢查過(guò)程中,用于事件控制的邏輯0、1和x進(jìn)行邊沿傳輸方式的定義。其形式由關(guān)鍵詞edge、方括號(hào)和邊沿描述組成:edge[edge_descriptor]邊沿描述是0、1和x的六種組合,z當(dāng)作x對(duì)待:01//從0至1的傳輸0x//從0至x的傳輸10//從1至0的傳輸1x//從1至x的傳輸x0//從x至0的傳輸x1//從x至1的傳輸關(guān)鍵詞posedge和negedge可用于某種邊沿控制指定符,例:posedgerst與edge[01,0x,x1]rst等價(jià)negedgerst與edge[10,x0,1x]rst等價(jià)第六十八頁(yè),共86頁(yè)。時(shí)序檢查沖突報(bào)告的處理不同層次的模塊中,時(shí)序檢查沖突報(bào)告以寄存器類型申明,按照設(shè)計(jì)流以x值輸出沖突描述信息。例:帶置位和清零端D觸發(fā)器用戶定義原語(yǔ)的時(shí)序檢查和沖突報(bào)告處理。定義D觸發(fā)器用戶定義原語(yǔ),指定時(shí)序檢查參數(shù)和模塊路徑延時(shí),分別檢查D端的建立時(shí)間、保持時(shí)間,置位端SD和復(fù)位端RD的脈沖寬度、恢復(fù)時(shí)間,時(shí)鐘端CLK的周期,將沖突報(bào)告notifier的輸出納入U(xiǎn)DP的輸入,在狀態(tài)表中描述notifier的狀態(tài),當(dāng)時(shí)序檢查沖突發(fā)生、notifier跳變時(shí),在UDP的狀態(tài)表中Q輸出端輸出x值。moduleDFF(Q,Qn,CLK,D,SD,RD);outputQ,Qn;inputCLK,D,SD,RD;regnotifier;
and(En,SD,RD);not(Qn,Z);buf(Q,Z);DFF_udp(Z,CLK,D,SD,RD,notifier);
specify//定義時(shí)序檢查的指定參數(shù)specparamt_setup=10,t_hold=1,t_period=25,t_width_pulse=10,t_recovery=5;第六十九頁(yè),共86頁(yè)。時(shí)序檢查沖突報(bào)告的處理//定義模塊路徑延時(shí)參數(shù)的min:typ:max值r111?:?:1;specparamt_rise=4:6:9,t_fall=5:8:11;p1?1?:1:1;specparamt_rise_SR=3:5:6,t_fall_SR=4:7:9;p01??:0:0;//指定模塊路徑延時(shí)n????:?:-;(CLK*>Q,Qn)=(t_rise,t_fall);?*???:?:-;(SD,RD*>Q,Qn)=(t_rise_SR,t_fall_SR);??01?:?:1;//D端建立時(shí)間檢查??*1?:1:1;$setup(D,posedgeCLK&&&En,t_setup,notifier);??10?:?:0;//D端保持時(shí)間檢查??1*?:0:0;$hold(posedgeCLK,D&&&En,t_hold,notifier);????*:?:x;//CLK時(shí)鐘周期檢查//沖突報(bào)告notifier跳變,輸出x值$period(posedgeCLK,t_period,notifier);endtable//SD和RD脈沖寬度檢查endprimitive$width(negedgeSD,t_width_pulse,0,notifier);$width(negedgeRD,t_width_pulse,0,notifier);//RD和SD恢復(fù)時(shí)間檢查$recovery(posedgeSD,posedgeCLK,t_recovery,notifier);$recovery(posedgeRD,posedgeCLK,t_recovery,notifier);endspecifyendmodule
primitiveDFF_udp(Q,CLK,D,SD,RD,notifier);//D觸發(fā)器用戶定義原語(yǔ)outputQ;regQ;inputCLK,D,SD,RD,notifier;table//CLKDSDRDnotifier:Qn:Qn+1r011?:?:0;第七十頁(yè),共86頁(yè)。標(biāo)準(zhǔn)延時(shí)格式文件與反向標(biāo)注標(biāo)準(zhǔn)延時(shí)格式文件(StandardDelayFile,SDF)是一種標(biāo)準(zhǔn)格式文件,用于指定路徑延時(shí)、指定參數(shù)、時(shí)序檢查約束、互連延時(shí)的時(shí)序取值,也可以包含與時(shí)序仿真無(wú)關(guān)的附加信息和結(jié)構(gòu)信息。第七十一頁(yè),共86頁(yè)。反向標(biāo)注EDA設(shè)計(jì)軟件中的SDF反向標(biāo)注工具將SDF文件的結(jié)構(gòu)與Verilog時(shí)序仿真文件中相應(yīng)的申明進(jìn)行匹配;若匹配一致,則將SDF文件中匹配的時(shí)序值映射到Verilog時(shí)序仿真文件中相應(yīng)的指定路徑延時(shí)、指定參數(shù)、時(shí)序約束值和互連延時(shí),報(bào)告無(wú)法進(jìn)行反向標(biāo)注的警告信息,忽略與Verilog時(shí)序仿真文件無(wú)關(guān)的結(jié)構(gòu),該過(guò)程稱為反向標(biāo)注過(guò)程。第七十二頁(yè),共86頁(yè)。反向標(biāo)注SDF結(jié)構(gòu)SDF時(shí)序取值以延時(shí)結(jié)構(gòu)的形式出現(xiàn),由一個(gè)或多個(gè)延時(shí)DELAY、時(shí)序檢查TIMINGCHECK和標(biāo)簽項(xiàng)LABEL三種結(jié)構(gòu)組成。DELAY包含指定路徑的傳輸延時(shí)和互連延時(shí),TIMINGCHECK包含時(shí)序檢查約束取值,LABEL包含指定參數(shù)值。當(dāng)反向標(biāo)注延時(shí)結(jié)構(gòu)沒有指定互連延時(shí),SDF反向標(biāo)注工具搜索指定路徑的端口名和匹配條件;當(dāng)指定反向標(biāo)注TIMINGCHECK結(jié)構(gòu)時(shí),SDF反向標(biāo)注工具搜索相同類型的端口名和匹配條件。SDF結(jié)構(gòu)可反向標(biāo)注的Verilog申明(IOPATH…條件指定與無(wú)條件指定路徑延時(shí)/脈沖范圍(IOPATH(RETAIN…條件指定與無(wú)條件指定路徑延時(shí)/脈沖范圍,可忽略保留項(xiàng)RETAIN(COND(IOPATH...條件指定路徑延時(shí)/脈沖范圍(COND(IOPATH(RETAIN...條件指定路徑延時(shí)/脈沖范圍,可忽略保留項(xiàng)RETAIN(CONDELSE(IOPATH(RETAIN...默認(rèn)狀態(tài)路徑延時(shí)(DEVICE...默認(rèn)狀態(tài)路徑延時(shí),可忽略保留項(xiàng)RETAIN(DEVICEport_instance...若port_instance是模塊例化,所有的指定路徑映射到模塊輸出端;若未指定路徑,將所有原語(yǔ)的映射到模塊輸出端;若port_instance是模塊例化輸出,所有的指定路徑映射到模塊輸出端。第七十三頁(yè),共86頁(yè)。反向標(biāo)注SDF結(jié)構(gòu)例:設(shè)SDF文件的路徑源端信號(hào)sel匹配Verilog的路徑源端信號(hào)sel,SDF文件的路徑目的端信號(hào)Z匹配Verilog的路徑目的端信號(hào)Z,則SDF文件中1.3個(gè)時(shí)間單位的上升時(shí)間和1.7個(gè)時(shí)間單位的下降時(shí)間被映射到Verilog指定路徑:SDF文件: (IOPATHselZ(1.3)(1.7))Verilog指定路徑: (sel=>Z)=0;對(duì)于SDF文件中兩個(gè)端口的條件IOPATH延時(shí),僅標(biāo)注Verilog指定路徑中相同條件的對(duì)應(yīng)端口,例:SDF文件中1.3個(gè)時(shí)間單位的上升時(shí)間和1.7個(gè)時(shí)間單位的下降時(shí)間的延時(shí)結(jié)構(gòu):SDF文件: (CONDmode(IOPATHselZ(1.3)(1.7)))Verilog指定路徑: if(!mode)(sel=>Z)=0;//(1) if(mode)(sel=>Z)=0;//(2)第七十四頁(yè),共86頁(yè)。反向標(biāo)注SDF結(jié)構(gòu)SDF時(shí)序檢查結(jié)構(gòu)與Verilog時(shí)序檢查標(biāo)注的映射關(guān)系。其中v1和v2分別表示時(shí)序檢查的第一個(gè)值和第二個(gè)值,x表示不標(biāo)注。SDF時(shí)序檢查結(jié)構(gòu)可標(biāo)注的Verilog時(shí)序檢查結(jié)構(gòu)(SETUPv1...$setup(v1),$setuphold(v1,x)(HOLDv1...$hold(v1),$setuphold(x,v1)(SETUPHOLDv1v2...$setup(v1),$hold(v2),$setuphold(v1,v2)(RECOVERYv1...$recovery(v1),$recrem(v1,x)(REMOVALv1...$removal(v1),$recrem(x,v1)(RECREMv1v2...$recovery(v1),$removal(v2),$recrem(v1,v2)(SKEWv1...$skew(v1)(TIMESKEWv1...$timeskew(v1)(FULLSKEWv1v2...$fullskew(v1,v2)(WIDTHv1...$width(v1,x)(PERIODv1...$period(v1)(NOCHANGEv1v2...$nochange(v1,v2)第七十五頁(yè),共86頁(yè)。反向標(biāo)注SDF結(jié)構(gòu)時(shí)序檢查的參考信號(hào)和數(shù)據(jù)信號(hào)可使用邏輯條件表達(dá)式或指定邊沿敏感類型,未指定邏輯條件表達(dá)式或邊沿敏感類型的SDF時(shí)序檢查將匹配所有Verilog時(shí)序檢查的響應(yīng)信號(hào),與匹配條件是否滿足無(wú)關(guān)。例:下列SDF結(jié)構(gòu)僅指定clk信號(hào)的條件表達(dá)式,Verilog時(shí)序檢查結(jié)構(gòu)中與指定clk信號(hào)之外的信號(hào)都將被屏蔽:SDF文件:(SETUPHOLDdataclk(3)(4))Verilog時(shí)序檢查結(jié)構(gòu):$setuphold(posedgeclk&&&mode,data,1,1,ntfr);//(1),被標(biāo)注$setuphold(negedgeclk&&&!mode,data,1,1,ntfr);//(2),被標(biāo)注第七十六頁(yè),共86頁(yè)。反向標(biāo)注SDF結(jié)構(gòu)當(dāng)附加條件表達(dá)式或邊沿敏感信號(hào)時(shí),僅符合條件的結(jié)構(gòu)被標(biāo)注.例:SDF文件:(SETUPHOLDdata(negedgeclk)(3)(4))Verilog時(shí)序檢查結(jié)構(gòu):$setuphold(posedgeclk&&&mode,data,1,1,ntfr);//(1),未標(biāo)注$setuphold(negedgeclk&&&!mode,data,1,1,ntfr);//(2),被標(biāo)注語(yǔ)句(1)的clk信號(hào)為上升沿,不滿足映射條件,未進(jìn)行反向標(biāo)注;語(yǔ)句(2)的clk信號(hào)為下降沿,滿足SDF文件結(jié)構(gòu)的映射條件,被反向標(biāo)注。第七十七頁(yè),共86頁(yè)。反向標(biāo)注SDF結(jié)構(gòu)SDF的LABEL結(jié)構(gòu)標(biāo)注用于Verilog的指定參數(shù),Verilog文件中包含一個(gè)或多個(gè)指定參數(shù)的任何表達(dá)式都被滿足條件的LABEL反向標(biāo)注結(jié)構(gòu)。例:下述SDF文件的LABEL結(jié)構(gòu)標(biāo)注高電平dhigh和dlow的值,標(biāo)注結(jié)果是控制Verilog文件中clock模塊的時(shí)鐘周期和占空比:SDF文件:(LABEL(ABSOLUTE(dhigh60)//高電平60個(gè)時(shí)間單位(dlow40)))//低電平40個(gè)時(shí)間單位Verilog文件:moduleclock(clk);outputclk;regclk;specparamdhigh=0,dlow=0;initialclk=0;alwaysbegin#dhighclk=1;//clk保持60個(gè)時(shí)間單位之后跳變?yōu)楦唠娖?dlowclk=0;//clk保持40個(gè)時(shí)間單位之后跳變?yōu)榈碗娖絜nd;endmodule第七十八頁(yè),共86頁(yè)。反向標(biāo)注互連延時(shí)SDF互連延時(shí)采用互連結(jié)構(gòu)INTERCONNECT、端口結(jié)構(gòu)PORT或網(wǎng)絡(luò)結(jié)構(gòu)NETDELAY,表示模塊與模塊的輸出端口或雙向端口之間信號(hào)的傳輸延時(shí)。INTERCONNECT結(jié)構(gòu)包括信號(hào)源端、負(fù)載和延時(shí)時(shí)間,用于模塊與模塊之間一個(gè)網(wǎng)絡(luò)或多個(gè)網(wǎng)絡(luò)的反向標(biāo)注,不能用于原語(yǔ)的端口之間。PORT和NETDELAY結(jié)構(gòu)僅包括負(fù)載和延時(shí)時(shí)間。SDF結(jié)構(gòu)Verilog反向標(biāo)注結(jié)構(gòu)(PORT…互連延時(shí)(NETDELAY互連延時(shí)(INTERCONNECT…互連延時(shí)第七十九頁(yè),共86頁(yè)。反向標(biāo)注互連延時(shí)反向標(biāo)注PORT結(jié)構(gòu)時(shí),SDF反向標(biāo)注工具搜索所有存在的端口,對(duì)源端口至目的端口的所有網(wǎng)絡(luò)進(jìn)行互連延時(shí)的反向標(biāo)注。反向標(biāo)注NETDELAY結(jié)構(gòu)時(shí),SDF反向標(biāo)注工具檢查反向標(biāo)注的對(duì)象(標(biāo)注端口還是標(biāo)注網(wǎng)絡(luò))。若反向標(biāo)注網(wǎng)絡(luò),將互連延時(shí)標(biāo)注到連接該網(wǎng)絡(luò)的所有端口;若反向標(biāo)注端口,將互連延時(shí)標(biāo)注到該端口;若標(biāo)注對(duì)象不止一個(gè)網(wǎng)絡(luò)或端口,則標(biāo)注與網(wǎng)絡(luò)連接的所有端口。對(duì)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 63522-30:2025 EN Electrical relays - Tests and measurements - Part 30: Contact sticking (delayed release)
- 健康營(yíng)養(yǎng)教案無(wú)課件下載
- 漢中市中考數(shù)學(xué)試卷
- 河北省會(huì)考5月數(shù)學(xué)試卷
- 海淀四下數(shù)學(xué)試卷
- 洪洞七年級(jí)學(xué)校數(shù)學(xué)試卷
- 2025年教育培訓(xùn)裝備項(xiàng)目節(jié)能評(píng)估報(bào)告(節(jié)能專)
- 中國(guó)漂流艇市場(chǎng)全面調(diào)研及行業(yè)投資潛力預(yù)測(cè)報(bào)告
- 中國(guó)光端機(jī)行業(yè)市場(chǎng)發(fā)展監(jiān)測(cè)及投資潛力預(yù)測(cè)報(bào)告
- 2024-2030年中國(guó)工藝藝術(shù)玻璃行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略研究報(bào)告
- eXTP能譜聚焦陣列X射線探測(cè)器與讀出電子學(xué):原理、技術(shù)及應(yīng)用探索
- pmc計(jì)劃員考試試題及答案
- T/CGAS 026.2-2023瓶裝液化石油氣管理規(guī)范第2部分:平臺(tái)建設(shè)
- T/CAQI 96-2019產(chǎn)品質(zhì)量鑒定程序規(guī)范總則
- 2025年客運(yùn)車輛駕駛員(技師)職業(yè)技能鑒定考試題庫(kù)(含答案)
- 《插花藝術(shù)》教材任務(wù)-項(xiàng)目三 任務(wù)二切花裝飾設(shè)計(jì)
- 2025普法考試題目及答案
- 麗江地區(qū)2025屆六年級(jí)下學(xué)期小升初真題數(shù)學(xué)試卷含解析
- 應(yīng)聘美團(tuán)個(gè)人簡(jiǎn)歷填
- 接電施工合同協(xié)議
- 2024年大學(xué)生就業(yè)力調(diào)研報(bào)告-智聯(lián)招聘-202405
評(píng)論
0/150
提交評(píng)論