




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基本后端流程(漂流&雪擰)- 2010/7/3-2010/7/8 本教程將通過一個(gè)8*8的乘法器來進(jìn)行一個(gè)從verilog代碼到版圖的整個(gè)流程(當(dāng)然只是基本流程,因?yàn)檎嬲粋€(gè)大型的設(shè)計(jì)不是那么簡單就完成的),此教程的目的就是為了讓大家盡快了解數(shù)字IC設(shè)計(jì)的大概流程,為以后學(xué)習(xí)建立一個(gè)基礎(chǔ)。此教程只是本人探索實(shí)驗(yàn)的結(jié)果,并不代表內(nèi)容都是正確的,只是為了說明大概的流程,里面一定還有很多未完善并且有錯(cuò)誤的地方,我在今后的學(xué)習(xí)當(dāng)中會對其逐一完善和修正。此后端流程大致包括以下內(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ī)模越來越大,如果對門級網(wǎng)表進(jìn)行動態(tài)仿真的話,會花費(fèi)較長的時(shí)間(規(guī)模大的話甚至要數(shù)星期),這對于一個(gè)對時(shí)間要求嚴(yán)格(設(shè)計(jì)周期短)的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對整個(gè)設(shè)計(jì)布圖前的靜態(tài)時(shí)序分析,沒有時(shí)序違規(guī),則進(jìn)入下一步,
3、否則重新進(jìn)行綜合。(PR后也需作signoff的時(shí)序分析)4. 使用cadence公司的SOCencounter對綜合后的網(wǎng)表進(jìn)行自動布局布線(APR)5. 自動布局以后得到具體的延時(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后的門級功能仿真(如果需要)7. 進(jìn)行DRC和LVS,如果通過,則進(jìn)入下一步。8. 用abstract對此8*8乘法器進(jìn)行抽取,產(chǎn)生一個(gè)lef文件,相當(dāng)于一個(gè)hard macro。
4、9. 將此macro作為一個(gè)模塊在另外一個(gè)top設(shè)計(jì)中進(jìn)行調(diào)用。10. 設(shè)計(jì)一個(gè)新的ASIC,第二次設(shè)計(jì),我們需要添加PAD,因?yàn)闆]有PAD,就不是一個(gè)完整的芯片,具體操作下面會說。11. 重復(fù)第4到7步1 / 401. 邏輯綜合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
5、 begin dataout<=data1*data2; endendendmodule2) 綜合之前,我們要選取庫,寫好約束條件,修改dc的啟動文件synopsys_dc.setup,目標(biāo)庫選擇TSMC(此設(shè)計(jì)都是用TSMC18的庫)的typical.db。(選擇max庫會比較好)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
6、_latency -max 0.1 get_ports clk /core的clk到寄存器clk端的net連線延時(shí)set_clock_uncertainty -setup 2 get_ports clk /時(shí)鐘延時(shí)的不確定性,求setup違規(guī)時(shí)會被計(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í),外部信號到input端的連線延時(shí)set_output_delay -max 0.5
7、-clock clk all_outputs /輸出延時(shí)set_driving_cell -lib_cell INVX4 all_inputs /輸入端的驅(qū)動強(qiáng)度set_load -pin_load 0.0659726 all_outputs /輸出端的驅(qū)動力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_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 /輸出延時(shí)文件,靜態(tài)時(shí)序分析時(shí)需要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) 時(shí)序分析綜合以后我們需要分析一下時(shí)序,看時(shí)序是否符合我們的要求,綜合實(shí)際上是一個(gè)setup時(shí)間的滿足過程,但是我們綜合的時(shí)候,連線的負(fù)載只是庫提供的(即上面的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 : 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我們來看以上報(bào)告
15、,dc報(bào)告的時(shí)候會顯示出關(guān)鍵路徑,即延時(shí)最大的路徑,時(shí)序分析包括兩段,前面一段是信號的延遲時(shí)間,即data arrival time 為4.47,下面是計(jì)算要求時(shí)間,也即相對于時(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í)序余量
16、為5.55,說明時(shí)序達(dá)到了要求,足夠滿足我們以后布局布線的時(shí)序要求。當(dāng)然,我們有專門的時(shí)序分析工具,primetime,下面會稍微介紹。2. 形式驗(yàn)證1) 怎么保證綜合前和綜合后的網(wǎng)表邏輯功能是一致的呢,對門級網(wǎng)表進(jìn)行動態(tài)仿真,又太浪費(fèi)時(shí)間,于是,一款強(qiáng)大的驗(yàn)證工具formality,給了我們很好的幫助。2) 形式驗(yàn)證數(shù)據(jù)準(zhǔn)備:綜合前RTL代碼,綜合后的網(wǎng)表,綜合所用到的庫。3) 驗(yàn)證過程如下:1. 首先我們打開formality,命令為fm_shell(命令行界面),formality(圖形界面)。初學(xué)者一般使用圖形界面,使用圖形界面的時(shí)候,工具會自動產(chǎn)生一個(gè)log文件,記錄命令,我們可以將
17、這個(gè)文件內(nèi)容做一個(gè)fms格式,這樣在下次驗(yàn)證的時(shí)候可以使用命令界面。2. 打開formality如下第一步:首先我們加入原RTL代碼,reference->read_design file->verilog->mux.v,選擇好以后load file第二步:然后選擇庫,沒加庫之前,F(xiàn)M會自動加載與工藝無關(guān)的庫,所以我們要自己把自己的目標(biāo)庫加上去,reference->read DB libarary->DB,選擇typical.db第三步:設(shè)置top名 reference->set top design 我們選擇mux為top名同樣的方法對網(wǎng)表進(jìn)行設(shè)置(第二
18、個(gè)菜單欄implementation)然后轉(zhuǎn)到第四欄,點(diǎn)擊run matching最后轉(zhuǎn)到第五欄,verify,如果網(wǎng)表無錯(cuò),會顯示驗(yàn)證通過。3 靜態(tài)時(shí)序分析靜態(tài)時(shí)序分析主要針對大型ASIC設(shè)計(jì),4 自動布局布線1)數(shù)據(jù)準(zhǔn)備第一:需要綜合后的網(wǎng)表以及時(shí)序約束文件mux.sv,mux.sdc第二:需要自動布局布線的物理庫(lef文件,這里用到tsmc18_6lm_cic.lef, tsmc18_6lm_antenna_cic.lef)為了能夠了解lef文檔的作用,這里對lef做簡單的介紹,lef一般分為兩種:一種是技術(shù)物理庫,主要包含工藝信息,設(shè)計(jì)規(guī)則信息,金屬通孔信息等。下例是對金屬一層的定義
19、,TYPE指明METAL1是可布線層,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
20、 HORIZONTAL ; EDGECAPACITANCE 9.1090e-05 ;END METAL1另外一種就是單元物理庫,定義了單元庫中各單元的信息,文件又有兩部分一種是SITE語句對布局(placement)最小單位的定義,另一部分是采用MACRO語句對單元屬性及幾何形狀的描述,下例是對一個(gè)與門為例來看看lef是如何描述它的。MACRO是單元定義的關(guān)鍵字,每一個(gè)MACRO代表一個(gè)單元。CLASS core說明該單元是用于芯片的核心區(qū),SIZE確定了單元的面積大小,比如5.04是代表該單元的高度,后面我們做單元供電route的時(shí)候,可以看到它們的寬度就是這個(gè)數(shù)值。再后面就是定義引腳A,B
21、,Y,VDD,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
22、 1.215 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 VD
23、D DIRECTION 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第三:時(shí)序庫文件,typical.lib,也就是時(shí)序文件,定義了門的各種時(shí)序信息,某種意義來講,這個(gè)和綜合使用的db庫是等價(jià)的。2)布局布線過程:第一步:打開encounter 把數(shù)據(jù)輸入,另外在advanced欄的Power相應(yīng)位置填上VDD,和VSS
24、。如下圖,設(shè)置完以后,記得把設(shè)置的配置文件做一個(gè)save以便于下次使用第二步:打開以后,我們可以看到芯片區(qū)域,左邊粉紅色的就是標(biāo)準(zhǔn)單元,中間那個(gè)就是我們要設(shè)計(jì)的區(qū)域,64%是指cell面積的占有率,一般來說控制在70%左右,布線的時(shí)候不會引起擁塞。另外我們需要對芯片進(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,則電源
25、環(huán)會被設(shè)置在IO與core之間。之后電源環(huán)就加進(jìn)去了,當(dāng)然這是一個(gè)小電路,電源規(guī)劃比較簡單,對于一個(gè)復(fù)雜的電路,還需要橫豎添加stripes,降低IRdrop。第四步:自動布局以及布置標(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)去了:第五步:布置好了以后,我們需要將電源,地,等接口先連接起來,首先我們在floorplan中選擇global net connection,分別將VDD,VSS等都連接起來。然后我們需要specify route將電源和
26、地線先連接起來,選擇route->specify route因?yàn)槲覀冞@個(gè)設(shè)計(jì)只有標(biāo)準(zhǔn)單元,所以我們只要選擇標(biāo)準(zhǔn)單元的布線即可:完成以后,點(diǎn)擊OK,會得到下面的圖:每行的row都有線連接到外面的電源環(huán)第六步:時(shí)鐘樹綜合(CTS),這是一個(gè)APR設(shè)計(jì)中最重要的一環(huán),為什么要進(jìn)行時(shí)鐘樹綜合呢,簡單地說,因?yàn)樾盘杺鬏數(shù)难訒r(shí),我們需要讓相應(yīng)路徑的時(shí)鐘路徑的也具有同樣的延時(shí),通過添加時(shí)鐘緩沖器的方法,來消除各路徑的建立時(shí)間,具體請參考相關(guān)書籍和資料。添加好時(shí)鐘樹以后的版圖如下:加了時(shí)鐘樹以后的版圖密集了很多,因?yàn)榧恿撕芏郻uf。時(shí)鐘樹的腳本:AutoCTSRootPin clkPeriod 10ns
27、MaxDelay 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 CLKBUF
28、X12 CLKBUFX16 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í)候,需要指定庫文件中的streamOut.map
29、文件,和merge gds(tsmc18_core.gds)文件,如圖所示保存網(wǎng)表,并將此版圖提取的網(wǎng)表做一次formality,與原代碼匹配成功。再提取def文件,保存為mux.def5 第二次靜態(tài)時(shí)序分析用版圖實(shí)際提取的延時(shí)文件進(jìn)行6 APR后仿真用modelsim對版圖提取的網(wǎng)表和sdf文件進(jìn)行仿真。7 用calibre對版圖進(jìn)行DRC及其LVS驗(yàn)證在做這步之前,我們需要把相關(guān)的文檔拷貝到icfb的工作目錄下Encounter導(dǎo)出的gds文檔:這里是mux8.gds(注意merge庫的map文件)技術(shù)文檔如:0.18um_Virtuoso4.4.tf,可以在廠家提供的庫中去找顯示文件:d
30、isplay.drfCaliber驗(yàn)證文件:drc,lvs文檔第一步:將encounter的版圖數(shù)據(jù)導(dǎo)入virtuoso,打開icfb&,選擇file->import->stream然后將版圖信息和技術(shù)文件填入:導(dǎo)入成功以后會出現(xiàn)我們所做的庫,mux就是我們encounter中所畫的版圖。我們把版圖打開:這就是我們所畫的版圖然后在此進(jìn)行drc,和lvs,通過以后再進(jìn)行下面的工作。第二步:drc檢查此處有錯(cuò),并不是邏輯有問題,是因?yàn)槊芏炔粔虻膯栴},需要在encounter階段加FILLER,F(xiàn)ILLER是與邏輯無關(guān)的,因?yàn)榇S的流片加工要求,需要加的,密度不夠,加工容易引起
31、問題。所以如果DRC報(bào)類似錯(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,之后會得到一個(gè)CHIP.spi的網(wǎng)表文件。(此處的verilog的轉(zhuǎn)換是用庫中的lvs.cmd產(chǎn)生)2)用來lvs
32、的網(wǎng)表我們選擇之前導(dǎo)出CHIP.spi:然后run lvs,匹配成功!8 用abstract對模塊進(jìn)行抽取我們把8*8乘法器模塊用abstract工具導(dǎo)出lef,作為硬核,用于后面自動布局布線的調(diào)用,我們可以從此試驗(yàn)中找到模數(shù)混合自動版圖的設(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第五步:打開 librar
33、y manager 在mux庫里打開mux的layout,并選擇tools=>layout。第六步:選擇 Edit=>Search ,點(diǎn)擊 Add Criteria ,如下設(shè)置,選擇aplly ,在選擇 Replace All。 第七步:保存退出第八步:打開 abstract,并打開mux庫。然后把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。層:
34、METAL3,Purpose: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è)to
35、p將包含新的邏輯功能,之前的mux模塊,還有PAD模塊。這個(gè)設(shè)計(jì)的大概框圖如下:PDIDGZ為數(shù)字輸入IO口PDO04CDG為數(shù)字輸出IO口PVDD1DGZ 為供電PAD高電端PVSS1DGZ 為供電PAD的地電端Multiple為之前做的宏模塊Mux為新加邏輯第二步,代碼的改寫:我們重新編寫過verilog代碼(帶PAD),帶PAD做綜合有個(gè)好處,可以不用設(shè)置輸入輸出端口的驅(qū)動,因?yàn)镻AD的驅(qū)動已經(jīng)很大了,這樣綜合出的結(jié)果更接近實(shí)際。 新的verilog代碼如下:module mux_1 (clk,clr,a,b,y);/(這里我們引用了新的邏輯,注意這個(gè)mux_1和之前的沒半點(diǎn)關(guān)系,只是為
36、了體現(xiàn)調(diào)用關(guān)系隨便加的一個(gè)而已)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é)合前面的框圖是想想是如何加的)
37、input 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);PD
38、IDGZ PAD_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),
39、.C(data1_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
40、(.PAD(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
41、(dataout_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)
42、,.PAD(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(datao
43、ut_core11),.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
45、:0 dataout_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),.dat
46、aout_pcb(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)生的延時(shí)文件再經(jīng)過pt靜態(tài)時(shí)序分析以后產(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_
48、outputs#set_driving_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í)候不針對mux進(jìn)行綜合,綜合工具會自動跨越邊界對其他邏輯進(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.s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程項(xiàng)目管理前沿考點(diǎn)試題及答案
- 實(shí)踐中的公共關(guān)系學(xué)必考試題及答案
- 2025年工程經(jīng)濟(jì)各類試題解析試題及答案
- 工程經(jīng)濟(jì)考試復(fù)習(xí)中的物料管理試題及答案
- 2025年工程項(xiàng)目管理知識節(jié)點(diǎn)試題及答案
- 公共關(guān)系中的數(shù)字化轉(zhuǎn)型試題及答案
- 公共關(guān)系學(xué)影響力評價(jià)試題及答案研究
- 第23《父親、樹林和鳥》課件
- 項(xiàng)目團(tuán)隊(duì)合作策略試題及答案
- 《hemo網(wǎng)絡(luò)推廣策略》課件
- 機(jī)械制圖習(xí)題集第九章《裝配圖》匯編
- 天師大和韓國世翰大學(xué)研究生入學(xué)英語試題
- 土建生態(tài)環(huán)保和綠色施工環(huán)境管理培訓(xùn)ppt
- GB/T 27930-2023非車載傳導(dǎo)式充電機(jī)與電動汽車之間的數(shù)字通信協(xié)議
- 電力工程項(xiàng)目管理手冊
- 2023年高考真題-政治(江蘇卷)含解析
- 醫(yī)院化驗(yàn)單模板 血常規(guī)
- 領(lǐng)導(dǎo)干部個(gè)人事項(xiàng)少報(bào)漏報(bào)說明
- 提高住院病歷完成及時(shí)性持續(xù)改進(jìn)(PDCA)
- 華為公司質(zhì)量管理手冊
- 自主擇業(yè)協(xié)議書
評論
0/150
提交評論