Verilog 延遲模型

2022-05-20 14:33 更新

關(guān)鍵詞: 分布延遲, 集總延遲, 路徑延遲

之前大部分仿真都是驗(yàn)證數(shù)字電路功能的正確性,信號(hào)傳輸都是理想的,沒(méi)有延遲。但是實(shí)際邏輯元器件和它們之間的傳輸路徑都會(huì)存在延遲。因此,必須檢查設(shè)計(jì)中的延遲是否滿足實(shí)際電路的時(shí)序約束要求??梢杂脮r(shí)序仿真的方法來(lái)檢查時(shí)序(timing),即在仿真時(shí)向元件或路徑中加入和實(shí)際相符的延遲信息,并進(jìn)行相關(guān)計(jì)算來(lái)確定時(shí)序是否滿足。

靜態(tài)時(shí)序分析 (Static Timing Analysis, STA),也是一種時(shí)序驗(yàn)證的技術(shù)。它不關(guān)心邏輯功能的正確與否,只對(duì)設(shè)計(jì)中的時(shí)序進(jìn)行計(jì)算分析,來(lái)確定電路中是否存在違反 (violation) 時(shí)序約束的設(shè)計(jì)。STA 分析速度快,能夠快速定位問(wèn)題,但會(huì)忽略一些異步的問(wèn)題。

所以 "STA + 時(shí)序仿真"是一種相對(duì)完善且安全的時(shí)序驗(yàn)證方法。本教程只對(duì)時(shí)序仿真做一些簡(jiǎn)單的介紹,暫時(shí)對(duì) STA 不做討論。

延遲模型主要有 3 種:分布延遲、集總延遲(lumped) 和路徑延遲。

分布延遲

分布延遲需要給電路中每個(gè)獨(dú)立的元件進(jìn)行延遲定義,不同的路徑有不同的延時(shí),如下圖所示。


分布延遲的 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ù)賦值語(yǔ)句 assign 說(shuō)明分布延遲。

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

集總延遲

集總延遲是將全部路徑累計(jì)的延時(shí)集中到最后一個(gè)門單元上。

到最后一個(gè)門單元上的延遲會(huì)因路徑的不同而不同,此時(shí)取最大延時(shí)作為最后一個(gè)門單元的延時(shí)。

將上述分布延遲圖轉(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

路徑延遲

路徑延遲是對(duì)每個(gè)輸入引腳到每個(gè)輸出引腳的所有路徑指定延遲時(shí)間。

路徑延遲示意圖如下。


路徑延遲模型需要用關(guān)鍵字 specify 來(lái)定義。

路徑延遲 Verilog 模型如下,具體定義方法將在下一節(jié)詳細(xì)介紹。

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í)間分散在了每一個(gè)門單元上,但仍然不能描述基本單元中不同引腳上延時(shí)的差異。當(dāng)設(shè)計(jì)規(guī)模變大時(shí),結(jié)構(gòu)將變的復(fù)雜。
  • 集總延遲:該方式模型簡(jiǎn)單,適用于小規(guī)模的電路,但是不能描述輸入端到輸出端不同路徑的延遲。
  • 路徑延遲:指定了引腳到引腳的延遲,延遲信息比較齊全。雖然信息比較多,但對(duì)于大規(guī)模電路也更容易實(shí)現(xiàn)。因?yàn)樵O(shè)計(jì)者無(wú)需關(guān)心模塊內(nèi)部的實(shí)現(xiàn)邏輯,只需要了解輸入到輸出引腳的延遲即可。即便模塊內(nèi)部邏輯有所改變,路徑延遲的說(shuō)明也可以保持不變。

所以,大多數(shù)邏輯門單元庫(kù)中的延遲信息,都是以路徑延遲的方式給出的。很多集成模塊,也可以從其數(shù)據(jù)手冊(cè)中直接獲取到路徑延遲,十分方便。

點(diǎn)擊這里下載源碼


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)