W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
之前大部分仿真都是驗證數(shù)字電路功能的正確性,信號傳輸都是理想的,沒有延遲。但是實際邏輯元器件和它們之間的傳輸路徑都會存在延遲。因此,必須檢查設計中的延遲是否滿足實際電路的時序約束要求??梢杂脮r序仿真的方法來檢查時序(timing),即在仿真時向元件或路徑中加入和實際相符的延遲信息,并進行相關(guān)計算來確定時序是否滿足。
靜態(tài)時序分析 (Static Timing Analysis, STA),也是一種時序驗證的技術(shù)。它不關(guān)心邏輯功能的正確與否,只對設計中的時序進行計算分析,來確定電路中是否存在違反 (violation) 時序約束的設計。STA 分析速度快,能夠快速定位問題,但會忽略一些異步的問題。
所以 "STA + 時序仿真"是一種相對完善且安全的時序驗證方法。本教程只對時序仿真做一些簡單的介紹,暫時對 STA 不做討論。
延遲模型主要有 3 種:分布延遲、集總延遲(lumped) 和路徑延遲。
分布延遲需要給電路中每個獨立的元件進行延遲定義,不同的路徑有不同的延時,如下圖所示。
分布延遲的 Verilog 模型和例化邏輯門單元并指定延遲值的方式基本一致。
module and4(
output out,
input a, b, c, d);
wire an1, an2 ;
and #1 (an1, a, b);
and #2 (an2, c, d);
and #1.5 (out, an1, an2);
endmodule
也可以使用連續(xù)賦值語句 assign 說明分布延遲。
module and4(
output out,
input a, b, c, d);
wire an1, an2 ;
assign #1 an1 = a & b ;
assign #2 an2 = c & d ;
assign #1.5 out = an1 & an2 ;
endmodule
集總延遲是將全部路徑累計的延時集中到最后一個門單元上。
到最后一個門單元上的延遲會因路徑的不同而不同,此時取最大延時作為最后一個門單元的延時。
將上述分布延遲圖轉(zhuǎn)化為集總延遲圖,如下所示。
集總延遲 Verilog 模型如下。
module and4(
output out,
input a, b, c, d);
wire an1, an2 ;
and (an1, a, b);
and (an2, c, d);
and #3.5 (out, an1, an2); //set the max delay at the last gate
endmodule
路徑延遲是對每個輸入引腳到每個輸出引腳的所有路徑指定延遲時間。
路徑延遲示意圖如下。
路徑延遲模型需要用關(guān)鍵字 specify 來定義。
路徑延遲 Verilog 模型如下,具體定義方法將在下一節(jié)詳細介紹。
module and4(
output out,
input a, b, c, d);
specify
(a => out) = 2.5 ;
(b => out) = 2.5 ;
(c => out) = 3.5 ;
(d => out) = 3.5 ;
endspecify
wire an1, an2 ;
and (an1, a, b);
and (an2, c, d);
and (out, an1, an2);
endmodule
所以,大多數(shù)邏輯門單元庫中的延遲信息,都是以路徑延遲的方式給出的。很多集成模塊,也可以從其數(shù)據(jù)手冊中直接獲取到路徑延遲,十分方便。
點擊這里下載源碼
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: