加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • B.1 什么是 SDF?
    • B.2 SDF 格式
    •  
    • B.3 標(biāo)注過程
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

【附錄B:SDF 上】靜態(tài)時(shí)序分析圣經(jīng)翻譯計(jì)劃

2021/01/21
700
閱讀需 21 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

本附錄將介紹標(biāo)準(zhǔn)延遲標(biāo)注格式,并說明了如何在仿真中執(zhí)行反標(biāo)。

延遲格式描述了設(shè)計(jì)網(wǎng)表的單元延遲和互連走線延遲,無論設(shè)計(jì)是用兩種主要硬件描述語言(VHDL 或 Verilog HDL)中的哪一種所描述的。

本章還會(huì)介紹仿真的反標(biāo)(backannotation),STA 的反標(biāo)其實(shí)是一個(gè)簡單直接的過程,其中 DUA 中的時(shí)序弧將由 SDF 所指定的延遲進(jìn)行標(biāo)注。

B.1 什么是 SDF?

SDF 是指標(biāo)準(zhǔn)延遲格式(Standard Delay Format)。它是一個(gè) IEEE 標(biāo)準(zhǔn)——IEEE Std1497,它是 ASCII 文本文件,它描述了時(shí)序信息和約束,其目的是用作各種工具之間的文本類型的時(shí)序信息交換媒介,它也可以用來描述需要它的工具的時(shí)序數(shù)據(jù)。由于它是 IEEE 標(biāo)準(zhǔn),因此由一個(gè)工具生成的時(shí)序信息可以被支持該標(biāo)準(zhǔn)的許多其它工具所使用。SDF 中的數(shù)據(jù)與工具和語言都無關(guān),且包括了互連走線延遲、器件延遲以及時(shí)序檢查的規(guī)范。

由于 SDF 是 ASCII 文件,因此它易于閱讀,盡管對于實(shí)際設(shè)計(jì)而言,這些文件往往很大。但是,它是作為工具之間的交換媒介。經(jīng)常在進(jìn)行信息交換時(shí),一個(gè)工具可能會(huì)在生成 SDF 文件時(shí)產(chǎn)生一個(gè)問題,而另一個(gè)讀取 SDF 的工具可能無法正確讀取 SDF。讀取 SDF 的工具可能會(huì)在讀取 SDF 時(shí)產(chǎn)生一個(gè)錯(cuò)誤或警告,或者它可能會(huì)錯(cuò)誤地解釋 SDF 中的值。在這種情況下,設(shè)計(jì)人員可能必須查看 SDF 文件,看看出了什么問題。本章介紹了 SDF 文件的基礎(chǔ)知識(shí),并提供了必要和足夠的信息,以幫助理解和調(diào)試任何標(biāo)注問題。

圖 B-1 顯示了如何使用 SDF 文件的典型流程。時(shí)序計(jì)算工具通常會(huì)生成時(shí)序信息存儲(chǔ)在 SDF 文件中。然后,通過讀取 SDF 的工具將該信息反標(biāo)到設(shè)計(jì)中。請注意,完整的設(shè)計(jì)信息不會(huì)都存儲(chǔ)到 SDF 文件中,而只會(huì)存儲(chǔ)延遲值。例如,實(shí)例名稱和實(shí)例的引腳名稱將被存儲(chǔ)到 SDF 文件中,因?yàn)樗鼈儗τ谥付▽?shí)例相關(guān)或引腳相關(guān)的延遲是必需的。因此,必須為 SDF 生成工具和 SDF 讀取工具提供相同的設(shè)計(jì)。

圖 B-1

 

一個(gè)設(shè)計(jì)可以具有多個(gè)與之關(guān)聯(lián)的 SDF 文件??梢詾橐粋€(gè)設(shè)計(jì)創(chuàng)建一個(gè) SDF 文件,在分層設(shè)計(jì)中,也可以為分層中的每個(gè)塊創(chuàng)建多個(gè) SDF 文件。在標(biāo)注期間,每個(gè) SDF 都將應(yīng)用于適當(dāng)?shù)姆謱訉?shí)例中,如圖 B-2 所示。

圖 B-2

 

SDF 文件包含了用于反標(biāo)和標(biāo)注的時(shí)序數(shù)據(jù)。更具體地說,它包含:

單元延遲(Cell delays)

脈沖傳播(Pulse propagation)

時(shí)序檢查(Timing checks)

互連走線延遲(Interconnect delays)

時(shí)序環(huán)境(Timing environment)

引腳到引腳的延遲(pin-to-pin delay)和分布式延遲(distributed delay)都可以針對單元延遲進(jìn)行建模。引腳到引腳的延遲使用 IOPATH 結(jié)構(gòu)(construct)表示,這些結(jié)構(gòu)定義了每個(gè)單元輸入到輸出的路徑延遲。COND 結(jié)構(gòu)還可以用于額外指定有條件的引腳到引腳延遲。狀態(tài)相關(guān)(state-dependent)的路徑延遲也可以使用 COND 結(jié)構(gòu)來指定,分布式延遲的建模是使用 DEVICE 結(jié)構(gòu)指定的。

脈沖傳播結(jié)構(gòu)——PATHPULSE 和 PATHPULSEPERCENT 可用于指定使用引腳到引腳延遲模型時(shí)允許傳播到單元輸出端口的毛刺大小。

可以在 SDF 中指定的時(shí)序檢查包括:

建立時(shí)間:SETUP,SETUPHOLD

保持時(shí)間:HOLD,SETUPHOLD

恢復(fù)時(shí)間:RECOVERY,RECREM

撤銷時(shí)間:REMOVAL,RECREM

最大偏斜:SKEW,BIDIRECTSKEW

最小脈沖寬度:WIDTH

最小周期:PERIOD

不變化:NOCHANGE

時(shí)序檢查中的信號(hào)可能存在某些條件。在時(shí)序檢查中允許使用負(fù)值,不支持負(fù)值的工具可以選擇將其替換為零。

SDF 描述中支持三種類型的互連走線建模。INTERCONNECT 結(jié)構(gòu)是最通用且最常用的,可用于指定點(diǎn)對點(diǎn)延遲(從源端到接收端),因此單個(gè)網(wǎng)絡(luò)可以具有多個(gè) INTERCONNECT 結(jié)構(gòu)。PORT 結(jié)構(gòu)可用于指定負(fù)載端口處的網(wǎng)絡(luò)延遲,假定網(wǎng)絡(luò)只有一個(gè)源端驅(qū)動(dòng)。NETDELAY 結(jié)構(gòu)可用于指定整個(gè)網(wǎng)絡(luò)的延遲,而無需考慮其源端或接收端,因此是指定網(wǎng)絡(luò)上延遲的最不具體的方法。

時(shí)序環(huán)境提供了設(shè)計(jì)在工作時(shí)所依據(jù)的信息,這些信息包括 ARRIVAL,DEPARTURE,SLACK 和 WAVEFORM 結(jié)構(gòu)。這些結(jié)構(gòu)主要用于標(biāo)注,例如可用于綜合。

B.2 SDF 格式

SDF 文件包含一個(gè)首部(header section),后跟一個(gè)或多個(gè)單元。每個(gè)單元代表設(shè)計(jì)中的一個(gè)區(qū)域或范圍,它可以是庫原語(primitive)或用戶自定義的黑盒。

首部包含一般信息,除了層次結(jié)構(gòu)分隔符、時(shí)間刻度(timescale)和 SDF 版本號(hào)外,都不會(huì)影響 SDF 文件的語義。默認(rèn)情況下,層次結(jié)構(gòu)分隔符 DIVIDER 是點(diǎn)字符(“.”)。通過以下方法,可以將其替換為“/”字符:

  • (DIVIDER /)

如果首部中沒有時(shí)間刻度信息,則默認(rèn)值為 1ns。否則,可以使用以下命令明確指定時(shí)間刻度 TIMESCALE:

  • (TIMESCALE 10ps)

也就是說,將 SDF 文件中指定的所有延遲值乘以 10ps。

SDF 版本號(hào) SDFVERSION 是必需的,SDF 文件的使用者會(huì)根據(jù)它來確保文件符合指定的 SDF 版本。首部中可能存在的其它信息(屬于常規(guī)信息類別)包括日期、程序名稱、版本和工作條件。

首部之后是一個(gè)或多個(gè)單元的描述,每個(gè)單元在設(shè)計(jì)中代表一個(gè)或多個(gè)實(shí)例(使用通配符),單元可以是庫原語或分層塊(hierarchical block)。

單元的順序很重要,因?yàn)閿?shù)據(jù)是從上到下進(jìn)行處理的。后面的單元描述可以覆蓋前面的單元描述所指定的時(shí)序信息(通常,兩次定義同一單元實(shí)例的時(shí)序信息并不常見)。另外,可以將時(shí)序信息標(biāo)注為絕對值或增量的形式。如果時(shí)序信息使用增量的形式,它將會(huì)把新值添加到現(xiàn)有值中。而如果時(shí)序信息是絕對值,它將覆蓋任何先前指定的時(shí)序信息。

單元實(shí)例可以是分層實(shí)例名稱。用于層次結(jié)構(gòu)分隔的分隔符必須符合首部中指定的分隔符。單元實(shí)例名稱可以選擇為“ * ”字符,即通配符,這表示指定類型的所有單元實(shí)例。

單元中可以描述四種類型的時(shí)序規(guī)范:

DELAY:用于描述延遲

TIMINGCHECK:用于描述時(shí)序檢查

TIMINGENV:用于描述時(shí)序環(huán)境

LABEL:聲明可用于描述延遲的時(shí)序模型變量。

以下是一些例子:

DELAY 時(shí)序規(guī)范有四種類型:

ABSOLUTE:在反標(biāo)期間替換單元實(shí)例的現(xiàn)有延遲值。

INCREMETN:將新的延遲數(shù)據(jù)添加到單元實(shí)例的任何現(xiàn)有延遲值。

PATHPULSE:指定設(shè)計(jì)輸入和輸出之間的脈沖傳播極限。此極限值用于決定是將出現(xiàn)在輸入上的脈沖傳播到輸出,還是將其標(biāo)記為“ X ”,或者將其濾除。

PATHPULSEPERCENT:除了值以百分比表示外,這與 PATHPULSE 完全相同。

以下是一些例子:

RN 和 Q 是單元的輸入端口和輸出端口。第一個(gè)值 3 是脈沖抑制極限(pulse rejection limit),稱為 r-limit,它定義了可以出現(xiàn)在輸出上的最窄脈沖。窄于此的任何脈沖都會(huì)被拒絕通過,也就是說,它將不會(huì)出現(xiàn)在輸出上。第二個(gè)值 7(如果存在)是錯(cuò)誤極限(error limit),也稱為 e-limit。任何小于 e-limit 的脈沖都會(huì)導(dǎo)致輸出為“ X ”。e-limit 必須大于 r-limit,如圖 B-3 所示。當(dāng)出現(xiàn)小于 3(r-limit)的脈沖時(shí),該脈沖不會(huì)傳播到輸出;當(dāng)脈沖寬度在 3(r-limit)和 7(e-limit)之間時(shí),輸出為 X ;當(dāng)脈沖寬度大于 7(e-limit)時(shí),脈沖會(huì)傳播到輸出且沒有任何濾除(unfiltered)。

圖 B-3

 

可以使用 ABSOLUTE 或 INCREMENT 描述八種延遲定義:

IOPATH:輸入到輸出路徑的延遲。

RETAIN:保留時(shí)間定義,可以用于指定輸出端口在其相關(guān)輸入端口改變后應(yīng)保留其先前值的時(shí)間。

COND:條件路徑延遲,可以用于指定狀態(tài)相關(guān)的輸入到輸出路徑延遲。

CONDELSE:默認(rèn)路徑延遲,可以用于指定條件路徑的默認(rèn)值。

PORT:端口延遲,可以用于指定互連走線延遲,該延遲被建模為輸入端口的延遲。

INTERCONNECT:互連走線延遲,可以用于指定從其源端到接收端的整個(gè)網(wǎng)絡(luò)的傳播延遲。

NETDELAY:網(wǎng)絡(luò)延遲,可以用于指定從一個(gè)網(wǎng)絡(luò)的所有源端到所有接收端的傳播延遲。

DEVICE:器件延遲,主要用于描述分布式時(shí)序模型,可以用于指定通過單元到輸出端口的所有路徑的傳播延遲。

以下是一些例子:

輸入 A 上的值發(fā)生更改后,Y 將保留其先前值 50ps(低電平為 40ps)。50ps 是保持高電平的值,40ps 是保持低電平的值,101ps 是傳播上升沿延遲,90ps 是傳播下降沿延遲,如圖 B-4 所示。

圖 B-4

 

 

延遲

到目前為止,我們已經(jīng)看過了許多不同形式的延遲,其實(shí)延遲規(guī)范還有其它形式。通常,可以將延遲指定為一個(gè)、兩個(gè)、三個(gè)、六個(gè)或十二個(gè)令牌(token)的集合,這些令牌可用于描述以下過渡的延遲:0-> 1、1-> 0、0-> Z,Z-> 1,1-> Z,Z-> 0,0-> X,X-> 1,1-> X,X-> 0,X-> Z,Z-> X。下表展示了如何使用少于十二個(gè)延遲令牌來表示十二種過渡情況。

以下是這些延遲的一些示例:

每個(gè)延遲令牌可以依次寫為一個(gè)、兩個(gè)或三個(gè)值,如以下示例所示:

一個(gè) SDF 文件中的延遲值可以使用有符號(hào)的實(shí)數(shù)或以下形式的三元數(shù)組來編寫:

  • ( 8.0:3.6:9.8 )

為了表示出設(shè)計(jì)在三個(gè)工藝工作條件下的最小、典型以及最大延遲,注釋器通常會(huì)根據(jù)用戶提供的選項(xiàng)來決定去選擇哪個(gè)值。三元數(shù)組形式中的值是可選的,但是至少應(yīng)有一個(gè)。例如,以下形式是規(guī)范的:

( ::0.22)

( 1.001 ::0.998 )

未指定的值就不會(huì)去標(biāo)注。

時(shí)序檢查

在以 TIMINGCHECK 關(guān)鍵字開頭的部分中指定了時(shí)序檢查的極限。在任何這些檢查中,可以使用 COND 結(jié)構(gòu)指定有條件的時(shí)序檢查。在某些情況下,可以指定兩個(gè)額外的條件檢查 SCOND 和 CCOND,它們與 stamp event 和 check event 關(guān)聯(lián)。

以下是一組檢查:

SETUP:建立時(shí)間檢查

HOLD:保持時(shí)間檢查

SETUPHOLD:建立時(shí)間和保持時(shí)間檢查

RECOVERY:恢復(fù)時(shí)間檢查

REMOVAL:撤銷時(shí)間檢查

RECREM:恢復(fù)時(shí)間和撤銷時(shí)間檢查

SKEW:單向偏斜時(shí)序檢查

BIDIRECTSKEW:雙向偏斜時(shí)序檢查

WIDTH:脈寬時(shí)序檢查

PERIOD:周期時(shí)序檢查

NOCHANGE:不變化時(shí)序檢查

以下是一些例子:

 

標(biāo)簽

標(biāo)簽可用于指定 VHDL 泛型(generics)或 Verilog HDL 參數(shù)的值。

 

時(shí)序環(huán)境

有許多結(jié)構(gòu)可用于描述設(shè)計(jì)的時(shí)序環(huán)境。但是,這些結(jié)構(gòu)可用于標(biāo)注,而不是用于反標(biāo),例如在邏輯綜合工具中。這些未在本文中描述。

B.2.1 例子

接下去,我們將為兩個(gè)設(shè)計(jì)提供完整的 SDF 文件。

全加器

這是用于全加器(full-adder)電路的 Verilog HDL 網(wǎng)表(netlist):

以下是時(shí)序分析工具生成的完整 SDF 文件:

INTERCONNECT 中的所有延遲均為 0,因?yàn)檫@是布局前的數(shù)據(jù),因此建模的是理想互連走線模型。

十進(jìn)制計(jì)數(shù)器

這是十進(jìn)制計(jì)數(shù)器的 Verilog HDL 模型:

對應(yīng)的完整 SDF 文件如下:

 

B.3 標(biāo)注過程

在本節(jié)中,我們將介紹如何在 HDL 描述中進(jìn)行 SDF 的標(biāo)注(annotation)。SDF 的標(biāo)注可以通過多種工具執(zhí)行,例如邏輯綜合工具、仿真工具和靜態(tài)時(shí)序分析工具。SDF 標(biāo)注器(annotator)是這些工具的組件,可用于讀取 SDF、解釋并向設(shè)計(jì)中標(biāo)注時(shí)序值。假定會(huì)使用與 HDL 模型一致的信息創(chuàng)建 SDF 文件,并且在反標(biāo)期間使用相同的 HDL 模型。此外,SDF 標(biāo)注器還需要負(fù)責(zé)正確解釋 SDF 中的時(shí)序值。

SDF 標(biāo)注器標(biāo)注了反標(biāo)時(shí)序的泛型和參數(shù)。如果在語法或映射(mapping)過程中不符合該標(biāo)準(zhǔn),它將給出錯(cuò)誤報(bào)告。如果一個(gè) SDF 標(biāo)注器不支持某些 SDF 結(jié)構(gòu),則不會(huì)產(chǎn)生任何錯(cuò)誤,標(biāo)注器將忽略這些錯(cuò)誤。

如果 SDF 標(biāo)注器未能修改反標(biāo)時(shí)序的泛型,則在反標(biāo)過程中不會(huì)修改泛型的值,即保持不變。

在仿真工具中,反標(biāo)通常發(fā)生在規(guī)劃(elaboration)階段之后,緊接在負(fù)約束延遲計(jì)算之前。

B.3.1 Verilog HDL

在 Verilog HDL 中,標(biāo)注的主要機(jī)制是指定塊(specify block),指定塊可以指定路徑延遲和時(shí)序檢查。實(shí)際延遲值和時(shí)序檢查極限值是通過 SDF 文件指定的,映射是一種行業(yè)標(biāo)準(zhǔn),在 IEEE Std 1364 中定義。

從 SDF 文件中獲得并在 Verilog HDL 模塊的指定塊中標(biāo)注的信息包括指定路徑的延遲、參數(shù)值、時(shí)序檢查約束極限值和互連走線延遲。向一個(gè) Verilog HDL 模型進(jìn)行標(biāo)注時(shí),將忽略 SDF 文件中的其它結(jié)構(gòu)。SDF 中的 LABEL 部分定義了參數(shù)值。通過將 SDF 結(jié)構(gòu)與相應(yīng)的 Verilog HDL 聲明進(jìn)行匹配,然后將現(xiàn)有的時(shí)序值替換為 SDF 文件中的時(shí)序值,即可完成反標(biāo)。

下表顯示了 SDF 延遲值如何映射到 Verilog HDL 延遲值:

下表描述了 SDF 結(jié)構(gòu)到 Verilog HDL 結(jié)構(gòu)的映射:

有關(guān)示例,請參見后面部分。

B.3.2 VHDL

SDF 到 VHDL 的標(biāo)注是一個(gè)行業(yè)標(biāo)準(zhǔn),它在 VITAL ASIC 建模規(guī)范的 IEEE 標(biāo)準(zhǔn) IEEE Std 1076.4 中定義,該標(biāo)準(zhǔn)的其中一部分描述了 SDF 延遲到 ASIC 庫的標(biāo)注。在這里,我們僅介紹與 SDF 映射有關(guān)的 VITAL 標(biāo)準(zhǔn)的相關(guān)部分。

SDF 可用于直接在符合 VITAL 的模型中修改反標(biāo)時(shí)序泛型,只能使用 SDF 為符合 VITAL 的模型指定時(shí)序數(shù)據(jù)。有兩種方法可以將時(shí)序數(shù)據(jù)傳遞到 VHDL 模型中:通過配置,或直接傳遞到仿真中去。SDF 標(biāo)注過程包括在仿真期間在符合 VITAL 的模型中映射 SDF 結(jié)構(gòu)和相應(yīng)的泛型。

在符合 VITAL 的模型中,存在著有關(guān)如何命名和聲明泛型的規(guī)則,以確保可以在模型的時(shí)序泛型和相應(yīng)的 SDF 時(shí)序信息之間建立映射。

時(shí)序泛型由泛型名稱及其類型組成,名稱指定時(shí)序信息的種類,類型指定時(shí)序值的種類。如果泛型名稱不符合 VITAL 標(biāo)準(zhǔn),則它不是時(shí)序泛型,也不會(huì)被標(biāo)注。

下表顯示了 SDF 延遲值如何映射到 VHDL 延遲:

在 VHDL 中,時(shí)序信息是通過泛型進(jìn)行反標(biāo)的。泛型名稱遵循一定的規(guī)則,以便保持一致或從 SDF 結(jié)構(gòu)中獲取。利用每個(gè)時(shí)序泛型名稱,可以指定條件邊沿的可選后綴。邊沿可以指定一個(gè)與時(shí)序信息相關(guān)聯(lián)的邊沿。

下表列出了各種時(shí)序泛型名稱:

打個(gè)廣告

?

新一期的路科驗(yàn)證春季班已經(jīng)開始了!現(xiàn)在報(bào)名早鳥班(開班之前)即可享受 500 優(yōu)惠,此外在文末掃描二維碼聯(lián)系路科驗(yàn)證 MOMO,然后報(bào)出 a 暗號(hào)摸魚范式就能獲得額外的200 優(yōu)惠券!可以和早鳥班的 500 優(yōu)惠疊加!對于課程學(xué)習(xí)有任何問題,都可以掃描下面的二維碼,加我微信咨詢。

除了這門升級中的 V2Pro 課程,恐怕你找不到更好的學(xué)驗(yàn)證的途徑了

?

?

貝塔的微信?

?

MOMO 的微信?

相關(guān)推薦

電子產(chǎn)業(yè)圖譜