SystemVerilog语言知识介绍3394.docx

上传人:you****now 文档编号:49420487 上传时间:2022-10-08 格式:DOCX 页数:27 大小:70.69KB
返回 下载 相关 举报
SystemVerilog语言知识介绍3394.docx_第1页
第1页 / 共27页
SystemVerilog语言知识介绍3394.docx_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《SystemVerilog语言知识介绍3394.docx》由会员分享,可在线阅读,更多相关《SystemVerilog语言知识介绍3394.docx(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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; /一

23、个个一维的的非压缩缩数组bit 0:11 7:0 cc; /一个个二维的的压缩数数组bit 3:0 7:0 dd 11:10; / 一个个包含110个具具有4个8位字节节的压缩缩数组的的非压缩缩数组非压缩尺寸寸在压缩缩尺寸之之前引用用,这就就允许将将整个压压缩数组组作为一一个单一一的元素素进行引引用。在在上面的的例子中中,d1引引用非压压缩数组组的一个个单一元元素,这这个元素素是一个个包含44个字节节的数组组。10. 在在为命名名的块中中声明Verillog允允许变量量在一个个命名的的beggin-endd或forrk-jjoinn语句组组中声明明。相对对于语句句组来说说,这些些变量是是本地的

24、的,但它它们可以以被层次次化地引引用。在在SysstemmVerriloog中,既既可以在在命名的的块中也也可以在在未命名名的块中中声明。在在未命名名的块中中,不能能够使用用层次名名来访问问变量。所所有的变变量类型型,包括括用户定定义的类类型、枚枚举类型型、结构构体和联联合体都都可以在在beggin-endd或forrk-jjoinn语句组组中声明明。11. 常常量在Veriilogg中有三三种特性性类型的的常量:parrameeterr、speecpaaramm和loccalpparaam。而而在SyysteemVeerillog中中,允许许使用cconsst关键键字声明明常量。例例如:co

25、nstt chhar collon = “:”; 12. 可可重定义义的数据据类型SysteemVeerillog扩扩展了VVeriilogg的parrameeterr,使其其可以包包含类型型。这个个强大的的功能使使得一个个模块中中的数据据类型在在模块的的每一个个实例中中重新定定义。例例如:modulle ffoo; # (parrameeterr tyype VARR_TYYPE = sshorrtinnt;) (innputt loogicc 7:0 ii, ooutpput loggic 7:0 oo); VARR_TYYPE j = 0; / 如果果不重新新定义,j的数据类型为shor

26、tint endmoodullemodulle bbar; loggic 3:0 ii, oo; fooo #(.VAAR_TTYPEE(innt) u11 (ii, oo); / 重新将将VARR_TYYPE定定义成iint类类型endmoodulle13. 模模块端口口连接在Veriilogg中,可可以连接接到模块块端口的的数据类类型被限限制为线线网类型型以及变变量类型型中的rreg、inttegeer和timme。而而在SyysteemVeerillog中中则去除除了这种种限制,任任何数据据类型都都可以通通过端口口传递,包包括实数数、数组组和结构构体。14. 字字母值在Veriilogg

27、中,当当指定或或赋值字字母值的的时候存存在一些些限制。而而SysstemmVerriloog则为为字母值值如何指指定作了了下面的的增强:l 一个个字母值值的所有有位均可可以使用用0、1、z或x作相相同的填填充。这这就允许许填充一一个任意意宽度的的向量,而而无需显显式地指指定向量量的宽度度,例如如:bit 63:0 ddataa; data = 1; /将datta的所所有位设设置成11l 一个个字符串串可以赋赋值成一一个字符符数组,象象C语言一一样加入入一个空空结束符符。如果果尺寸不不同,它它象C中一样样进行左左调整,例例如:char fooo 0:12 = “hhelllo wworlldn

28、”; l 加入入了几个个特殊的的串字符符:v:垂直TTABf:换页a:响铃x02:用用十六进进制数来来表示一一个ASSCIII字符l 数组组可以使使用类似似于C初始化化的语法法赋值成成字符值值,但它它还允许许复制操操作符。括括号的嵌嵌套必须须精确地地匹配数数组的维维数(这这一点与与C不同),例例如:int nn 1: 2 1:3 = 0, 1, 2, 34; 15. 强强制类型型转换Verillog不不能将一一个值强强制转换换成不同同的数据据类型。SystemVerilog通过使用操作符提供了数据类型的强制转换功能。这种强制转换可以转换成任意类型,包括用户定义的类型。例如:int (2.0 *

29、 3.0) / 将结果果转换为为intt类型mytyppe (fooo) / 将fooo转换为为myttypee类型一个值还可可以通过过在强制制转换操操作符前前指定一一个100进制数数来转换换成不同同的向量量宽度,例例如:17 (x - 2) / 将结结果转换换为177位宽度度也可以将结结果转换换成有符符号值,例例如:signeed (x) / 将x转换为为有符号号值16. 操操作符Verillog没没有C语言的的递增(+)和递减(-)操作符。而SystemVerilog加入了几个新的操作符:l +和-:递递增和递递减操作作符;l +=、-=、*=、/=、%=、&=、=、|=、=、=赋值值操作

30、符符;17. 唯唯一性和和优先级级决定语语句在Veriilogg中,如如果没有有遵循严严格的编编码风格格,它的的if-elsse和casse语句句会在RRTL仿仿真和RRTL综综合间具具有不一一致的结结果。如如果没有有正确使使用fuull_casse和parralllel_casse综合合指令还还会引起起一些其其它的错错误。SysteemVeerillog能能够显式式地指明明什么时时候一条条决定语语句的分分支是唯唯一的,或或者什么么时候需需要计算算优先级级。我们们可以在在if或casse关键键字之前前使用uuniqque或或reqquirres关关键字。这这些关键键字可以以向仿真真器、综综合编

31、译译器、以以及其它它工具指指示我们们期望的的硬件类类型。工工具使用用这些信信息来检检查iff或casse语句句是否正正确建模模了期望望的逻辑辑。例如如,如果果使用uuniqque限限定了一一个决定定语句,那那么在不不希望的的casse值出出现的时时候仿真真器就能能够发布布一个警警告信息息。bit 2:0 a;uniquue iif (a=0) | (a=1) y = inn1;else if (a=2) y = in22;else if (a=4) y = in33; / 值值3、5、6、7会引起起一个警警告priorrityy iff (aa2:1=0) yy = inn1; / a是0或1

32、else if (a2=0) yy = inn2; / a是2或3else y = inn3; / 如果a为其他他的值uniquue casse (a) 0, 1: yy = inn1; 2: y = inn2; 4: y = inn3;endcaase / 值3、5、6、7会引起起一个警警告priorrityy caasezz (aa) 2bb00? : y = inn1; / a是0或1 2bb0? : y = inn2; / a是2或3 deffaullt : y = inn3; /如如果a为其他他的值endcaase 18. 底底部检测测的循环环Verillog包包含foor、whii

33、le和和reppeatt循环,这这几个循循环都是是在循环环的起始始处检测测循环条条件。SSysttemVVeriilogg加入了了一个ddo-wwhille循环环,这种种循环在在执行语语句的结结尾处检检测循环环条件。19. 跳跳转语句句在语句的执执行过程程中,CC语言提提供了几几种方式式来跳转转到新的的语句,包包括:rretuurn、breeak、conntinnue和和gotto。在在Verriloog中除除了通过过使用ddisaablee语句跳跳转到语语句组的的尾部外外,没有有提供任任何其它它跳转语语句。使使用diisabble语语句执行行中止和和继续功功能要求求加入块块的名字字,并且且会

34、产生生不直观观的代码码。SyysteemVeerillog加加入了CC语言的的breeak和和conntinnue关关键字,这这两个关关键字不不要求使使用块名名字。另另外,SSysttemVVeriilogg还加入入了一个个retturnn关键字字,它可可以用来来在任何何执行点点上退出出一个任任务或函函数。l brreakk:退出出一个循循环,与与C语言相相同;l coontiinuee:跳转转到一个个循环的的尾部,与与C语言相相同;l reeturrn 表达式式:退出出一个函函数;l reeturrn:退退出一个个任务或或voiid类型型的函数数。SysteemVeerillog没没有包含含

35、C语言中中的gooto语语句。20. 块块名字和和语句标标签在Veriilogg中,我我们可以以通过在在beggin或或forrk关键键字之后后指定名名字来为为beggin-endd或forrk-jjionn语句指指定名字字。这个个指定的的名字代代表整个个语句块块。SyysteemVeerillog还还允许在在endd或jioon关键键字之后后指定一一个匹配配的块名名字。这这种机制制很容易易将ennd或jioon与对对应的bbegiin或forrk联系系起来,尤尤其是在在一个长长的块或或嵌套的的块中。块块结尾处处的名字字是可选选的,但但如果使使用的话话,它必必须与块块起始处处的名字字相同。例例

36、如:beginn: ffoo / 在beggin之之后的块块名字 forrk: barr / 具有有名字的的嵌套的的块 jioon: barr / 必须须具有相相同的名名字 end: fooo / 必须须具有相相同的名名字SysteemVeerillog还还允许像像C语言一一样为单单个语句句设置标标签。语语句标签签放置在在语句的的前面,用用来标识识这条语语句。例例如:initiial beggin tesst1: reead_enaablee = 0; tesst2: foor (i=00; ii=2255; i+)end21. 对对事件控控制的增增强Verillog使使用标记来来控制基基于特

37、定定事件的的执行流流,SyysteemVeerillog增增强了事件控控制。l 有条条件的事事件控制制标记的一一个基本本应用就就是推断断一个具具有使能能输入的的锁存器器。下面面的例子子演示了了一个锁锁存器建建模的基基本风格格。alwayys (daata or en) if (enn) y = datta;这种编码风风格对仿仿真来说说是效率率低下的的,因为为即使在在使能输输入无效效的时候候,数据据输入的的每次改改变都会会触发事事件控制制。SysteemVeerillog在在事件控控制中加加入了一一个ifff条件件。只有有ifff条件为为真的条条件下,事事件控制制才会被被触发。通通过将使使能判断

38、断移入到到事件控控制里面面,使得得只有在在锁存器器输出能能够改变变的时候候事件控控制才会会被触发发。例如如:alwayys (a orr enn ifff een=1) y = a;l 事件件控制中中的表达达式Verillog允允许在事件控控制列表表中使用用表达式式,例如如:alwayys (aa * b)alwayys (meemorryaaddrresss)在第一个例例子中,是是当操作作数发生生改变的的时候还还是只有有当运算算结果发发生改变变的时候候才会触触发事件件控制?在第二二个例子子中,是是当meemorry的地地址发生生变化的的时候还还是只有有当meemorry的值值发生变变化的时时

39、候才会会触发事事件控制制?当事件控控制中包包含表达达式的时时候,IIEEEE Veerillog标标准允许许仿真器器进行不不同的优优化。这这就可能能导致在在不同的的仿真器器间有不不同的仿仿真结果果,可能能还会导导致仿真真与综合合之间的的结果不不一致。SystemVerilog加入了一个changed关键字,在事件控制列表中它被用作一个修饰符。(changed (表达式)能够显式地定义只有当表达式的结果发生改变的时候才会触发事件控制。例如:alwayys (chaangeed (a * b)alwayys (chaangeed mmemooryadddresss)l 事件件控制中中的赋值值Ver

40、illog不不允许在在事件控控制中使使用赋值值。SyysteemVeerillog允允许在事事件控制制中使用用赋值表表达式。事事件控制制仅仅敏敏感于赋赋值表达达式右侧侧的变化化。例如如:alwayys (y = aa * b)22. 新新的过程程Verillog使使用allwayys过程程来表示示时序逻逻辑、组组合逻辑辑和锁存存逻辑的的RTLL模型。综综合工具具和其它它软件工工具必须须根据过过程起始始处的事事件控制制列表以以及过程程内的语语句来推推断allwayys过程程的意图图。这种种推断会会导致仿仿真结果果和综合合结果之之间的不不一致。SystemVerilog增加了三个新的过程来显式地指

41、示逻辑的意图。l allwayys_fff:表表示时序序逻辑的的过程;l allwayys_ccombb:表示示组合逻逻辑的过过程;l allwayys_llatcch:表表示锁存存逻辑的的过程。例如:alwayys_ccombb (a oor bb orr seel) beggin if (seel) y = a; elsse yy = b;end软件工具能能够检查查事件控控制敏感感列表和和过程的的内容来来保证逻逻辑的功功能匹配配过程的的类型。例例如,工工具能够够检查一一个allwayys_ccombb过程能能够敏感感过程内内读取的的所有外外部值,对对逻辑的的每一个个分支的的相同变变量进行行

42、赋值,并并且检查查分支是是否覆盖盖了所有有可能的的条件。如如果任何何一个条条件没有有满足,软软件工具具均会报报告该过过程没有有正确建建模组合合逻辑。23. 动动态过程程Verillog通通过使用用forrk-jjionn提供了了一种静静态的并并发过程程。每一一个分支支都是一一个分离离的、并并行的过过程。fforkk-jiion中中任何语语句的执执行必须须在组内内的每一一个过程程完成后后才会执执行。例例如:initiial beggin forrksend_pacckett_taask (1, 2555, 0);send_pacckett_taask (7, 1228, 5);watchh_re

43、esullt_ttaskk (11, 2255, 0);watchh_reesullt_ttaskk (77, 1128, 5); jioon / 所所有的任任务必须须完成后后才会到到达这里里endSysteemVeerillog通通过prroceess关关键字加加入了一一个新的的、动态态的过程程。它为为一个过过程产生生分支,然然后继续续执行而而无需等等待其他他过程完完成。过过程不会会阻塞过过程或任任务内的的语句执执行。这这种方式式能够建建模多线线程的过过程。例例如:initiial beggin proocesss ssendd_paackeet_ttaskk (11, 2255, 0);p

44、roceess sennd_ppackket_tassk (7, 1288, 55);proceess wattch_ressultt_taask (1, 2555, 0);proceess wattch_ressultt_taask (7, 1228, 5);end / 所所有的过过程并行行运行24. 任任务和函函数增强强SysteemVeerillog为为Verriloog的任任务和函函数作了了几个增增强。l 静态态和自动动的存储储缺省情况下下,在VVeriilogg任务或或函数内内的所有有存储都都是静态态的。VVeriilogg-20001允允许将任任务和函函数声明明成自动动的。在在Sy

45、sstemmVerriloog中:(1). 在在一个静静态任务务和函数数内的特特定数据据可以显显式地声声明成自自动的。声声明成自自动的数数据在块块中具有有完整的的生命周周期,并并且在任任务和函函数调用用的入口口处初始始化;(2). 在一一个自动动的任务务或函数数中的特特定数据据可以显显式地声声明成静静态的。自自动的任任务或函函数中声声明成静静态的数数据在一一个块的的本地范范围内具具有静态态的生命命周期。l 从任任何点返返回Verillog在在一个任任务或函函数中执执行到eendttaskk或enddfunnctiion关关键字的的时候返返回。函函数的返返回值是是给函数数名赋的的最后一一个值。SystemVerilog加入了一个return关键字,使用这个关键字,一个任务或函数可以在任何点上返回。l

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理手册

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁