近年來,隨著微電子學(xué)的迅速發(fā)展以及SoC(System on Chip,片上系統(tǒng))技術(shù)在設(shè)計(jì)領(lǐng)域引起的深刻變革,EDA(Electronic Design Automatic,電子設(shè)計(jì)自動(dòng)化)工具在系統(tǒng)設(shè)計(jì)中的地位愈發(fā)重要。特別是20世紀(jì)90年代后,電子系統(tǒng)已經(jīng)由電路板級(jí)發(fā)展為ASIC(Application Specific Integrated Circuit,專用集成電路)、FPGA(Field Programmable Gate Array,現(xiàn)場(chǎng)可編程門陣列)以及嵌入式系統(tǒng)等多種模式,其中FPGA設(shè)計(jì)正是當(dāng)前數(shù)字系統(tǒng)設(shè)計(jì)領(lǐng)域中的重要方式之一。
本文以Altera公司的FPGA為目標(biāo)器件,通過一個(gè)8-bit RISC CPU的設(shè)計(jì)實(shí)例,系統(tǒng)地介紹了FPGA的完整設(shè)計(jì)流程以及開發(fā)過程中用到的多種EDA工具,包括Modelsim、Synplify、Quartus II,并重點(diǎn)說明如何使用這些EDA工具進(jìn)行協(xié)同設(shè)計(jì)。
1 FPGA的設(shè)計(jì)流程
一般來說,完整的FPGA設(shè)計(jì)流程包括電路設(shè)計(jì)與輸入、功能仿真、綜合優(yōu)化、綜合后仿真、實(shí)現(xiàn)與布局布線、時(shí)序仿真、板級(jí)仿真與驗(yàn)證、調(diào)試與加載配置等主要步驟,如圖1所示。
電路設(shè)計(jì)與輸入是指通過某些規(guī)范的描述方式,將工程師的電路構(gòu)思輸入給EDA工具,常用的設(shè)計(jì)方法有HDL(Hardware Description Language,硬件描述語言)設(shè)計(jì)輸入法與原理圖設(shè)計(jì)輸入法。目前進(jìn)行大型工程設(shè)計(jì)時(shí),最常用的設(shè)計(jì)方法是HDL設(shè)計(jì)輸入法,它利于自頂向下設(shè)計(jì)以及模塊的劃分與復(fù)用,可移植性和通用性好,設(shè)計(jì)不因芯片的工藝與結(jié)構(gòu)的不同而變化,更利于向ASIC移植。
電路設(shè)計(jì)完成后,要用專用的仿真工具對(duì)設(shè)計(jì)進(jìn)行功能仿真(Functional Simulation),驗(yàn)證電路功能是否符合設(shè)計(jì)要求。功能仿真又稱前仿真(Pre-Simulation)。通過仿真能及時(shí)發(fā)現(xiàn)設(shè)計(jì)中的錯(cuò)誤,加快設(shè)計(jì)進(jìn)度,提高設(shè)計(jì)的可靠性。
綜合(Synthesis)優(yōu)化是指將HDL語言、原理圖等設(shè)計(jì)輸入翻譯成由基本門、RAM、觸發(fā)器等基本邏輯單元組成的邏輯網(wǎng)表,并根據(jù)目標(biāo)與要求(約束條件)優(yōu)化所生成的邏輯網(wǎng)表,輸出標(biāo)準(zhǔn)格式的網(wǎng)表文件,供FPGA廠商的布局布線器進(jìn)行實(shí)現(xiàn)。
綜合后仿真(Post Synthesis Simulation)的作用是檢查綜合出的結(jié)果與原設(shè)計(jì)是否一致。作綜合后仿真時(shí),要把綜合生成的標(biāo)準(zhǔn)延時(shí)格式SDF(Standard Delay Format)文件反標(biāo)注到綜合仿真模型中去,可估計(jì)門延時(shí)帶來的影響。綜合后仿真雖然比功能仿真精確一些,但是只能估計(jì)門延時(shí),不能估計(jì)線延時(shí),仿真結(jié)果與布線后的實(shí)際情況還有一定差距,并不是十分準(zhǔn)確。目前主流綜合工具日益成熟,對(duì)于一般性設(shè)計(jì),如果設(shè)計(jì)者確信自己表述明確,沒有綜合歧義發(fā)生,則可以省略綜合后仿真步驟。
綜合結(jié)果的本質(zhì)是一些由基本門、觸發(fā)器、RAM等基本邏輯單元組成的邏輯網(wǎng)表,它與芯片實(shí)際的配置情況還有較大差距,此時(shí)應(yīng)該使用FPGA廠商提供的軟件工具,將綜合輸出的邏輯網(wǎng)表適配到具體FPGA器件上,這個(gè)過程叫做實(shí)現(xiàn)(Implementation)。在實(shí)現(xiàn)過程中最主要的過程是布局布線(P&R),所謂布局(Place)是指將邏輯網(wǎng)表中的硬件原語或底層單元合理地適配到FPGA內(nèi)部的固有硬件結(jié)構(gòu)上,布局的優(yōu)劣對(duì)設(shè)計(jì)的最終實(shí)現(xiàn)結(jié)果(包括速度和面積兩個(gè)方面)影響很大;所謂布線(Route)是指根據(jù)布局的拓?fù)浣Y(jié)構(gòu),利用FPGA內(nèi)部的各種連線資源,合理正確地連接各個(gè)元件的過程。一般情況下,用戶可以通過設(shè)置參數(shù)指定布局布線的優(yōu)化準(zhǔn)則??傮w來說,優(yōu)化目標(biāo)主要有兩個(gè)方面——面積和速度。一般根據(jù)設(shè)計(jì)的主要矛盾,選擇面積或速度或平衡兩者等優(yōu)化目標(biāo),但是當(dāng)兩者沖突時(shí),一般滿足時(shí)序約束要求更重要一些,此時(shí)選擇速度或時(shí)序優(yōu)化目標(biāo)效果更佳。
將布局布線的時(shí)延信息反標(biāo)注到設(shè)計(jì)網(wǎng)表中,所進(jìn)行的仿真就叫時(shí)序仿真(Timing Simulation)或布局布線后仿真,簡稱后仿真(Post-Simulation)。布局布線后生成的SDF文件包含的時(shí)延信息最全,不僅包含門延時(shí),還包含實(shí)際布線延時(shí),所以布局布線后仿真最準(zhǔn)確,能較好地反映出芯片的實(shí)際工作情況。一般來說,布局布線后仿真步驟必須進(jìn)行,通過布局布線后仿真能檢查設(shè)計(jì)時(shí)序與FPGA的實(shí)際運(yùn)行情況是否一致,確保設(shè)計(jì)的可靠性與穩(wěn)定性。
在有些高速設(shè)計(jì)情況下,還需要使用第三方的板級(jí)驗(yàn)證工具進(jìn)行仿真與驗(yàn)證,這些工具通過對(duì)設(shè)計(jì)的IBIS、HSPICE等模型的仿真,能較好地分析高速設(shè)計(jì)的信號(hào)完整性、電磁干擾等電路特性等。FPGA設(shè)計(jì)開發(fā)流程的最后步驟就是在線調(diào)試或?qū)⑸傻呐渲梦募懭胄酒羞M(jìn)行測(cè)試。
2 EDA工具介紹
圖1不僅顯示了FPGA的設(shè)計(jì)流程,還給出了8-bit RISC CPU設(shè)計(jì)實(shí)例中用到的EDA工具與FPGA設(shè)計(jì)流程中每一步的對(duì)應(yīng)關(guān)系。
2.1 仿真工具M(jìn)odelsim
目前仿真工具種類繁多,但在業(yè)界最流行、影響力最大的仿真工具還是Mentor Graphics公司的Modelsim,其主要特點(diǎn)是仿真速度快、仿真精度高,且圖形化界面友好,具有結(jié)構(gòu)、信號(hào)、波形、進(jìn)程、數(shù)據(jù)流等窗口。Modelsim不僅支持VHDL和Verilog HDL的仿真,還支持VHDL和Verilog HDL混合編程的聯(lián)合仿真。PC版Modelsim的仿真速度也很快,甚至和工作站版不相上下。
2.2 綜合工具Synplify
Synplicity公司的Synplify作為新興的綜合工具在綜合策略和優(yōu)化手段上有較大幅度的提高,特別是其先進(jìn)的時(shí)序驅(qū)動(dòng)和行為級(jí)提取綜合技術(shù)B.E.S.T(Behavior Extraction Synthesis Technology)算法引擎,使其綜合結(jié)果面積小、速度快,在業(yè)界口碑很好,如果結(jié)合Synplicity公司的Amplify物理約束功能,對(duì)很多設(shè)計(jì)能大幅度地減少資源,優(yōu)化面積達(dá)到30%以上。
2.3 集成開發(fā)環(huán)境Quartus II
Quartus II是Altera公司的第四代可編程邏輯器件集成開發(fā)環(huán)境,提供從設(shè)計(jì)輸入到器件編程的全部功能。Quartus II可以產(chǎn)生并識(shí)別EDIF網(wǎng)表文件、VHDL網(wǎng)表文件和Verilog HDL網(wǎng)表文件,為其它EDA工具提供了方便的接口。
3 8-bit RISC CPU設(shè)計(jì)實(shí)例
CPU是一個(gè)復(fù)雜的數(shù)字邏輯電路,但其基本部件的邏輯并不復(fù)雜,可將其分為8個(gè)模塊,各模塊的名稱及功能列于表1中,它們之間的連接關(guān)系如圖2所示。
為了對(duì)所設(shè)計(jì)的CPU進(jìn)行仿真測(cè)試,還需要建立一些必要的外圍虛擬器件模型,包括裝載測(cè)試數(shù)據(jù)的RAM、存儲(chǔ)測(cè)試程序的ROM和用于選通RAM或ROM的地址譯碼器ADDRDEC。在仿真測(cè)試中,用這些虛擬器件來代替真實(shí)的器件對(duì)所設(shè)計(jì)的CPU進(jìn)行驗(yàn)證,檢查各條指令的執(zhí)行是否正確、與外圍電路的數(shù)據(jù)交換是否正常,這與用真實(shí)器件進(jìn)行調(diào)試的情況非常接近。這些虛擬器件模型都可以用Verilog HDL描述,由于不需要被綜合成具體的電路,所以只要保證這些虛擬器件模型的功能和接口信號(hào)正確即可。它們之間的連接關(guān)系如圖3所示。
在測(cè)試臺(tái)程序(Testbench)中利用模塊調(diào)用的方法把CPU及其外圍測(cè)試模塊按圖3連接起來。在Testbench中運(yùn)行3個(gè)不同的匯編程序,對(duì)CPU進(jìn)行完整的邏輯測(cè)試與驗(yàn)證。在Modelsim中,首先對(duì)所有的設(shè)計(jì)輸入文件進(jìn)行編譯,編譯通過后,對(duì)Testbench模塊進(jìn)行仿真。下面截取了一段功能仿真的結(jié)果:
run -all
# ROM Loaded Successfully
# RAM Loaded Successfully
# Running CPUtest1
# TIME PC INSTR ADDR DATA
# 1200.0ns 0000 JMP 003c zz
# 2000.0ns 003c JMP 0006 zz
# 2800.0ns 0006 LDA 1800 00
# 3600.0ns 0008 SKZ 0000 zz
# A HALT Instruction was Processed
# Break at cpu_test.v line 29
功能仿真通過后,要根據(jù)目標(biāo)器件(Altera FLEX10K EPF10K10 TC144-4)對(duì)設(shè)計(jì)進(jìn)行綜合。為了便于及時(shí)發(fā)現(xiàn)綜合中出現(xiàn)的問題,綜合工作應(yīng)分階段進(jìn)行,首先對(duì)構(gòu)成CPU的各個(gè)子模塊進(jìn)行綜合以檢查其可綜合性,然后再對(duì)整體的CPU模塊進(jìn)行綜合優(yōu)化。綜合工具選擇Synplify。
布局布線工具選擇Quartus II,對(duì)Synplify綜合器輸出的edf文件進(jìn)行全編譯。全編譯是指從分析、綜合、適配(布局布線)、編程到時(shí)序分析的全過程。實(shí)際上,設(shè)計(jì)在Synplify中已經(jīng)綜合好了,但分析與綜合對(duì)于Quartus II來說是必須的,主要是用來生成數(shù)據(jù)庫文件。由于Quartus II中還內(nèi)嵌了綜合工具,所以也可以使用Quartus II來完成從綜合到布局布線的全過程(即全編譯)。全編譯完成后,Quartus II會(huì)自動(dòng)生成布局布線后的網(wǎng)表文件和標(biāo)準(zhǔn)延時(shí)格式SDF文件。
要完成時(shí)序仿真,首先要將功能仿真時(shí)Modelsim工程中的RTL級(jí)設(shè)計(jì)文件替換為Quartus II布局布線后生成的網(wǎng)表文件,并編譯通過。在Modelsim中,加入事先編譯好的Altera仿真庫文件和延時(shí)反標(biāo)SDF文件,對(duì)Testbench模塊進(jìn)行仿真。截取的一段時(shí)序仿真結(jié)果如下:
run -all
# ROM Loaded Successfully
# RAM Loaded Successfully
# Running CPUtest1
# TIME PC INSTR ADDR DATA
# 1239.0ns 0000 JMP 003c zz
# 2039.0ns 003c JMP 0006 zz
# 2839.0ns 0006 LDA 1800 00
# 3639.0ns 0008 SKZ 0000 zz
# A HALT Instruction was Processed
# Break at cpu_test.v line 29
與功能仿真的結(jié)果相比,時(shí)序仿真的結(jié)果雖然有39ns的延遲,但系統(tǒng)的邏輯功能卻未發(fā)生變化,這說明綜合和布局布線帶來的延遲并未導(dǎo)致系統(tǒng)功能的改變。
本設(shè)計(jì)選用的下載芯片為Altera公司FLEX 10K系列的EPF10K10TC144-4,它具有144個(gè)I/O引腳,其中可分配的有96個(gè),內(nèi)部具有576個(gè)邏輯宏單元。下載工具選擇Quartus II,首先選擇器件、分配管腳,然后執(zhí)行全編譯。全編譯后會(huì)生成一些數(shù)據(jù)文件,其中擴(kuò)展名為hex的是十六進(jìn)制輸出文件,它包含了布局布線后的器件、邏輯單元和管腳分配等編程信息。通過下載線將計(jì)算機(jī)的COM口與實(shí)驗(yàn)板的COM口連接起來,使用燒錄工具將hex文件下載到EPF10K10TC144-4中。
4 結(jié)論
在實(shí)際的FPGA開發(fā)中,選用Modelsim + Synplify + Quartus II的EDA工具組合能很好地規(guī)劃設(shè)計(jì)流程,充分利用各EDA工具的優(yōu)點(diǎn),提高開發(fā)效率。
本文作者創(chuàng)新點(diǎn)在于將FPGA開發(fā)過程中的多種EDA工具有機(jī)地結(jié)合在一起,并通過一個(gè)CPU的設(shè)計(jì)實(shí)例證明了利用多種EDA工具進(jìn)行FPGA協(xié)同設(shè)計(jì)的可實(shí)現(xiàn)性。
責(zé)任編輯:gt
評(píng)論