基于SystemC的系統級芯片設計方法研究
為了支持寄存器傳輸級的并行描述,SystemC還采用了與傳統硬件描述語(yǔ)言基本相同的調度模型基于Δ(delta)延遲。一個(gè)Δ周期包括求值和更新2個(gè)階段,在一個(gè)時(shí)間點(diǎn)上,這樣的Δ周期會(huì )出現直到再求值前后的結果不再發(fā)生變化。而在宏觀(guān)上,時(shí)間并沒(méi)有前進(jìn)。SystemC 2.01調度模型中,在初始化階段(相當于時(shí)間0點(diǎn)),所有進(jìn)程包括方法進(jìn)程和線(xiàn)程都將執行一次。不同的是,在SystemC中,所有的信號和變量的初始化工作在構造函數中進(jìn)行,他比其他函數先執行,避免了像Verilog HDL中由于初始化順序不同引起的不同仿真器仿真結果的不一致。
本文引用地址:http://dyxdggzs.com/article/83115.htm為了支持進(jìn)程同步和通信細化,SystemC支持用戶(hù)自定義的接口,端口和通道。接口是方法的集合,但不具體實(shí)現這些方法,在C++語(yǔ)法中,他們都是純虛函數。通道具體實(shí)現一個(gè)或者多個(gè)接口。端口定義了他能夠連接的具體的接口類(lèi)型,只能被用于連接實(shí)現了該類(lèi)型接口的通道。在有些情況下,進(jìn)程可以直接讀寫(xiě)通道而不必通過(guò)端口,而其他情況下則必須通過(guò)端口進(jìn)程才能讀寫(xiě)通道。
在SystemC中,進(jìn)程只調用通道提供的接口方法。雖然接口方法是在通道中實(shí)現的,然而他是在進(jìn)程上下文中被執行的。這被稱(chēng)作接口方法調用(InteRFaceMethodCall,IMC),接口方法調用和支持不同抽象級別的混合建模是通信細化的基礎。
4 基于SystemC的設計思想和設計流程
用SystemC可以在抽象層次的不同級描述系統。在系統最高層的系統級可以用C/C++描述系統的功能和算法。在系統的硬件實(shí)現部分可以在行為級到RTL級用SystemC 的類(lèi)來(lái)描述,系統的軟件部分自然可以用C/C++語(yǔ)言描述。而且,系統的不同部分可以在不同的抽象層次描述,這些描述在系統仿真時(shí)可以協(xié)同工作。并且,用SystemC不但可以描述要開(kāi)發(fā)的系統本身,還可以描述系統的測試平臺Testbench,以提供測試信號用于系統的仿真。
SystemC由一組描述類(lèi)的頭文件和一個(gè)包含仿真核的連接庫Link Library所組成,在用戶(hù)的建模描述程序中必須包括相應的頭文件,然后可以用通常的C++編譯器編譯該程序。在連接Link時(shí)要調用SystemC的連接庫產(chǎn)生可執行的系統仿真程序。利用SystemC建模的思想如圖2所示。
基于SystemC的設計流程與以前的設計流程的本質(zhì)區別在于,使用一種語(yǔ)言就可以完成從系統到RTL、從軟件到硬件的全部設計,整個(gè)設計的軟硬件可以協(xié)同設計和仿真,恰好彌補了傳統設計方法中的這些不足。
基于SystemC的設計流程如圖3所示。
5 應用實(shí)例
下面給出一個(gè)基于SystemC設計的實(shí)例:RS(15,9)的設計詳細地說(shuō)明整個(gè)設計流程。
RS(Reed-Solomon)[4]糾錯碼是目前最有效、應用最廣泛的差錯控制編碼之一,是一類(lèi)具有很強糾錯能力的多進(jìn)制的線(xiàn)性分組碼,RS(15,9)碼編碼器,主要應用于移動(dòng)通信系統的差錯控制,由于該編碼器小巧、靈活,糾錯性能好,對于移動(dòng)通信系統可靠性的提高、復雜度的降低有至關(guān)重要的作用[5]。整個(gè)系統如圖4所示。
整個(gè)設計從用SystemC為整個(gè)系統建模開(kāi)始,同時(shí)為模塊建立Testbench。然后使用VC ++6.0和Modelsim進(jìn)行功能仿真,接著(zhù)在SystemC可綜合子集的范圍內對代碼進(jìn)行約束,使用支持SystemC的綜合工具SCC(SystemC Compiler)完成綜合,SystemC的綜合實(shí)際上還是靠綜合HDL語(yǔ)言文件得到的網(wǎng)表,而SCC這個(gè)工具是SystemC和HDL之間的一個(gè)橋梁,因此對于SystemC的綜合首先是將SystemC描述的RTL級電路通過(guò)SCC綜合,綜合的結果是生成相應的Verilog文件,在這個(gè)轉變過(guò)程中,模塊的整體結構被保存,如每一個(gè)sc _module被轉換成獨立的Verilog模塊,并存放在module_namev文件中;每一個(gè)進(jìn)程(SC_METHOD)被轉換成帶進(jìn)程名的always塊;變量和端口也以同樣的名字在Verilog文件中生成。因此,后續流程就與傳統設計語(yǔ)言設計的FPGA流程連接上了。
本文選用Xilinx的SPARTAN2系列的FPGA XC2S50PQ28對本設計進(jìn)行驗證。軟件平臺主要使用的是Xilinx的集成開(kāi)發(fā)環(huán)境ISE。其中第三方工具使用了綜合工具FPGA CompilerⅡ,布局布線(xiàn)工具選用的是ISE中的Webpack suite。
pic相關(guān)文章:pic是什么
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
c++相關(guān)文章:c++教程
評論