Innovus中快速獲取timing path邏輯深度的golden腳本

在實際項目中我們經常會遇到一條timing path級數特別多,可能是一兩頁都翻不完。此時,我們大都需要手工去數這條path上到底有哪些是設計本身的邏輯,哪些是PR工具插入的buffer和inverter。

數字IC后端手把手培訓教程 | Clock Gating相關clock tree案例解析

如果這樣的timing path上大部分都是純邏輯單元,比如與門,或門,異步等邏輯單元,而且每部分的delay都比較正常,此時如果timing 存在violation,我們需要反饋給前端進行邏輯的優化。

如果這樣的timing path上存在較多的buffer和inverter,說明當前的timing violation主要原因并非設計本身的問題,而是后端PR階段floorplan,placement做的不合理導致的,這時候需要我們后端工程師來進一步分析解決。

今天小編分享一個自動化腳本來獲取具體timing path中的邏輯深度和buffer,inveter數量。這個proc又是一個非常好的腳本練習資源。

proc report_logic_depth {timing_path} { set total_logic_depth [get_property $timing_path num_cell_arcs] set bufinv 0 foreach_in_collection tp [get_property [get_property $timing_path timing_points] pin] { if { [get_property $tp object_type]“pin” && [sizeof_collection [filter_collection [get_cells -of_object $tp] "is_buffertrue||is_inverter==true"]]} { incr bufinv }} return [list $total_logic_depth [expr $bufinv/2]]}

Usage:
The procedure returns a list of two elements: the total logic depth and number of buffers/inverters in the path. You can use this to compute the logic depth without buffers and inverters.

Example:
set logic_depth [report_logic_depth [report_timing -from startpoint/CK -to endpoint/D -collection]]
puts “Total logic depth of path: [lindex $logic_depth 0]”
puts “Count of buf/inv in path: [lindex $logic_depth 1]”

Output:
Total logic depth of path: 35
Count of buf/inv in path: 8

這里我們拿咱們社區T12nm a55項目place的一條timing report來分析path的合理性。這是一條從reg到memory的timing path,layout路徑如下圖所示。

TSMC 12nm ananke_core  placement timing report
**【思考題】**當ananke_core的關鍵路徑出現在memory相關的路徑上,我們應該如何進一步提升電路的最高工作頻率?

innovus 119> set x [report_logic_depth [report_timing -to u_vcpu/u_cpu/u_ananke_dcu/u_ananke_dcu_rams/u_ananke_l1d_tag_dirty_rams/u_dtag_bank/A[3] -collection ]]

14 4

說明這條timing path上buffer和inverter的數量是4級,并沒有特別多。當然我們還可以把startpoint對應的reg擺放到更靠近memory的位置。

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

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

相關文章

Python爬蟲實戰:從零到一構建數據采集系統

文章目錄 前言一、準備工作1.1 環境配置1.2 選擇目標網站 二、爬蟲實現步驟2.1 獲取網頁內容2.2 解析HTML2.3 數據保存 三、完整代碼示例四、優化與擴展4.1 反爬應對策略4.2 動態頁面處理4.3 數據可視化擴展 五、注意事項六、總結互動環節 前言 在大數據時代,數據采…

SpringBoot中實現限流和熔斷功能

我們將使用Java的ScheduledExecutorService來實現一個簡單的令牌桶算法(Token Bucket Algorithm),并結合一個自定義的服務類來處理第三方API調用。 1. 創建限流器 首先,創建一個簡單的限流器類: import java.util.concurrent.*;public class SimpleRateLimiter {

如何使用Python快速開發一個帶管理系統界面的網站-解析方案

如果你想用 Python 開發一個 管理系統界面 的網站,并且希望界面美觀,可以考慮以下幾個框架和庫: 1. Streamlit(快速、簡潔) 適合:數據分析、儀表盤、內部管理系統特點: 寫法簡單,類…

Git常見命令--助力開發

git常見命令: 創建初始化倉庫: git 將文件提交到暫存區 git add 文件名 將文件提交到工作區 git commit -m "注釋(例如這是發行的版本1)" 文件名 查看狀態 如果暫存區沒有文件被提交顯示: $ git status On…

Java 前后端時間格式轉換

在 Web 開發里,時間格式處理既常見又關鍵。由于前端和后端對時間的表示、處理方式存在差異,熟練掌握時間格式的轉換方法就顯得尤為重要。這篇文章會深入探討 Java 前后端時間格式轉換的相關知識,特別是 Java 時間轉換的多種方式,其…

MySQL要點總結一

大綱 一.InnoDB的內存結構和更新機制 二.InnoDB的存儲模型 三.并發事務原理 四.索引原理和索引優化 一.InnoDB的內存模型 1.SQL的執行流程 2.InnoDB的內存模型 3.Buffer Pool中的空閑緩存頁與free鏈表 4.Buffer Pool中的臟頁和flush鏈表 5.Buffer Pool通過LRU鏈表來淘…

常用網絡工具分析(ping,tcpdump等)

寫在前面 本文看下常用網絡工具。 1:ping 1.1:用途 用于檢驗網絡的連通性。 1.2:實戰 在Linux環境中執行:ping www.sina.com.cn: [rootlocalhost ~]# ping www.sina.com.cn PING spool.grid.sinaedge.com (111.…

基于Flask的第七次人口普查數據分析系統的設計與實現

【Flask】基于Flask的第七次人口普查數據分析系統的設計與實現(完整系統源碼開發筆記詳細部署教程)? 目錄 一、項目簡介二、項目界面展示三、項目視頻展示 一、項目簡介 基于Flask的人口普查可視化分析系統 二、項目界面展示 登錄/注冊 首頁/詳情 …

11.Docker 之分布式倉庫 Harbor

Docker 之分布式倉庫 Harbor Docker 之分布式倉庫 Harbor1. Harbor 組成2. 安裝 Harbor Docker 之分布式倉庫 Harbor Harbor 是一個用于存儲和分發 Docker 鏡像的企業級 Registry 服務器,由 VMware 開源,其通過添加一些企業必需的功能特性,例…

Zookeeper應用案例-分布式鎖-實現思路

以下是具體實現代碼 第一步:注冊鎖節點 第二步:獲取鎖節點,如果自己是最小的節點,就獲取權限 第三步:拿到鎖就開始自己的業務邏輯 第四步:業務邏輯好了就要釋放這把鎖 第五步:重新注冊監聽&…

Elasticsearch7.1.1 配置密碼和SSL證書

生成SSL證書 ./elasticsearch-certutil ca -out config/certs/elastic-certificates.p12 -pass 我這里沒有設置ssl證書密碼,如果需要設置密碼,需要再配置給elasticsearch 在之前的步驟中,如果我們對elastic-certificates.p12 文件配置了密碼…

Linux(ubuntu) GPU CUDA 構建Docker鏡像

一、創建Dockerfile FROM ubuntu:20.04#非交互式,以快速運行自動化任務或腳本,無需圖形界面 ENV DEBIAN_FRONTENDnoninteractive# 安裝基礎工具 RUN apt-get update && apt-get install -y \curl \wget \git \build-essential \software-proper…

藍橋杯——lcd顯示

一:復制文件 從官方參考文件中復制相關文件,Src中的lcd.c,Inc中的lcd.h,fonts.h復制到自己創建的文件中 二:lcd初始化 在lcd.h中找到四個初始化函數,將其寫到main文件中 三:寫lcd顯示函數 在…

【C++游戲開發-五子棋】

使用C開發五子棋游戲的詳細實現方案,涵蓋核心邏輯、界面設計和AI對戰功能: 1. 項目結構 FiveChess/ ├── include/ │ ├── Board.h // 棋盤類 │ ├── Player.h // 玩家類 │ ├── AI.h // AI類 │ └── Game.h // 游戲主邏輯 ├── src/ …

中興G7615AV5

參考文獻: G7615AV5 光貓新版固件通過修改備份配置文件固化Telnet 中興7615AV5光貓配置指南 前言:(不如咸魚30遠程全權搞定,花小錢辦大事)截至2025年2月22號,這個設備開啟Telnet只能去咸魚找別人遠程開&…

常用設計模式(embeded Qt)

常用設計模式: 觀察者模式(Observer Pattern) 應用場景:傳感器數據更新、UI狀態同步。實現方式:通過QT的信號槽機制(本質是發布-訂閱模式)自動實現。例如:connect(sensor, &Sens…

侯捷 C++ 課程學習筆記:內存管理與工具應用

一、課程基礎要求 首先強調了學習前應具備的基礎知識。這些基礎知識對于理解 C 的核心概念和編程技巧至關重要。 動態內存分配與使用: 理解動態內存分配的概念,掌握 new 和 delete 操作符的使用。 能夠動態分配和管理內存,避免內存泄漏和非…

python: SQLAlchemy (ORM) Simple example using SQLite

領域層(Domain Laye):定義了 School 實體類和 SchoolRepository 抽象基類,明確了業務實體和數據訪問的契約。 基礎設施層(Infrastructure Laye):通過 SQLAlchemy 實現了 SchoolRepository 類&am…

fastadmin實現海報批量生成、郵件批量發送

記錄一個海報批量生成、郵件批量發送功能開發,業務場景如下: 國外客戶做觀展預登記,工作人員通過后臺,批量給這些觀眾生成入場證件并發送到觀眾登記的郵箱,以方便觀眾入場時快速進場。證件信息包含入場二維碼、姓名&a…

solidity之Foundry安裝配置(一)

一門面向合約的高級編程語言,主要用來編寫以太坊只能合約。 Solidity受C語言,Python和js影響,但為編譯成為以太坊虛擬機字節碼在EVM上執行,很多特性和限制都和EVM相關。 Solidity 是靜態類型語言,支持繼承、庫、自定義…