【《浮點乘法器的設(shè)計、綜合與仿真探析案例》4200字】_第1頁
【《浮點乘法器的設(shè)計、綜合與仿真探析案例》4200字】_第2頁
【《浮點乘法器的設(shè)計、綜合與仿真探析案例》4200字】_第3頁
【《浮點乘法器的設(shè)計、綜合與仿真探析案例》4200字】_第4頁
【《浮點乘法器的設(shè)計、綜合與仿真探析案例》4200字】_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

浮點乘法器的設(shè)計、綜合與仿真分析案例目錄TOC\o"1-3"\h\u14103浮點乘法器的設(shè)計、綜合與仿真分析案例 139571.1浮點乘法器Verilog設(shè)計 161591.2浮點乘法器邏輯綜合 3238281.2浮點乘法器布局布線 6301391.3浮點乘法器VCS仿真 111.1浮點乘法器Verilog設(shè)計 如圖3-4所示,通用的32位單精度浮點數(shù)由三個部分組成,可以表示為V=(?1)S:1-bit符號域(sign),符號位為0即正,為1即負。E:8-bit指數(shù)域(exponent),表示2的指數(shù),為了能表示更小的數(shù),一般會加一個偏移量-127,則表示的實際值范圍為-126~127。M:23-bit小數(shù)域(mantissa/fraction),表示“1.”后面的二進制小數(shù)位。圖3-432位單精度浮點數(shù)構(gòu)成 在了解浮點數(shù)的結(jié)構(gòu)后我們不難理解它的乘法: (1)對符號位進行異或; (2)計算指數(shù)位,由于兩個操作數(shù)都有偏移量,最終結(jié)果的實際值加上它的偏移量之后的指數(shù)域應當是兩個操作數(shù)的指數(shù)域相加再減去127,如果乘數(shù)部分有進位則需要再加上1; (3)計算尾數(shù)時,需要將兩個操作數(shù)的隱藏個位的1還原,也即兩個數(shù)實際上都是24位的二進制數(shù),整數(shù)位都為1。在兩者相乘之后可得到一個48位的二進制數(shù),有2位的整數(shù)位和44位小數(shù)位。如果整數(shù)位為01則無需移位,若為11或者10則需要將尾數(shù)規(guī)范化,把乘數(shù)整體左移移位,且指數(shù)位加一。 (4)浮點乘法的最終結(jié)果M[22:0]會取乘數(shù)P[47:0]中的[46:24]位,而剩余位數(shù)是否進1則取決于舍入模式。則設(shè)置[23]位為保留位G(guard),[22]位為近似位R(round),將剩下的22位bit進行禍操作則得到粘滯位S(sticky)。則如果保留位G是0,直接舍棄R和S;G是1時,若R、S中有1則進位,尾數(shù)的最終結(jié)果即可表達為P[46:24]+G*(R|S)。 32位浮點乘法器Verilog代碼如下:`defineSIGN 31`defineEXP 30:23`defineM 22:0`defineP 24`defineG 23`defineR 22`defineS 21:0`defineBIAS 127modulefp_mul(inputwireclk,inputwire[31:0]a,inputwire[31:0]b,outputwire[31:0]y); reg[`P-2:0]m; reg[7:0]e; reg[`P*2-1:0]product; regG,R,S; regs,normalized,state,next_state; parameterSTEP_1=1'b0,STEP_2=1'b1;initialbegin next_state<=STEP_1;end always@(posedgeclkornegedgerst)begin if(!rst)begin state<=STEP_1;next_state<=STEP_1;endelsebeginstate<=next_state;end always@(state)begin case(state) STEP_1:begin product={1'b1,a[`M]}*{1'b1,b[`M]}; S=|product[`S]; normalized=product[47]; if(!normalized)product=product<<1; next_state=STEP_2; end STEP_2:begin if(!a[`M]|!b[`M])begin s=0;e=0;m=0; endelsebegin s=a[`SIGN]^b[`SIGN]; m=product[46:24]+(product[`G]&(product[`R]|S)); e=a[`EXP]+b[`EXP]-`BIAS+normalized; end next_state=STEP_1; end endcase end assigny={s,e,m};endmodule 代碼解釋:代碼構(gòu)建了一個簡單的只有兩個狀態(tài)的有限狀態(tài)機(FSM)。STEP_1的狀態(tài)下進行尾數(shù)的相乘;計算粘滯位S;判斷乘數(shù)的整數(shù)最高位并規(guī)范化尾數(shù)決定是否位移。STEP_2狀態(tài)下,判斷是否有操作數(shù)的尾數(shù)部分全為0,若全為0我們認為該浮點數(shù)數(shù)值為0,則結(jié)果亦為0;若都不為0則對符號位進行異或,通過上個狀態(tài)中計算的尾數(shù)乘數(shù)以及保留位、近似位和粘滯位確定最終結(jié)果的尾數(shù),最后將兩個操作數(shù)指數(shù)相加并加上是否尾數(shù)規(guī)范化的參數(shù)。在復位信號為0時當前狀態(tài)和下一時刻的狀態(tài)屆為STEP_1,否則兩個狀態(tài)在執(zhí)行完各自的指令后,在下一個上升沿無條件互相轉(zhuǎn)移。1.2浮點乘法器邏輯綜合 邏輯綜合所用的工具為DC,首先可通過.synopsy_dc.setup.dc定義工作路徑,指定工藝庫。其中TargetLibrary和LinkLibrary為映射和優(yōu)化提供具體的cell生成實際電路,所用的具體的db文件一般在工藝庫的synopsys文件夾下,db文件可由lib文件經(jīng)LC編譯而成,一般包含的信息有:元件(cell)的功能、時延、面積、功耗等等;工作環(huán)境(operatingconditions)的電壓-溫度比例因數(shù)、各元件中的參數(shù)在不同模式下的調(diào)節(jié)等等;設(shè)計規(guī)則約束(design)比如最小最大電容、轉(zhuǎn)換時間、扇入扇出等等;連線負載模型(wireloadmodels)的電阻、電容、面積約束等等。SymbolLibrary為可視化提供cell的符號,可使用默認庫。SyntheticLibrary(IPLibrary)一般由軟件自帶,用來進行從RTL到與軟件庫對應的門級網(wǎng)表的綜合。其中Target和Link庫必須設(shè)置,其他庫可以不設(shè)置或者采用軟件默認的自帶庫,庫設(shè)置命令形如下文: echo"************DC'ownlibrarypath*********************"set_app_varsynthetic_library[listdw_foundation.sldbstandard.sldb]echo"***********Targetlibraryname*********"set_app_vartarget_library[list…………]echo"***********Linklibraryname************"set_app_varlink_library[list*…………dw_foundation.sldb]echo"***********SymbolLibraryname**********"set_app_varsymbol_library[listgeneric.sdb]設(shè)置好啟動環(huán)境后可打開DC讀入verilog文件,對設(shè)計添加約束。為時鐘輸入創(chuàng)建時鐘,對其他時序相關(guān)的輸入出之于時鐘分別建立最大上升/下降時間,如果有不包含時序的組合邏輯也可以直接在輸入和輸出之間設(shè)置時延約束;為輸入端口設(shè)定驅(qū)動元件,具體元件可在對應的工藝庫中選擇,相應的,也可以為輸出設(shè)定負載;將操作條件與工藝庫的對應模式相匹配,約束命令形如下文:create_clock-name"clk"-period20-waveform{1020}{clk}set_input_delay-clockclk-max-fall10"…………" set_output_delay-clockclk-max-fall10"…………"set_driving_cell-lib_cellXXXXXX-from_pinXX-libraryXX{…………} set_load3.000000[get_ports……]set_operating_conditions-libraryXXXXset_max_fanout50floating_point_MULset_max_transition5floating_point_MUL然后便可以對設(shè)計進行綜合,并生成約束、時延、面積、功率的報告,在達到設(shè)計要求之后,輸出網(wǎng)表和時延等文件,輸出操作命令如下:write-hierarchy-formatddc-output../mapped/floating_point_MUL.ddcwrite_file-fverilog-hier-out../floating_point_MUL.vreport_timing>../report/time.rptreport_area>../report/area.rptreport_power>../report/power.rpt由于華力40lp工藝庫只提供125、25、0、-40幾個溫度節(jié)點,為了比較常溫與低溫設(shè)計的異同,本文分別用25和-40攝氏度兩個溫度節(jié)點對同一個浮點乘法器的Verilog進行了綜合。由于邏輯綜合只限于門級的網(wǎng)絡,其報告參數(shù)取決于庫文件內(nèi)各個器件提供的的大致參數(shù),對不同溫度的優(yōu)化程度有限。查看兩個溫度節(jié)點的時延和面積報告可以發(fā)現(xiàn),報告中兩者的時延和面積結(jié)果并沒有區(qū)別,報告內(nèi)容節(jié)選分別如下文所示。時序報告:Point Incr Pathclockclk(riseedge) 10.00 10.00clocknetworkdelay(ideal) 0.00 10.00state_reg/CK(HSR_DRNQ_2) 0.00 10.00rstate_reg/Q(HSR_DRNQ_2) 0.07 10.07fU152/ZN(HSR_IN_2) 0.01 10.09rstate_reg/D(HSR_DRNQ_2) 0.00 10.09rdataarrivaltime 10.09clockclk(riseedge) 30.00 30.00clocknetworkdelay(ideal) 0.00 30.00state_reg/CK(HSR_DRNQ_2) 0.00 30.00rlibrarysetuptime -0.04 29.96datarequiredtime 29.96datarequiredtime 29.96dataarrivaltime -10.09slack(MET) 19.87面積報告:Numberofports: 291Numberofnets: 1759Numberofcells: 1267Numberofcombinationalcells: 1204Numberofsequentialcells: 60Numberofmacros/blackboxes: 0Numberofbuf/inv: 155Numberofreferences: 29Combinationalarea: 3106.756785Buf/Invarea: 190.864802Noncombinationalarea: 171.637206Macro/BlackBoxarea: 0.000000NetInterconnectarea: undefined(Nowireloadspecified)Totalcellarea: 3278.393991Totalarea: undefined 而不同溫度節(jié)點DC綜合的功耗報告卻有細微差別,低溫的總動態(tài)功耗和漏電流功耗都要小于常溫功耗,這一點也符合通常的認知。常溫功耗報告:CellInternalPower=112.1774uW(18%)NetSwitchingPower=499.3588uW(82%)TotalDynamicPower=611.5363uW(100%)CellLeakagePower=7.7603uWInternal Switching Leakage TotalPowerGroupPower Power Power Power(%)Attrsio_pad 0.0000 0.0000 0.0000 0.0000 (0.00%)memory 0.0000 0.0000 0.0000 0.0000 (0.00%)black_box 0.0000 0.0000 0.0000 0.0000 (0.00%)clock_network 0.0000 0.0000 0.0000 0.0000 (0.00%)register 5.3048e-04 3.5858e-05 8.4860 5.7482e-04(0.09%)sequential 9.5716e-03 3.4894e-03 371.8181 1.3433e-02(2.17%)combinational 0.1021 0.4958 7.3799e+03 0.6053 (97.74%)Total 0.1122mW 0.4994mW 7.7602e+03nW0.6193Mw -40度功耗報告: CellInternalPower=112.1774uW(18%) NetSwitchingPower=499.3588uW(82%)TotalDynamicPower=611.5363uW(100%)CellLeakagePower=7.7603uW Internal Switching Leakage TotalPowerGroup Power Power Power Power (%)Attrsio_pad 0.0000 0.0000 0.0000 0.0000 (0.00%)memory 0.0000 0.0000 0.0000 0.0000 (0.00%)black_box 0.0000 0.0000 0.0000 0.0000 (0.00%)clock_network 0.0000 0.0000 0.0000 0.0000 (0.00%)register 5.3048e-04 3.5858e-05 8.4860 5.7482e-04(0.09%)sequential 9.5716e-03 3.4894e-03 371.8181 1.3433e-02(2.17%)combinational 0.1021 0.4958 7.3799e+03 0.6053 (97.74%)Total 0.1122mW 0.4994mW 7.7602e+03nW0.6193mW1.2浮點乘法器布局布線 在得到DC生成的門級網(wǎng)表的verilog文件之后,便可以結(jié)合工藝庫對元件進行布局布線。想要對布局布線進行時序分析和優(yōu)化,需要先建立多模多角MMMC文件,文件中需定義RCCorner、DelayCorner、ConstraintMode。RC和DelayCorner是基于工藝提供的RC文件CapTbl的時延分析模型;約束模式ConstraintMode即為對設(shè)計的時延、面積等約束,可以參考DC約束文件,MMMC設(shè)置形如: create_library_set -nameTYPlib-timing{…………}create_rc_corner-nameRCcorner-cap_table{XXXXXXXXXX.CapTbl}\ -T{25}-preRoute_res{1.0}-preRoute_cap{1.0}-preRoute_clkres{0.0}\ -preRoute_clkcap{0.0}-postRoute_res{1.0}-postRoute_cap{1.0}\ -postRoute_xcap{1.0}-postRoute_clkres{0.0}-postRoute_clkcap{0.0}create_delay_corner-nameDELAYcorner-library_set{TYPlib}-rc_corner{RCcorner}create_constraint_mode-nameCONSTRAONTS-sdc_files{XXXX.sdc}create_analysis_view-nameANALYSISview-constraint_modeCONSTRAONTS\ -delay_cornerDELAYcornerset_analysis_view-setup[listANALYSISview]-hold[listANALYSISview]然后讀入網(wǎng)表verilog文件,設(shè)定lef文件,lef文件也是工藝庫提供的描述器件物理信息的一種文件形式,設(shè)置地VSS和驅(qū)動VDD。然后規(guī)定floorplan確定工作區(qū)域,將VDD和VSS設(shè)置為全局網(wǎng)絡并進行布線,定義各個端口的位置。然后便可進行布局,innovus會將庫中的cell映射到版圖上,部分代碼如下:setinit_mmmc_file"timing.tcl"setinit_verilogfloating_point_MUL_dc.vsetinit_top_cell"floating_point_MUL"setinit_lef_file{…………}setinit_gnd_netVSSsetinit_pwr_netVDDinit_designfloorPlan-siteCoreSite-rXXXXXXXXXXXXglobalNetConnectVDD-typepgpin-pinVDD-inst*globalNetConnectVSS-typepgpin-pinVSS-inst*sroute-nets{VDDVSS}-blockPinuseLefaddRing-nets{VDDVSS}…………addStripe-nets{VSSVDD}……editPin-pinWidth0.07-pinDepth0.3-fixedPin1-fixOverlap1-spreadDirectionclockwise\-sideLeft-layer1-spreadTyperange\-start0.0100.03-end0.0161.0-pin{a[0],……}…………setAnalysisMode-analysisTypeonChipVariationsetOptMode-usefulSkewfalsesetPlaceMode-timingDriventrue-congEffortauto-ignoreScantrueplace_opt_design然后便可以生成時鐘樹,時鐘樹上的元件由工藝庫中的相關(guān)時鐘元件組成。在確定時鐘布線后便可對全局進行布線。布線結(jié)束后,版圖上仍存在區(qū)域沒有任何元件或是布線,需要用Filler填充,相關(guān)元件亦包含在工藝庫中,部分代碼如下:set_ccopt_propertymax_fanout100set_ccopt_mode-integrationnative-cts_buffer_cells{…………}、-cts_use_inverterstrue-ccopt_modify_clock_latencytruecreate_ccopt_clock_tree_specccopt_design-ctsoptDesign-postCTS-holdrouteDesignoptDesign-postRoutesetFillerMode-corePrefixFILL-core{……}addFiller在完成所有布局布線之后,可以對版圖進行連接(Connectivity)、拓撲(Geometry)、版圖設(shè)計規(guī)則(DRC)驗證。驗證通過后即可保存設(shè)計,輸出版圖文件gds、RC文件cap,時延文件sdf,網(wǎng)表文件Verilog等等。代碼形如下文:verifyConnectivityverifyGeometryverify_drcsaveDesignXXXX.enc–defextractRCXXXX.caprcOut-spefXXXX.spefwrite_sdfXXXX.sdfstreamOutXXXX.gds-merge{XXX_LIBRARY——XXX.gds}根據(jù)上文步驟,本文分別根據(jù)常溫和-40度的DC網(wǎng)表文件和工藝庫以及相應約束,對浮點乘法器做了布局布線,并通過report命令分別生成時延、面積等報告。常溫和-40攝氏度的時序、面積、功耗報告節(jié)選分別如下文所示,由于不同溫度節(jié)點下時鐘樹和布線等方面的差異,低溫工藝下數(shù)據(jù)抵達的時間略晚,時間裕度也要略低于常溫。常溫時序報告:OtherEndArrivalTime 10.000-Recovery0.069+PhaseShift 20.000=RequiredTime 29.931-ArrivalTime 20.000=SlackTime 9.931ClockRiseEdge 10.000+InputDelay 10.000 =BeginpointArrivalTime 20.000|Instance |Arc |Cell |Delay |Arrival |Required || | | | |Time |Time || |rst^ | | |20.000 |29.931 ||state_reg |RDN^ |HSR_DRNQ_2 |0.000 |20.000 |29.931 |-40度時序報告:OtherEndArrivalTime10.000-Recovery0.240+PhaseShift20.000=RequiredTime29.760-ArrivalTime20.037=SlackTime9.723ClockRiseEdge10.000+InputDelay10.000+DriveAdjustment0.037=BeginpointArrivalTime20.037|Instance |Arc |Cell |Delay |Arrival |Required || | | | |Time |Time ||+++++|| |rst^ | | |20.037 |29.760 ||state_reg |RDN^ |HSR_DRNQ_2 |0.000 |20.037 |29.760 | 低溫設(shè)計的總面積要略大于常溫,主要差異在于乘法器的面積和布線差異。常溫面積報告:DepthName #Inst Area(um^2)0floating_point_MUL 1303 3488.13361mult_77 980 2701.5661add_121 45 79.73281add_0_root_sub_1_root_add_129_2 9 47.9808-40度面積報告:DepthName #Inst Area(um^2)0 floating_point_MUL 1314 3541.7581 mult_60 980 2715.50161 add_82 45 79.73281 add_0_root_sub_1_root_add_86_2 9 47.9808 經(jīng)過布局布線后,低溫設(shè)計的功耗優(yōu)勢明顯增加,僅為常溫功耗的91.21%。常溫功耗節(jié)選:TotalPowerTotalInternalPower: 0.19389626 20.1958%TotalSwitchingPower: 0.76479590 79.6594%TotalLeakagePower: 0.00138966 0.1447%TotalPower: 0.96008183Group Internal Switching Leakage Total Percentage Power Power Power Power (%)Sequential 0.005934 0.003534 5.93e-05 0.009527 0.9923Macro 0 0 0 0 0IO 0 0 0 0 0Combinational 0.188 0.7613 0.00133 0.9506 99.01Clock(Com) 0 0 0 0 0Clock(Seq) 0 0 0 0 0Total 0.1939 0.7648 0.00139 0.9601 100-40度功耗節(jié)選:TotalPowerTotalInternalPower:0.1498818

溫馨提示

  • 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

提交評論