




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基本后端流程(漂流&雪擰)- 2010/7/3-2010/7/8 本教程將通過一個(gè)8*8的乘法器來進(jìn)行一個(gè)從verilog代碼到版圖的整個(gè)流程(當(dāng)然只是基本流程,因?yàn)檎嬲粋€(gè)大型的設(shè)計(jì)不是那么簡(jiǎn)單就完成的),此教程的目的就是為了讓大家盡快了解數(shù)字IC設(shè)計(jì)的大概流程,為以后學(xué)習(xí)建立一個(gè)基礎(chǔ)。此教程只是本人探索實(shí)驗(yàn)的結(jié)果,并不代表內(nèi)容都是正確的,只是為了說明大概的流程,里面一定還有很多未完善并且有錯(cuò)誤的地方,我在今后的學(xué)習(xí)當(dāng)中會(huì)對(duì)其逐一完善和修正。此后端流程大致包括一下內(nèi)容:1. 邏輯綜合(邏輯綜合是干嗎的就不用解釋了把?)2. 設(shè)計(jì)的形式驗(yàn)證(工具formality)形式驗(yàn)證就是功能驗(yàn)證
2、,主要驗(yàn)證流程中的各個(gè)階段的代碼功能是否一致,包括綜合前RTL代碼和綜合后網(wǎng)表的驗(yàn)證,因?yàn)槿缃馡C設(shè)計(jì)的規(guī)模越來越大,如果對(duì)門級(jí)網(wǎng)表進(jìn)行動(dòng)態(tài)仿真的話,會(huì)花費(fèi)較長(zhǎng)的時(shí)間(規(guī)模大的話甚至要數(shù)星期),這對(duì)于一個(gè)對(duì)時(shí)間要求嚴(yán)格的asic設(shè)計(jì)來說是不可容忍的,而形式驗(yàn)證只用幾小時(shí)即可完成一個(gè)大型的驗(yàn)證。另外,因?yàn)榘鎴D后做了時(shí)鐘樹綜合,時(shí)鐘樹的插入意味著進(jìn)入布圖工具的原來的網(wǎng)表已經(jīng)被修改了,所以有必要驗(yàn)證與原來的網(wǎng)表是否邏輯等價(jià)。3. 靜態(tài)時(shí)序分析(STA),某種程度上來說,STA是ASIC設(shè)計(jì)中最重要的步驟,使用primetime對(duì)整個(gè)設(shè)計(jì)布圖前的靜態(tài)時(shí)序分析,沒有時(shí)序違規(guī),則進(jìn)入下一步,否則重新進(jìn)行綜
3、合。(PR后也需作signoff的時(shí)序分析)4. 使用cadence公司的SOCencounter對(duì)綜合后的網(wǎng)表進(jìn)行自動(dòng)布局布線(APR)5. 自動(dòng)布局以后得到具體的延時(shí)信息(sdf文件,由寄生RC和互聯(lián)RC所組成)反標(biāo)注到網(wǎng)表,再做靜態(tài)時(shí)序分析,與綜合類似,靜態(tài)時(shí)序分析是一個(gè)迭代的過程,它與芯片布局布線的聯(lián)系非常緊密,這個(gè)操作通常是需要執(zhí)行許多次才能滿足時(shí)序需求,如果沒違規(guī),則進(jìn)入下一步。6. APR后的門級(jí)功能仿真(如果需要)7. 進(jìn)行DRC和LVS,如果通過,則進(jìn)入下一步。8. 用abstract對(duì)此8*8乘法器進(jìn)行抽取,產(chǎn)生一個(gè)lef文件,相當(dāng)于一個(gè)hard macro。9. 將此ma
4、cro作為一個(gè)模塊在另外一個(gè)top設(shè)計(jì)中進(jìn)行調(diào)用。10. 設(shè)計(jì)一個(gè)新的ASIC,第二次設(shè)計(jì),我們需要添加PAD,因?yàn)闆]有PAD,就不是一個(gè)完整的芯片,具體操作下面會(huì)說。11. 重復(fù)第4到7步1. 邏輯綜合1) 設(shè)計(jì)的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; end else begin dataou
5、t<=data1*data2; endendendmodule2) 綜合之前,我們要選取庫(kù),寫好約束條件,修改dc的啟動(dòng)文件synopsys_dc.setup,目標(biāo)庫(kù)選擇TSMC(此設(shè)計(jì)都是用TSMC18的庫(kù))的typical.db。(選擇max庫(kù)會(huì)比較好)Dc的命令眾多,但是最基本的命令差不多,此設(shè)計(jì)的約束文件命令如下:create_clock -period 10 get_ports clk /用于時(shí)鐘的創(chuàng)建set_clock_latency -source -max 0.2 get_ports clk /外部時(shí)鐘到core的clk連線延時(shí)set_clock_latency -max
6、 0.1 get_ports clk /core的clk到寄存器clk端的net連線延時(shí)set_clock_uncertainty -setup 2 get_ports clk /時(shí)鐘延時(shí)的不確定性,求setup違規(guī)時(shí)會(huì)被計(jì)算進(jìn)去set_clock_uncertainty hold 1 【all_clocks】set_input_delay -max 0.5 -clock clk get_ports list remove_from_coll all_inputs clk /輸入延時(shí),外部信號(hào)到input端的連線延時(shí)set_output_delay -max 0.5 -clock clk al
7、l_outputs /輸出延時(shí)set_driving_cell -lib_cell INVX4 all_inputs /輸入端的驅(qū)動(dòng)強(qiáng)度set_load -pin_load 0.0659726 all_outputs /輸出端的驅(qū)動(dòng)力set_wire_load_model -name tsmc18_wl10 -library typical /內(nèi)部net的連線模型set_wire_load_mode enclosed /定義建模連線負(fù)載相關(guān)模式set_max_area 0compile report_timingreport_constraint change_names -rule veri
8、log hierset_fix_multiple_ports_net all write -format verilog -hier -output mux.sv /輸出網(wǎng)表,自動(dòng)布局布線需要write -format ddc -hier -output mux.ddc /輸出ddcwrite_sdf mux.sdf /輸出延時(shí)文件,靜態(tài)時(shí)序分析時(shí)需要write_sdc mux.sdc /輸出約束信息,自動(dòng)布局布線需要3) 邏輯綜合啟動(dòng)design_vision。Read->mux.v輸入約束文件。File->excute script->verti.con之后會(huì)產(chǎn)生mux.
9、sv,mux.sdc,mux.sdf,mux.ddc等文件4) 時(shí)序分析綜合以后我們需要分析一下時(shí)序,看時(shí)序是否符合我們的要求,綜合實(shí)際上是一個(gè)setup時(shí)間的滿足過程,但是我們綜合的時(shí)候,連線的負(fù)載只是庫(kù)提供的(即上面的wire_load),并不是實(shí)際的延時(shí),所以一般做完綜合以后,時(shí)間余量(slack)應(yīng)該為時(shí)鐘的30%(經(jīng)驗(yàn)值),以便為后面實(shí)際布局布線留下充足的延時(shí)空間。因?yàn)槿绻鹲lack太小,甚至接近于0,雖然我們看起來是沒有時(shí)序違規(guī)的,但是實(shí)際布局以后,時(shí)序肯定無法滿足。 使用report_timing命令,可以查看時(shí)序分析報(bào)告:*Report : timing -path full
10、-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(模型庫(kù))Wire Load Model Mode: enclosed Startpoint: data24 (input port clocked by clk) Endpoint: dataout_reg_15_ (rising edge-triggered flip-flop clocked b
11、y clk) Path Group: clk Path Type: max Des/Clust/Port Wire Load Model Library - mux tsmc18_wl10 typical (線載模型及庫(kù))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) 0.00 0.51 f m
12、ult_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 mult_14/U7/CO (
13、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 data arrival t
14、ime 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我們來看以上報(bào)告,dc報(bào)告的時(shí)候會(huì)顯示出關(guān)
15、鍵路徑,即延時(shí)最大的路徑,時(shí)序分析包括兩段,前面一段是信號(hào)的延遲時(shí)間,即data arrival time 為4.47,下面是計(jì)算要求時(shí)間,也即相對(duì)于時(shí)鐘,設(shè)計(jì)所能忍受的最大延時(shí),由于到達(dá)寄存器clk端延時(shí),即clock network delay,所以設(shè)計(jì)增加了0.30的余量,同樣由于時(shí)鐘的不確定度(可能提前也可能延后0.1),我們?nèi)∽顗那闆r,就是時(shí)鐘超前0.1,則時(shí)間余量減去0.1,最后一個(gè)是門的建立時(shí)間要求,是0.19,最后得到數(shù)據(jù)的要求時(shí)間。Slack是要求時(shí)間減去到達(dá)時(shí)間的差值,slack越大越好。越大說明留給布局布線的時(shí)序越寬松。從報(bào)告中我們看出,時(shí)序余量為5.55,說明時(shí)序達(dá)到了
16、要求,足夠滿足我們以后布局布線的時(shí)序要求。當(dāng)然,我們有專門的時(shí)序分析工具,primetime,下面會(huì)稍微介紹。2. 形式驗(yàn)證1) 怎么保證綜合前和綜合后的網(wǎng)表邏輯功能是一致的呢,對(duì)門級(jí)網(wǎng)表進(jìn)行動(dòng)態(tài)仿真,又太浪費(fèi)時(shí)間,于是,一款強(qiáng)大的驗(yàn)證工具formality,給了我們很好的幫助。2) 形式驗(yàn)證數(shù)據(jù)準(zhǔn)備:綜合前RTL代碼,綜合后的網(wǎng)表,綜合所用到的庫(kù)。3) 驗(yàn)證過程如下:1. 首先我們打開formality,命令為fm_shell(命令行界面),formality(圖形界面)。初學(xué)者一般使用圖形界面,使用圖形界面的時(shí)候,工具會(huì)自動(dòng)產(chǎn)生一個(gè)log文件,記錄命令,我們可以將這個(gè)文件內(nèi)容做一個(gè)fms格
17、式,這樣在下次驗(yàn)證的時(shí)候可以使用命令界面。2. 打開formality如下第一步:首先我們加入原RTL代碼,reference->read_design file->verilog->mux.v,選擇好以后load file第二步:然后選擇庫(kù),沒加庫(kù)之前,F(xiàn)M會(huì)自動(dòng)加載與工藝無關(guān)的庫(kù),所以我們要自己把自己的目標(biāo)庫(kù)加上去,reference->read DB libarary->DB,選擇typical.db第三步:設(shè)置top名 reference->set top design 我們選擇mux為top名同樣的方法對(duì)網(wǎng)表進(jìn)行設(shè)置(第二個(gè)菜單欄implement
18、ation)然后轉(zhuǎn)到第四欄,點(diǎn)擊run matching最后轉(zhuǎn)到第五欄,verify,如果網(wǎng)表無錯(cuò),會(huì)顯示驗(yàn)證通過。3 靜態(tài)時(shí)序分析靜態(tài)時(shí)序分析主要針對(duì)大型ASIC設(shè)計(jì),4 自動(dòng)布局布線1)數(shù)據(jù)準(zhǔn)備第一:需要綜合后的網(wǎng)表以及時(shí)序約束文件mux.sv,mux.sdc第二:需要自動(dòng)布局布線的物理庫(kù)(lef文件,這里用到tsmc18_6lm_cic.lef, tsmc18_6lm_antenna_cic.lef)為了能夠了解lef文檔的作用,這里對(duì)lef做簡(jiǎn)單的介紹,lef一般分為兩種:一種是技術(shù)物理庫(kù),主要包含工藝信息,設(shè)計(jì)規(guī)則信息,金屬通孔信息等。下例是對(duì)金屬一層的定義,TYPE指明METAL1
19、是可布線層,WIDTH定義的是METAL1的默認(rèn)布線寬度,SPACING用于設(shè)定METAL1布線間距。DIRECTION HORIZONTAL指明METAL1是用于水平走線,當(dāng)然這并不意味著它不能垂直走線,在一些布線資源較少的區(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 100000.0 ; PITCH 0.560 ; DIRECTION HORIZONTAL ;
20、 EDGECAPACITANCE 9.1090e-05 ;END METAL1另外一種就是單元物理庫(kù),定義了單元庫(kù)中各單元的信息,文件又有兩部分一種是SITE語句對(duì)布局(placement)最小單位的定義,另一部分是采用MACRO語句對(duì)單元屬性及幾何形狀的描述,下例是對(duì)一個(gè)與門為例來看看lef是如何描述它的。MACRO是單元定義的關(guān)鍵字,每一個(gè)MACRO代表一個(gè)單元。CLASS core說明該單元是用于芯片的核心區(qū),SIZE確定了單元的面積大小,比如5.04是代表該單元的高度,后面我們做單元供電route的時(shí)候,可以看到它們的寬度就是這個(gè)數(shù)值。再后面就是定義引腳A,B,Y,VDD,VSS等。M
21、ACRO 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 2.895
22、; 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 DIRECTION I
23、NOUT ; 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第三:時(shí)序庫(kù)文件,typical.lib,也就是時(shí)序文件,定義了門的各種時(shí)序信息,某種意義來講,這個(gè)和綜合使用的db庫(kù)是等價(jià)的。2)布局布線過程:第一步:打開encounter 把數(shù)據(jù)輸入,另外在advanced欄的Power相應(yīng)位置填上VDD,和VSS。如下圖,設(shè)置完以后,記得
24、把設(shè)置的配置文件做一個(gè)save以便于下次使用第二步:打開以后,我們可以看到芯片區(qū)域,左邊粉紅色的就是標(biāo)準(zhǔn)單元,中間那個(gè)就是我們要設(shè)計(jì)的區(qū)域,64%是指cell面積的占有率,一般來說控制在70%左右,布線的時(shí)候不會(huì)引起擁塞。另外我們需要對(duì)芯片進(jìn)行稍微的更改,F(xiàn)loorplan->specify floorplan.,將core to IO那些項(xiàng)都填上45,留給電源環(huán)的放置。第三步:添加電源環(huán)設(shè)置如下圖,NET填寫VDD和VSS,layer選擇頂層的兩層金屬,寬度設(shè)置為20(這個(gè)不定,可以根據(jù)實(shí)際設(shè)計(jì)來定),offset選擇center in channel,則電源環(huán)會(huì)被設(shè)置在IO與core
25、之間。之后電源環(huán)就加進(jìn)去了,當(dāng)然這是一個(gè)小電路,電源規(guī)劃比較簡(jiǎn)單,對(duì)于一個(gè)復(fù)雜的電路,還需要橫豎添加stripes,降低IRdrop。第四步:自動(dòng)布局以及布置標(biāo)準(zhǔn)單元,因?yàn)榇嗽O(shè)計(jì)較小,并沒有block,所以可以直接進(jìn)行標(biāo)準(zhǔn)單元的放置。Place->standard cells and blocaks->OK然后我們發(fā)現(xiàn)標(biāo)準(zhǔn)單元已經(jīng)被加進(jìn)去了:第五步:布置好了以后,我們需要將電源,地,等接口先連接起來,首先我們?cè)趂loorplan中選擇global net connection,分別將VDD,VSS等都連接起來。然后我們需要specify route將電源和地線先連接起來,選擇rou
26、te->specify route因?yàn)槲覀冞@個(gè)設(shè)計(jì)只有標(biāo)準(zhǔn)單元,所以我們只要選擇標(biāo)準(zhǔn)單元的布線即可:完成以后,點(diǎn)擊OK,會(huì)得到下面的圖:每行的row都有線連接到外面的電源環(huán)第六步:時(shí)鐘樹綜合(CTS),這是一個(gè)APR設(shè)計(jì)中最重要的一環(huán),為什么要進(jìn)行時(shí)鐘樹綜合呢,簡(jiǎn)單地說,因?yàn)樾盘?hào)傳輸?shù)难訒r(shí),我們需要讓相應(yīng)路徑的時(shí)鐘路徑的也具有同樣的延時(shí),通過添加時(shí)鐘緩沖器的方法,來消除各路徑的建立時(shí)間,具體請(qǐng)參考相關(guān)書籍和資料。添加好時(shí)鐘樹以后的版圖如下:加了時(shí)鐘樹以后的版圖密集了很多,因?yàn)榧恿撕芏郻uf。時(shí)鐘樹的腳本:AutoCTSRootPin clkPeriod 10nsMaxDelay 500p
27、s # 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 CLKBUFX16
28、 CLKBUFX20 CLKINVXL CLKINVX1 CLKINVX2 CLKINVX3 CLKINVX4 CLKINVX8 CLKINVX12 CLKINVX16 CLKINVX20 END然后將腳本選中,并進(jìn)行時(shí)鐘樹綜合。第七步:優(yōu)化設(shè)計(jì),命令optDesign postCTS,然后report_timing查看時(shí)序報(bào)告,確定無違規(guī),再進(jìn)行完全布線。第八步:完全布線,route ->nanoroute->route之后得到的版圖如下所示:第九步:保存設(shè)計(jì),提取需要的數(shù)據(jù)。這里特別注意提取gds文件的時(shí)候,需要指定庫(kù)文件中的streamOut.map文件,和merge gds
29、(tsmc18_core.gds)文件,如圖所示保存網(wǎng)表,并將此版圖提取的網(wǎng)表做一次formality,與原代碼匹配成功。再提取def文件,保存為mux.def5 第二次靜態(tài)時(shí)序分析用版圖實(shí)際提取的延時(shí)文件進(jìn)行6 APR后仿真用modelsim對(duì)版圖提取的網(wǎng)表和sdf文件進(jìn)行仿真。7 用calibre對(duì)版圖進(jìn)行DRC及其LVS驗(yàn)證在做這步之前,我們需要把相關(guān)的文檔拷貝到icfb的工作目錄下Encounter導(dǎo)出的gds文檔:這里是mux8.gds(注意merge庫(kù)的map文件)技術(shù)文檔如:0.18um_Virtuoso4.4.tf,可以在廠家提供的庫(kù)中去找顯示文件:display.drfCal
30、iber驗(yàn)證文件:drc,lvs文檔第一步:將encounter的版圖數(shù)據(jù)導(dǎo)入virtuoso,打開icfb&,選擇file->import->stream然后將版圖信息和技術(shù)文件填入:導(dǎo)入成功以后會(huì)出現(xiàn)我們所做的庫(kù),mux就是我們encounter中所畫的版圖。我們把版圖打開:這就是我們所畫的版圖然后在此進(jìn)行drc,和lvs,通過以后再進(jìn)行下面的工作。第二步:drc檢查此處有錯(cuò),并不是邏輯有問題,是因?yàn)槊芏炔粔虻膯栴},需要在encounter階段加FILLER,F(xiàn)ILLER是與邏輯無關(guān)的,因?yàn)榇S的流片加工要求,需要加的,密度不夠,加工容易引起問題。所以如果DRC報(bào)類似
31、錯(cuò)誤,如果是需要流片的版圖,除非代工廠同意,否則必須清除這些錯(cuò)誤。第三步: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,之后會(huì)得到一個(gè)CHIP.spi的網(wǎng)表文件。(此處的verilog的轉(zhuǎn)換是用庫(kù)中的lvs.cmd產(chǎn)生)2)用來lvs的網(wǎng)表我們選擇之前導(dǎo)出CH
32、IP.spi:然后run lvs,匹配成功!8 用abstract對(duì)模塊進(jìn)行抽取我們把8*8乘法器模塊用abstract工具導(dǎo)出lef,作為硬核,用于后面自動(dòng)布局布線的調(diào)用,我們可以從此試驗(yàn)中找到模數(shù)混合自動(dòng)版圖的設(shè)計(jì)思想。Abstract Def=>Lef第一步:創(chuàng)建一個(gè)新的library,并關(guān)聯(lián)一個(gè)tf文件。 第二步:導(dǎo)入standcell.gds 注:(1)不需要輸入streamOut.map也不用點(diǎn)上(no merge)不需要更改。Top Cell Name 為空第三步:導(dǎo)入standcell.lef 第四步:導(dǎo)入mux.def第五步:打開 library manager 在mu
33、x庫(kù)里打開mux的layout,并選擇tools=>layout。第六步:選擇 Edit=>Search ,點(diǎn)擊 Add Criteria ,如下設(shè)置,選擇aplly ,在選擇 Replace All。 第七步:保存退出第八步:打開 abstract,并打開mux庫(kù)。然后把mux模塊從core導(dǎo)入到block當(dāng)中,方法:點(diǎn)擊mux,然后cell=>move=>block=>OK。第九步:點(diǎn)擊GDS圖中l(wèi)abel,然后點(diǎn)擊Q查看Properity??纯词鞘裁磳?,然后看看下面的net的Properity是什么層,以及是什么purpose。層:METAL3,Purpos
34、e:pin。具體含義主要看abstract UG。 <1> 點(diǎn)擊,輸入Map text labels to pins Map text labels to pins 的書寫格式及含義參考abstract UG。 <2>點(diǎn)擊 <3>點(diǎn)擊 <4> Export lef <5>查看abstract.lef里面有沒有VDD和VSS之后我們得到一個(gè)該模塊的lef文件,下面我們就用這個(gè)模塊做一次調(diào)用。9將此macro作為一個(gè)模塊在另外一個(gè)top設(shè)計(jì)中進(jìn)行調(diào)用。第一步:首先我們還是回到綜合,我們重新設(shè)計(jì)一個(gè)top,這個(gè)top將包含新的邏輯功能,之前
35、的mux模塊,還有PAD模塊。這個(gè)設(shè)計(jì)的大概框圖如下:PDIDGZ為數(shù)字輸入IO口PDO04CDG為數(shù)字輸出IO口PVDD1DGZ 為供電PAD高電端PVSS1DGZ 為供電PAD的地電端Multiple為之前做的宏模塊Mux為新加邏輯第二步,代碼的改寫:我們重新編寫過verilog代碼(帶PAD),帶PAD做綜合有個(gè)好處,可以不用設(shè)置輸入輸出端口的驅(qū)動(dòng),因?yàn)镻AD的驅(qū)動(dòng)已經(jīng)很大了,這樣綜合出的結(jié)果更接近實(shí)際。 新的verilog代碼如下:module mux_1 (clk,clr,a,b,y);/(這里我們引用了新的邏輯,注意這個(gè)mux_1和之前的沒半點(diǎn)關(guān)系,只是為了體現(xiàn)調(diào)用關(guān)系隨便加的一個(gè)
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 clk_pcb
37、,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 PAD_DATA
38、1_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(data1_core
39、6);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(data2_p
40、cb4),.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(dataout_pcb1
41、);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(dataout
42、_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_core11),.P
43、AD(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 (); (現(xiàn)在不用加的)
44、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 dataout_ou
45、t;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_pcb(data
46、out_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);(這里是對(duì)硬核的調(diào)用)endmodule 第三步:邏輯綜合注意的是,我們?cè)谶壿嬀C合之前,需要加如mux的db庫(kù)文件,此文件由encounter布局布線以后產(chǎn)生的延時(shí)文件再經(jīng)過pt靜態(tài)時(shí)序分析以后產(chǎn)生。我們給頂層模塊加如約束:Current
47、_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_outputs#set_d
48、riving_cell -lib_cell INVX4 all_inputs#set_load -pin_load 0.0659726 all_outputsset_wire_load_model -name tsmc18_wl10 -library typicalset_wire_load_mode enclosedset_dont_touch mux (注意此處,就是綜合的時(shí)候不針對(duì)mux進(jìn)行綜合,綜合工具會(huì)自動(dòng)跨越邊界對(duì)其他邏輯進(jìn)行綜合)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文檔準(zhǔn)備好。這里碰到了一個(gè)問題,在邏輯綜合之前的代碼我已經(jīng)加如了PAD的VDD ,VSS和corner,但是綜合完以后就不見了,原因不明,這時(shí)在布局之前就要手動(dòng)添加上去。數(shù)據(jù)準(zhǔn)備:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 大數(shù)據(jù)對(duì)紀(jì)檢工作創(chuàng)新發(fā)展的重要意義
- 2025年印茶培訓(xùn)考試題及答案
- 2025年鐵礦維修面試題及答案
- 2025年深圳二模考試試題及答案
- 2025-2030年中國(guó)移動(dòng)通訊方艙數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025-2030年中國(guó)包裝革數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 常山水性環(huán)氧地坪施工方案
- 大連現(xiàn)代高層+洋房+疊拼投標(biāo)方案
- 初二數(shù)學(xué)第一章數(shù)學(xué)試卷
- 歷史事件分析與解讀題
- 2024高考數(shù)學(xué)常考題型第15講 等比數(shù)列的通項(xiàng)及前n項(xiàng)和性質(zhì)7大題型總結(jié) (解析版)
- (正式版)JBT 11270-2024 立體倉(cāng)庫(kù)組合式鋼結(jié)構(gòu)貨架技術(shù)規(guī)范
- 7.1.2全概率公式課件高二下學(xué)期數(shù)學(xué)人教A版選擇性
- 硝酸脂類藥物的作用注意事項(xiàng)不良反應(yīng)
- 兩、三位數(shù)乘一位數(shù)(連續(xù)進(jìn)位)(教案)-三年級(jí)上冊(cè)數(shù)學(xué)人教版
- 五年級(jí)數(shù)學(xué)(小數(shù)乘法)計(jì)算題及答案匯編
- 新質(zhì)生產(chǎn)力課件
- T-NAHIEM 101-2023 急診科建設(shè)與設(shè)備配置標(biāo)準(zhǔn)
- 【綠色家園你我共建】約會(huì)春天擁抱綠色-2024年3月12日植樹節(jié)主題班會(huì)(小學(xué)通用版)
- 解分式方程50題八年級(jí)數(shù)學(xué)上冊(cè)
- 手術(shù)患者vte預(yù)防
評(píng)論
0/150
提交評(píng)論