IC設(shè)計后端流程(初學必看)_第1頁
IC設(shè)計后端流程(初學必看)_第2頁
IC設(shè)計后端流程(初學必看)_第3頁
IC設(shè)計后端流程(初學必看)_第4頁
IC設(shè)計后端流程(初學必看)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上基本后端流程(漂流&雪擰)- 2010/7/3-2010/7/8 本教程將通過一個8*8的乘法器來進行一個從verilog代碼到版圖的整個流程(當然只是基本流程,因為真正一個大型的設(shè)計不是那么簡單就完成的),此教程的目的就是為了讓大家盡快了解數(shù)字IC設(shè)計的大概流程,為以后學習建立一個基礎(chǔ)。此教程只是本人探索實驗的結(jié)果,并不代表內(nèi)容都是正確的,只是為了說明大概的流程,里面一定還有很多未完善并且有錯誤的地方,我在今后的學習當中會對其逐一完善和修正。此后端流程大致包括以下內(nèi)容:1. 邏輯綜合(邏輯綜合是干嗎的就不用解釋了把?)2. 設(shè)計的形式驗證(工具formali

2、ty)形式驗證就是功能驗證,主要驗證流程中的各個階段的代碼功能是否一致,包括綜合前RTL代碼和綜合后網(wǎng)表的驗證,因為如今IC設(shè)計的規(guī)模越來越大,如果對門級網(wǎng)表進行動態(tài)仿真的話,會花費較長的時間(規(guī)模大的話甚至要數(shù)星期),這對于一個對時間要求嚴格(設(shè)計周期短)的asic設(shè)計來說是不可容忍的,而形式驗證只用幾小時即可完成一個大型的驗證。另外,因為版圖后做了時鐘樹綜合,時鐘樹的插入意味著進入布圖工具的原來的網(wǎng)表已經(jīng)被修改了,所以有必要驗證與原來的網(wǎng)表是邏輯等價的。3. 靜態(tài)時序分析(STA),某種程度上來說,STA是ASIC設(shè)計中最重要的步驟,使用primetime對整個設(shè)計布圖前的靜態(tài)時序分析,沒

3、有時序違規(guī),則進入下一步,否則重新進行綜合。(PR后也需作signoff的時序分析)4. 使用cadence公司的SOCencounter對綜合后的網(wǎng)表進行自動布局布線(APR)5. 自動布局以后得到具體的延時信息(sdf文件,由寄生RC和互聯(lián)RC所組成)反標注到網(wǎng)表,再做靜態(tài)時序分析,與綜合類似,靜態(tài)時序分析是一個迭代的過程,它與芯片布局布線的聯(lián)系非常緊密,這個操作通常是需要執(zhí)行許多次才能滿足時序需求,如果沒違規(guī),則進入下一步。6. APR后的門級功能仿真(如果需要)7. 進行DRC和LVS,如果通過,則進入下一步。8. 用abstract對此8*8乘法器進行抽取,產(chǎn)生一個lef文件,相當于

4、一個hard macro。9. 將此macro作為一個模塊在另外一個top設(shè)計中進行調(diào)用。10. 設(shè)計一個新的ASIC,第二次設(shè)計,我們需要添加PAD,因為沒有PAD,就不是一個完整的芯片,具體操作下面會說。11. 重復第4到7步1. 邏輯綜合1) 設(shè)計的8*8verilog代碼如下module mux (clk,clr,data1,data2,dataout);input clk,clr;input 7:0 data1,data2;output reg 15:0 dataout;always (posedge clk)begin if(!clr) begin dataout<=0; e

5、nd else begin dataout<=data1*data2; endendendmodule2) 綜合之前,我們要選取庫,寫好約束條件,修改dc的啟動文件synopsys_dc.setup,目標庫選擇TSMC(此設(shè)計都是用TSMC18的庫)的typical.db。(選擇max庫會比較好)Dc的命令眾多,但是最基本的命令差不多,此設(shè)計的約束文件命令如下:create_clock -period 10 get_ports clk /用于時鐘的創(chuàng)建set_clock_latency -source -max 0.2 get_ports clk /外部時鐘到core的clk連線延時se

6、t_clock_latency -max 0.1 get_ports clk /core的clk到寄存器clk端的net連線延時set_clock_uncertainty -setup 2 get_ports clk /時鐘延時的不確定性,求setup違規(guī)時會被計算進去set_clock_uncertainty hold 1 【all_clocks】set_input_delay -max 0.5 -clock clk get_ports list remove_from_coll all_inputs clk /輸入延時,外部信號到input端的連線延時set_output_delay -m

7、ax 0.5 -clock clk all_outputs /輸出延時set_driving_cell -lib_cell INVX4 all_inputs /輸入端的驅(qū)動強度set_load -pin_load 0. all_outputs /輸出端的驅(qū)動力set_wire_load_model -name tsmc18_wl10 -library typical /內(nèi)部net的連線模型set_wire_load_mode enclosed /定義建模連線負載相關(guān)模式set_max_area 0compile report_timingreport_constraint change_nam

8、es -rule verilog hierset_fix_multiple_ports_net all write -format verilog -hier -output mux.sv /輸出網(wǎng)表,自動布局布線需要write -format ddc -hier -output mux.ddc /輸出ddcwrite_sdf mux.sdf /輸出延時文件,靜態(tài)時序分析時需要write_sdc mux.sdc /輸出約束信息,自動布局布線需要3) 邏輯綜合啟動design_vision。Read->mux.v輸入約束文件。File->excute script->verti

9、.con之后會產(chǎn)生mux.sv,mux.sdc,mux.sdf,mux.ddc等文件4) 時序分析綜合以后我們需要分析一下時序,看時序是否符合我們的要求,綜合實際上是一個setup時間的滿足過程,但是我們綜合的時候,連線的負載只是庫提供的(即上面的wire_load),并不是實際的延時,所以一般做完綜合以后,時間余量(slack)應該為時鐘的30%(經(jīng)驗值),以便為后面實際布局布線留下充足的延時空間。因為如果slack太小,甚至接近于0,雖然我們看起來是沒有時序違規(guī)的,但是實際布局以后,時序肯定無法滿足。 使用report_timing命令,可以查看時序分析報告:*Report : timin

10、g -path full -delay max -max_paths 1 -sort_by groupDesign : muxVersion: D-2010.03-SP1Date : Fri Jul 2 12:29:44 2010*Operating Conditions: typical Library: typical(模型庫)Wire Load Model Mode: enclosed Startpoint: data24 (input port clocked by clk) Endpoint: dataout_reg_15_ (rising edge-triggered flip-f

11、lop clocked by clk) Path Group: clk Path Type: max Des/Clust/Port Wire Load Model Library - mux tsmc18_wl10 typical (線載模型及庫)Point Incr Path - clock clk (rise edge) 0.00 0.00 clock network delay (ideal) 0.00 0.00 input external delay 0.50 0.50 f data24 (in) 0.01 0.51 f mult_14/b4 (mux_DW_mult_uns_0)

12、0.00 0.51 f mult_14/U131/Y (INVX1) 0.54 1.05 r mult_14/U161/Y (NOR2X1) 0.14 1.18 f mult_14/U39/S (CMPR42X1) 0.68 1.87 f mult_14/U12/CO (ADDFX2) 0.32 2.19 f mult_14/U11/CO (ADDFX2) 0.23 2.42 f mult_14/U10/CO (ADDFX2) 0.23 2.65 f mult_14/U9/CO (ADDFX2) 0.23 2.88 f mult_14/U8/CO (ADDFX2) 0.23 3.10 f mu

13、lt_14/U7/CO (ADDFX2) 0.23 3.33 f mult_14/U6/CO (ADDFX2) 0.23 3.56 f mult_14/U5/CO (ADDFX2) 0.23 3.79 f mult_14/U4/CO (ADDFX2) 0.23 4.02 f mult_14/U3/CO (ADDFX2) 0.23 4.25 f mult_14/U2/CO (ADDFX2) 0.22 4.47 f mult_14/product15 (mux_DW_mult_uns_0) 0.00 4.47 f dataout_reg_15_/RN (DFFTRXL) 0.00 4.47 f d

14、ata arrival time 4.47 clock clk (rise edge) 10.00 10.00 clock network delay (ideal) 0.30 10.30 clock uncertainty -0.10 10.20 dataout_reg_15_/CK (DFFTRXL) 0.00 10.20 r library setup time -0.19 10.01 data required time 10.01 - data required time 10.01 data arrival time -4.47 - slack (MET) 5.55我們來看以上報告

15、,dc報告的時候會顯示出關(guān)鍵路徑,即延時最大的路徑,時序分析包括兩段,前面一段是信號的延遲時間,即data arrival time 為4.47,下面是計算要求時間,也即相對于時鐘,設(shè)計所能忍受的最大延時,由于到達寄存器clk端延時,即clock network delay,所以設(shè)計增加了0.30的余量,同樣由于時鐘的不確定度(可能提前也可能延后0.1),我們?nèi)∽顗那闆r,就是時鐘超前0.1,則時間余量減去0.1,最后一個是門的建立時間要求,是0.19,最后得到數(shù)據(jù)的要求時間。Slack是要求時間減去到達時間的差值,slack越大越好。越大說明留給布局布線的時序越寬松。從報告中我們看出,時序余量

16、為5.55,說明時序達到了要求,足夠滿足我們以后布局布線的時序要求。當然,我們有專門的時序分析工具,primetime,下面會稍微介紹。2. 形式驗證1) 怎么保證綜合前和綜合后的網(wǎng)表邏輯功能是一致的呢,對門級網(wǎng)表進行動態(tài)仿真,又太浪費時間,于是,一款強大的驗證工具formality,給了我們很好的幫助。2) 形式驗證數(shù)據(jù)準備:綜合前RTL代碼,綜合后的網(wǎng)表,綜合所用到的庫。3) 驗證過程如下:1. 首先我們打開formality,命令為fm_shell(命令行界面),formality(圖形界面)。初學者一般使用圖形界面,使用圖形界面的時候,工具會自動產(chǎn)生一個log文件,記錄命令,我們可以將

17、這個文件內(nèi)容做一個fms格式,這樣在下次驗證的時候可以使用命令界面。2. 打開formality如下第一步:首先我們加入原RTL代碼,reference->read_design file->verilog->mux.v,選擇好以后load file第二步:然后選擇庫,沒加庫之前,F(xiàn)M會自動加載與工藝無關(guān)的庫,所以我們要自己把自己的目標庫加上去,reference->read DB libarary->DB,選擇typical.db第三步:設(shè)置top名 reference->set top design 我們選擇mux為top名同樣的方法對網(wǎng)表進行設(shè)置(第二

18、個菜單欄implementation)然后轉(zhuǎn)到第四欄,點擊run matching最后轉(zhuǎn)到第五欄,verify,如果網(wǎng)表無錯,會顯示驗證通過。3 靜態(tài)時序分析靜態(tài)時序分析主要針對大型ASIC設(shè)計,4 自動布局布線1)數(shù)據(jù)準備第一:需要綜合后的網(wǎng)表以及時序約束文件mux.sv,mux.sdc第二:需要自動布局布線的物理庫(lef文件,這里用到tsmc18_6lm_cic.lef, tsmc18_6lm_antenna_cic.lef)為了能夠了解lef文檔的作用,這里對lef做簡單的介紹,lef一般分為兩種:一種是技術(shù)物理庫,主要包含工藝信息,設(shè)計規(guī)則信息,金屬通孔信息等。下例是對金屬一層的定義

19、,TYPE指明METAL1是可布線層,WIDTH定義的是METAL1的默認布線寬度,SPACING用于設(shè)定METAL1布線間距。DIRECTION HORIZONTAL指明METAL1是用于水平走線,當然這并不意味著它不能垂直走線,在一些布線資源較少的區(qū)域,還是可以選擇垂直布線的。具體介紹,可以參考相關(guān)技術(shù)文檔。LAYER METAL1 TYPE ROUTING ; WIDTH 0.230 ; MAXWIDTH 9.9 ; AREA 0.202 ; SPACING 0.230 ; SPACING 0.6 RANGE 10.0 .0 ; PITCH 0.560 ; DIRECTION HORIZ

20、ONTAL ; EDGECAPACITANCE 9.1090e-05 ;END METAL1另外一種就是單元物理庫,定義了單元庫中各單元的信息,文件又有兩部分一種是SITE語句對布局(placement)最小單位的定義,另一部分是采用MACRO語句對單元屬性及幾何形狀的描述,下例是對一個與門為例來看看lef是如何描述它的。MACRO是單元定義的關(guān)鍵字,每一個MACRO代表一個單元。CLASS core說明該單元是用于芯片的核心區(qū),SIZE確定了單元的面積大小,比如5.04是代表該單元的高度,后面我們做單元供電route的時候,可以看到它們的寬度就是這個數(shù)值。再后面就是定義引腳A,B,Y,VDD

21、,VSS等。MACRO AND2X1 CLASS CORE ; FOREIGN AND2X1 0.000 0.000 ; ORIGIN 0.000 0.000 ; LEQ AND2XL ; SIZE 2.640 BY 5.040 ; SYMMETRY x y ; SITE tsm3site ; PIN Y DIRECTION OUTPUT ; PORT LAYER METAL1 ; RECT 2.355 2.380 2.500 2.660 ; END END Y PIN B DIRECTION INPUT ; PORT LAYER METAL1 ; RECT 0.800 2.315 1.215

22、 2.895 ; END END B PIN A DIRECTION INPUT ; PORT LAYER METAL1 ; RECT 0.150 1.820 0.565 2.315 ; END END A PIN VSS DIRECTION INOUT ; USE ground ; SHAPE ABUTMENT ; PORT LAYER METAL1 ; RECT 1.790 -0.400 2.640 0.400 ; RECT 1.450 -0.400 1.790 0.575 ; RECT 0.000 -0.400 1.450 0.400 ; END END VSS PIN VDD DIRE

23、CTION INOUT ; USE power ; SHAPE ABUTMENT ; PORT LAYER METAL1 ; RECT 1.755 4.640 2.640 5.440 END END VDD OBS LAYER METAL1 ; RECT 1.835 1.935 1.885 2.355 ; ENDEND AND2X1第三:時序庫文件,typical.lib,也就是時序文件,定義了門的各種時序信息,某種意義來講,這個和綜合使用的db庫是等價的。2)布局布線過程:第一步:打開encounter 把數(shù)據(jù)輸入,另外在advanced欄的Power相應位置填上VDD,和VSS。如下圖,設(shè)

24、置完以后,記得把設(shè)置的配置文件做一個save以便于下次使用第二步:打開以后,我們可以看到芯片區(qū)域,左邊粉紅色的就是標準單元,中間那個就是我們要設(shè)計的區(qū)域,64%是指cell面積的占有率,一般來說控制在70%左右,布線的時候不會引起擁塞。另外我們需要對芯片進行稍微的更改,F(xiàn)loorplan->specify floorplan.,將core to IO那些項都填上45,留給電源環(huán)的放置。第三步:添加電源環(huán)設(shè)置如下圖,NET填寫VDD和VSS,layer選擇頂層的兩層金屬,寬度設(shè)置為20(這個不定,可以根據(jù)實際設(shè)計來定),offset選擇center in channel,則電源環(huán)會被設(shè)置在

25、IO與core之間。之后電源環(huán)就加進去了,當然這是一個小電路,電源規(guī)劃比較簡單,對于一個復雜的電路,還需要橫豎添加stripes,降低IRdrop。第四步:自動布局以及布置標準單元,因為此設(shè)計較小,并沒有block,所以可以直接進行標準單元的放置。Place->standard cells and blocaks->OK然后我們發(fā)現(xiàn)標準單元已經(jīng)被加進去了:第五步:布置好了以后,我們需要將電源,地,等接口先連接起來,首先我們在floorplan中選擇global net connection,分別將VDD,VSS等都連接起來。然后我們需要specify route將電源和地線先連接起

26、來,選擇route->specify route因為我們這個設(shè)計只有標準單元,所以我們只要選擇標準單元的布線即可:完成以后,點擊OK,會得到下面的圖:每行的row都有線連接到外面的電源環(huán)第六步:時鐘樹綜合(CTS),這是一個APR設(shè)計中最重要的一環(huán),為什么要進行時鐘樹綜合呢,簡單地說,因為信號傳輸?shù)难訒r,我們需要讓相應路徑的時鐘路徑的也具有同樣的延時,通過添加時鐘緩沖器的方法,來消除各路徑的建立時間,具體請參考相關(guān)書籍和資料。添加好時鐘樹以后的版圖如下:加了時鐘樹以后的版圖密集了很多,因為加了很多buf。時鐘樹的腳本:AutoCTSRootPin clkPeriod 10nsMaxDel

27、ay 500ps # set_clock_latencyMinDelay 0ps # set_clock_latencyMaxSkew 100psSinkMaxTran 400psBufMaxTran 400psObstruction NODetailReport YESPadBufAfterGate NORouteClkNet NOPostOpt YESOptAddBuffer YESOptAddBufferLimit 100NoGating NOBuffer CLKBUFX1 CLKBUFXL CLKBUFX2 CLKBUFX3 CLKBUFX4 CLKBUFX8 CLKBUFX12 CL

28、KBUFX16 CLKBUFX20 CLKINVXL CLKINVX1 CLKINVX2 CLKINVX3 CLKINVX4 CLKINVX8 CLKINVX12 CLKINVX16 CLKINVX20 END然后將腳本選中,并進行時鐘樹綜合。第七步:優(yōu)化設(shè)計,命令optDesign postCTS,然后report_timing查看時序報告,確定無違規(guī),再進行完全布線。第八步:完全布線,route ->nanoroute->route之后得到的版圖如下所示:第九步:保存設(shè)計,提取需要的數(shù)據(jù)。這里特別注意提取gds文件的時候,需要指定庫文件中的streamOut.map文件,和me

29、rge gds(tsmc18_core.gds)文件,如圖所示保存網(wǎng)表,并將此版圖提取的網(wǎng)表做一次formality,與原代碼匹配成功。再提取def文件,保存為mux.def5 第二次靜態(tài)時序分析用版圖實際提取的延時文件進行6 APR后仿真用modelsim對版圖提取的網(wǎng)表和sdf文件進行仿真。7 用calibre對版圖進行DRC及其LVS驗證在做這步之前,我們需要把相關(guān)的文檔拷貝到icfb的工作目錄下Encounter導出的gds文檔:這里是mux8.gds(注意merge庫的map文件)技術(shù)文檔如:0.18um_Virtuoso4.4.tf,可以在廠家提供的庫中去找顯示文件:display

30、.drfCaliber驗證文件:drc,lvs文檔第一步:將encounter的版圖數(shù)據(jù)導入virtuoso,打開icfb&,選擇file->import->stream然后將版圖信息和技術(shù)文件填入:導入成功以后會出現(xiàn)我們所做的庫,mux就是我們encounter中所畫的版圖。我們把版圖打開:這就是我們所畫的版圖然后在此進行drc,和lvs,通過以后再進行下面的工作。第二步:drc檢查此處有錯,并不是邏輯有問題,是因為密度不夠的問題,需要在encounter階段加FILLER,F(xiàn)ILLER是與邏輯無關(guān)的,因為代工廠的流片加工要求,需要加的,密度不夠,加工容易引起問題。所以如

31、果DRC報類似錯誤,如果是需要流片的版圖,除非代工廠同意,否則必須清除這些錯誤。第三步:lvs檢查1)Lvs檢查之前,我們需要把綜合后的verilog文件轉(zhuǎn)換成網(wǎng)表文件,用于lvs,方法如下:終端下執(zhí)行:v2lvs -v mux.v -l tsmc18_lvs.v -o CHIP.spi -s tsmc18_lvs.spi -c cic_ -ncalibre -lvs -spice layout.spi -hier -auto Calibre-lvs-cur_soce,之后會得到一個CHIP.spi的網(wǎng)表文件。(此處的verilog的轉(zhuǎn)換是用庫中的lvs.cmd產(chǎn)生)2)用來lvs的網(wǎng)表我們選

32、擇之前導出CHIP.spi:然后run lvs,匹配成功!8 用abstract對模塊進行抽取我們把8*8乘法器模塊用abstract工具導出lef,作為硬核,用于后面自動布局布線的調(diào)用,我們可以從此試驗中找到模數(shù)混合自動版圖的設(shè)計思想。Abstract Def=>Lef第一步:創(chuàng)建一個新的library,并關(guān)聯(lián)一個tf文件。 第二步:導入standcell.gds 注:(1)不需要輸入streamOut.map也不用點上(no merge)不需要更改。Top Cell Name 為空第三步:導入standcell.lef 第四步:導入mux.def第五步:打開 library mana

33、ger 在mux庫里打開mux的layout,并選擇tools=>layout。第六步:選擇 Edit=>Search ,點擊 Add Criteria ,如下設(shè)置,選擇aplly ,在選擇 Replace All。 第七步:保存退出第八步:打開 abstract,并打開mux庫。然后把mux模塊從core導入到block當中,方法:點擊mux,然后cell=>move=>block=>OK。第九步:點擊GDS圖中l(wèi)abel,然后點擊Q查看Properity??纯词鞘裁磳樱缓罂纯聪旅娴膎et的Properity是什么層,以及是什么purpose。層:METAL3

34、,Purpose:pin。具體含義主要看abstract UG。 <1> 點擊,輸入Map text labels to pins Map text labels to pins 的書寫格式及含義參考abstract UG。 <2>點擊 <3>點擊 <4> Export lef <5>查看abstract.lef里面有沒有VDD和VSS之后我們得到一個該模塊的lef文件,下面我們就用這個模塊做一次調(diào)用。9將此macro作為一個模塊在另外一個top設(shè)計中進行調(diào)用。第一步:首先我們還是回到綜合,我們重新設(shè)計一個top,這個top將包含新的

35、邏輯功能,之前的mux模塊,還有PAD模塊。這個設(shè)計的大概框圖如下:PDIDGZ為數(shù)字輸入IO口PDO04CDG為數(shù)字輸出IO口PVDD1DGZ 為供電PAD高電端PVSS1DGZ 為供電PAD的地電端Multiple為之前做的宏模塊Mux為新加邏輯第二步,代碼的改寫:我們重新編寫過verilog代碼(帶PAD),帶PAD做綜合有個好處,可以不用設(shè)置輸入輸出端口的驅(qū)動,因為PAD的驅(qū)動已經(jīng)很大了,這樣綜合出的結(jié)果更接近實際。 新的verilog代碼如下:module mux_1 (clk,clr,a,b,y);/(這里我們引用了新的邏輯,注意這個mux_1和之前的沒半點關(guān)系,只是為了體現(xiàn)調(diào)用關(guān)

36、系隨便加的一個而已)input clk,clr;input 7:0 a,b;output 15:0 y;reg 15:0 y;always (posedge clk)begin if(!clr) begin y<=0; end else begin y<=a*b; endendendmodulemodule PAD(clk_pcb,clk_core,clr_pcb,clr_core,data1_pcb,data1_core,data2_pcb,data2_core,dataout_core,dataout_pcb);(這是PAD模塊,注意結(jié)合前面的框圖是想想是如何加的)input

37、clk_pcb,clr_pcb;output clk_core ,clr_core;input 7:0 data1_pcb,data2_pcb;output 7:0 data1_core,data2_core;input 15:0 dataout_core;output 15:0 dataout_pcb;PDIDGZ PAD_CLK (.PAD(clk_pcb),.C(clk_core);PDIDGZ PAD_CLR (.PAD(clr_pcb),.C(clr_core);PDIDGZ PAD_DATA1_0 (.PAD(data1_pcb0),.C(data1_core0);PDIDGZ P

38、AD_DATA1_1 (.PAD(data1_pcb1),.C(data1_core1);PDIDGZ PAD_DATA1_2 (.PAD(data1_pcb2),.C(data1_core2);PDIDGZ PAD_DATA1_3 (.PAD(data1_pcb3),.C(data1_core3);PDIDGZ PAD_DATA1_4 (.PAD(data1_pcb4),.C(data1_core4);PDIDGZ PAD_DATA1_5 (.PAD(data1_pcb5),.C(data1_core5);PDIDGZ PAD_DATA1_6 (.PAD(data1_pcb6),.C(dat

39、a1_core6);PDIDGZ PAD_DATA1_7 (.PAD(data1_pcb7),.C(data1_core7);PDIDGZ PAD_DATA2_0 (.PAD(data2_pcb0),.C(data2_core0);PDIDGZ PAD_DATA2_1 (.PAD(data2_pcb1),.C(data2_core1);PDIDGZ PAD_DATA2_2 (.PAD(data2_pcb2),.C(data2_core2);PDIDGZ PAD_DATA2_3 (.PAD(data2_pcb3),.C(data2_core3);PDIDGZ PAD_DATA2_4 (.PAD(

40、data2_pcb4),.C(data2_core4);PDIDGZ PAD_DATA2_5 (.PAD(data2_pcb5),.C(data2_core5);PDIDGZ PAD_DATA2_6 (.PAD(data2_pcb6),.C(data2_core6);PDIDGZ PAD_DATA2_7 (.PAD(data2_pcb7),.C(data2_core7);PDO04CDG PAD_DATAOUT_0 (.I(dataout_core0),.PAD(dataout_pcb0);PDO04CDG PAD_DATAOUT_1 (.I(dataout_core1),.PAD(datao

41、ut_pcb1);PDO04CDG PAD_DATAOUT_2 (.I(dataout_core2),.PAD(dataout_pcb2);PDO04CDG PAD_DATAOUT_3 (.I(dataout_core3),.PAD(dataout_pcb3);PDO04CDG PAD_DATAOUT_4 (.I(dataout_core4),.PAD(dataout_pcb4);PDO04CDG PAD_DATAOUT_5 (.I(dataout_core5),.PAD(dataout_pcb5);PDO04CDG PAD_DATAOUT_6 (.I(dataout_core6),.PAD(

42、dataout_pcb6);PDO04CDG PAD_DATAOUT_7 (.I(dataout_core7),.PAD(dataout_pcb7);PDO04CDG PAD_DATAOUT_8 (.I(dataout_core8),.PAD(dataout_pcb8);PDO04CDG PAD_DATAOUT_9 (.I(dataout_core9),.PAD(dataout_pcb9);PDO04CDG PAD_DATAOUT_10 (.I(dataout_core10),.PAD(dataout_pcb10);PDO04CDG PAD_DATAOUT_11 (.I(dataout_cor

43、e11),.PAD(dataout_pcb11);PDO04CDG PAD_DATAOUT_12 (.I(dataout_core12),.PAD(dataout_pcb12);PDO04CDG PAD_DATAOUT_13 (.I(dataout_core13),.PAD(dataout_pcb13);PDO04CDG PAD_DATAOUT_14 (.I(dataout_core14),.PAD(dataout_pcb14);PDO04CDG PAD_DATAOUT_15 (.I(dataout_core15),.PAD(dataout_pcb15);PVDD1DGZ vdd1 (); (

44、現(xiàn)在不用加的)PVDD1DGZ vdd2 ();PVDD1DGZ vdd3 ();PVDD1DGZ vdd4 ();PVSS1DGZ vss1 ();PVSS1DGZ vss2 ();PVSS1DGZ vss3 ();PVSS1DGZ vss4 ();PCORNERDG c1 ();PCORNERDG c2 ();PCORNERDG c3 ();PCORNERDG c4 ();endmodule#頂層模塊#module top(clock,clear,da1,da2,dataout_out);input clock,clear;input 7:0 da1,da2;output 15:0 dat

45、aout_out;wire clk_core,clr_core;wire 7:0 data1_core,data2_core;wire 15:0 dataout_core;wire 15:0 y;PAD PAD_TOP(.clk_pcb(clock),.clk_core(clk_core),.clr_pcb(clear),.clr_core(clr_core),.data1_pcb(da1),.data1_core(data1_core),.data2_pcb(da2),.data2_core(data2_core),.dataout_core(dataout_core),.dataout_p

46、cb(dataout_out);mux_1 mux_1 (.clk(clk_core),.clr(clr_core),.a(data1_core),.b(data2_core),.y(y);mux mutiple (.clk(clk_core),.clr(clr_core),.data1(y15:8),.data2(y7:0),.dataout(dataout_core);(這里是對硬核的調(diào)用)endmodule 第三步:邏輯綜合注意的是,我們在邏輯綜合之前,需要加如mux的db庫文件,此文件由encounter布局布線以后產(chǎn)生的延時文件再經(jīng)過pt靜態(tài)時序分析以后產(chǎn)生。我們給頂層模塊加如約束:

47、Current_design top linkcreate_clock -period 10 get_ports clockset_clock_latency -source -max 0.2 get_ports clockset_clock_latency -max 0.1 get_ports clockset_clock_uncertainty -setup 0.01 get_ports clockset_input_delay -max 0.5 -clock clock all_inputsset_output_delay -max 0.5 -clock clock all_output

48、s#set_driving_cell -lib_cell INVX4 all_inputs#set_load -pin_load 0. all_outputsset_wire_load_model -name tsmc18_wl10 -library typicalset_wire_load_mode enclosedset_dont_touch mux (注意此處,就是綜合的時候不針對mux進行綜合,綜合工具會自動跨越邊界對其他邏輯進行綜合)set_dont_touch_network all_clockscompile -boundarychange_names -rule verilog -hierwrite -format verilog -hier -output top.svwrite -format ddc -hier -output top.ddcwrite_sdf top.sdfwrite_sdc top.sdc第四步:布局布線用綜合得到的網(wǎng)表(top.sv)和約束文件(sdc)。并將之前的mux模塊的lef文檔準備好。這里碰到了一個問題,在邏輯綜合之前的代碼我已經(jīng)加如了PAD的VDD ,VSS和corner,但是綜合完以后就不見了,原因不明,這時在布局之前就要手動添加上去。數(shù)據(jù)準備

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論