邏輯綜合——優化電路

對進行時序路徑、工作環境、設計規則等進行約束完成之后,DC就可以進行綜合、優化時序了,DC在優化過程中主要的策略將在下面進行說明。然而,當普通模式下不能進行優化的,就需要我們進行編寫腳本來改進DC的優化來達到時序要求。

DC進行優化的目的是權衡timing和area約束,滿足用戶對功能、時序和面積的要求。

DC優化有很多策略,包括對數據通道的優化,對狀態機的優化,對布爾邏輯的優化等。

一、creating group path

默認情況下,DC根據不同的時鐘劃分path group。但如果設計中存在復雜的時鐘,復雜的時序要求或者復雜的約束,用戶可以將所關心的幾條關鍵路徑劃分為一個path group,指定DC專注于改組路徑的優化。也可以對不同的路徑組設置不同的權重,權重值從0到100。

默認情況下,DC只優化關鍵路徑,即負SLACK最差的路徑,如果在關鍵路徑附近指定一個范圍,那么DC會優化指定范圍內的路徑。由于優化的路徑越多,DC運行時間越長。一般范圍設定為時鐘周期的10%。

二、high-effort compile

high-effort compile能夠讓DC更加努力地達到所約束地目標,該措施在關鍵路徑上進行重新綜合,同時對關鍵路徑周圍地邏輯進行了restructure和remap。

high-effort指令有兩種:

  • compile ultra command:附帶兩個option,這兩個option分別包含一些腳本,提供額外地時序和面積地優化。option為:area_high_effort_script option和timing_high_effort_script option。
  • compile command:附帶一個option,map_effort -high option。

High effort對關鍵路徑地優化包括邏輯復制(Logic Duplication)和映射為大扇入的門單元(Mapping to Wide_Fanin Gates)。

此外,incremental指令也可以提高電路優化的性能。如果電路在compile之后不滿足約束,通過incremental也許能夠達到要求的結果。incremental指令只進行門級的優化,而不是邏輯功能級,會導致大量的計算時間,但是對于將最差的負slack減為0,這是最有效的辦法。?

為了在使用incremental指令時,減少DC的運算時間,可以將滿足時序要求的模塊設置為dont_touch屬性。

dont_touch noncritical_blocks

對于有很多違例邏輯模塊的設計,通常incremental最有效。

compile -map_effort high -incremental_mapping

? 三、gate-level optimizations

?

四、Automatic Ungrouping

Ungrouping 取消設計中的層次,移除層次的邊界,并且允許DC Ultra通過減少邏輯級數改進時序,以及用過共享資源減小面積。常見指令如下:compile_ultra,compile -auto_ungroup

compile會提供兩種策略,包括:delay-based auto-ungrouping,?area-based auto-ungrouping。

五、adaptive retiming

如果在邏輯綜合過程中發現設計的流水線劃分不平衡,就可以使用retiming策略,在時序路徑上前后移動寄存器,以提高電路的時序性能

由上圖所示,retiming可能會對面積產生影響,則如果有違例的路徑,則調整寄存器的位置;如果沒有違例的路徑,則可以用來減少寄存器的數量。

DC在移動寄存器的優化中,只能對有相同約束的寄存器進行調整,如果兩個寄存器約束不同,則不能一起移動。移動后的寄存器在網表中的名字通常帶有一個R的前綴和一個系列號。

retiming的策略不能和compile_ultra的以下option一起使用:-incremental -top -only_design_rule

六、High-level optimization and datapath optimization

七、verifying functional equivalence

?

?

?

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

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

相關文章

DOM包裹wrap()方法

DOM包裹wrap()方法 如果要將元素用其他元素包裹起來,也就是給它增加一個父元素,針對這樣的處理,JQuery提供了一個wrap方法 .wrap( wrappingElement ):在集合中匹配的每個元素周圍包裹一個HTML結構 簡單的看一段代碼: &…

usleep函數

usleep功能把進程掛起一段時間, 單位是微秒(百萬分之一秒); 頭文件: unistd.h 語法: void usleep(int micro_seconds); 返回值: 無 內容說明:本函數可暫時使程序停止執行。參數 micro_seconds 為要暫停的微…

限制Xamarin獲取圖片的大小

限制Xamarin獲取圖片的大小在App開發中,經常會使用網絡圖片。因為這樣不僅可以減少App的大小,還可以動態更新圖片。但是手機使用網絡環境千差萬別。當網絡環境不是理想的情況下,加載網絡圖片就是一個棘手的問題了。為了避免長時間加載圖片影響…

Linux應用開發自學之路

前言 在 「關于我 」那篇博文里,朋友們應該知道了我不是科班出身,是由機械強行轉行到Linux應用開發方向。下面我就詳細向大家介紹自己這一路上的轉行歷程,希望對大家有所啟發。 我是學機械專業的,對于機械專業我還是很感興趣&…

Verdi 基礎教程

一、Verdi 功能 查看設計debugVerdi不能自己產生波形 二、Verdi使用流程 1、Verdi環境配置 .bashrc中配置 export Verdi_HOME$Synopsys_Dir/Verdi2015 #export NOVAS_HOME$Synopsys_Dir/Verdi2015 export PATH$Verdi_HOME/bin:$PATH export LD_LIBRARY_PATH"/opt/Syno…

ida和idr機制分析(盤符分配機制)

內核ida和idr機制分析(盤符分配機制) ida和idr的機制在我個人看來,是內核管理整數資源的一種方法。在內核中,許多地方都用到了該結構(例如class的id,disk的id),更直觀的說&#xff0…

MIPI CSI-2學習

CSI(Camera Serial Interface)定義了攝像頭外設與主機控制器之間的接口,旨在確定攝像頭與主機控制器在移動應用中的標準。 關鍵詞描述 縮寫解釋CCICamera Control Interface(物理層組件,通常使用I2C或I3C進行通信&…

internet網絡 checksum校驗和計算方法

http://hi.baidu.com/%CE%C4%B3%AD%B9%AB/blog/item/7d9a4e08f82d72b32eddd4cb.html

最有效的創建大數據模型的6個技巧

數據建模是一門復雜的科學,涉及組織企業的數據以適應業務流程的需求。它需要設計邏輯關系,以便數據可以相互關聯,并支持業務。然后將邏輯設計轉換成物理模型,該物理模型由存儲數據的存儲設備、數據庫和文件組成。 歷史上&#xff…

【轉】Castle Windsor之組件注冊

【轉】Castle Windsor之組件注冊 注冊方式較多&#xff0c;大體有這么幾種&#xff0c;學習得比較粗淺&#xff0c;先記錄&#xff1a;1、逐個注冊組件即對每個接口通過代碼指定其實現類&#xff0c;代碼&#xff1a;container.Register(Component.For<IMyService>() //接…

Verilog 補碼加法溢出判斷及處理

補碼加法運算溢出判斷三種方法&#xff1a; 一、符號位判斷 Xf、Yf分別兩個數的符號位,Zf為運算結果符號位。 當Xf Yf 0&#xff08;兩數同為正&#xff09;,而Zf1(結果為負)時,負溢出&#xff1b;當出現Xf Yf 1&#xff08;兩數同為負&#xff09;,而Zf0&#xff08;結果為…

Android繪制(三):Path結合屬性動畫, 讓圖標動起來!

Android繪制(一):來用shape繪出想要的圖形吧! Android繪制(二):來用Path繪出想要的圖形吧! 目錄 效果圖前言繪制屬性動畫最后效果圖 不廢話, 直接上效果圖, 感興趣再看下去. 其實不單單是效果圖演示的, 運用熟練的話各種圖標之間都是可以切換的. 前言 之前的文章也說了, path還…

{{view 視圖層}}微信小程序

微信小程序 view 視圖層//自學 1.數據綁定 數據綁定WXML中的動態數據均來自對應Page的data。 簡單綁定數據綁定使用"Mustache"語法&#xff08;雙大括號&#xff09;將變量包起來&#xff0c;可以作用于&#xff1a; 內容<view> {{ message }} </view>Pa…

CMOS圖像傳感器——概述

一、概述 圖像傳感器是把光學圖像信息轉換成電信號的器件。圖像傳感器是隨著電視技術在20世紀30年代發展起來的,早期圖像傳感器技術的最重要貢獻在于建立了掃描(Scan)的概念,用掃描的方法把二維空間平面上的光電信息離散成行(Line)和幀(Frame),然后按空間順序讀出形成…

nand flash壞塊管理OOB,BBT,ECC

0.NAND的操作管理方式 NAND FLASH的管理方式&#xff1a;以三星FLASH為例&#xff0c;一片Nand flash為一個設備(device)&#xff0c;1 (Device) xxxx (Blocks)&#xff0c;1 (Block) xxxx (Pages)&#xff0c;1(Page) 528 (Bytes) 數據塊大小(512Bytes) OOB 塊大小(16Byte…

小白學git2

你已經在本地創建了一個Git倉庫后&#xff0c;又想在GitHub創建一個Git倉庫&#xff0c;并且讓這兩個倉庫進行遠程同步&#xff0c;這樣&#xff0c;GitHub上的倉庫既可以作為備份&#xff0c;又可以讓其他人通過該倉庫來協作&#xff0c;真是一舉多得。 首先&#xff0c;登陸G…

[LeetCode_5] Longest Palindromic Substring

LeetCode: 5. Longest Palindromic Substring class Solution { public: //動態規劃算法string longestPalindrome(string s) {int n s.length();int longestBegin 0;int maxLen 1;bool table[1000][1000] {false};for (int i 0; i < n; i) {table[i][i] true;}//對角…

冒泡排序java

一、最簡單粗暴的排序 思想為&#xff1a;讓每一個關鍵字都和它后邊的每一個關鍵字比較&#xff0c; 如果大則交換&#xff0c;這樣第一個位置的關鍵字在一次循環后一定變為最小值。 1 package demo01;2 3 class BubbleSort01 {4 public static void main(String[] args) {…

CMOS圖像傳感器——工作原理

一、像素陣列結構 一般像素陣列是由水平方向的行( Row ) 和垂直方向的列(Column)正交排列構成的。像素排列的最基本設計原則是:攝像器件像素排列的坐標,必須在顯示的時候能夠準確地還原在圖像原來的相對位置上。在大多數情況下,每個像素中心線在行的方向和列的方向,即…