基于SystemC的系统级芯片设计方法研究
时间:05-16
来源:EDN
点击:
4 基于SystemC的设计思想和设计流程
用SystemC可以在抽象层次的不同级描述系统。在系统最高层的系统级可以用C/C++描述系统的功能和算法。在系统的硬件实现部分可以在行为级到RTL级用SystemC 的类来描述,系统的软件部分自然可以用C/C++语言描述。而且,系统的不同部分可以在不同的抽象层次描述,这些描述在系统仿真时可以协同工作。并且,用SystemC不但可以描述要开发的系统本身,还可以描述系统的测试平台Testbench,以提供测试信号用于系统的仿真。
SystemC由一组描述类的头文件和一个包含仿真核的连接库Link Library所组成,在用户的建模描述程序中必须包括相应的头文件,然后可以用通常的C++编译器编译该程序。在连接Link时要调用SystemC的连接库产生可执行的系统仿真程序。利用SystemC建模的思想如图2所示。
基于SystemC的设计流程与以前的设计流程的本质区别在于,使用一种语言就可以完成从系统到RTL、从软件到硬件的全部设计,整个设计的软硬件可以协同设计和仿真,恰好弥补了传统设计方法中的这些不足。
基于SystemC的设计流程如图3所示。
5 应用实例
下面给出一个基于SystemC设计的实例:RS(15,9)的设计详细地说明整个设计流程。
RS(Reed-Solomon)[4]纠错码是目前最有效、应用最广泛的差错控制编码之一,是一类具有很强纠错能力的多进制的线性分组码,RS(15,9)码编码器,主要应用于移动通信系统的差错控制,由于该编码器小巧、灵活,纠错性能好,对于移动通信系统可靠性的提高、复杂度的降低有至关重要的作用[5]。整个系统如图4所示。
整个设计从用SystemC为整个系统建模开始,同时为模块建立Testbench。然后使用VC ++6.0和Modelsim进行功能仿真,接着在SystemC可综合子集的范围内对代码进行约束,使用支持SystemC的综合工具SCC(SystemC Compiler)完成综合,SystemC的综合实际上还是靠综合HDL语言文件得到的网表,而SCC这个工具是SystemC和HDL之间的一个桥梁,因此对于SystemC的综合首先是将SystemC描述的RTL级电路通过SCC综合,综合的结果是生成相应的Verilog文件,在这个转变过程中,模块的整体结构被保存,如每一个sc _module被转换成独立的Verilog模块,并存放在module_namev文件中;每一个进程(SC_METHOD)被转换成带进程名的always块;变量和端口也以同样的名字在Verilog文件中生成。因此,后续流程就与传统设计语言设计的FPGA流程连接上了。
本文选用Xilinx的SPARTAN2系列的FPGA XC2S50PQ28对本设计进行验证。软件平台主要使用的是Xilinx的集成开发环境ISE。其中第三方工具使用了综合工具FPGA CompilerⅡ,布局布线工具选用的是ISE中的Webpack suite。
把前面用SystemC Compiler综合生成的Verilog文件倒入ISE中,调用FCⅡ(FPGA Compiler Ⅱ),对代码加约束,包括时间约束、引脚约束、时钟频率等,进行逻辑综合和优化,得到的网表可以以EDIF格式输出,并与布局布线工具(webpack suite)接口,完成布局布线操作。布局布线完成后会产生一个布局布线后的网表文件、标准延迟文件(SDF)和一个后缀名位b it的二进制配置文件,其中SDF包含从布线之后提取出来的逻辑单元和连线的时序信息。然后连接好下载电路,运行下载配置文件,实现对FPGA的配置,配置采用的是EDA实验板O PEN FPGA4.0。把ISE生成的配置文件bit文件烧录到FPGA XC2S50上完成。整个实现流程如图5所示。
从对FPGA XC2S50中消耗的逻辑资源分析可以看到,系统的等效门为1 124个门。
值得注意的是,在整个设计过程中,测试平台一直没有改变,这样在设计被不断完善的过程中,保证不引入新的设计错误而始终符合设计要求。
6 结语
本文针对目前业界比较热门的新型系统设计语言SystemC的设计方法进行了深入研究,并结合具体实例开发提出了一套完整的采用SystemC及其平台设计的思路和方法。实验结果证明这套方法的可行性。由于目前如何采用SystemC进行设计还没有一个完全的设计规范流程,因此,如何将本文中的设计思路和流程完善使之更为通用,仍需进一步深入研究。我们相信基于SystemC的设计必将成为IC设计领域系统级设计的最佳标准之一。
参考文献
[1]Synopsys Inc.SystemC version1.0 User′s Guide.http://www.systemC.org.
[2]Synopsys Inc.SystemC version2.0 User′s Guide.http://www.systemC.org.
[3]Synopsys Inc.Functional Specification for SystemC 2.http://www.systemc.org.
[4]Berlekamp Elwnr.Bitserial ReedSolomon encoders[J].IEEE Transon Information Theory,1982,IT28(6):869-873.
[5]Kwon S,Shin H.An Areaefficient VLSI Architecture of Reedsolo mon Decoder/Encoder ro Digital VCRS[J]. IEEE Trans. Consumer Electronics,199 7,43(4):1 019-1 027.
用SystemC可以在抽象层次的不同级描述系统。在系统最高层的系统级可以用C/C++描述系统的功能和算法。在系统的硬件实现部分可以在行为级到RTL级用SystemC 的类来描述,系统的软件部分自然可以用C/C++语言描述。而且,系统的不同部分可以在不同的抽象层次描述,这些描述在系统仿真时可以协同工作。并且,用SystemC不但可以描述要开发的系统本身,还可以描述系统的测试平台Testbench,以提供测试信号用于系统的仿真。
SystemC由一组描述类的头文件和一个包含仿真核的连接库Link Library所组成,在用户的建模描述程序中必须包括相应的头文件,然后可以用通常的C++编译器编译该程序。在连接Link时要调用SystemC的连接库产生可执行的系统仿真程序。利用SystemC建模的思想如图2所示。
基于SystemC的设计流程与以前的设计流程的本质区别在于,使用一种语言就可以完成从系统到RTL、从软件到硬件的全部设计,整个设计的软硬件可以协同设计和仿真,恰好弥补了传统设计方法中的这些不足。
基于SystemC的设计流程如图3所示。
5 应用实例
下面给出一个基于SystemC设计的实例:RS(15,9)的设计详细地说明整个设计流程。
RS(Reed-Solomon)[4]纠错码是目前最有效、应用最广泛的差错控制编码之一,是一类具有很强纠错能力的多进制的线性分组码,RS(15,9)码编码器,主要应用于移动通信系统的差错控制,由于该编码器小巧、灵活,纠错性能好,对于移动通信系统可靠性的提高、复杂度的降低有至关重要的作用[5]。整个系统如图4所示。
整个设计从用SystemC为整个系统建模开始,同时为模块建立Testbench。然后使用VC ++6.0和Modelsim进行功能仿真,接着在SystemC可综合子集的范围内对代码进行约束,使用支持SystemC的综合工具SCC(SystemC Compiler)完成综合,SystemC的综合实际上还是靠综合HDL语言文件得到的网表,而SCC这个工具是SystemC和HDL之间的一个桥梁,因此对于SystemC的综合首先是将SystemC描述的RTL级电路通过SCC综合,综合的结果是生成相应的Verilog文件,在这个转变过程中,模块的整体结构被保存,如每一个sc _module被转换成独立的Verilog模块,并存放在module_namev文件中;每一个进程(SC_METHOD)被转换成带进程名的always块;变量和端口也以同样的名字在Verilog文件中生成。因此,后续流程就与传统设计语言设计的FPGA流程连接上了。
本文选用Xilinx的SPARTAN2系列的FPGA XC2S50PQ28对本设计进行验证。软件平台主要使用的是Xilinx的集成开发环境ISE。其中第三方工具使用了综合工具FPGA CompilerⅡ,布局布线工具选用的是ISE中的Webpack suite。
把前面用SystemC Compiler综合生成的Verilog文件倒入ISE中,调用FCⅡ(FPGA Compiler Ⅱ),对代码加约束,包括时间约束、引脚约束、时钟频率等,进行逻辑综合和优化,得到的网表可以以EDIF格式输出,并与布局布线工具(webpack suite)接口,完成布局布线操作。布局布线完成后会产生一个布局布线后的网表文件、标准延迟文件(SDF)和一个后缀名位b it的二进制配置文件,其中SDF包含从布线之后提取出来的逻辑单元和连线的时序信息。然后连接好下载电路,运行下载配置文件,实现对FPGA的配置,配置采用的是EDA实验板O PEN FPGA4.0。把ISE生成的配置文件bit文件烧录到FPGA XC2S50上完成。整个实现流程如图5所示。
从对FPGA XC2S50中消耗的逻辑资源分析可以看到,系统的等效门为1 124个门。
值得注意的是,在整个设计过程中,测试平台一直没有改变,这样在设计被不断完善的过程中,保证不引入新的设计错误而始终符合设计要求。
6 结语
本文针对目前业界比较热门的新型系统设计语言SystemC的设计方法进行了深入研究,并结合具体实例开发提出了一套完整的采用SystemC及其平台设计的思路和方法。实验结果证明这套方法的可行性。由于目前如何采用SystemC进行设计还没有一个完全的设计规范流程,因此,如何将本文中的设计思路和流程完善使之更为通用,仍需进一步深入研究。我们相信基于SystemC的设计必将成为IC设计领域系统级设计的最佳标准之一。
参考文献
[1]Synopsys Inc.SystemC version1.0 User′s Guide.http://www.systemC.org.
[2]Synopsys Inc.SystemC version2.0 User′s Guide.http://www.systemC.org.
[3]Synopsys Inc.Functional Specification for SystemC 2.http://www.systemc.org.
[4]Berlekamp Elwnr.Bitserial ReedSolomon encoders[J].IEEE Transon Information Theory,1982,IT28(6):869-873.
[5]Kwon S,Shin H.An Areaefficient VLSI Architecture of Reedsolo mon Decoder/Encoder ro Digital VCRS[J]. IEEE Trans. Consumer Electronics,199 7,43(4):1 019-1 027.
- ARM硬件设计三:JTAG引脚和PIO引脚(02-27)
- ARM硬件设计四:EBI总线 (02-27)
- ARM硬件设计一:电源和时钟 (02-27)
- ARM硬件设计二:复位引脚和复位期间采样引脚(02-27)
- 解析嵌入式系统串扰问题(01-17)
- AT91系列ARM硬件设计笔记(09-19)