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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

逻辑综合工具DesignCompiler使用教程

發(fā)布時(shí)間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 逻辑综合工具DesignCompiler使用教程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

邏輯綜合工具Design Compiler使用教程

圖形界面design vision操作示例

邏輯綜合主要是將HDL語言描述的電路轉(zhuǎn)換為工藝庫器件構(gòu)成的網(wǎng)表的過程。綜合工具目前比較主流的是synopsys公司Design Compiler,我們在設(shè)計(jì)實(shí)踐過程中采用這一工具。Design compiler有兩種工作模式,一種是tcl模式,另一種為圖形模式。在設(shè)計(jì)中為增強(qiáng)直觀性,采用圖形界面design vision。TCL命令行模式可在設(shè)計(jì)過程中摸索熟悉,并使之成為習(xí)慣。tcl模式在啟動工具之前,準(zhǔn)備工作有四項(xiàng):設(shè)計(jì)的HDL源文件、采用的工藝庫文件、設(shè)計(jì)的約束文件、工具的啟動文件。圖形界面模式最少需要前兩項(xiàng),這里不作多說明。

1. 啟動工具

登陸Linux之后進(jìn)入的目錄即是用戶的家目錄,在家目錄下建立dcLab作為本次實(shí)驗(yàn)dc的操作主目錄。在dcLab目錄下,建立設(shè)計(jì)存放目錄如source、約束文件目錄如constrn、輸出網(wǎng)表文件目錄ntlst、報(bào)告輸出目錄rpt、log文件目錄log、dc啟動目錄work,等等。
實(shí)驗(yàn)室中的工作站存放有umc公司和tsmc公司的0.18um標(biāo)準(zhǔn)單元庫的所有文件,存放在目錄:/usr/eda/designKit/下面,設(shè)計(jì)過程中需要查找的話注意路徑與示例中的圖片上所示路徑稍有不同。
Design compiler工具在工作站中已經(jīng)安裝完畢,且用戶的環(huán)境變量和license也已設(shè)置完成,登錄之后直接啟動工具即可。如果打開終端之后無法啟動工具,可能就是license沒有啟動,需要首先采用命令:start_slic啟動license,然后design vision才能正常開啟與工作。建立相關(guān)的工程目錄之后,進(jìn)入本次實(shí)驗(yàn)的工作目錄:~/dcLab/work后,采用啟動命令:design_vision&,啟動工具后相應(yīng)的界面如下圖1所示。
在該界面中,最上方為菜單項(xiàng)和工具欄,用于設(shè)計(jì)過程中的各項(xiàng)操作。當(dāng)窗口中選中不同的對象時(shí),不同的菜單項(xiàng)和工具項(xiàng)會被激活。工具欄下面就是主窗口,用于顯示不同的設(shè)計(jì)對象、各種報(bào)告等。再下方為log/history窗口,log
頁面顯示操作響應(yīng),history界面回顯菜單操作相應(yīng)的tcl命令,操作過程中一定要對照查看,盡快熟悉tcl模式。最下方有design_vision-xg-t提示的就是tcl命令輸入的位置,可以嘗試將history頁面的回顯鍵入,查看響應(yīng)。

圖1 design vision啟動界面
啟動工具之后就可以工作了,主要可分為四部分內(nèi)容:對工程進(jìn)行啟動項(xiàng)設(shè)置、對設(shè)計(jì)進(jìn)行面積/功耗/時(shí)序/環(huán)境/drc等約束、對設(shè)計(jì)進(jìn)行綜合、查看報(bào)告并保存結(jié)果。

2. 配置工程啟動文件

工具啟動之后,需要設(shè)置相應(yīng)的工程啟動文件,用于設(shè)定搜索路徑、相關(guān)庫文件等內(nèi)容,對應(yīng)工作目錄下的.synopsys_dc.setup文件(該文件應(yīng)該位于工具啟動目錄~/dcLab/work下,dc啟動過程中會自動讀取該文件的內(nèi)容用來配置工程啟動項(xiàng)。
我們此時(shí)假設(shè)該文件不存在,當(dāng)設(shè)置完成之后,可以將之保存,以后重啟工具就可以不必設(shè)置了)。選擇菜單項(xiàng)File—>Setup…,出現(xiàn)Application Setup窗口,如下圖2所示。啟動項(xiàng)相關(guān)的內(nèi)容就在該表項(xiàng)中設(shè)置,用戶可以直接填入相關(guān)內(nèi)容,或者點(diǎn)擊各欄右側(cè)的查找按鈕(標(biāo)有…的小框)找到相應(yīng)路徑或
者文件的位置。

圖2 setup設(shè)置窗口
在該窗口中可以看到打有紅星()標(biāo)號的項(xiàng)目是必須設(shè)置的,但是一般填上四項(xiàng):search path、Link library、Target library*、symbol library*。首先來設(shè)置搜索路徑,該項(xiàng)主要用來指明設(shè)計(jì)中工具所需文件的路徑,應(yīng)該包括源代碼文件路徑、工藝庫文件(如果源代碼有pad,則也應(yīng)該包括pad庫文件所在路徑)、工具提供的中間庫文件(gtech、designWare)路徑、以及操作過程中需要讀取的中間文件所在路徑等。點(diǎn)擊search path條目右側(cè)的查找按鈕,就會出現(xiàn)set search path 表格窗口,如下圖3所示。

圖3 search path設(shè)置窗口
表格窗口已有的幾項(xiàng)保留不動,其中第一項(xiàng)的點(diǎn)符號(.)表示當(dāng)前工作目錄,其余3項(xiàng)為工具提供的通用(gtech)庫、ip單元庫(design ware)以及符號(symbol)庫和仿真模型庫所在位置。點(diǎn)擊Add…按鈕,添加搜索路徑(注意
工作站上的軟件工具、庫文件均存放在/usr/eda目錄下,與本例位置/opt/eda/稍有不同),如下圖4所示。

圖4 添加search path窗口
選擇標(biāo)準(zhǔn)單元工藝庫所在的目錄,點(diǎn)擊OK完成一條搜索路徑的設(shè)置,回到圖3 界面,此時(shí)表格窗口中會多出一項(xiàng)剛剛添加的路徑。同樣,點(diǎn)擊Add…按鈕添加其余的搜索路徑:symbol所在路徑、設(shè)計(jì)代碼所在路徑、約束文件所在路徑、io工藝庫所在路徑等。完成路徑設(shè)置后,圖3 所示的search path設(shè)置窗口會變成如下圖5所示。點(diǎn)擊OK按鈕完成set search path工作。

圖5 完成search path的表格窗口
以上工作對應(yīng)的tcl命令:set search_path “path”,其中path內(nèi)容就是上
述的路徑(如”…/code …/constrn /usr/eda/designKit/umn18/sc-x/synopsys”)。
完成搜索路徑的設(shè)置后,要進(jìn)行工藝庫相關(guān)的文件配置。其實(shí)配置好搜索路徑后可以直接將相應(yīng)的庫文件寫入對應(yīng)的表格項(xiàng),同一項(xiàng)中各文件中間用空格分開即可。這里為了熟悉工具,仍然逐項(xiàng)查找填寫。在圖2界面中,點(diǎn)擊Link library右側(cè)的查找按鈕,出現(xiàn)Set Link Libraries的表格窗口,如下圖6所示。

圖6 鏈接庫的表格窗口
在上圖中第一項(xiàng)不要改動,表示的是鏈接對象為當(dāng)前內(nèi)存。同上面設(shè)置search path一樣,點(diǎn)擊Add…按鈕,查找?guī)煳募?#xff08;注意工作站上的路徑位置與本例不同),出現(xiàn)的界面如下圖7所示。

圖7 鏈接庫的查找與選擇
選中庫文件后(注意link library和后面的target library采用的是synopsys的數(shù)據(jù)庫文件格式db或者ddc,該文件是二進(jìn)制格式;欲了解其內(nèi)容可以察看
相對應(yīng)的lib文本文件,試著讀一下會了解更多),點(diǎn)擊open按鈕,回到圖6的界面,其中增加了一項(xiàng)剛剛選擇的庫文件,如下圖8所示的界面,至此完成一個庫文件的設(shè)定。

圖8 選定slow.db鏈接庫
在標(biāo)準(zhǔn)單元庫中選定slow.db和fast.db兩個庫文件,io單元庫中也一樣。一般在邏輯綜合中最大延時(shí)是最重要的約束,因此也可以直接采用slow或者worst case庫,而不標(biāo)明fast或者best case庫。本例中將其加上,主要用于對照時(shí)序報(bào)告察看二者的區(qū)別。
設(shè)置完成鏈接庫之后,形成如下圖9所示的表格圖窗,其中最后一項(xiàng)為工具自帶的design ware IP庫,用于復(fù)雜功能邏輯優(yōu)化(?)。

圖9 鏈接庫文件選定圖窗
因?yàn)樵谇懊嬖O(shè)置了search path,其中包括了上述工藝相關(guān)庫的路徑,因此在設(shè)置link library和后面的target library的時(shí)候,可以直接寫上庫的文件名稱而略
去路徑,工具可以自動完成相應(yīng)文件的搜索,去除路徑之后的鏈接庫文件如下圖10所示。

圖10 無路徑的鏈接庫文件選定圖窗
在上圖10或者圖9中,點(diǎn)擊OK按鈕完成連接庫的設(shè)定。設(shè)置鏈接庫的操作可以直接采用tcl命令set link_library ”library” 來完成,其中引號中的就是剛才設(shè)定的幾個庫文件,用空格分開,簡單吧。
目標(biāo)庫的設(shè)定(target library)同link library操作一樣,而且除了沒有表示內(nèi)存的星號(*)之外,內(nèi)容也是完全一樣的。選定或者填寫結(jié)果如下圖11所示。

圖11 目標(biāo)庫的設(shè)定圖窗
目標(biāo)庫設(shè)置采用的tcl命令為:set target_library “l(fā)ib”,其中l(wèi)ib的內(nèi)容即為剛才設(shè)置的幾個庫文件(例“fast.db slow.db”)。
然后再進(jìn)行符號(symbol)庫的設(shè)定,符號庫主要是用來在gui窗口中查看電路時(shí)使用的,表示基本單元器件的視圖。同target library一樣,也可以直接寫
入庫名,忽略路徑。因該umc庫中沒有symbol文件,故采用工具中自帶的symbol庫文件。選擇窗口、庫名稱見下圖12。

圖12 目標(biāo)庫的設(shè)定圖窗
符號庫設(shè)置的tcl命令為:set symbol_library “l(fā)ib”。在圖12中點(diǎn)擊ok按鈕,完成設(shè)置symbol庫。
至此setup內(nèi)容已經(jīng)完成設(shè)置,結(jié)果如下圖13所示。

圖13 setup設(shè)定窗口
在圖13中,點(diǎn)擊OK按鈕,完成啟動項(xiàng)內(nèi)容的設(shè)置。隨后該設(shè)置可以在菜單命令中導(dǎo)出:File—>Save info—>Design Setup,將該文件保存為設(shè)計(jì)啟動配置文件.synopsy_dc.setup,直接放在work目錄下。下次再在該目錄下啟動工具的時(shí)候就不必重新配置,點(diǎn)擊File—>Setup…,就可以看到表格中的各項(xiàng)已經(jīng)配置完成了。

3.設(shè)計(jì)讀入

完成啟動項(xiàng)配置后就要將設(shè)計(jì)倒入工具,選擇菜單命令:File—>Read…,出現(xiàn)Read Design窗口。查找設(shè)計(jì)代碼所在路徑,選中所有需要的設(shè)計(jì)代碼,如下圖14所示。點(diǎn)擊Open按鈕,完成代碼讀入。

圖14 setup設(shè)定窗口
在讀入代碼的過程中,注意dv下方的log窗口回顯與報(bào)告,如下圖15。同時(shí)點(diǎn)選history鍵,查看相應(yīng)的tcl命令:read(或者read_verilog)。

圖15 讀入設(shè)計(jì)時(shí)的窗口
讀入設(shè)計(jì)之后,當(dāng)前的設(shè)計(jì)會是讀如過程中最后一個代碼文件對應(yīng)的設(shè)計(jì),
要將頂層設(shè)計(jì)設(shè)為當(dāng)前設(shè)計(jì)。在dv主界面的工具欄下方的工具條下下拉選項(xiàng)選中、設(shè)置當(dāng)前設(shè)計(jì),我們這里是dcLabCore。同樣注意history欄中的tcl命令:set current_design dcLabCore,記住對應(yīng)的操作。

圖16 當(dāng)前設(shè)計(jì)設(shè)定
完成當(dāng)前設(shè)計(jì)的設(shè)定后,以后的操作就是針對該設(shè)計(jì)進(jìn)行的。下面要做的就是將設(shè)計(jì)與庫鏈接起來。選擇菜單命令:File—>Link Design。出現(xiàn)Link Design窗口,如下圖所示。注意Search path與Link library兩項(xiàng)與前述啟動項(xiàng)中的設(shè)置是否一致。

圖17 Link Design窗口
點(diǎn)擊OK按鈕完成設(shè)計(jì)與庫的鏈接。此時(shí)要注意log窗口的鏈接過程的操作回顯,及時(shí)修改錯誤與告警。
完成鏈接后要對設(shè)計(jì)進(jìn)行檢查。選擇菜單命令:Design—>Check Design,出現(xiàn)如下窗口,點(diǎn)擊OK按鈕,對設(shè)計(jì)進(jìn)行檢查。注意log欄中的報(bào)告。

圖18 Check Design窗口
至此,讀入設(shè)計(jì)的工作完成。在這過程中,源代碼中的各種與綜合相關(guān)的問題都會被檢查出來,注意隨時(shí)查看報(bào)告并修改直到被綜合器接受。下面就要對設(shè)計(jì)進(jìn)行約束了。

4.設(shè)計(jì)約束與編譯

在dv的主界面中,因?yàn)橐呀?jīng)讀入設(shè)計(jì),此時(shí)很多菜單和工具欄已經(jīng)激活。在圖16中,先選中Logical Hierarchy中的dcLabCore項(xiàng),點(diǎn)擊工具欄中的Create Symbol View(或者菜單項(xiàng)Schematic—>New Symbol View 選項(xiàng)),出現(xiàn)當(dāng)前設(shè)計(jì)的symbol,我們的約束就要在當(dāng)前設(shè)計(jì)中添加。
這里之所以先創(chuàng)建一個symbol,因?yàn)楹芏嘣O(shè)計(jì)的約束,比如創(chuàng)建時(shí)鐘(create clock)、輸入輸出延時(shí)(set input_delay/output_delay)、驅(qū)動與負(fù)載(set drive/load)、時(shí)鐘無關(guān)路徑(set false_path)等等,都是針對設(shè)計(jì)的端口的(port),圖形化的
界面操作起來容易些。得到的symbol如下圖19所示。

圖19 創(chuàng)建當(dāng)前設(shè)計(jì)的symbol
首先創(chuàng)建時(shí)鐘,在symbol中選中clk_cal端口,然后選擇菜單項(xiàng)Attributes—> Specify Clock…,注意灰色的Port name項(xiàng)應(yīng)該為clk_cal;如果不是,不要關(guān)閉Specify Clock窗口,再在symbol上選中該端口,就會發(fā)現(xiàn)port name相應(yīng)改變。
時(shí)鐘的約束這里設(shè)定主要有四項(xiàng),一項(xiàng)是時(shí)鐘的名稱,要方便易記、意義明確就好;二項(xiàng)是時(shí)鐘的周期,由頻率決定,這里clk_cal為50M,故周期20ns(時(shí)間單位在庫中定義);三項(xiàng)是時(shí)鐘的波形,定義一個時(shí)鐘周期內(nèi)高電平所處的時(shí)間區(qū)間;四項(xiàng)是將時(shí)鐘網(wǎng)絡(luò)設(shè)定為don’t touch,也就是在綜合的過程中,時(shí)鐘線上不要添加包括驅(qū)動buffer在內(nèi)的任何器件。時(shí)鐘信號clk_cal的選擇與填寫過
程如下圖20所示。

圖20 創(chuàng)建時(shí)鐘clk_cal
注意在Don’t touch network選項(xiàng)前打勾。點(diǎn)擊OK按鈕完成時(shí)鐘clk_cal的創(chuàng)建。時(shí)鐘的參數(shù)這里就不解釋了。同樣的方法創(chuàng)建時(shí)鐘clk_cd,如下圖。

圖21 創(chuàng)建時(shí)鐘clk_cd
時(shí)鐘信號clk_cd頻率80M,故此周期12ns,同clk_cal一樣,將上升沿設(shè)定在波形中間。以上操作對應(yīng)tcl命令:create_clock。
創(chuàng)建完成時(shí)鐘之后,就要進(jìn)行輸入(set input_delay)和輸出延時(shí)(output_delay)的約束,因?yàn)樵摷s束是相對于時(shí)鐘信號的。在symbol界面中,按住鍵盤ctr鍵,用鼠標(biāo)選擇addi1/addi2/multi1/multi2/cacul_ind端口(因?yàn)檫@些端口是和同一時(shí)鐘clk_cal綁定的,設(shè)計(jì)中輸入由時(shí)鐘clk_cal驅(qū)動的觸發(fā)器中),選擇Attributes—> Operating Environment —>Input Delay菜單項(xiàng),填寫、選中相應(yīng)的項(xiàng)目。如下圖所示。

圖21 創(chuàng)建相對時(shí)鐘clk_cal的輸入延時(shí)
通常輸入延時(shí)計(jì)算為時(shí)鐘周期的60%,也就是說留出60%的外部裕量。注意圖中Relative to clock項(xiàng)的時(shí)鐘選擇要與設(shè)計(jì)中的定義一致。
同樣完成相對于時(shí)鐘信號clk_cd的端口codei、codec_ind的輸入延時(shí),選擇、填寫后的界面如下圖21所示。上述操作對應(yīng)的tcl命令為:set input_delay “port”,
其中port即為相應(yīng)于時(shí)鐘的端口。

圖21 創(chuàng)建相對時(shí)鐘clk_cd的輸入延時(shí)
完成輸入延時(shí)之后進(jìn)行輸出延時(shí)的設(shè)定(output_delay)。選中symbol中的端口caculo(它是由時(shí)鐘信號clk_cal驅(qū)動輸出),選擇菜單項(xiàng)Attributes —> Operating Environment —>Output Delay,填寫、選擇如下圖的內(nèi)容,點(diǎn)擊Apply按鈕完成設(shè)置。

圖21 創(chuàng)建相對時(shí)鐘clk_cal的輸出延時(shí)
同樣完成輸出信號decdo的輸出延時(shí)的設(shè)定,注意該信號是和時(shí)鐘clk_cd綁定的。以上操作定應(yīng)tcl命令:set output_delay。
現(xiàn)在除了輸入信號sub_en和輸出信號sub_ovfl以外,所有的信號(除rstn)都進(jìn)行了約束。現(xiàn)在來進(jìn)行余下這兩個端口信號的約束。在symbol中選中這兩個端口,選擇菜單項(xiàng)Attributes—>Optimization Constraints—>Timing Constraints,出現(xiàn)Timing Constraints窗口,如下圖所示選擇填寫,完成約束。對應(yīng)的tcl命令為:set max_delay。

圖22 約束輸入與輸出間的最大延時(shí)
這里采用set max_delay的方法是因?yàn)檩斎攵丝谛盘杝ub_en到輸出信號端口sub_ovfl之間沒有時(shí)序邏輯,只有組合邏輯,因此要約束輸入端口到輸出端口之間的最大延時(shí)(最小延時(shí)除非有需要,否則可以不加以約束)。
時(shí)序約束中還需要將無關(guān)路徑區(qū)分開來,采用set_false_path的方法。所謂無關(guān)路徑,就是告訴綜合器某兩條或者多條路徑之間沒有時(shí)序關(guān)系,可以不必理會、優(yōu)化這些路徑間的電路。設(shè)計(jì)中。sub_en端口的信號送入純組合邏輯,而且與時(shí)鐘clk_cal和clk_cd不存在相位依賴關(guān)系,故此這里設(shè)置為false path。在symbol界面中選定sub_en端口和clk_cal、clk_cd端口,選擇菜單項(xiàng):Attributes
—>Optimization Directive—>Timing Paths,出現(xiàn)如下窗口,From欄中留有sub_en項(xiàng),To欄中留有clk_cal和clk_cd兩項(xiàng),選中False path項(xiàng)。

圖23 無關(guān)路徑設(shè)置
下面來設(shè)置驅(qū)動與負(fù)載(drive/load)。首先選中symbol中的輸入信號端口,如下圖所示。選擇菜單項(xiàng)Attributes—> Operating Environment—>Drive Strength,出現(xiàn)Drive Strength窗口。按照下圖填寫、選擇相應(yīng)的內(nèi)容,完成驅(qū)動設(shè)置。

圖24-a 配置輸入驅(qū)動

圖24-b 配置輸入驅(qū)動
在symbol界面選中三個輸出端口,選擇菜單項(xiàng)Attributes—> Operating Environment—>Load,出現(xiàn)Load窗口。注意選中三個輸出信號端口。在Capacitive load欄中填容性負(fù)載數(shù)值。

圖25 輸出負(fù)載約束
以上操作對應(yīng)tcl命令:set drive/load。
現(xiàn)在來設(shè)置操作環(huán)境(Operating Conditions)的設(shè)置。選擇菜單項(xiàng)Attributes—> Operating Environment—> Operating Conditions,出現(xiàn)如下窗口。

圖26 操作環(huán)境的設(shè)置
按照圖示選擇相應(yīng)的內(nèi)容,按按鈕OK完成操作環(huán)境的設(shè)置。對應(yīng)的tcl命令為:set operating_conditions。
同樣的,完成wire Load的設(shè)置:選擇Attributes—> Operating Environment—> Wire Load菜單項(xiàng),選擇umc18_wl20模型。對應(yīng)的tcl命令:set wire_load。

圖27 線載模型的設(shè)置
下面進(jìn)行design rule的設(shè)定,主要是fanout和transition。選擇菜單項(xiàng)Attributes—> Optimization Constraints—> Design Constraints,出現(xiàn)下圖所示界面,只填寫圖示的兩項(xiàng)即可。對應(yīng)的tcl命令:set max_fanout/transition。

圖28 fanout與transition的設(shè)置
至此,設(shè)計(jì)相關(guān)約束設(shè)置完成,可以對設(shè)計(jì)進(jìn)行綜合了。選擇菜單項(xiàng)Design—> Compile Design,出現(xiàn)設(shè)計(jì)編譯窗口,如圖選擇,點(diǎn)擊OK按鈕編譯設(shè)計(jì)。

圖29 設(shè)計(jì)編譯界面
編譯的過程會隨著設(shè)計(jì)的復(fù)雜變慢,編譯的過程中注意log窗口的輸出。完成編譯后,需要查看各種報(bào)告。

5.查看報(bào)告與設(shè)計(jì)輸出

很多時(shí)候綜合并不是一次就通過的,在這過程中有可能時(shí)序不滿足約束要求,或者約束設(shè)置的不合理,或者設(shè)計(jì)本身有問題等,需要查看報(bào)告、調(diào)試。這里最重要的一個報(bào)告是約束報(bào)告。選擇菜單項(xiàng)Design—>Report Constraints,出現(xiàn)如下圖30所示的界面。

圖30 約束報(bào)告選擇界面
勾選想要查看的內(nèi)容,點(diǎn)擊OK按鈕,可以看到與約束相關(guān)的報(bào)告。簡單的一個報(bào)告如下圖31所示。
查看報(bào)告的選項(xiàng)大多位于菜單Design和Timing之下。在完成綜合之后,如果Report Constraints沒有發(fā)現(xiàn)錯誤和不期望的告警,可以嘗試將這些報(bào)告項(xiàng)輸出,具體查看一下,非常有助于了解設(shè)計(jì)、熟悉工具。同時(shí)可以對照庫中的.lib
文件查看一些參數(shù)。

圖31 約束報(bào)告結(jié)果
如果沒有報(bào)告錯誤,就可以將設(shè)計(jì)保存下來。選擇菜單項(xiàng)File—>Save as,可以將設(shè)計(jì)保存為各種格式。

圖32 保存設(shè)計(jì)界面
同樣可以保存啟動項(xiàng)文件和約束文件:選擇菜單項(xiàng)File—>Save info—> Constraints/Design setup,保存相應(yīng)文件。
6..synopsys_dc.setup文件與dcLab.con文件
a. 啟動項(xiàng)文件
文件.synopsys_dc.setup應(yīng)位于當(dāng)前的工作目錄中,Linux/Unix下為隱含文件。這里先給出一典型的.synopsys_dc.setup文件,如下所示。

文件.synopsys_dc.setup第一項(xiàng)內(nèi)容設(shè)定工具工作過程中需要搜索的路徑位置(search_path),一般包括源代碼的目錄、庫文件(工藝庫模型文件、symbol文件)的目錄、約束/運(yùn)行腳本的目錄、某些中間文件的目錄以及在工具的安裝目錄配置的啟動搜索目錄,包括gtech庫等目錄。
文件.synopsys_dc.setup第二項(xiàng)內(nèi)容一般用來設(shè)定目標(biāo)庫(target_library),也就是工藝庫的名稱,綜合過程中工具會自動在搜索目錄中尋找,來完成綜合工作。第三項(xiàng)內(nèi)容一般用來設(shè)定鏈接庫(link_library),用于解析設(shè)計(jì)電路中的最小顆粒單元,其中,*,用來表示內(nèi)存。
文件.synopsys_dc.setup第四項(xiàng)內(nèi)容用來設(shè)定symbol庫,也就是design vision
可以看到的網(wǎng)表圖形。其余的內(nèi)容還可以包括命名規(guī)則、別名定義等,可以任意設(shè)定,示例中沒有一一給出。
b.設(shè)計(jì)的約束文件
約束文件主要用于優(yōu)化設(shè)計(jì)電路的,主要內(nèi)容有:讀入/分析源文件、設(shè)定設(shè)計(jì)的工作條件/環(huán)境/設(shè)計(jì)規(guī)則、時(shí)序條件、面積約束、綜合策略等。
首先是讀入源代碼,也就是HDL文本描述的設(shè)計(jì)文件,此處不用制定目錄,design compiler會在搜索目錄($search_path)中搜索。tcl語句如下:

read_verilog {dcLabCore.v dcLabTop.v iopads.v} 讀入設(shè)計(jì)原文件后,一般設(shè)定當(dāng)前設(shè)計(jì),這樣約束條件才可有針對性施加: current_design dcLabCore 設(shè)定當(dāng)前設(shè)計(jì)后,要完成鏈接,也就是將設(shè)計(jì)與庫鏈接起來,用于映射過程中搜尋相應(yīng)的單元,完成綜合。tcl語句: link 檢查設(shè)計(jì),主要是檢查完成轉(zhuǎn)換(translate)的設(shè)計(jì): check_design。然后設(shè)定輸出網(wǎng)表的格式規(guī)則,輸出未優(yōu)化的設(shè)計(jì): set verilogout_no_tri true change_names -rule verilog -hier write -f ddc -hier –out ../output/dcLabCore.ddc 然后對設(shè)計(jì)設(shè)定時(shí)序約束,這是最重要的一項(xiàng)約束,用于設(shè)定設(shè)計(jì)的工作速度的。針對不同的設(shè)計(jì)部分,有不同的約束方法。這里假設(shè)設(shè)計(jì)為全同步設(shè)計(jì),單時(shí)鐘工作,復(fù)雜情況參考design compiler的手冊即可。以下語句設(shè)定時(shí)鐘及屬性、輸入信號的時(shí)間裕量: create_clock –name clk_cal -period 20 [get_ports clk_cal] #名稱clk_cal,對應(yīng)端口clk_cal,50M工作頻率 set_clock_uncertainty -setup 0.2 [get_clocks clk_cal] #時(shí)鐘的不確定時(shí)間 set_clock_latency -source -max 0.3 [get_clocks clk_cal]#時(shí)鐘輸入延時(shí) set_clock_latency -max 0.1 [get_clocks clk_cal]#時(shí)鐘延時(shí) set_clock_transition -max 0.2 [get_clocks clk_cal]#時(shí)鐘上升/下降時(shí)間 set_dont_touch_network [get_ports "clk* rstn"] #不對時(shí)鐘復(fù)位信號優(yōu)化 set_ideal_network [get_ports "clk* rstn"] #延時(shí)分析時(shí)認(rèn)為時(shí)鐘復(fù)位無延時(shí) set_input_delay -max 12 -clock clk_cal [get_ports "add* mult*"]#輸入信號裕量 set_output_delay -max 12 -clock clk_cal [get_ports "caculo"] #輸出時(shí)間裕量 完成時(shí)序約束后,要對設(shè)計(jì)的工作環(huán)境、設(shè)計(jì)規(guī)則等進(jìn)行約束,如下約束語句: set_wire_load_mode top #設(shè)定線載模型的模式 set_wire_load_model -library slow -name umc_wl20 -max #線載模型,要粗略綜合一下估出面積,再設(shè)定 以下是設(shè)計(jì)規(guī)則的約束: set_driving_cell -lib_cell FFEDQHD4X -pin Q [get_ports all_inputs] #驅(qū)動能力的約束 set max_cap [expr [load_of slow/AND2HD4XSPG/A] * 5] set_load [expr 3 * $max_cap] [all_outputs] #設(shè)計(jì)負(fù)載設(shè)定 set_fanout_load 10 [all_outputs] #扇出負(fù)載 然后是綜合的策略,簡單的設(shè)計(jì)比較容易,這里不展開: compile -map_effort medium -incremental_mapping 輸出綜合報(bào)告、輸出綜合網(wǎng)表、綜合數(shù)據(jù)以及標(biāo)準(zhǔn)延時(shí)文件: rc > log/rc.log #時(shí)序報(bào)告 write -f verilog -hier -out output/dcLabTop.sv #輸出網(wǎng)表 write -f ddc -hier -out output/dcLabTop.ddc#綜合數(shù)據(jù)文件 write_sdf -version 2.1 mapped/light_controller.sdf #標(biāo)準(zhǔn)延時(shí)文件

上述內(nèi)容為約束文件主要內(nèi)容,同學(xué)們可以講示例中的約束保存下來自己細(xì)看一下。

總結(jié)

以上是生活随笔為你收集整理的逻辑综合工具DesignCompiler使用教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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