freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

網(wǎng)絡(luò)處理器中微引擎的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文(參考版)

2025-06-26 01:21本頁面
  

【正文】 目前比較主流的綜合工具是Synopsys公司的Design Compiler,我們在ASIC評估過程中采用這一工具。邏輯綜合是綜合工具對電路的一些性能進(jìn)行折中的結(jié)果,對于數(shù)字IC設(shè)計(jì)來說,就是在電路的面積和功耗以及面積和時(shí)序上的性能進(jìn)行折中。 FPGA關(guān)鍵路徑報(bào)告微引擎中的一個(gè)處理單元消耗 38676個(gè) 4 輸入 LUT資源,占 300 萬系統(tǒng)門 FPGA 的 11%。邏輯綜合后Worst ,最高頻率為 。首先對微引擎原型方案進(jìn)行評估。 硬件開銷評估(1)FPGA開銷評估FPGA具有可重配置靈活、開發(fā)周期短、成本低的優(yōu)點(diǎn),而且能夠在實(shí)際的硬件環(huán)境中來驗(yàn)證實(shí)現(xiàn)方案,因此在對RTL設(shè)計(jì)進(jìn)行過充分的前仿真驗(yàn)證之后,本文利用 FPGA進(jìn)行了原型實(shí)現(xiàn)。因此,對于微引擎硬件開銷的評估,本文采用的策略是先實(shí)現(xiàn)一個(gè) RTL描述的原型系統(tǒng),然后根據(jù) EDA 工具報(bào)告的結(jié)果來判斷其硬件開銷,該方法具有結(jié)果直觀可靠且便于分析找出瓶頸等優(yōu)點(diǎn)。方案實(shí)現(xiàn)的復(fù)雜度(例如面積開銷、功耗、驗(yàn)證開銷、可測試下等)極大的影響了微引擎最后的成本:可提供的處理能力(例如最大的吞吐率、包在NP中的延遲等)最終決定了網(wǎng)絡(luò)處理器的性能。本文在微引擎實(shí)現(xiàn)方案設(shè)計(jì)階段、FPGA(現(xiàn)場可編程邏輯門陣列) 原型實(shí)現(xiàn)和驗(yàn)證階段以及ASIC 綜合實(shí)現(xiàn)階段分別對方案進(jìn)行了詳細(xì)的評估。 微引擎性能評估 評估策略和方法當(dāng)網(wǎng)絡(luò)處理器微引擎的設(shè)計(jì)和功能驗(yàn)證完成之后,我們需要對設(shè)計(jì)方案的性能和開銷進(jìn)行仔細(xì)的分析和評估。通過以上結(jié)果可以看出,基于覆蓋率驅(qū)動(dòng)的驗(yàn)證方法在短時(shí)間對微引擎進(jìn)行了有效的驗(yàn)證,快速達(dá)到了收斂條件,保證了微引擎的功能完整性,為網(wǎng)絡(luò)處理器的可靠性打下了堅(jiān)實(shí)的基礎(chǔ)。隨機(jī)測試激勵(lì)很難驗(yàn)證覆蓋到的跳轉(zhuǎn)(JMP)和SetMaxMin功能點(diǎn)仿真結(jié)果。 第一階段各模塊代碼覆蓋率統(tǒng)計(jì)結(jié)果在本文的微引擎驗(yàn)證時(shí),針對隨機(jī)生成的指令難以覆蓋到的情況,手工加入的測試激勵(lì)包含了三百五十條指令(),加入的手工測試激勵(lì)主要是驗(yàn)證跳轉(zhuǎn)操作以及SetMaxMin指令。此階段功能驗(yàn)證的代碼覆蓋率中語句覆蓋最低的是P3級(jí)的MAX執(zhí)行模塊,%。然后根據(jù)該指令庫,微引擎驗(yàn)證平臺(tái)在雙INTEL CPU 的Linux服務(wù)器上運(yùn)行了八個(gè)小時(shí)左右,產(chǎn)生了五千兩百條微碼指令程序。 微引擎驗(yàn)證流程(2)驗(yàn)證結(jié)果由前述可知,本文生成了兩部分的測試指令:驗(yàn)證平臺(tái)自動(dòng)生成的隨機(jī)測試指令和人工編寫的測試指令。本文采用QuestaSim這個(gè)仿真工具配合驗(yàn)證工作,它具有全面的功能驗(yàn)證解決方案,也是目前業(yè)界唯一能夠支持所有驗(yàn)證流程并提高質(zhì)量和生產(chǎn)力的數(shù)字電路功能驗(yàn)證集成化平臺(tái)。仍然以MOV指令為例,分別對操作碼、源操作數(shù)、目的操作數(shù)、IF條件等進(jìn)行覆蓋率統(tǒng)計(jì)。如果微引擎能夠完全正確處理以上兩個(gè)方面,就基本可以說明微引擎的功能正確性。但是35種類型的指令組成的合法的指令序列有無數(shù)種,不可能一一驗(yàn)證,所以只有對其功能點(diǎn)進(jìn)行不同層次的整合,從而完成功能覆蓋率模型的設(shè)計(jì)實(shí)現(xiàn)。UVM驗(yàn)證方法學(xué)特別注重覆蓋率的統(tǒng)計(jì),通過觀察覆蓋率統(tǒng)計(jì)數(shù)據(jù)驗(yàn)證人員可及時(shí)發(fā)現(xiàn)設(shè)計(jì)代碼中未驗(yàn)證之處和未驗(yàn)證功能,因而可以在下一步的測試激勵(lì)中做出針對性的調(diào)整,最終使驗(yàn)證充分和完整。(3)覆蓋率統(tǒng)計(jì) 覆蓋率主要包括代碼覆蓋率和功能覆蓋率。本文中對跳轉(zhuǎn)指令的約束采用以下兩種方式相結(jié)合的辦法:1)每條跳轉(zhuǎn)指令的跳轉(zhuǎn)地址都為緊跟著它的下一個(gè)地址、下兩個(gè)或者下三個(gè)地址處,具體是哪個(gè)地址進(jìn)行隨機(jī)選擇;2)同時(shí)生成另一些跳轉(zhuǎn)類型,無條件向前跳轉(zhuǎn),在本文中,我們將這種跳轉(zhuǎn)類型放在了每次需要產(chǎn)生的 1024 條指令的最后部分。在隨機(jī)指令序列生成的過程中,要避免生成一些雖然合法,但對可能是處理器陷入死循環(huán),導(dǎo)致驗(yàn)證幾乎沒有意義的指令序列。轉(zhuǎn)發(fā)微引擎的指令集對指令序列的要求并不是很多,主要包含以下幾點(diǎn):1)分支跳轉(zhuǎn)指令執(zhí)行之后必須插入NOP指令,以解決流水線的控制相關(guān)導(dǎo)致的執(zhí)行錯(cuò)誤;2)不能連續(xù)執(zhí)行同一功能點(diǎn)的情況,比如微引擎向RFD寄存器進(jìn)行寫入命令,中間需要加入其它的指令比如空指令NOP;3)某些指令執(zhí)行時(shí)需先初始化一些相關(guān)的功能寄存器,比如Minterm操作執(zhí)行時(shí)需預(yù)先初始化輸入寄存器MINT_I。 生成MOV指令激勵(lì)的部分約束其次,對指令序列的合法性要求的滿足。其中 rand 表示隨機(jī)生成,而十七到三十六行表示的是對MOV指令提供的約束表達(dá)式。指令合法性的要求相對而言比較容易滿足,支持的是 73 比特的 RSIC 指令集,所以必須限定隨機(jī)生成的指令為73位,同時(shí)微引擎的 30多種類型的指令有著各自不同的指令格式,需要逐一對其添加約束,下面以MOV指令為例進(jìn)行說明。有效性具體分析包括以下三點(diǎn)內(nèi)容。如果隨機(jī)指令失去了有效性,那隨機(jī)驗(yàn)證本身也就失去了它的意義。比如邊界條件以及未測試到的功能點(diǎn)等等。其中手工編寫的測試激勵(lì)主要用于用于兩點(diǎn):1)系統(tǒng)的初始化。 驗(yàn)證平臺(tái)總體結(jié)構(gòu)(2)測試激勵(lì)的生成測試激勵(lì)的生成是微引擎驗(yàn)證平臺(tái)最核心的部分。 UVC解決方案 驗(yàn)證環(huán)境(1) 驗(yàn)證平臺(tái)總體結(jié)構(gòu) 根據(jù)前文分析可以知道,本文采用的基于UVM方法學(xué)的驗(yàn)證平臺(tái)對微引擎進(jìn)行功能驗(yàn)證,驗(yàn)證環(huán)境中包含主代理(Master agent)、從代理(Slave agent)、序列庫(Sequence libirary)記分板(Scoreboard)、覆蓋率收集(Covergroup monitor)以及配置部分。這些標(biāo)準(zhǔn)部件都是UVC庫中提供,平臺(tái)構(gòu)建的時(shí)候按照標(biāo)準(zhǔn)部件構(gòu)建自身所需的相應(yīng)部件,實(shí)現(xiàn)驗(yàn)證所需要的功能即可。(3) UVC解決方案UVC(Unicersal Verification Componen,通用驗(yàn)證組件)解決方案是基于UVM方法學(xué)的解決方案,為驗(yàn)證工作提供了驗(yàn)證框架、開放式驗(yàn)證類庫,使得構(gòu)建驗(yàn)證平臺(tái)的過程更加容易。另一方面UVM方法學(xué)也繼承了傳統(tǒng)方法學(xué)的很多優(yōu)點(diǎn),如提供系統(tǒng)級(jí)建模、使用事物處理組件和各種先進(jìn)的庫機(jī)制等等。UVM是建立在SystemVerilog平臺(tái)上的一個(gè)庫,它提供了一系列的接口,讓我們更加方便的驗(yàn)證數(shù)字邏輯電路的正確性。(2) UVM驗(yàn)證方法學(xué) 采用SystemVerilog進(jìn)行驗(yàn)證工作,是一項(xiàng)精細(xì)的工程和極其完整的任務(wù),需要實(shí)現(xiàn)各種激勵(lì)的生成、并將激勵(lì)按照某種規(guī)定施加給硬件、并從硬件得到響應(yīng),實(shí)現(xiàn)平臺(tái)的配置機(jī)制等,從零開始搭建一個(gè)平臺(tái)是復(fù)雜的過程,因此,一般搭建平臺(tái)是基于某種方法學(xué),例如基于AVM、VMM、UVM,這些方法學(xué)都提供自身的平臺(tái)庫以及平臺(tái)框架,使得驗(yàn)證工作更加快捷有效。因此驗(yàn)證環(huán)境必須要有自我檢查的功能。在實(shí)現(xiàn)驗(yàn)證平臺(tái)的比較模塊時(shí),本文采取了自檢的方法。然后通過比較測試激勵(lì)在兩個(gè)模型上運(yùn)行的輸出結(jié)果和中間狀態(tài),來驗(yàn)證被測設(shè)計(jì)的正確性,被測試的RTL代碼通常稱為DUT(Design Under Test)。而結(jié)果比較模塊通常也有兩種方法實(shí)現(xiàn),一種是在驗(yàn)證平臺(tái)中同時(shí)運(yùn)行兩個(gè)模型,即一個(gè)RTL的實(shí)現(xiàn)模型和一個(gè)參考模型(reference model)。本文采用System verilog編寫的驗(yàn)證平臺(tái)進(jìn)行驗(yàn)證,其中最重要的兩個(gè)模塊是激勵(lì)生成和結(jié)果比較。此時(shí)并不需要非常了解微引擎內(nèi)部結(jié)構(gòu),關(guān)鍵是要根據(jù)System verilog的語法結(jié)構(gòu)編寫微引擎的指令集。4 驗(yàn)證策略和方法(1) 驗(yàn)證策略本文分兩階段進(jìn)行微引擎的驗(yàn)證。為了解決這個(gè)問題,EDA標(biāo)準(zhǔn)化組織Accellera提出了SystemVerilog(SV),它結(jié)合C、C++、和Verilog語言的概念,極大地提高了更高抽象層次上的設(shè)計(jì)建模能力,擁有芯片設(shè)計(jì)及驗(yàn)證人員所需的全部結(jié)構(gòu)。 微引擎設(shè)計(jì)驗(yàn)證和性能分析第3章 微引擎設(shè)計(jì)驗(yàn)證和性能分析第4章 微引擎功能驗(yàn)證隨著IC設(shè)計(jì)規(guī)模的不斷增長和設(shè)計(jì)復(fù)雜度的不斷提高,驗(yàn)證已經(jīng)占據(jù)所耗時(shí)間和資源的三分之二,同時(shí)對驗(yàn)證的穩(wěn)定性和正確性提出了更高的要求,而驗(yàn)證平臺(tái)(testbench)往往決定了驗(yàn)證的結(jié)果是否可靠,因此驗(yàn)證平臺(tái)的設(shè)計(jì)非常關(guān)鍵。微引擎包含指令存儲(chǔ)器、輸入出入存儲(chǔ)器(寄存器)、內(nèi)部寄存器堆、功能執(zhí)行單元等功能模塊。 本章小結(jié) 首先對轉(zhuǎn)發(fā)微引擎的73位專用的指令集進(jìn)行了詳細(xì)的設(shè)計(jì)分析,增加的這些指令對于網(wǎng)絡(luò)處理中的微引擎對外部數(shù)據(jù)的訪問以及數(shù)據(jù)運(yùn)算要求非常適用,靈活可調(diào)的位寬以及字節(jié)或者位掩碼處理,提高了處理的效率和速度。即產(chǎn)生的位流數(shù)據(jù)文件Bitstream下載到FPGA板中進(jìn)行調(diào)試。因?yàn)橹挥衅骷_發(fā)商最了解器件的內(nèi)部結(jié)構(gòu),所以必須選用器件開發(fā)商提供的工具軟件。采用的工具是ISE,根據(jù)所選的芯片的型號(hào)將綜合輸出的邏輯網(wǎng)表翻譯成器件的底層硬件原語,它與芯片實(shí)際的配置情況還有較大差距。綜合的最終目標(biāo)是能得到標(biāo)準(zhǔn)的門級(jí)結(jié)構(gòu)網(wǎng)表,所以編寫的Verilog程序必須符合該綜合器風(fēng)格的要求,否則需要返回設(shè)計(jì)修改源代碼。本文采用Synplicity公司的Synplify Premier軟件對設(shè)計(jì)源代碼進(jìn)行綜合(Synthesis)。通過編寫測試激勵(lì)對各類數(shù)據(jù)包進(jìn)行驗(yàn)證,并觀察相應(yīng)的輸出波形信號(hào)。然后本級(jí)將產(chǎn)生得執(zhí)行結(jié)果寫回寄存器和存儲(chǔ)器,并將在P2級(jí)產(chǎn)生跳轉(zhuǎn)地址送到P0。直接出處到P3,更新寄存器Sreg4_t_p3[7:0]。5)LOOP指令,即IF(![F_LP_RSV]) JMP。若選擇值為1,即return指令使用參數(shù)Pc_stack_data_p2[15:14];若選擇值為0,即選擇普通的NOP參數(shù)。4) 確定NOP參數(shù)。2) PRI_ENC模塊運(yùn)算得到指令Jmul跳轉(zhuǎn)地址Jmul_addr[10:0],和Jump_addr [10:0]一起經(jīng)Jump_valid選擇相應(yīng)的跳轉(zhuǎn)地址信,輸出分支地址Jump_addr_p2[10:0]到P0級(jí)。然后根據(jù)指令譯碼信號(hào)Jump_pc_stack_valid選擇跳轉(zhuǎn)地址來源。其中Jmp(Loop)、Jstack(Return)、Call、Callstack跳轉(zhuǎn)地址可以取地址操作數(shù)得到,Jmul地址需要通過PRI_ENC模塊運(yùn)算得到。 P2級(jí)取A操作數(shù)原理圖另外,分支指令的執(zhí)行安排在P2級(jí)完成。2)P2級(jí)寄存輸出A_oprand_p2[31:0]。其余控制信號(hào)繼續(xù)傳遞到P3級(jí)。 P2級(jí)A操作數(shù)譯碼原理圖第二階段,取操作數(shù)包括硬件資源有寄存器堆UREG、SREG、HREG、OUT_IF,運(yùn)算寄存器ALU、MAX、MINT、ENC_PR,存儲(chǔ)器RMEM、Result Control。當(dāng)FBITS執(zhí)行的源操作數(shù)為4位立即數(shù)時(shí),相應(yīng)的四個(gè)地址控制位的值分別為0。若操作碼表示取立即數(shù)時(shí),輸出全零信號(hào)作為起始地址;若操作碼表示取寄存器內(nèi)容,輸出相應(yīng)的寄存器起始地址。2)A操作數(shù)寄存器地址分為直接和間接兩種,直接地址由譯碼信號(hào)A_reg_addr [8:0]得到,間接地址來自IND_RED寄存器;IND_RED寄存器的值來自于P3級(jí)輸入的寄存器Sreg7_ind_reg_p3。下面以A操作數(shù)譯碼舉例。第一階段,指令譯碼負(fù)責(zé)將指令寄存器中的73位(72:0)指令轉(zhuǎn)換成操作數(shù)地址,如A操作數(shù)、B操作數(shù)、D操作數(shù)、R操作數(shù)、ControlBits等;指令執(zhí)行控制信號(hào)(如Mode等)以及直接取出立即數(shù)操作數(shù)。特別的,對于分支指令Jmp、Jstack、Call、Callstack、Jmul等,執(zhí)行過程提前到P2級(jí)。3)當(dāng)P2級(jí)執(zhí)行跳轉(zhuǎn)指令需要插入空指令時(shí),接受輸入的Nop_p2[1:0]信號(hào),輸出Nop空指令進(jìn)入下一級(jí)流水線。2)根據(jù)P0級(jí)輸入的讀使能Rd_inst_en_p0和地址Pc_p0[10:0],從指令存儲(chǔ)器中取出待執(zhí)行的指令并輸出到下一級(jí)。如果沒有被分支指令中斷時(shí),就將預(yù)取的指令寄存輸出,否則,輸出空指令Nop。4)當(dāng)P2級(jí)執(zhí)行跳轉(zhuǎn)指令,根據(jù)跳轉(zhuǎn)地址有效信號(hào)Jump_valid_p2,接收輸入的跳轉(zhuǎn)地址Jump_addr_p2[10:0],并輸出新的PC地址Pc_p0[10:0]和讀使能Rd_inst_en_p0。2)當(dāng)RMEM接收完一幀的Result 發(fā)出信號(hào)Rslv_Srh1_rd_result_finish,通 知流水線開始正常工作。正常情況下順序執(zhí)行指令,PC值每個(gè)周期加1;遇到P2級(jí)執(zhí)行產(chǎn)生的跳轉(zhuǎn)指令,PC值就會(huì)變?yōu)橄鄳?yīng)的跳轉(zhuǎn)地址,而且該部件還會(huì)響應(yīng)分支指令的讀PC請求,保存當(dāng)前程序地址到寄存器PC_STACK。 微引擎流水線設(shè)計(jì) 流水線結(jié)構(gòu)設(shè)計(jì)轉(zhuǎn)發(fā)微引擎采用4級(jí)指令流水線來實(shí)現(xiàn)微引擎功能(每一級(jí)信號(hào)的詳細(xì)說明見附錄中的列表)。5)移動(dòng)執(zhí)行單元MOVE實(shí)現(xiàn)對Mov、Nop、Get、PutHdr、MovBits、PutHdrBits、GetRnd4Bits、GetFixBits、GetRndBits指令的執(zhí)行處理。由信號(hào) Mul_out_sel決定,若為1輸出Jmul地址,若為0輸出Movmul結(jié)果。 else if(ENC_PRO[0]) Jmul_addr[10:0]= label0。 else if(ENC_PRO[2]) Jmul_addr[10:0]= label2。 else if(ENC_PRO[4]) Jmul_addr[10:0]= label4。 else if(ENC_PRO[6]) Jmul_addr[10:0]= label6。根據(jù)輸入寄存器ENC_PRI[7:0]的狀態(tài),選擇8個(gè)源操作數(shù)中的某一個(gè)操作數(shù)輸出。每當(dāng)需要更新MAX_O[7:0]值,同步輸出計(jì)數(shù)器值到MAX_O_INDEX[3:0]的值(初始值為0)。若MAX_I小于MAX_O,更新MAX_O和MAX_O_INDEX。若MAX_I大于MAX_O,更新MAX_O和MAX_O_INDEX。其次,每當(dāng)MAX_I[7:0]寄存器寫入新的值時(shí),發(fā)出信號(hào)Max_rd_p2通知MAX模塊讀取,MAX_I[7:0]和MAX_O[7:0]進(jìn)行大小比較。若復(fù)位,MAX_O_INDEX[3:0]初始化為0,從0開始計(jì)數(shù);不復(fù)位,從當(dāng)前index的值開始計(jì)數(shù)。微碼指令的實(shí)現(xiàn)形式如下:SetMaxMin SRC,MODE;Mov
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1