靜態時序分析——Clock Gating check

門控時鐘是RTL級進行低功耗設計的最常用方法,能夠有效降低動態功耗。在實際使用中,一般用ICG(集成門控時鐘單元)來完成clock gating。ICG電路和時序如下:

通常來說,工藝庫已經集成了ICG,在做門控時鐘的時候其實不用考慮那么多。如果在實際設計中,工藝庫未提供ICG,需要自己搭建一個門控時鐘電路,那么在布局布線的時候可能要注意,不能將期間擺的太遠,否則線延遲等會讓這個結構失去其意義。

當門控信號控制了邏輯單元中時鐘信號的路徑時,我們會進行Clocl Gating check。我們根據下圖了解一些定義,這樣比較直觀:

這里我們需要明確什么樣的電路會被工具分析成為門控時鐘:

  1. Gating cell的輸出是作為時鐘信號進行使用,即連接到了后級邏輯單元的時鐘端口。
  2. Gating pin的輸入非時鐘信號;若Gating pin的輸入為時鐘信號,則其必須不連接后級邏輯單元的時鐘端口。
  3. 對于上圖簡單的與門控制,工具可以較好的推斷;但對于復雜結構,需要自己添加約束來進行檢查。

運用提到的定義,對于上圖來說,CLKB才是clock signal。接下來我們以這個電路為例看看如何進行clock gating check(對于這個與門來說,有些類似于data to data check):

首先定義兩個時鐘

create_clock -name CLKA -period 10 -waveform {0 5}? [get_ports CLKA]

create_clock -name CLKB -period 10 -waveform {0 5}? [get_ports CLKB]

我們要保證時鐘切換的時候不能產生一些毛刺,也不能產生對時鐘有影響的結果。對于此電路來說,gating cell是一個與門,那么gating pin的信號變化只能發生在clock pin的低電平狀態。則setup check要求門控信號在時鐘信號變高前變化;hold check要求門控信號只能在時鐘下降沿之后進行改變。時序圖如圖,

gating pin的變化要落在5-10ns間,才能滿足門控時鐘的要求。

我們看看setup check的時序報告:

同樣地,我們可以看看hold check的時序報告:

可以看到,在5ns時進行hold check是非常嚴苛的。由于gating signal的變化過于迅速,導致hold check失敗。這個問題可以用我們前面提到的半周期進行處理。我們將寄存器的采樣邊沿改為負沿:

這樣的話,gating signal在負沿launch,留給時序檢查的周期就剩下了半個周期,較好滿足hold time:

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253835.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253835.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253835.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

U-boot中TFTP 解釋

http://www.cnblogs.com/heaad/archive/2009/08/10/1542538.html

BlackHat Arsenal USA 2018 ToolsWatch黑客工具庫

原文鏈接:https://medium.com/hack-with-github/black-hat-arsenal-usa-2018-the-w0w-lineup-7de9b6d32796 Black Hat Arsenal USA 2018?—?The w0w lineup After the huge success of Black Hat Arsenal USA 2017, toolswatch has now announced the list of too…

SOA是什么

SOA是什么? SOA是面向服務的架構,是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯系起來。接口是采用中立的方式進行定義的,它獨立于實現服務的硬件平臺、操作…

redis 優化

系統優化echo "vm.overcommit_memory1" > /etc/sysctl.conf 0, 表示內核將檢查是否有足夠的可用內存供應用進程使用;如果有足夠的可用內存,內存申請允許;否則,內存申請失敗,并把錯誤返回給應…

IC設計常見設計思想

速度與面積互換原則 所謂速度,是指整個工程穩定運行所能夠達到的最高時鐘頻率,它不僅和電路內部各個寄存器的建立時間、保持時間以及外部器件接口的各種時序要求有關,而且還和兩個緊鄰的寄存器間的邏輯延時,走線延時有關。所謂面…

DM365 u-boot啟動分析

http://www.61ic.com/Article/DaVinci/DM644X/201009/27429.html

(十三)Hibernate高級配置

配置數據庫連接池 配置C3P0連接池。先導入c3p0包。然后在hibernate.cfg.xml文件中 &#xff0c;使用下面代碼配置連接池<property name"hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>可以通過下面的…

eclipse中如何配置tomcat

1.打開eclipse上面的Windows選項&#xff0c;選擇Preferences>Server>Runtime Environments>Add 2.選擇你電腦中安裝的tomcat的版本我的是8所以我選的是Apache Tomcat v8.0 3,Next>Browse選擇Tomcat的安裝目錄&#xff0c;選擇jdk 4.Finish>OK tomcat配置完成。…

jsp調試小技巧

console.log($("#toolbar")); 打印對象可知道這個對象的參數信息轉載于:https://www.cnblogs.com/chenweida/p/6149342.html

數字IC驗證學習(一)

一、數據類型 1、logic logic類型只能有一個驅動。使用wire和reg的地方均可使用logic&#xff0c;但如雙向總線等有多個驅動的地方&#xff0c;則不可使用logic。 2、二值邏輯 對于二值邏輯變量與DUT中的四值邏輯變量連接時&#xff0c;如果DUT中產生了X和Z&#xff0c;會被…

SecureCRT 配置文件中 找密碼

打開本地電腦如下路徑 C:\Users\XXX\AppData\Roaming\VanDyke\Config\Sessions 找到配置文件。 運行命令&#xff1a;python SecureCRTDecrypt.py [配置文件名稱] 例如&#xff1a;python SecureCRTDecrypt.py 192.168.1.249.ini ssh root192.168.1.249 # 123456 即可得到密…

刷題比賽

題目描述 給你四個數組A,B,C,D. 給出每個數組的初始值A[1] 1, B[1] 1, C[1] 1, D[1] 1 , A[2] 3, B[2] 3, C[2] 3, D[2] 3; 有以下的遞推公式: (1) a[k2]p* a[k1]qa[k]b[k1]c[k1]r k^2t * k1d[k]; (2)b[k2]u* b[k1]vb[k]a[k1]c[k1]w^kd[k]; (3)c[k2]x c[k1]yc[k]a[k1]b[…

自動化測試用例設計原則

自動化測試用例設計原則&#xff1a;每一個用例 都是一個閉合的業務操作。用例之間要保持獨立 &#xff0c;不要有操作上的依賴關系&#xff0c;就算有也是測試數據上的依賴。第二個用例 依賴第一個用例產生的數據。轉載于:https://www.cnblogs.com/yyjiangnan/p/6149430.html

MII/MDIO接口詳解

MII/MDIO接口詳解 http://dpinglee.blog.163.com/blog/static/144097753201041131115262/

T24412 Cup#182-3 洞穴之旅

弱連通模板題&#xff0c;不過還是不會。。。 這道題在POJ2762有&#xff0c;這個出題人直接翻譯弄過來了。。。 弱連通的定義是&#xff1a;從u能到達v或從v能到達u&#xff0c;則u和v這兩個點弱連通。 顯然如果是強連通分量就一定是弱連通分量啦&#xff0c;所以可以直接縮點…

PCB相關的基礎知識

http://www.elecfans.com/article/89/92/2017/20170425510728.html轉載于:https://www.cnblogs.com/jackn-crazy/p/7300228.html

sql server 修改表結構語法大全

1.增加字段 alter table docdsp add dspcode char(200) 2.刪除字段 alter table table_name drop column column_name 3.修改字段類型 alter table table_name alter column column_name new_data_type 2.6.1. 增加字段 要增加一個字段&#xff0c;使用這條命令…

Flutter - 生成二維碼與識別二維碼

#生成二維碼 ##首先需要在pubspec.yaml:中添加 qr_flutter: ^1.1.3 其次&#xff0c;引入代碼&#xff1a; import package:qr_flutter/qr_flutter.dart; 核心代碼如下&#xff1a; child: QrImage(data: "這里是需要生成二維碼的數據",size: 100.0,onError: (ex) {p…