數字后端——布局

? ? ? ? 由于I /?O單元和模塊的布放已經在布圖規劃時完成,因此布局的剩余任務主要是對標準單元的布局。布局方案在布圖規劃時就已經做了決定,要么選擇展平式布局,要么就是層次化布局。

一、布局目標

????????布局的目標也即布局內容實施之后所要達到的預期值,可以歸納為以下3部分。

  1. 各模塊的位置相對確定,每個標準單元都被放置在相應的位置,并具有自己的狀態(attribute)。整個設計的擁塞程度相對均勻合理,基本滿足布通的要求。
  2. 滿足設計規則的要求,即除了時鐘網絡,其他的高扇出網絡,如復位信號等都插入了相應的驅動單元,從而滿足最大電容、最大扇出和最大信號轉換時間等設計約束。時鐘網絡上的設計規則需要在時鐘樹綜合階段完成。
  3. 芯片的時序和供電較為良好。芯片的時序主要體現在建立(setup)時間的違例上,在布局完成后,可以根據標準單元位置的具體擺放,從而調用較為精確的延遲模型對設計進行延遲預估,此時芯片的工作主頻基本上已經確定,不同的EDA工具布線之后的時序與布局之后的時序預估的差別各異,有時布線之后的延遲會比布局之后高出5%~10%。芯片保持(hold)時間的違例一般在時鐘樹綜合之后完成。此時對芯片的電源進行分析與最終的分析也較為接近。

二、布局方式

1、展平式布局

????????在芯片的布圖規劃階段完成了芯片的整體規劃,在布局階段則是其細節的實施。布局是自動化的,如果采用展平式布局方案,它的主要內容有以下兩個部分組成:

  1. 模塊的擺放與布局。模塊(block)的擺放一直是布局的重要組成部分。一直以來,集成電路后端設計者在完成布圖規劃階段,需要半自動地將模塊放置在芯片核內合理的區域之內,當發現結果不理想時,還可以重新調整它們的位置。隨著更多基于模塊設計(BBD)在SoC中的使用,大量模塊位置設計則由布局工具自動完成。
  2. 標準單元的擺放和優化。當硬核模塊的位置設定好后,需要將模塊內的標準單元擺放到相應位置,這就是布局的主要工作。當標準單元的位置確定后,布線后互連線的寄生分布參數的數值具有實際意義,此時對芯片的時序進行分析,從而進行優化。

????????大量標準單元的放置采用自動布局方法實現,用戶也可以通過腳本或手動等輔助方法,將寄存器按照一定的陣列擺放,例如,對Datapath模塊的擺放。時鐘樹中所用buffer屬于標準單元,它們位置的擺放也可以通過手動實現。

2、層次化布局

????????在層次化設計方案中,布局有三個過程:①先分配子模塊,這是與展平式布局最大的不同之處;②作子模塊級的布局,它的方法與展平式一樣;③所有子模塊完成后在頂層組裝,其布局方法也與展平式一樣。

1)子模塊約束類型的制定

????????層次化設計中子模塊的約束類型一般有三種:向導約束(guide)區域約束(region)和限制約束(fence),其中

  • 向導約束為模塊指定向導范圍,屬于該模塊的標準單元,可以放置在該向導范圍內,也可以放置在向導范圍之外,不屬于該模塊的標準單元也可以放置在該向導范圍內。
  • 區域約束中,屬于該模塊的標準單元只能放在指定的區域內,該區域還可以放置 其他的模塊元。
  • 限制型約束中,屬于該模塊的標準單元只能放在該區域內,且不允許放置其他模塊中的標準單元。限制型約束是強約束類型,多用于層次化設計中,而在展平式設計中,多采用較為寬松的約束。

????????上述3種定義為Cadence公司的SoC Encounter中的名稱,不同的EDA工具對于這三種的約束定義有所區別。例如,在Astro中,所有的模塊都可以用PlanGroup來定義,其約束的程度可以通過定義其權重,從而確定各個區域的約束類型。

2)子模塊大小位置的制定

????????為各個模塊指定約束后,耑要在芯片內部指定模塊的大小和位置。模塊大小的確定主要看面積利用率的大小,它是指標準單元總面積與模塊在芯片內部所分布面積之比。當初始利用率低于70%時,較容易布通,而當利用率高于85%時,則會出現較大的擁塞,從而導致無法完成布線。

三、布局目標預估

????????芯片的物理設計需要在不同階段對芯片需要實現的目標進行評估,從而盡早發現問題,并減少設計的迭代。在布局完成后需要評估的目標主要有:擁塞(congestion)程度的評估、延遲和時序預估供電預估。一般情況下層次化設計在布圖規劃后,進行目標預估,并分解到各個模塊。當然在很多情況下是在虛擬原型設計完成,即布局優化、粗布線完成后對設計目標進行預估。

1、擁塞預估

????????在布局完成之后,標準單元的位置相對確定,即可以較準確地對布線的擁塞程度進行預估。EDA工具將整個布線空間劃分為多個小的布線格,每個布線格劃分為橫向通道和縱向通道,在每個布線格內,估算并統計所需要的縱向通道和橫向通道數量,當實際需要的通道超過現有的通道的5%時,表明擁塞程度比較大。由EDA工具分析擁塞和顯示擁塞程度的菜單,可以得出擁塞的數據和分布,從而決定布局優化的方案。當全局擁塞很小,但是存在局部擁塞較大的情況時,則需要對設計進行優化。當報告全局的擁塞非常小,但是在局部區域存在著較大的擁塞,會造成布線無法布通時,則需要對標準單元布局進行優化。

2、時序預估

????????標準單元布局完成后,其位置都相對確定,此時對芯片的延遲計算和時序較接近于芯片最終的時序。在布局完成后, 一般只需要做建立時間(setup time)預估,不需要做保持時間(hold time)預估,因為此時還沒有進行時鐘樹綜合,而保持時間的違例通常是在時鐘樹綜合之后進行優化。這時還可以對噪聲的影響進行預估,在0. 18pm及以上工藝,一般不需要太多地考慮噪聲,而在0. 13um及以下的工藝中,則需要考慮噪聲的影響,在標準單元布局階段即可以考慮噪聲。

3、供電預估

????????標準單元布局后,將標準單元的供電端口連接到電源網格中(followpins),此時可以引用VCD文件,對芯片的功耗、電壓降及EM進行評估。由于時鐘樹還沒有綜合,功耗值會偏小,在預估時應當注意。

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

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

相關文章

python基礎 函數 (四)

一 函數基本 def func1():print("hello world")return 1, "hello", ("wo", "ai"), ["ni", "da"], {"you": "xi"} # return 可以返回任意# 結果: (1, hello, (wo, ai), [ni, da…

c#注釋

c#的注釋分為:這里不能不說一下什么是注釋。 注釋本身不會執行,只是說明性文字,只供程序員閱讀。 注釋又分為:單行注釋,多行注釋,文檔注釋。 單行注釋://開始 多行注釋:/*開始&#…

嵌入式linux字符設備驅動

1. 我們需要先調用register_chrdev_region()或 alloc_chrdev_region()來向系統申請設備號int register_chrdev_region( dev_t first, unsigned int count, char *name ); //函數通過已知的設備號first來注冊字符設備區域。 int alloc_chrdev_region( dev_t *dev, unsigned int…

數字后端——時鐘樹綜合

在數字集成電路設計中,時鐘信號是數據傳輸的基準,它對于同步數字系統的功能、性能和穩定性起決定性作用,所以時鐘信號的特性及其分配網絡尤被人們關注。時鐘信號通常是整個芯片中有最大扇出、通過最長距離、以最高速度運行的信號。時鐘信號必…

52次課(mysql用戶管理、常用sql語句、 mysql數據庫備份恢復)

MySQL創建用戶以及授權 默認用戶是root用戶,不可能所有人員都用root用戶,創建用戶防止誤刪除,因為mysql里邊有多個庫每個庫里有很多表,所以需要給單獨的用戶做一些授權我只需要它對某一個數據庫有權限,或者說對某個數據…

線程池的種類,區別和使用場景

newCachedThreadPool: 底層:返回ThreadPoolExecutor實例,corePoolSize為0;maximumPoolSize為Integer.MAX_VALUE;keepAliveTime為60L;unit為TimeUnit.SECONDS;workQueue為SynchronousQueue(同步隊…

20145225 《信息安全系統設計基礎》第14周學習總結

第九章 虛擬存儲器 虛擬存儲器是計算機系統最重要的概念之一,它是對主存的一個抽象 三個重要能力: 它將主存看成是一個存儲在磁盤上的地址空間的高速緩存,在主存中只保存活動區域,并根據需要在磁盤和主存之間來回傳送數據&#xf…

數字后端——布線

布線是繼布局和時鐘樹綜合之后的重要物理實施任務,其內容是將分布在芯片核內的模塊、標準單元和輸入輸出接口單元( I /O pad)按邏輯關系進行互連,其要求是百分之百地完成它們之間的所有邏輯信號的互連,并為滿足各種約束條件進行優…

動態加載和靜態加載及其編譯步驟

在類unix操作系統中,驅動加載方式一般分為:動態加載和靜態加載,下面分別對其詳細論述。 一、動態加載 動態加載是將驅動模塊加載到內核中,而不能放入/lib/modules/下。 在2.4內核中,加載驅動命令為:ins…

streamsets 集成 minio s3測試

具體streamsets crate 集成可以參考 streamsets crate 以下文檔只關注minio 集成的配置 minio 服務 搭建 具體搭建參考: https://www.cnblogs.com/rongfengliang/p/9197315.html 創建bucket (crate 集成使用) 測試的csv 文件從https://www.s…

sqlite性能優化

1、數據庫性能上 1.1 批量事務插入,提升數據插入的性能 由于sqlite默認每次插入都是事務,需要對文件進行讀寫,那么減少事務次數就能簡書磁盤讀寫次數從而獲得性能提升。 1.2 單條sql優于多條sql 實測發現,對于幾十條sql插入當你替…

【codecombat】 試玩全攻略 第十四關 已知敵人

第十四關 已知敵人 在這一關里,我們的英雄獲得了一副可以看見敵人的眼鏡,所以他很強勢的學會了“發現敵人”的技能。 hero.findNearestEnemy()命令,單詞多了,首字母都要大寫了,不然分不出來。玩過wow的小伙伴用過 宏命…

數字后端——信號完整性分析

隨著光刻和集成電路制造工藝的不斷進步,以及芯片的特征尺寸從深亞微米到納米的迅速采用,人們一方面因為芯片的功能極大提高而受益,另一方面,當邏輯門的溝道長度減小時,門的開關時間會減小,這意味著輸出驅動…

新浪前端面試

1、什么是Html語義化? 語義化 div > section,div > nav(語言自己能解釋), input/(關閉符號) br/相對于樣式標記,如 i(樣式)/ em(語義);b(樣式&#xff…

poj3278 【BFS】

Catch That CowTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 97240 Accepted: 30519Description Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a num…

表單高級

● 表單高級 ○ 表單字段集<fieldset></fieldset> ■ 功能&#xff1a;相當于一個方框&#xff0c;在字段集中可以包含文本和其他元素。該元素用于對表單中的元素進行分組并在文檔中區別標出文本。fieldset元素可以嵌套&#xff0c;在其內部可以在設置多個fieldset…

CMOS圖像傳感器——TDI CIS

一、面陣與線陣圖像傳感器 人們在日常生活中見到的相機大多基于普通的面陣圖像傳感器,這種相機多用來拍攝靜止的物體。即使用它們來拍攝運動的物體,也僅僅是縮短了相鄰兩次拍攝的時間間隔,無需對所拍攝圖像進行額外操作,對物體的運動方向和速度也沒有限定條件。 除此之外,…

gpio_request 原形代碼

其原型為 int gpio_request(unsigned gpio, const char *label) 先說說其參數&#xff0c;gpio則為你要申請的哪一個管腳&#xff0c;label則是為其取一個名字。其具體實現如下&#xff1a; [cpp] view plaincopyprint?int gpio_request(unsigned gpio, const char *label) …

【noip模擬】德充符

時間限制&#xff1a;2s 內存限制&#xff1a;512MB 【題目描述】 申徒嘉和鄭子產都是伯昏無人的學生&#xff0c;子產因為申徒嘉是殘疾人&#xff0c;非常看不起他&#xff0c;于是想要刁難他。 子產給了申徒嘉 n個數 a1,a2...an。 現在他要求申徒嘉重新排列這些數&#xff0c…

做好數據挖掘模型的9條經驗總結

愛數據學習社 welcome數據挖掘是利用業務知識從數據中發現和解釋知識(或稱為模式)的過程&#xff0c;這種知識是以自然或者人工形式創造的新知識。當前的數據挖掘形式&#xff0c;是在20世紀90年代實踐領域誕生的&#xff0c;是在集成數據挖掘算法平臺發展的支撐下適合商業分析…