VerilogHDL与SystemC的语法等效性
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第37卷 第9期
2004年9月
天 津 大 学 学 报
Journal of Tianjin U niversity
Vol.37 No.9
Sep.2004
V erilog H DL与SystemC的语法等效性Ξ
张雅绮,王 琨,崔志刚
(天津大学电子信息工程学院,天津300072)
摘 要:针对电子系统设计中使用不同语言制约设计效率的问题,研究了SystemC2.0与Verilog HDL的语法在基本语法结构、时间模型、等待和事件模型、调度模型等方面的等效性,得出如下结论:对于门级以上级别的描述,所有的Verilog HDL的描述总可以在SystemC中找到对应描述;开发EDA设计工具,实现从Verilog HDL描述的知识产权自动转换到SystemC描述是可行的.
关键词:系统级描述语言;Verilog HDL;SystemC;语法等效性
中图分类号:TN492 文献标志码:A 文章编号:049322137(2004)0920842205
Syntax Equivalence of V erilog H DL and SystemC
ZHAN G Ya2qi,WAN G Kun,CU I Zhi2gang
(School of Electronic Information Engineering,Tianjin University,Tianjin300072,China)
Abstract:The syntax equivalence of Verilog HDL and SystemC2.0is discussed in detail regard to basic syntax structure,timing model,wait and event module and scheduler module.It is concluded that for gate or upper abstract level of Verilog HDL description,there always exists corresponding SystemC description,and it is fea2 sible to develop an EDA design tool to automatically convert Verilog2based IP to SystemC2based IP.
K eyw ords:system level description language;Verilog HDL;SystemC;syntax equivalence
随着片上系统(SoC)[1]设计的复杂程度增加,传统的设计方法已经不能够满足电子系统设计的要求,原因在于系统设计、硬件设计和软件设计使用不同语言,无法进行软硬件协同验证,系统验证成为制约设计效率的主要因素.因而迫切需要一种通用语言,能够完成由软件到硬件、系统到门级各个层次的设计描述和验证,这就是先进的系统设计语言(system level de2 scription language,SLDL).
当前系统设计语言的发展方向为:一是扩展传统的硬件描述语言V HDL和Verilog HDL[2],使其支持抽象数据类型,并具有系统描述能力,这方面最突出的研究成果有Co2Design Automation公司所倡导的Su2 perlog,该语言的创始人之一是Verilog HDL的创建者和黄金仿真器Verilog2XL的设计者Phil Moorby;二是扩展传统的软件语言C和C++,使其支持硬件描述,这方面工作最突出的是SystemC[3].近年来,SystemC 在Synopsys等大公司的支持下得到了很大的发展,并推出了SystemC Compiler,支持SystemC的综合.
由于SystemC具有开放性,可完成软硬件在不同精度级别上的协同设计,这种系统设计语言已经受到各国电子工程师的重视,出现了一些有关V HDL与SystemC[4,5]以及Verilog HDL与SystemC[6,7]的对比与转换的研究.随着SystemC的发展,将有越来越多的硬件设计者希望学习和掌握SystemC,并将Sys2 temC与传统硬件描述语言如V HDL或者Verilog HDL进行对比.更为重要的是希望能够设计出传统硬件描述语言与SystemC之间的自动转换工具,将现有的Verilog HDL或者V HDL完成的设计自动地转换成SystemC模型,使设计事半功倍.
SystemC2.0增强了SystemC的系统级描述功能,主要体现在系统可包含软件、硬件以及两者的混合结构,支持用特定的设计方法以及软核来创建模型库并进行模拟,但它仍然不能完成如同Verilog HDL的开关级模拟.因此,有必要深入研究SystemC2.0与Ver2
Ξ收稿日期:2003206204;修回日期:2004203211. 作者简介:张雅绮(1945— ),女,教授.
ilog HDL的等效性,开发自动转换工具,实现已有的HDLs设计转换.本文探讨了SystemC2.0与Verilog HDL的语法在基本语法结构、时间模型、等待和事件模型、调度模型等方面的等效性,提出了设计和研究Verilog HDL描述的知识产权(IP)自动转换到Sys2 temC描述的可行性.
1 基本结构的等效性
Verilog HDL的基本组成结构是模块module,对应的SystemC描述是sc-module.与模块之间相联系的是端口信号的定义.Verilog HDL的输出信号也可以作为输入,而SystemC的断口定义了数据转移的方向,所以对于同样作为输入的Verilog HDL输出信号output,在SystemC中必须定义为inout.Verilog HDL 不支持浮点型的输出,而SystemC则支持,这在Ver2 ilog HDL到SystemC转换的时候不会产生问题,反之则不可以.对于Verilog HDL中的连续赋值语句assign 和always语句,都对应于SystemC的进程process. SytemC的进程有3种:方法进程、线程和钟控线程.方法进程用来进行组合逻辑模拟,线程可用来模拟测试平台,而钟控线程用来模拟同步有限状态机.后两种都是行为模型,至少需要行为级综合工具才能综合.由于方法进程可以用来描述寄存器传输级电路,一般将Verilog HDL中的assign和always语句翻译成方法进程.在always中,可能同时存在对多个寄存器(reg)型变量的阻塞或者非阻塞赋值,但可综合的代码只允许对同一寄存器变量进行非阻塞赋值或者阻塞赋值.对于一个always语句中的所有阻塞赋值语句,应该映射到一个SystemC进程中.对于不同变量的非阻塞赋值,应该映射为不同的SystemC进程.
Verilog HDL的initial语句等效于SystemC进程的构造函数;parameter可以用SystemC的类模板实现;文献[6]中建议使用C++的宏来实现门级电路,还提出了一种“信号处理器引擎”方法用以在SystemC中选择支持Ver2 ilog HDL的范围.对于子模块的例化,Verilog HDL和Sys2 temC都支持端口对应和位置映射.
2 时间模型的等效性
Verilog HDL与SystemC在定时时间和时钟定义方面差异较大,但都能完成硬件描述中的时序描述.
首先是时钟.在Verilog HDL中没有专门的时钟,用户需要定义一个reg信号来模拟时钟,而SystemC 中则直接定义了结构sc-clock用于定义时钟,例如下述代码1.
代码1 V erilog H DL与SystemC时钟定义的等效性
Code1 Equivalence of V erilog H DL and SystemC
on clock def inition
//Verilog HDL//SystemC
module(clk);//define a20MHz
clock
sc-clock clk(“clk”,50,0.5,5,
false);
initial clk=#50;always#25
clk=~clk;
endmodule
在Verilog HDL中,用timescale定义缺省的时间单位,在SystemC中使用了sc-set-time-resolution()和sc-set-default-time-unit(),这在功能上与timescale等效.若将时间单位设置为1ns,分辨率为1ps,则代码2描述了时间单位的等效性.
代码2 V erilog H DL与SystemC时间单位和
时间分辨率定义的等效性
Code2 Equivalence of V erilog H DL and SystemC
on unit and resolution of time
//Verilog HDL//SystemC
‘timescale1ns/1ps
sc-set-time-resolution(1,
SC-PS)
sc-set-default-time-unit(1,
SC-NS)
3 等待(w ait)与事件(event)的等效性
为了支持行为级动态建模,Verilog HDL与Sys2 temC都定义了wait函数和事件,当它被执行时将产生时间,触发等待在该事件上的进程继续执行.在Sys2 temC中,wait()只能在线程或者钟控线程内使用,在方法进程内须用与wait()等效的函数next-trigger()描述延迟,如下述的代码3,它描述的是一个延迟器件.值得注意的是,在代码3中,左边的Verilog HDL 代码实际上描述的是传输延迟,右边SystemC描述的是惯性延迟.惯性延迟可能造成极短脉冲的消失,而传输延迟则不会.
在使用next-trigger()描述时序逻辑延迟时,需要将输入信号(代码3中的din)延迟一个时钟周期,仿真结果才会是预期的,但由此会造成综合结果不正确,所
・
3
4
8
・
2004年9月 张雅绮等:Verilog HDL与SystemC的语法等效性