日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DC使用教程系列1-.synopsys.dc.setup的建立

發(fā)布時(shí)間:2025/4/5 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DC使用教程系列1-.synopsys.dc.setup的建立 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 0、引言
  • 1、如何理解DC所做的工作
  • 2、 .synopsys.dc.setup的建立
  • 3、啟動(dòng)文件的知識(shí)講解:
  • 4、啟動(dòng)DC吧
  • 5、再看看workshop吧
  • 6、圖形界面來使用

0、引言

本博客是通過小破站,經(jīng)典的DC視頻教程,相信不少人應(yīng)該看過,這里僅僅是針對(duì)個(gè)人菜雞的水平,對(duì)其做的筆記。本人其實(shí)已經(jīng)看過了5遍左右。剛開始時(shí)候,本人菜雞,沒聽明白,隨著工作的深入,逐漸才體會(huì)得到,如果加上了自己的理解,我感覺這樣才算是真看懂了。如果我的博客僅僅是原話的抄錄,我覺得毫無意義,所以我加上了自己的理解,希望讀者能領(lǐng)會(huì),指正。轉(zhuǎn)載務(wù)必注明本人博客!
作者:ciscomonkey

1、如何理解DC所做的工作

DC的任務(wù)是綜合,灣灣人稱之為合成,綜合的概念是通過RTL、單元庫、約束,吐出netlist,由于每一個(gè)單元庫都有各自的特性極限,如果你的約束不合理,如果你的代碼不可綜合,所以不是每一個(gè)RTL的想法都能夠跑出netlist。
?基本的綜合可以用一個(gè)等式來表達(dá):synthesis = translation + logic optimization + gate mapping




如上圖所示,db代表是給工具讀的,而lib是給人讀的,其中1p98v,代表1.98v,ff代表快速模型。

2、 .synopsys.dc.setup的建立

我們知道安裝目錄,用戶目錄,以及工程目錄下都可以有這個(gè)文件,工程目錄下面的優(yōu)先級(jí)是最高的,也是我們經(jīng)常拿來改動(dòng)的。這個(gè)工程目錄下面肯定是空的,需要我們自己手寫,所以需要我們一次寫好模板,以后拿來用即可。有5個(gè)文件夾,mapped是存放綜合完成之后的netlist文件的目錄,這些文件是經(jīng)過綜合庫映射的。Unmaped是存放綜合時(shí)沒有經(jīng)過工藝庫映射所得到的文件目錄。
Report是存放報(bào)告(比如時(shí)序報(bào)告、面積報(bào)告、DC啟動(dòng)報(bào)告等)的目錄。Script是存放約束腳本的目錄。Work就是啟動(dòng)DC的目錄了,在這個(gè)目錄里面,我們要進(jìn)行創(chuàng)建.synopsys_dc.setup文件并且編寫這個(gè)文件,將這個(gè)文件放置在work的目錄下面。
參考博客如下:
https://www.cnblogs.com/iclearner/p/6621967.html
模板如下,我個(gè)人的模板如下所示:

echo "set your project work path" set SYN_ROOT_PATH /rhys_li/dc_training/my_dc_lab/lab1echo "set your rtl document path" set RTL_PATH $SYN_ROOT_PATH/rtlecho "set your config document path" set CONFIG_PATH $SYN_ROOT_PATH/configecho "set your scripts document path" set SCRIPT_PATH $SYN_ROOT_PATH/scriptsecho "set your unmapped document path" set UNMAPPED_PATH $SYN_ROOT_PATH/unmappedecho "set your mapped document path" set MAPPED_PATH $SYN_ROOT_PATH/mappedecho "set your report document path" set REPORT_PATH $SYN_ROOT_PATH/reportecho "set your work document path" set WORK_PATH $SYN_ROOT_PATH/work#set your DC software path set DC_PATH /opt/Synopsys/Synplify2015echo "====================Define your library directory=================="#Maps a design library to a UNIX directory. This directory is used to store intermediate representations of designs. define_design_lib work -path $WORK_PATHecho "set your symbol library" set SYMBOL_PATH /opt/Foundary_Library/TSMC90/aci/sc-x/symbols/synopsysecho "set your lib path" set LIB_PATH /opt/Foundary_Library/TSMC90/aci/sc-x/synopsysecho "*******************system variables settings***********************"echo "************library path automatic search settings*****************"set_app_var search_path [list . $search_path \$LIB_PATH \$SYMBOL_PATH \$RTL_PATH \$SCRIPT_PATH \${DC_PATH}/libraries/syn \] # This virables are automatically set if you perform ultra command. # Specify for use during optimization # You do not need to be anything to access the standard library. # DC is setup to use this lirary by defaultecho "************DC' own library path*********************" set_app_var synthetic_library [list dw_foundation.sldb standard.sldb]echo "***********Target library name *********" set_app_var target_library [list slow.db ]echo "***********Link library name************" set_app_var link_library [list * ${target_library} dw_foundation.sldb]echo "***********Symbol Library name**********" ] set_app_var symbol_library [list tsmc090.sdb]#Source the naming rulesecho "*****************************************************" echo "***************End of Load .synopsys_dc.setup********" echo "*****************************************************"echo "******************************************************" echo "*************************author:ciscomonkey***********"

3、啟動(dòng)文件的知識(shí)講解:

個(gè)人理解。
target library: 綜合完成后,生成的網(wǎng)標(biāo)里面的所有基本cell需要的 library. 如:AND/XOR/DFF 等。

官方解釋:The target_library specifies the name of the technology library that corresponds to the library whose cells the designers want DC to infer and finally map to.

Target library代表你設(shè)計(jì)所用到的目標(biāo)庫,是DC在mapping時(shí)將設(shè)計(jì)映射到特定工藝所使用的庫,就是使用目標(biāo)庫中的元件綜合成設(shè)計(jì)的門級(jí)網(wǎng)表,也就是standard cell的庫。通常在綜合時(shí),我們都用SS corner下的standard cell庫作為target library(也就是選擇slow模型下的db), 然后DC會(huì)在這些library中去做綜合以及優(yōu)化。通俗點(diǎn)說,只有作綜合用的庫放在target_library,像ROM,PAD,IO等不用綜合的單元,就不要放到target_library中了。

link library:

官方解釋:The link_library defines the name of the library that refers to the library of cells used solely for reference。

link library代表設(shè)計(jì)所用到的鏈接庫。是提供門級(jí)網(wǎng)表實(shí)例化的基本單元,也就是門級(jí)網(wǎng)表實(shí)例化的元件或單元都來自該庫。鏈接庫定義為standard cell的庫文件加上所有IO pad ,memory, IP等宏單元庫文件。通常link library會(huì)包含target library

target library與link library的區(qū)別:
也就是說target library是map時(shí)從其中選用stdcell的那個(gè)庫,link library是包括了target library,同時(shí)還包括了設(shè)計(jì)中用到的IP等宏模塊。

本人ciscomonkey博主的理解:target library是給DC讓其translate這些std的cell,從而形成netlist,而那些不需要translate的,不需要映射的如IP,memory,PAD等IP,就不必給target library了。

現(xiàn)在我的整個(gè)設(shè)計(jì)的各個(gè)部分都已經(jīng)完成了映射,包括標(biāo)準(zhǔn)的logic 、IO 、IP等,現(xiàn)在我需要將這張已經(jīng)完成映射的netlist給DC做一個(gè)鏈接,也就是將映射好的每一個(gè)部分整合起來,因此,需要都填在link library里面。

本博主的另一種理解是:link library就相當(dāng)于一個(gè)菜單,有沒有inv呀,有沒有mux呀,相當(dāng)于一個(gè)人點(diǎn)菜一樣,把自己需要的東西都寫上去,對(duì)于這些inv mux就去target library里面去找。在找之前先去內(nèi)存中去找,所以link library里面需要先加*,然后再去target library里面做一個(gè)map的動(dòng)作,最后將PAD cell 和IP 和基本的logic cell 進(jìn)行l(wèi)ink起來。也就是說link library相當(dāng)于做一個(gè)鏈接的作用,他負(fù)責(zé)將那些已經(jīng)映射好的netlist進(jìn)行一個(gè)頂層的鏈接。

synthetic library: 這個(gè)是綜合工具理解你的function block (如RTL code中的 + - / * 等)需要的library.
所以對(duì)于synopsys DC來說,synthetic library一般只有:dw_foundation.sldb.
默認(rèn)的synthetic library一般有:dw_foundation.sldb. 在design compiler的安裝目錄下可以找到,還有一個(gè)是standard.sldb 這個(gè)是默認(rèn)加載的。


https://my.oschina.net/u/4579537/blog/4349836
網(wǎng)上的應(yīng)該也是照著ug來的


最后網(wǎng)上的還出現(xiàn)了一個(gè)hs_name_rules.v 這個(gè)我沒用到過,說是對(duì)verilog的命名規(guī)則的檢查。

另外,set與set_app_var有什么區(qū)別呢
如果定義了一個(gè)不是DC的內(nèi)部變量使用set_app_var就會(huì)報(bào)錯(cuò)。
因此為了風(fēng)險(xiǎn)性,建議,如果你是在定義DC的內(nèi)部變量,比如說search_path的話,需要使用set_app_var更加安全,否則我可能錯(cuò)誤set targrt_library 這樣也不會(huì)報(bào)錯(cuò)。

此外,對(duì)于search_path變量來說就是,DC會(huì)在search_path中挨著一個(gè)一個(gè)地根據(jù)這個(gè)路徑來尋找后面設(shè)置的.db文件等。
所以在后面設(shè)置DC內(nèi)部變量的時(shí)候,只需要寫上文件名 xxx.db xxx.sldb等等即可。

為什么set_app_var search_path [list . $search_path。。。。。
里面還有一個(gè)search_path,因?yàn)槔锩孢@個(gè)search_path指的是根目錄文件里面的.synopsys_dc_setup里面的默認(rèn)的search_path。前面已經(jīng)說過這個(gè)work目錄下面的啟動(dòng)文件只是將里面的變量的優(yōu)先級(jí)調(diào)到最高。如果不寫的話,這個(gè)search_path就會(huì)完全覆蓋掉根目錄下面的search_path,所以你還可以看到有人用的是追加列表append而不是set。
什么是Design Ware?
DesignWare為synopsys自己開發(fā)的一些軟IP,其中包括加法器,乘法器,比較器,FIFO等IP,根據(jù)約束,DC會(huì)直接調(diào)用相應(yīng)適合的IP核。

define_design_lib指定中間文件存放到work目錄,否則默認(rèn)會(huì)存放到當(dāng)前目錄,文件多了看起來比較混亂。另外,建議使用current_design命令顯式指定當(dāng)前模塊。
如果我使用如下,這個(gè)啟動(dòng)文件,我是在my_li的文件夾下面,是沒問題的。也就是說文件夾,是指我的工作文件夾,也就是我的啟動(dòng)環(huán)境的文件夾。通常來說就為work。如果你在work路徑下,然而你這里的filename為比如一個(gè)my_li,就會(huì)報(bào)錯(cuò),你就寫你的當(dāng)前啟動(dòng)環(huán)境所在的文件夾就可以了。

4、啟動(dòng)DC吧

這里,我們現(xiàn)在已經(jīng)配置好的啟動(dòng)文件,你現(xiàn)在準(zhǔn)備好手中的RTL,隨便用一個(gè)你以前寫過的不帶IP核的RTL好了(以后會(huì)介紹如何用IP核)。除了約束我們現(xiàn)在不用管,腳本也不用管。我們先把DC跑起來吧。
在work目錄下面,我們啟動(dòng)之前寫好的啟動(dòng)文件。

我們使用了
dc_shell | tee start.log
從而讓這份啟動(dòng)日志也打印在start.log中



如下圖所示我們使用read_verilog命令,值得注意的是如果我們用*.v是不可以的,這里由于只有一個(gè)文件,我還是展示一下列表的使用,另外,由于我們?cè)趕earch_path里面指定了路徑,因此就會(huì)在里面去搜索,所以,這里只用寫.v的文件名就可以了

接著做一個(gè)link
link沒有參數(shù)



詳見syn2 link的用法,建議這里可以看一下,能對(duì)DC有進(jìn)一步的理解。

使用list_libs 查看當(dāng)前內(nèi)存中所有使用的庫


使用list_designs來查看當(dāng)前的設(shè)計(jì)有幾個(gè)module。下圖在TOP.v文件里面有4個(gè)module,其中TOP.V是頂層的module。
其中*代表頂層的current_design
也可以直接使用current_design 來查看

5、再看看workshop吧

按理說,前面已經(jīng)把啟動(dòng)文件已經(jīng)寫好了,這里就應(yīng)該收尾了,想必你也一樣曾在eetop上下載過官方的workshop吧,剛開始后的時(shí)候,我也不知索然,因?yàn)榘l(fā)現(xiàn)視頻里面講解的.synopsys_dc.setup根本不一樣。
但是現(xiàn)在你要是已經(jīng)明白了剛才我介紹的那些命令,應(yīng)該知道了。
  A路徑變量的定義我們會(huì)放在common_setup.tcl中(一般是用set設(shè)置的變量)。
  B庫變量的指定我們一般放在dc_setup.tcl這個(gè)文件中,這里的庫變量一般是用set_app_var進(jìn)行指定,此外指定的是具體的某一個(gè)庫,而不僅僅是路徑,DC會(huì)從search_path里面尋找到這些庫。
  C.synopsys_dc.setup文件中,僅僅包含source xxx.tcl這些內(nèi)容,比如source common_setup.tcl ;source dc_setup.tcl 以及source其他的設(shè)置內(nèi)容。
  所以官方是按照這樣設(shè)計(jì)的。其實(shí)也沒關(guān)系,我們?cè)賮砜纯垂俜绞窃鯓訂?dòng)的。

我文中參考了如下兩篇文章,在此表示感謝:
https://www.cnblogs.com/IClearner/p/6618992.html
https://www.cnblogs.com/IClearner/p/6621967.html

首先來看一下common_setup.tcl
看不懂的怎么辦,看syn2手冊(cè)進(jìn)行命令查詢,文章末尾我會(huì)放上DC相關(guān)的手冊(cè)

########################################################################################## # User-defined variables for logical library setup in dc_setup.tcl ##########################################################################################set ADDITIONAL_SEARCH_PATH "../ref/libs/mw_lib/sc/LM __________ _________ " ;# Directories containing logical libraries,# logical design and script files.set TARGET_LIBRARY_FILES ___________________ ;# Logical technology library fileset SYMBOL_LIBRARY_FILES ___________________ ;# Symbol library file########################################################################################## # User-defined variables for physical library setup in dc_setup.tcl ##########################################################################################set MW_DESIGN_LIB ______________ ;# User-defined Milkyway design library nameset MW_REFERENCE_LIB_DIRS ../ref/libs/mw_lib/_______ ;# Milkyway reference librariesset TECH_FILE ../ref/libs/tech/cb13_6m.tf ;# Milkyway technology fileset TLUPLUS_MAX_FILE ../ref/libs/tlup/cb13_6m_max.tluplus ;# Max TLUPlus fileset TLUPLUS_MIN_FILE ../ref/libs/tlup/cb13_6m_min.tluplus ;# Min TLUPlus fileset MAP_FILE ../ref/libs/tlup/cb13_6m.map ;# Mapping file for TLUplus

官方給出的common_setup.tcl如上圖所示,現(xiàn)在就是填空,首先把search_path給填上。


這里有一些milkway的東西,我暫時(shí)不懂。不過看樣子應(yīng)該是官方提到的Create_mw_lib 主要使用DC的物理綜合的時(shí)候,需要生成物理庫。在后續(xù)進(jìn)行介紹。

所以,這里我就直接把填好的兩份tcl粘貼出來了。

########################################################################################## # User-defined variables for logical library setup in dc_setup.tcl ##########################################################################################set ADDITIONAL_SEARCH_PATH "../ref/libs/mw_lib/sc/LM ./rtl ./scripts " ;# Directories containing logical libraries,# logical design and script files.set TARGET_LIBRARY_FILES sc_max.db ;# Logical technology library fileset SYMBOL_LIBRARY_FILES sc.sdb ;# Symbol library file########################################################################################## # User-defined variables for physical library setup in dc_setup.tcl ##########################################################################################set MW_DESIGN_LIB TOP_LIB ; # User-defined Milkyway design library nameset MW_REFERENCE_LIB_DIRS ../ref/libs/mw_lib/sc ;# Milkyway reference librariesset TECH_FILE ../ref/libs/tech/cb13_6m.tf ;# Milkyway technology fileset TLUPLUS_MAX_FILE ../ref/libs/tlup/cb13_6m_max.tluplus ;# Max TLUPlus fileset TLUPLUS_MIN_FILE ../ref/libs/tlup/cb13_6m_min.tluplus ;# Min TLUPlus fileset MAP_FILE ../ref/libs/tlup/cb13_6m.map ;# Mapping file for TLUplus ###################################################################### # Logical Library Settings ###################################################################### set_app_var search_path "$search_path $ADDITIONAL_SEARCH_PATH" set_app_var target_library $TARGET_LIBRARY_FILES set_app_var link_library "* $target_library" set_app_var symbol_library $SYMBOL_LIBRARY_FILES###################################################################### # Physical Library Settings ######################################################################set_app_var mw_reference_library $MW_REFERENCE_LIB_DIRS set_app_var mw_design_library $MW_DESIGN_LIBcreate_mw_lib -technology $TECH_FILE \-mw_reference_library $mw_reference_library \$mw_design_library open_mw_lib $mw_design_library set_tlu_plus_files -max_tluplus $TLUPLUS_MAX_FILE \-tech2itf_map $MAP_FILE # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # History # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -history keep 200# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Aliases # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -alias h history alias rc "report_constraint -all_violators" alias rt report_timing alias ra report_area alias rq report_qor alias page_on {set sh_enable_page_mode true} alias page_off {set sh_enable_page_mode false} alias fr "remove_design -designs"# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Other lab specific settings # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -set_app_var alib_library_analysis_path .. ; # Common ALIB library location define_design_lib WORK -path ./work ; # Location of "analyze"d files suppress_message "LINT-99 CMD-041 TFCHK-049 TFCHK-050 TFCHK-055 TFCHK-084 MWLIBP-300 MWLIBP-301 MWLIBP-324" ; # Messages irrelevant to lab# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Additional Setup Files # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -source common_setup.tcl source dc_setup.tcl# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Verify Settings # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -echo "\n==================================================================" echo "\nLibrary Settings:" echo "search_path: $search_path" echo "link_library: $link_library" echo "target_library: $target_library" echo "symbol_library: $symbol_library" echo "mw_reference_library: $mw_reference_library" echo "mw_design_library: $mw_design_library" echo "\n=================================================================="echo "\nI am ready...\n"

現(xiàn)在我把啟動(dòng)環(huán)境換成官方的。

由于用到了物理綜合的命令,所以必須要使用dc_shell -to 模式來啟動(dòng)dc。

這里,我個(gè)人對(duì)create dw方面的,也就是物理綜合方面的東西,還欠缺,所以在我自己寫的啟動(dòng)環(huán)境中,沒有設(shè)置這方面的內(nèi)容,官方設(shè)置了。后面,如果我搞懂了,我再來進(jìn)行補(bǔ)充。

6、圖形界面來使用

如下博文,對(duì)圖形界面有介紹。
https://blog.csdn.net/qq_40223983/article/details/96426938

總結(jié)

以上是生活随笔為你收集整理的DC使用教程系列1-.synopsys.dc.setup的建立的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。