《數字集成電路靜態時序分析基礎》筆記③

2021-03-02 摸魚範式

網絡課程《數字集成電路靜態時序分析基礎》的筆記

地址:https://www.iccollege.cn/portal/courseDetail/193.mooc

TCL的應用Synopsys Tcl

例如,統計時鐘數量,人數顯然不合理,可以用腳本語言統計,但是可以更加簡單,直接用Synopsys Tcl的拓展命令更加便捷

參考資料

TCL在EDA工具中的拓展與應用

通過對Design Object的分析,了解和學習DC獲取電路並進行解析的方法

常見指令get_ports

指令功能:返回design中對應的port object

如何查看deign當中有沒有一個叫做CLK的port?

get_ports CLK
{CLK}

如何查看deign當中有沒有一個port叫做SPI?
get—_ports SPI
No object Found!

查看design當中所有的port(*可以統配任何字符)
get_port *
{A B C D CLK OUT[0] OUT[1]}

假設port名字交{CLKA CLKB OUTA OUT B INA INB},如何得到所有C開頭的port?
get_ports C*
{CLKA CLKB}

get_cells指令功能:返回design中對應的cell的instance name object
get_cells U4
{U4}

get_cells *
{U1 U2 U3 U4}

get_cells *3
{U3}

get_nets
get_nets  INV*
{INV0 INV1}

get_nets *
{A B C D CLK BUS0 BUS1 INV0 INV1 OUT[0 OUT[1]]}

llength [get_object_name [get_nets *]]
11
sizeof_collection [get_nets *]
11

get_pins
get_pins */Z
{INV0/Z INV1/Z}

get_pins */Q*
{ENCODER/Q0 ENCODER/Q1 REGFILE/Q[1] REGFILE/Q[0]}

數據類型

數據類型:」object(對象)「及其「屬性」

說明:

任何一個屬性都可以用get_attribute得到list_attribute -class *可以得到object的屬性

Cell object

屬性ref_name:用來保存器map到reference cell名稱
get_attribute[get_cell -h U3] ref_name
{INV}

Pin object

屬性owner_net:用來保存與之相連的net的名稱
get_attribute [get_pins U2/A] owner_net
{BUS0}

Port object

get_attribute [get_ports A] direction
{in}
get_attribute [get_ports OUT[1]] direction
{out}

Net object

get_attribute [gets_nets INV0]
{INV0}
get_object_name [get_nets INV0]
{INV0}
get_attribute INV0 full_name
Error:No attribute found

理解屬性以後,就可以完成更多的任務:

get_* -f:-f這個option可以用來過濾屬性,以得到我們想要的object
get_ports * -f "direction==in"
{A B C D CLK}

get_pins * -f "direction==out"
{U1/Q0 U1/Q1 U2/Z U3/Z REGFILE/Q[0] REGFIEL/Q[1]}

get_cells * -f "ref_name==INV"
{U2 U3}

如何的得到電路中所有的inverter,那麼應該輸入什麼樣的腳本?
1.直接使用Synopsys TCL指令
get_buffers -inverter
2.人工拓展TCL指令
get_inverters

使用TCL語言控制設計EDA工具

講述一個簡單的、入門級的Synopsys DesignComplier自動化方案,供初學者參考,感興趣的同學可以對該方案進行優化升級

特點

自動化電路綜合平臺只需要用戶將待綜合的設計與庫文件放入一個文件加,修改與帶綜合設計對象有關的環境變量參數,在命令窗喚醒DC的指令,即自動化地完成綜合過程,並得到綜合後的網表文件和所需報告

運行流程:

#!/bin/csh -f
# 清除之前的文檔
\rm -rf *.log *svf alib* reports log work
# 新建文件夾
mkdir reports work
# 啟動DC並運行top.tcl
dc_shell-xg-t -32bit -f ./top.tcl

建立reports與work兩個文件夾。reports文件夾存放報告,work存放文檔和腳本top.tcl按先後順序啟動子腳本,最總生成script.tclDC讀取script.tcl中的約束,最總完成綜合,並將所有報告寫入reports文件夾中

top.tcl腳本運行機制:

set_library.tcl:生成設定庫文件中的search path的約束read_design.tcl:生成讀入設計文件的約束create_clock.tcl:生成時鐘源相關的約束set_cons.tcl:生成保存門級網表、各種reports文件的約束

注意:

庫文件、代碼、時鐘、復位、輸入輸出等均根據代碼自動進行匹配,並生成相應的約束最終所有約束都被寫入到script.tcl中,供DC讀取,完成最終的邏輯綜合過程代碼讀入約束生成

工作流程:

設計文件通常使用verilog文件,所以拓展名通常為v,所以先將變量extension設為v調用filelist.tcl腳本,將所有拓展名為v的文件的文件路徑輸出到一個名為v_list的文檔打開v_list文檔,根據文件的內容讀入設計文件的指令輸出道道script.tcl腳本

set extension v
source[file join $::script_path test/filelist.tcl]
#調用filelist.tcl腳本
set des[open[file join $::script_path test/work/v—list]r]
set design [gets $des] #打開vlist文檔
for{}{$design!=""}{set design [gets $des]}{
puts $script [format "read_file -format verilog %s"$deslgn]
#輸出讀入設計文件指令
}
puts $scnpt[format "current_design %s" $top]
#輸出設置頂層設計指令

代碼filelist生成模塊filelist.tcl

功能:便利目標文件下所有文件,並將拓展名(.v)符合要求的文件完成路徑輸出到指定的文檔,最終形成DC讀取verilog代碼的約束,寫入script.tcl中

工作流程:

判斷當前目錄下的文件拓展名是否與設置的變量extension一直,如果一致,就將該文件路徑輸出到指定的文件

proc FindFile{myDirresult}{
if([catch {cd $WDir} err]}{
puts $result $err
return}
foreach myfile [glob-nocomplam *]{
cd $myDir #切換到對應路徑
if{[string equal $myfile ""]}{
return} #如果是空文件夾就返回
set fullfile [file join $myDir $myfile]
if{[file isdirectory $myfile]}{
FindFile $fullfile $result #如果有下一級路徑則遞歸調用本函數
}elseif{[string equal [file extension $fullfile] [format ".%s" $::extension]]){#判斷擴展名是否與要求一致
puts $result $fullfile}}}

時鐘約束生成子模塊

功能和流程:

首先調用parameter.tcl腳本,讀取其中用戶對時鐘源指定的參數,如時鐘周期 等;調用find_clk.tcl腳本,該腳本會將搜索頂層設計中的所有的clk埠,並將所有搜索結果輸出到一個名為clk_list的文檔;打開clk_list檔,將對時鐘埠施加約束的指令輸出到script.tcl腳本。

source [file join $::script_path test/findclk.tcl]
#調用find_clk.tcl腳本

set a [open [file join $::script_path test/work/clk_list] r]
#打開v_list文檔

set b [gets $a]
set result [open[file join $::script_path test/work/script.tcl]

#DC時鐘約束
for {} {$b!=""}{set b [gets $a]}{
puts $result [format "create_clock -name \"clock\" -period %u -waveform {0 %d}{ %s }" $::clk_source[expr $::clk_source/2]$b]
#將生成時鐘源的指令輸出到scnpt.tcl腳本
puts $result [format "set_dont_touch_network \[get_ports%s\]"$b]
#對時鐘網絡設置don't touch
puts $result [format "set_drive 0 \[get_ports%s\]"$b]
#設置時鐘埠驅動為無窮大
puts $result [format "set_ideal_network \[get_ports%s\]"$b]
#設置時鐘端為理想網線
}
close $result

匹配時鐘埠子模塊

功能:搜索代碼中所有的時鐘埠,將結果輸出到work文件夾下的clk_list文檔

工作流程

打開v-list文檔,在其中找到頂層設計的路徑,並打開設計文件;並將匹配到的時鐘埠的埠名輸出到work文件夾下的clk_list文檔

for {} {[eof $designfile]==0}{set fdesign [gets $designfile]}{
if{[regexp{input.*} $fdesign a]}{
#利用正則表達式匹配到聲明輸入埠那一行
if{[regexp {[^,( ]*clk[^,;]*}$a rport]}{
#利用正則表達式在那一行匹配後綴為clk的埠
puts $fport $rport
#將匹配到的端囗名輸出到clk_list文檔
}
}
}

最終,所有的約束都被寫入了script.tcl中。script.tcl腳本完全由自動化電路綜合平臺生成,並非人工編寫;在自動化電路綜合平臺運行後,由頂層腳本調用各子模塊腳本生成該腳本。生成該腳本後,由頂層腳本調用該腳本,由此實現對設計的綜合。子模塊腳本生成該腳本。生成該腳本後,由頂層腳本調用該腳本,由此實現對設計的綜合。

路科驗證V2課程大升級啦,升級後的V2pro,不僅保留了原本V2的所有內容,還添加了關於vim、linux、DVT的操作教程,以及寄存器模型自動化,更有定製的個性項目,為你的簡歷添磚加瓦。如果想要學習SV和UVM,想要入門或者轉行驗證,路科驗證V2pro不容錯過!如果對課程有興趣可以後臺聯繫我,或者掃描下面二維碼報名,都可以獲得優惠!

相關焦點

  • 靜態時序工程師,面試必知知識點
    靜態時序分析在電路時序快速、準確的測量中扮演了重要角色,它使用了簡化的模型,而且它有限地考慮了信號之間的邏輯互動,所以靜態時序分析能夠更快速地完成任務。靜態時序分析可以在不進行動態仿真的情況下確定電路是否滿足時序約束。
  • FFT處理器寄生參數提取和靜態時序分析
    摘要:本文在簡要介紹寄生參數提取工具Star-RCXT和靜態時序分析工具PrimeTime的基礎上,對已通過物理驗證工具Calibre DRC和LVS的FFT處理器版圖用Star-RCXT工具進行了基於CCI的寄生參數提取,得到內部互連網絡的詳細寄生電容和電阻值。最後,用 PrimeTime工具進行了精確的版圖時序分析。
  • 從靜態時序分析到SDRAM時序收斂(上篇)
    下面我們進入正題,今天我們講時序本文引用地址:http://www.eepw.com.cn/article/278905.htm  一、從靜態時序分析說起  我理解的靜態時序分析,就是我們在不加激勵的情況下,通過對電路進行時序的延遲計算,預計電路的工作流程,對電路提出我們需要的一些約束條件
  • 【日更計劃005】數字IC基礎題
    不想錯過我的推送,記得右上角-查看公眾號-設為星標,摘下星星送給我歡迎大家加入2022屆數字IC交流群,QQ群號 1060380138
  • 約束、時序分析的概念介紹
    (註:以下主要設計時序約束)   A 時序約束的概念和基本策略   時序約束主要包括周期約束(FFS到FFS,即觸發器到觸發器)和偏移約束(IPAD到FFS、FFS到OPAD)以及靜態路徑約束(IPAD到OPAD)等3種。通過附加約束條件可以使綜合布線工具調整映射和布局布線過程,使設計達到時序要求。
  • 詳細乾貨講解:集成電路產業中版圖設計
    文末強調版圖設計與系統晶片、MCU晶片與模擬和混合信號設計以及與射頻晶片設計的緊密相關和依賴性,重點說明版圖設計在集成電路產業中的重要角色。 1. 集成電路的版圖設計方法 集成電路設計方法涉及面廣,內容複雜,其中版圖設計是集成電路物理實現的基礎技術。
  • 《數字集成電路設計》正式出版啦
    甚至傳統數字電路教學採用的大量固定邏輯功能的常規中小規模數字集成電路晶片(74 系列)都早已經被產業淘汰,晶片已經逐步停產,目前和未來市場上很難買到相關的原裝晶片進行實驗。但卻仍然用於教學,這讓學生出來怎麼去日新月異的工作崗位呢?
  • 靜態時序分析聖經翻譯計劃10——第五章:延遲計算 (下)
    取決於所執行的時序分析的類型(最大或最小時序路徑分析),這些壓擺值中的任何一個都可能是正確的。進行最大時序路徑分析時有兩種可能性:● 最差的壓擺傳播(Worst slew propagation):此模式選擇要在合併點傳播最壞的壓擺,這將是圖5-10(a)中的壓擺。
  • VerilogHDL概述與數字IC設計流程
    HDL語言採用自頂向下的數字電路設計方法。③HDL語言是並行處理的,具有同一時刻執行多任務的能力,這個和高級設計語言串行執行的特徵是不同的。④HDL語言具有時序的概念。一般的高級語言沒有時序的概念,但在硬體電路中從輸入到輸出是有延時存在的,為了描述這一特徵,需要引入時延的概念。因此HDL語言不僅可以描述電路的功能,還可以描述電路的時序。
  • 時序分析的一些基本概念
    時序分析時FPGA設計中永恆的話題,也是FPGA開發人員設計進階的必由之路。慢慢來,先介紹時序分析中的一些基本概念。本文引用地址:http://www.eepw.com.cn/article/201808/385204.htm1.
  • 乾貨| FPGA開發設計必經之路:時序分析
    時序分析是FPGA設計中永恆的話題,也是FPGA開發人員設計進階的必由之路。慢慢來,先介紹時序分析中的一些基本概念。DCD會吞噬大量的時序裕量,造成數位訊號的失真,使過零區間偏離理想的位置。DCD通常是由信號的上升沿和下降沿之間時序不同而造成的。扇出(fan-out)是定義單個邏輯門能夠驅動的數位訊號輸入最大量的術語。大多數TTL邏輯門能夠為10個其他數字門或驅動器提供信號。因而,一個典型的TTL邏輯門有10個扇出信號。
  • 時序分析中的一些基本概念
    時序分析時FPGA設計中永恆的話題,也是FPGA開發人員設計進階的必由之路。慢慢來,先介紹時序分析中的一些基本概念。本文引用地址:http://www.eepw.com.cn/article/201710/365595.htm1.
  • 數字電路之數字集成電路IC
    在上一期《數字電路之如雷貫耳的「邏輯電路」》中我們了解了基本的邏輯電路,本期將講解數字IC的基礎和組合電路。本文引用地址:http://www.eepw.com.cn/article/201710/368897.htm  什麼是數字集成電路IC?
  • 新思科技實現雲上高度可擴展的時序signoff新流程
    ., 納斯達克股票代碼:SNPS)今天宣布,與臺積公司(TSMC)和微軟的合作已經實現了一項突破性的、可高度擴展的雲上時序signoff流程。三方通過長達數月的深度合作加速下一代片上系統(SoC)的signoff。通過在微軟Azure平臺上使用新思科技PrimeTime®靜態時序分析和StarRC™寄生提取,該流程可顯著提高吞吐量。
  • 亞閾值數字標準單元庫設計
    >  賀雅娟 (1978-),女,副教授,研究方向:專用集成電路與系統、超低壓超低功耗數字集成電路設計等。  大規模數字集成電路是基於標準單元庫或者門陣列完成設計,要實現大規模亞閾值數字電路的實現,我就需要建立亞閾值數字標準單元庫與亞閾值SRAM,針對亞閾值電壓,對基本的邏輯門(與門、或門、非門、選擇器、加法器等)以及SRAM單元進行設計和優化,使其在亞閾值下達到最優性能,進而提升整體電路性能。
  • 4大數字IC設計崗位,怎麼選?
    >數字IC設計基本流程:設計—驗證—RTL freeze—綜合—STA(靜態時序分析)—DFT—PR(自動布局布線)—Design sign-off當然,有時候前端設計裡,也需要做一些DFT的工作。③Debug:創建測試用例,跑仿真。④support數字前端設計工程師和數字驗證工程師的核心能力:
  • 新思科技、臺積公司和微軟Azure攜手,實現雲上高度可擴展的時序...
    和StarRC提取,可顯著提高在多場景、分布式處理運行中吞吐量 通過雲計算資源進行多場景分析與優化節省大量成本 合著的白皮書已在臺積公司網站開放下載,助力客戶運行雲上時序signoff流程新思科技(Synopsys, Inc., 納斯達克股票代碼:SNPS)今天宣布,與臺積公司(TSMC)和微軟的合作已經實現了一項突破性的