數字IC后端PPA優化| Timing一致性調整方法和Module Region規劃方法

Q1:直播課經常講到一致性,這個一致性的話一般是指place,CTS和PT的derating time,uncertainty和transition嗎,我大概知道innovus的uncertainty設置要比PT里面高一點,但具體設計時這幾部分的大小應該是一個什么樣的關系或者需要大多少,這個有沒有一些經驗值?

我們一般講的Correlation有Timing Correlation和Physical Correlation。

下面這張圖是我之前分享的一個后端實現全流程思維導圖,其中就把correlation按照Timing和Physical兩個大方向進行劃分(添加微信ic-backend2018免費領取這份思維導圖)。

在這里插入圖片描述
數字IC后端實現之Setup Violation修復案例(Data&Clock Tree ECO修復手段)

Timing Correlation又分PR實現不同階段之間的時序一致性。

比如Placement做完setup wns是-0.1ns,長clock tree優化時序后setup wns是-0.25ns,這種就是典型的兩個階段之間的timing不一致!

那為何要追求一致性呢?因為長clock tree后的timing比較差,而這個情況在placement階段工具壓根沒看到,那自然就不會做優化,即placement優化不到位。

我們最理解的結果是placement做完,CTS做完clock tree后timing情況就應根據接近于placement后的結果。

這兩個步驟的差別是placement階段clock還是ideal的(時鐘從root到sink的時間為0),而CTS做完各個sink的到達時間是不一致的,所以它們差一個clock skew!

手把手教你如何分析debug Clock Skew高達上ns的案例

那我們是否可以在placement階段提前把后續CTS階段的clock skew考慮進來呢?答案是可以的。

在這里插入圖片描述

我們在placement階段可以設置一個更大點的clock uncertainty。

這個也就是咱們經常看到的placement clock uncertainty = Clock Jitter +預估clock skew +Timing Margin。

我們應該盡量讓工具在placement階段就把標準單元擺放到最佳的位置上,并把時序一步優化到位。后續其他階段僅僅是針對實際clock skew和實際走線帶來的一些時序變化進行的時序優化。這個優化過程可以比較輕松實現。

這樣實現出來的結果我們可以把PR每個階段的density控制在一個數量級!

PR是基于邏輯連接的物理實現的過程,它里面用的delay計算engine和RC抽取engine肯定和Starrc,PT是不一樣的。所以PR和PT之間的一致性也是我們需要關注的。

而我們知道delay就分兩種,分別是cell delay和net delay。

在這里插入圖片描述

所以這兩個階段的timing一致性可以在PR階段通過以下幾個方法來調整(PT中對應值是不能改的)。

1)調整clock uncertainty

2)調整考慮OCV設置的set_timing_derate值

3)調整RC Scale Factor系數

而physical一致性主要指兩邊的routing drc結果是否比較接近。

IC后端項目案例 | Innovus DRC Violation分析及Floorplan合理性分析

Q2: Place階段有時候出現critical path不在dpu里面需要設置region,想請問這個region是針對什么設置的,我不知道里面應該放什么。因為我想直接在place階段就設置好region,如果這樣可以的話在core的不同部位這個region里面應該擺什么?比如說給一個dpu設一個region它應該放在core的哪一個部位?

Region一般是針對某個module來設置的。以咱們T28 a7core直播課講的這個案例為例,u_ca7pfu這個module工具自動擺放后被拆成兩部分。這時候我們可以把這個module做成一個region,規劃在中間那個位置。 DPU模塊一般是位于遠離io port那個對角位置,靠近DDATA SRAM。

在這里插入圖片描述

添加region的的腳本命令如下所示。

set cells [dbGet top.insts.name u_cortexa7noram/u_ca7pfu* -p]
set cells_name [dbGet $cells.name]
createInstGroup PFU
addInstToInstGroup PFU $cells_name
createRegion PFU {300 300 500 600}

我們還可以根據設計的data flow和官方推薦的module分布來精細化規劃每個module的擺放位置。

ARM Cortexa7core 模塊分布圖

數字IC設計實現之分段長clock tree典型案例(clock tree synthesis)
在這里插入圖片描述

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

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

相關文章

電子電氣架構 --- 軟件定義汽車的驅動和挑戰

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

機器學習——10 支持向量機SVM

1 支持向量機 1.1 故事引入看下圖左邊,藍色和紅色的點混在一起,這就像一堆數據,沒辦法用一條簡單的直線把它們分開。再看下圖右邊,有一條直線把藍色和紅色的點分開,這就是SVM在找的“決策邊界”,它能把不同…

若以微服務部署踩坑點

windows docker desktop 部署nacos mysql1、docker部署nacosdocker pull nacos/nacos-server:v2.4.3docker啟動命令 docker run --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 --privilegedtrue --network bridge -e MODEstandalone -e SPRING_DATASOURCE_PLATFORMm…

Lua基礎+Lua數據類型

Lua基礎 Lua介紹 特點:輕量、小巧。C語言開發。開源。 設計的目的:嵌入到應用程序當中,提供靈活的擴展和定制化的功能。 luanginx,luaredis。 環境安裝 windows上安裝lua: 檢查機器上是否有lua C:\Users\cpf>lua lu…

基于VuePress2開發文檔自部署及嵌入VUE項目

最近在搞前端開發幫助文檔,轉了一圈發現Vue提供了一個高性能的、Vue驅動的靜態網站生成框架-VuePress。VuePress 是一個以 Markdown 為中心的靜態網站生成器。你可以使用 Markdown 來書寫內容(如文檔、博客等),然后 VuePress 會生…

Flask初步學習

文章目錄一、初識Flask1.1 Pycharm修改環境配置1.2 運行第一個flask項目1.3 獲取數據請求1.3.1 動態路由參數一、初識Flask 1.1 Pycharm修改環境配置 file——settings——project——python Interpreter——add interpreter——add local interpreter 1.2 運行第一個fla…

word的正則替換

word查看選中了幾行 word替換掉空行 替換空行 按下 “Ctrl H” 組合鍵打開 “查找和替換” 對話框,在 “查找內容” 框中輸入 “pp”,“^p” 代表段落標記,兩個 “^p” 表示連續的兩個段落標記,即空行。在 “替換為” 框中輸入 “…

Spring Framework源碼解析——DisposableBean

版權聲明 本文原創作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl一、概述 DisposableBean 是 Spring 框架中用于定義 Bean 銷毀時回調行為的核心接口之一。它提供了一個標準化的鉤子方法 destroy(),允許 Bean 在容器關閉或作用域…

linux安裝和使用git

Linux 上安裝 Git 在 Linux 上安裝 Git,你可以按照以下步驟進行: 打開終端:打開你的 Linux 終端應用程序。通常可以通過在應用程序菜單中搜索 "Terminal" 或 "終端" 來找到它。 更新軟件包列表:運行以下命令…

數字圖像處理4

預處理——ROI——形態學處理形態學處理形態學變化只能在二值圖上處理1.腐蝕Erode對kernel映射的區域做與操作,包括自己在內如果有0則中間賦值成02.膨脹Dilate對kernel映射的區域做或操作,包括自己在內如果有1則中間賦值成13.其他操作開操作:…

Solon v3.4.3 發布(國產 Java 應用開發生態基座)

Solon 框架! Solon 是新一代,Java 企業級應用開發框架。從零開始構建(No Java-EE),有靈活的接口規范與開放生態。采用商用友好的 Apache 2.0 開源協議,是“杭州無耳科技有限公司”開源的根級項目&#xff…

Spring-Security-5.7.11升級6.5.2

1.Session Management 1.1.必須明確調用SecurityContextRepository保存SecurityContext 在Spring Security 5中,默認行為是SecurityContext使用SecurityContextPersistenceFilter自動保存到SecurityContextRepository。 //版本5.7.11 //SecurityContextPersisten…

docker下載安裝和使用(Hyper-V方式)

1.環境準備 左鍵單擊電腦左下角開始按鈕—>點擊“設置”—>搜索“Windows功能”—>啟用或關閉Windows功能—>勾選Hyper-v,啟用后電腦會重啟,安裝環境配置成功。 選擇 Hyper-v2.下載docker docker官網下載地址:https://www.docker…

【消息隊列】RabbitMQ “消息隊列模式” 以及NET8集成

在 .NET 8 中集成 RabbitMQ 消息隊列,可以使用官方推薦的 RabbitMQ.Client 庫或封裝好的 MassTransit/EasyNetQ 等高級庫。以下是 RabbitMQ 的基本集成代碼 和 常見消息模式 的實現。 RabbitMQ 本身并沒有直接支持延時消息的功能,但是可以通過一些機制來…

Docker 鏡像常見標簽(如 `標準`、`slim`、`alpine` 和 `noble`)詳細對比

以下是 Docker 鏡像常見標簽(如 標準、slim、alpine 和 noble)的詳細對比,涵蓋基礎系統、體積、適用場景及注意事項:1. 標準鏡像(無后綴) 基礎系統:完整 Linux 發行版(如 Debian、Ub…

(1-9-2)Java 工廠模式

目錄 1.設計模式與分類 2. 工廠模式 2.1 工廠模式概述 2.2 簡單工廠 2.3 學生推薦就業Demo 00.項目目錄 01. 創建抽象接口Job 02. 創建實體類 03. 創建推薦工作工廠類 04. 創建學生推薦就業客戶類 3. i18n國際化語言標題自適應 00. 實現效果 01. 創建抽象接口 02…

QT遠程開發技巧

交叉編譯時野火提供的文件 交叉編譯器 GNU官網可以下載, QT庫文件這里給的QT-everyWhere版本,是開源版本需要自行編譯。(遠程服務器通常是PC架構【AMD64】,直接apt-get install下載的qt也是Pc架構的,不能直接在板卡【ARM64】上運行,必須對源碼交叉編譯) 注意QT遵從GPL開源…

Linux操作系統從入門到實戰(十九)進程狀態

Linux操作系統從入門到實戰(十九)進程狀態前言一、什么是進程狀態二、狀態本質三、最核心的3種狀態1. 就緒狀態2. 運行狀態3. 阻塞狀態四、狀態變化的核心1/兩種資源如何影響狀態?五、操作系統怎么管理這些狀態?六、Linux里結構體…

容器技術之docker

容器技術之Docker一、什么是Docker二、為什么會出現Docker2.1 環境一致性問題2.2 虛擬化技術的局限性2.3 微服務架構的興起三、重要概念3.1 什么是鏡像3.2 什么是容器3.3 總結:3.4 Docker倉庫四、安裝Docker(Ubuntu系統下)1.卸載老的版本2.更…

數據結構與算法:樹狀數組

前言 太難了…… 一、樹狀數組使用場景 樹狀數組一般用來維護可差分的信息,比如累加和,累乘積等。舉個例子,當整個數組的累加和為sum1,一個區間內的累加和為sum2,那么除了這個區間剩下部分的累加和就是sum1-sum2&am…