Verilog中的specify block和timing check

來源:互聯網
上載者:User

標籤:

在ASIC設計中,有兩種HDL construct來描述delay資訊:

1)Distributed delays:通過specify event經過gates和nets的time,來描述delay;

對於net和gate都有三種delay資訊: 1)rise delay   2)fall delay    3)transition to high-impedance value

每一種delay資訊又分為:min:typical:max三種。

gate和net的model例子:

但是trireg類型的變數一般建模cap的訊號:第三個delay資訊表示他storage的訊號值不再保證的時間;

2)Module path delays:通過描述event從source(input/inout port)到destination(output/inout port)的time,來描述delay;

使用specify......endspecify來進行描述。

 

在specify block中一般有三種資訊:

1)various paths across the module;

2)Assign delays to those paths;

3)Perform timing check;

 

path的declaration包括三類:

1)simple path declaration;

2)edge sensitive path declaration;   加 posedge/negedge

3)state dependent path declaration;  加if/ifnone

4)Edge-sensitive state-dependent paths

 

“ *>”表示 full conection,   “ =>”表示parallel conection

 

對於會改變polarity的 path,可以通過+/-來進行描述,否則按unknown polarity分析(rise edge可能引起fall edge/rise/edge/no transition)。

"+"表示positive polarity, rise 可能引起rise edge或no transition

"-"表示positive polarity, rise 可能引起fall edge或no transition

 

Specifying transiiton delay on module path

按rise---fall---to-z的三種來區分,每一種delay資訊可以再細分min/typ/max

前三者用","區分,後三者用":"區分

 

在delay path中,有一些是到同一個output的,這是選擇最近有效一路來計算,如果還是有多條

同時有效,選擇delay較小的那一條path。

當Y從0變為1時,如果A transition more recently,那麼選擇6的delay,否則選擇5的delay;

如果A和B都有效,那麼選擇5的delay; 

 

對於module path delay和distributed delay都存在的情況,選擇兩者之間大的那一個值。 

 

對於path的distination必須是的單一driver的,所以一些wire類型的訊號,必須變為gate輸出的signal

 

TIming Check,在給定的timing limit內,保證critical event occur;

可以分為兩大類:

1)檢查stability time window----------$setup, $hold, $setuphold, $recovery, $removal, $recrem

2)檢查two event之間的time----------$skew, $width, $period, $nochange

注意這些timing check並不是task,specify內也不允許有task;

所有的這些timing check都有兩個基準時間點:reference event和data event;

                                      兩個時間評估點:timestamp event和timecheck event;

不報violation,必須保證data event在正確的time window下發生

 

$setup check: $setup(data_event, reference_event, time_check_limit,notifier)

保證timestamp的時間在time window之內,否則會報violation

當limit設定為0時,表示這個檢查永遠不會報violation

 

$hold check: $hold(reference_event, data_event, time_check_limit,notifier)

當limit設定為0時,表示這個檢查永遠不會報violation

 

$setuphold check: $setuphold(reference_event, data_event, setup_time_check_limit,hold_time_check_limit,notifier)

 

$skew(reference_event, data_event, time_check_limit, notifier)

 

$width(reference_event, time_check_limit, threshold)

reference必須是一個trigger的event,另一個edge作為data event,兩者時間間隔大於threshold(防止glitch),小於limit。

Verilog中的specify block和timing check

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.