SystemVerilog语言知识介绍3394.docx
《SystemVerilog语言知识介绍3394.docx》由会员分享,可在线阅读,更多相关《SystemVerilog语言知识介绍3394.docx(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、SystemVerilog语言简介SysteemVeerillog是是一种硬硬件描述述和验证证语言(HDVL),它基于IEEE 1364-2001 Verilog硬件描述语言(HDL),并对其进行了扩展,包括扩充了C语言数据类型、结构、压缩和非压缩数组、 接口、断言等等,这些都使得SystemVerilog在一个更高的抽象层次上提高了设计建模的能力。SystemVerilog由Accellera开发,它主要定位在芯片的实现和验证流程上,并为系统级的设计流程提供了强大的连接能力。下面我们从几个方面对SystemVerilog所作的增强进行简要的介绍,期望能够通过这个介绍使大家对SystemVer
2、ilog有一个概括性的了解。1. 接口口(Innterrfacce)Verillog模模块之间间的连接接是通过过模块端端口进行行的。为为了给组组成设计计的各个个模块定定义端口口,我们们必须对对期望的的硬件设设计有一一个详细细的认识识。不幸幸的是,在在设计的的早期,我我们很难难把握设设计的细细节。而而且,一一旦模块块的端口口定义完完成后,我我们也很很难改变变端口的的配置。另另外,一一个设计计中的许许多模块块往往具具有相同同的端口口定义,在在Verriloog中,我我们必须须在每个个模块中中进行相相同的定定义,这这为我们们增加了了无谓的的工作量量。SysteemVeerillog提提供了一一个新的
3、的、高层层抽象的的模块连连接,这这个连接接被称为为接口(IInteerfaace)。接口口在关键键字innterrfacce和enddintterffacee之间定定义,它它独立于于模块。接接口在模模块中就就像一个个单一的的端口一一样使用用。在最最简单的的形式下下,一个个接口可可以认为为是一组组线网。例例如,可可以将PPCI总总线的所所有信号号绑定在在一起组组成一个个接口。通通过使用用接口,我我们在进进行一个个设计的的时候可可以不需需要首先先建立各各个模块块间的互互连。随随着设计计的深入入,各个个设计细细节也会会变得越越来越清清晰,而而接口内内的信号号也会很很容易地地表示出出来。当当接口发发生
4、变化化时,这这些变化化也会在在使用该该接口的的所有模模块中反反映出来来,而无无需更改改每一个个模块。下下面是一一个接口口的使用用实例:interrfacce cchipp_buus; / 定义接接口wire reaad_rrequuestt, rreadd_grrantt;wire 7:0 adddresss, datta;endinnterrfacce: chiip_bbusmodulle RRAM (chhip_buss ioo, / 使使用接口口inputt cllk);/ 可以以使用iio.rreadd_reequeest引引用接口口中的一一个信号号endmoodullemodulle
5、 CCPU(chiip_bbus io, innputt cllk);.endmoodullemodulle ttop;reg cclk = 00;chip_buss a; / 实例例接口/ 将接接口连接接到模块块实例RAM mmem(a, clkk);CPU ccpu(a, clkk);endmoodulle实际上,SSysttemVVeriilogg的接口口不仅仅仅可以表表示信号号的绑定定和互连连。由于于SysstemmVerriloog的接接口中可可以包含含参数、常常量、变变量、结结构、函函数、任任务、iinittiall块、allwayys块以以及连续续赋值语语句,所所以Syystee
6、mVeerillog的的接口还还可以包包含内建建的协议议检查以以及被使使用该接接口的模模块所共共用的功功能。2. 全局局声明和和语句在Veriilogg中,除除了一个个模块可可以作为为模块实实例引用用其他模模块外,并并不存在在一个全全局空间间。另外外,Veerillog允允许任意意数目的的顶层模模块,因因此会产产生毫无无关联的的层次树树。SysteemVeerioog增加加了一个个被称为为$rooot的的隐含的的顶级层层次。任任何在模模块边界界之外的的声明和和语句都都存在于于$rooot空空间中。所所有的模模块,无无论它处处于哪一一个设计计层次,都都可以引引用$rroott中声明明的名字字。这
7、样样,如果果某些变变量、函函数或其其它信息息被设计计中的所所有模块块共享,那那么我们们就可以以将它们们作为全全局声明明和语句句。全局局声明和和语句的的一个使使用实例例如下:reg eerroor _flaag; / 全局变变量functtionn coompaare (.); / 全局局函数alwayys (errrorr_fllag) / 全局局语句.modulle ttestt;chip11 u11 (.)endmoodullemodulle cchipp1 (.);FSM uu2 (.);alwayys (daata)errorr_fllag = ccompparee(daata, ex
8、xpecctedd);endmoodullemodulle FFSM (.);.alwayys (sttatee)errorr_fllag = ccompparee(sttatee, eexpeecteed);endmoodulle3. 时间间单位和和精度在Veriilogg中,表表示时间间的值使使用一个个数来表表示,而而不带有有任何时时间单位位。例如如:forevver #5 cloock = cloock; 从这一句中中我们无无法判断断5代表的的是5nns? 5pss? 还还是其他他。Veerillog的的时间单单位和精精度是作作为每一一个模块块的属性性,并使使用编译译器指令令tiimes
9、scalle来设设置。使使用这种种方法具具有固有有的缺陷陷,因为为编译器器指令的的执行依依赖于源源代码的的编译顺顺序,编编译器总总是将它它遇到的的最后一一个ttimeescaale设设置的时时间单位位和精度度作为之之后的标标准。那那么,假假如有些些模块之之前没有有使用timmesccalee设置时时间单位位和精度度,这就就有可能能出现同同一个源源代码的的不同仿仿真会出出现不同同结果的的情况。SysteemVeerillog为为了控制制时间单单位加入入了两个个重要的的增强。首首先,时时间值可可以显式式地指定定一个单单位。时时间单位位可以是是s、ms、ns、ps或fs。时时间单位位作为时时间值的的
10、后缀出出现。例例如:forevver #5nns cloock = cloock; 其次,SyysteemVeerillog允允许使用用新的关关键字(timeunits和timeprecision)来指定时间单位和精度。这些声明可以在任何模块中指定,同时也可以在$root空间中全局指定。时间单位和精度必须是10的幂,范围可以从s到fs。例如:timeuunitts 11ns; timeppreccisiion 10pps;4. 抽象象数据类类型Verillog提提供了面面向底层层硬件的的线网、寄寄存器和和变量数数据类型型。这些些类型代代表了44态逻辑辑值,通通常用来来在底层层上对硬硬件进行行建
11、模和和验证。线线网数据据类型还还具有多多个强度度级别,并并且能够够为多驱驱动源的的线网提提供解析析功能。SysteemVeerillog包包括了CC语言的的chaar和intt数据类类型,它它允许在在Verriloog模型型和验证证程序中中直接使使用C和C+代码。VVeriilogg PLLI不再再需要集集成总线线功能模模型、算算法模型型和C函数。SSysttemVVeriilogg还为Veerillog加加入了几几个新的的数据类类型,以以便能够够在更抽抽象的层层次上建建模硬件件。l chhar:一个两两态的有有符号变变量,它它与C语言中中的chhar数数据类型型相同,可可以是一一个8位整数数
12、(ASSCIII)或shhortt innt(Uniicodde);l int:一一个两态态的有符符号变量量,它与与C语言中中的innt数据据类型相相似,但但被精确确地定义义成322位;l shhorttintt:一个个两态的的有符号号变量,被被精确地地定义成成16位;l loongiint:一个两两态的有有符号变变量,它它与C语言中中的loong数数据类型型相似,但但被精确确地定义义成644位;l byyte:一个两两态的有有符号变变量,被被精确地地定义成成8位;l biit:一一个两态态的可以以具有任任意向量量宽度的的无符号号数据类类型,可可以用来来替代VVeriilogg的regg数据类
13、类型;l loogicc:一个个四态的的可以具具有任意意向量宽宽度的无无符号数数据类型型,可以以用来替替代Veerillog的的线网或或regg数据类类型,但但具有某某些限制制;l shhorttreaal:一一个两态态的单精精度浮点点变量,与与C语言的的flooat类类型相同同;l vooid:表示没没有值,可可以定义义成一个个函数的的返回值值,与CC语言中中的含义义相同。SysteemVeerillog的的bitt和其他他数据类类型允许许用户使使用两态态逻辑对对设计建建模,这这种方法法对仿真真性能更更有效率率。由于于Verriloog语言言没有两两态数据据类型,因因此许多多仿真器器都通过过
14、将这种种功能作作为仿真真器的一一个选项项提供。这这些选项项不能够够在所有有的仿真真器之间间移植,而而且在需需要时用用三态或或四态逻逻辑的设设计中强强制使用用两态逻逻辑还具具有副作作用。SSysttemVVeriilogg的bitt数据类类型能够够极大改改进仿真真器的性性能,同同时在需需要的时时候仍然然可以使使用三态态或四态态逻辑。通通过使用用具有确确定行为为的数据据类型来来代替专专有的仿仿真器选选项,两两态模型型能够在在所有的的SysstemmVerriloog仿真真器间移移植。SysteemVeerillog的的loggic数数据类型型比Veerillog的的线网和和寄存器器数据类类型更加加
15、灵活,它它使得在在任何抽抽象层次次上建模模硬件都都更加容容易。llogiic类型型能够以以下面的的任何一一种方法法赋值:l 通过过任意数数目的过过程赋值值语句赋赋值,能能够替代代Verriloog的regg类型;l 通过过单一的的连续赋赋值语句句赋值,能能够有限限制地替替代Veerillog的的wirre类型型;l 连接接到一个个单一原原语的输输出,能能够有限限制地替替代Veerillog的的wirre类型型;由于loggic数数据类型型能够被被用来替替代Veerillog的的regg或wirre(具具有限制制),这这就使得得能够在在一个更更高的抽抽象层次次上建模模,并且且随着设设计的不不断深
16、入入能够加加入一些些设计细细节而不不必改变变数据类类型的声声明。llogiic数据据类型不不会表示示信号的的强度也也不具有有线逻辑辑的解析析功能,因因此loogicc数据类类型比VVeriilogg的wirre类型型更能有有效地仿仿真和综综合。5. 有符符号和无无符号限限定符缺省情况下下,Veerillog nett和regg数据类类型是无无符号类类型,iinteegerr类型是是一个有有符号类类型。VVeriilogg-20001标标准允许许使用ssignned关关键字将将无符号号类型显显式地声声明成有有符号类类型。SSysttemVVeriilogg加入了了相似的的能力,它它可以通通过un
17、nsiggnedd关键字字将有符符号数据据类型显显式地声声明成有有无符号号数据类类型。例例如:int uunsiigneed jj; 值得注意的的是unnsiggnedd在Verriloog中是是一个保保留字,但但并没有有被Veerillog标标准使用用。6. 用户户定义的的类型Verillog不不允许用用户定义义新的数数据类型型。SyysteemVeerillog通通过使用用typpedeef提供供了一种种方法来来定义新新的数据据类型,这这一点与与C语言类类似。用用户定义义的类型型可以与与其它数数据类型型一样地地使用在在声明当当中。例例如:typeddef unssignned intt u
18、iint;uint a, b;一个用户定定义的数数据类型型可以在在它的定定义之前前使用,只只要它首首先在空空的tyypeddef中中说明,例例如:typeddef intt48; / 空的的typeedeff,在其其他地方方进行完完整定义义int488 c;7. 枚举举类型在Veriilogg语言中中不存在在枚举类类型。标标识符必必须被显显式地声声明成一一个线网网、变量量或参数数并被赋赋值。SSysttemVVeriilogg允许使使用类似似于C的语法法产生枚枚举类型型。一个个枚举类类型具有有一组被被命名的的值。缺缺省情况况下,值值从初始始值0开始递递增,但但是我们们可以显显式地指指定初始始值
19、。枚枚举类型型的例子子如下:enum reed, yellloww, ggreeen RGBB;enum WAAIT=2b001, LOAAD, DONNE staatess;我们还可以以使用ttypeedeff为枚举举类型指指定一个个名字,从从而允许许这个枚枚举类型型可以在在许多地地方使用用。例如如:typeddef enuum FALLSE=1b00, TTRUEE bboolleann;booleean reaady;booleean tesst_ccompplette;8. 结构构体和联联合体在Veriilogg语言中中不存在在结构体体或联合合体,而而结构体体或联合合体在将将几个声声明
20、组合合在一起起的时候候非常有有用。SSysttemVVeriilogg增加了了结构体体和联合合体,它它们的声声明语法法类似于于C。strucct regg 155:0 oopcoode; regg 233:0 aaddrr; IR;unionn intt I; shoortrreall f; N;结构体或联联合体中中的域可可以通过过在变量量名和域域名字之之间插入入句点(.)来引用:IR.oppcodde = 1; / 设置置IR变量量中的oopcoode域域N.f = 0.0; / 将N设置成成浮点数数的值我们可以使使用tyypeddef为为结构体体或联合合体的定定义指定定一个名名字。type
21、ddef strructt regg 7:0 oopcoode; regg 233:0 aaddrr; insstruuctiion; / 命名名的结构构体instrructtionn IRR; / 结结构体实实例一个结构体体可以使使用值的的级联来来完整地地赋值,例例如:instrructtionn = 5, 2000; 结构体可以以作为一一个整体体传递到到函数或或任务,也也可以从从函数或或任务传传递过来来,也可可以作为为模块端端口进行行传递。9. 数组组在Veriilogg中可以以声明一一个数组组类型,reg和线网类型还可以具有一个向量宽度。在一个对象名前面声明的尺寸表示向量的宽度,在一个对
22、象名后面声明的尺寸表示数组的深度。例如:reg 7:0 rr1 1:2566; / 2566个8位的变变量在SysttemVVeriilogg中我们们使用不不同的术术语表示示数组:使用“压缩数数组(ppackked arrray)”这一术术语表示示在对象象名前声声明尺寸寸的数组组;使用用“非压缩缩数组(unpacked array)”这一术语表示在对象名后面声明尺寸的数组。压缩数组可以由下面的数据类型组成:bit、logic、reg、wire以及其它的线网类型。无论是压缩数组还是非压缩数组都可以声明成多维的尺寸。bit 7:0 aa; / 一一个一维维的压缩缩数组bit bb 77:0; /一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SystemVerilog 语言 知识 介绍 3394
限制150内