版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SystemVerilog语言简介SystemVerilog是一种硬件描述和验证语言(HDVL),它基于IEEE 1364-2001 Verilog硬件描述语言(HDL),并对其进行了扩展,包括扩充了C语言数据类型、结构、压缩和非压缩数组、接口、断言等等,这些都使得SystemVerilog在一个更高的抽象层次上提高了设计建模的能力。SystemVerilog由Accellera开发,它主要定位在芯片的实现和验证流程上,并为系统级的设计流程提供了强大的连接能力。下面我们从几个方面对SystemVerilog所作的增强进行简要的介绍,期望能够通过这个介绍使大家对SystemVerilog有一个概
2、括性的了解。1. 接接口(IInteerfaace)Veriilogg模块之之间的连连接是通通过模块块端口进进行的。为了给给组成设设计的各各个模块块定义端端口,我我们必须须对期望望的硬件件设计有有一个详详细的认认识。不不幸的是是,在设设计的早早期,我我们很难难把握设设计的细细节。而而且,一一旦模块块的端口口定义完完成后,我们也也很难改改变端口口的配置置。另外外,一个个设计中中的许多多模块往往往具有有相同的的端口定定义,在在Verriloog中,我们必必须在每每个模块块中进行行相同的的定义,这为我我们增加加了无谓谓的工作作量。SysttemVVeriilogg提供了了一个新新的、高高层抽象象的模
3、块块连接,这个连连接被称称为接口口(Innterrfacce)。接口口在关键键字innterrfacce和enddintterffacee之间定定义,它它独立于于模块。接口在在模块中中就像一一个单一一的端口口一样使使用。在在最简单单的形式式下,一一个接口口可以认认为是一一组线网网。例如如,可以以将PCCI总线线的所有有信号绑绑定在一一起组成成一个接接口。通通过使用用接口,我们在在进行一一个设计计的时候候可以不不需要首首先建立立各个模模块间的的互连。随着设设计的深深入,各各个设计计细节也也会变得得越来越越清晰,而接口口内的信信号也会会很容易易地表示示出来。当接口口发生变变化时,这些变变化也会会在
4、使用用该接口口的所有有模块中中反映出出来,而而无需更更改每一一个模块块。下面面是一个个接口的的使用实实例:inteerfaace chiip_bbus; / 定义义接口wiree reead_reqquesst, reaad_ggrannt;wiree 77:0 adddreess, daata;endiinteerfaace: chhip_bussmoduule RAMM (cchipp_buus iio, / 使用接接口inpuut cclk);/ 可可以使用用io.reaad_rrequuestt引用接接口中的的一个信信号endmmoduulemoduule CPUU(chhip_bus
5、s ioo, iinpuut cclk);.endmmoduulemoduule topp;reg clkk = 0;chipp_buus aa; / 实实例接口口/ 将将接口连连接到模模块实例例RAM memm(a, cllk);CPU cpuu(a, cllk);endmmoduule实际上,SysstemmVerriloog的接接口不仅仅仅可以以表示信信号的绑绑定和互互连。由由于SyysteemVeerillog的的接口中中可以包包含参数数、常量量、变量量、结构构、函数数、任务务、innitiial块块、allwayys块以以及连续续赋值语语句,所所以SyysteemVeerillog的
6、的接口还还可以包包含内建建的协议议检查以以及被使使用该接接口的模模块所共共用的功功能。2. 全全局声明明和语句句在Verriloog中,除了一一个模块块可以作作为模块块实例引引用其他他模块外外,并不不存在一一个全局局空间。另外,Verriloog允许许任意数数目的顶顶层模块块,因此此会产生生毫无关关联的层层次树。SysttemVVeriiog增增加了一一个被称称为$rroott的隐含含的顶级级层次。任何在在模块边边界之外外的声明明和语句句都存在在于$rroott空间中中。所有有的模块块,无论论它处于于哪一个个设计层层次,都都可以引引用$rroott中声明明的名字字。这样样,如果果某些变变量、函
7、函数或其其它信息息被设计计中的所所有模块块共享,那么我我们就可可以将它它们作为为全局声声明和语语句。全全局声明明和语句句的一个个使用实实例如下下:reg errror _fllag; / 全局局变量funcctioon ccompparee (.); / 全全局函数数alwaays (eerroor_fflagg) / 全全局语句句.moduule tesst;chipp1 uu1 (.)endmmoduulemoduule chiip1 (.);FSM u2 (.);alwaays (ddataa)erroor_fflagg = commparre(ddataa, eexpeecteed);
8、endmmoduulemoduule FSMM (.);.alwaays (sstatte)erroor_fflagg = commparre(sstatte, exppectted);endmmoduule3. 时时间单位位和精度度在Verriloog中,表示时时间的值值使用一一个数来来表示,而不带带有任何何时间单单位。例例如:foreeverr #55cloock = cloock; 从这一句句中我们们无法判判断5代表的的是5nns? 5pss? 还还是其他他。Veerillog的的时间单单位和精精度是作作为每一一个模块块的属性性,并使使用编译译器指令令tiimesscalle来设设置。使
9、使用这种种方法具具有固有有的缺陷陷,因为为编译器器指令的的执行依依赖于源源代码的的编译顺顺序,编编译器总总是将它它遇到的的最后一一个ttimeescaale设设置的时时间单位位和精度度作为之之后的标标准。那那么,假假如有些些模块之之前没有有使用timmesccalee设置时时间单位位和精度度,这就就有可能能出现同同一个源源代码的的不同仿仿真会出出现不同同结果的的情况。SysttemVVeriilogg为了控控制时间间单位加加入了两两个重要要的增强强。首先先,时间间值可以以显式地地指定一一个单位位。时间间单位可可以是ss、ms、ns、ps或fs。时时间单位位作为时时间值的的后缀出出现。例例如:f
10、oreeverr #55nscclocck = cclocck;其次,SSysttemVVeriilogg允许使使用新的的关键字字(tiimeuunitts和timmeprreciisioon)来来指定时时间单位位和精度度。这些些声明可可以在任任何模块块中指定定,同时时也可以以在$rroott空间中中全局指指定。时时间单位位和精度度必须是是10的幂幂,范围围可以从从s到fs。例例如:timeeuniits 1nss; timeepreecissionn10pps;4. 抽抽象数据据类型Veriilogg提供了了面向底底层硬件件的线网网、寄存存器和变变量数据据类型。这些类类型代表表了4态逻辑辑值
11、,通通常用来来在底层层上对硬硬件进行行建模和和验证。线网数数据类型型还具有有多个强强度级别别,并且且能够为为多驱动动源的线线网提供供解析功功能。SysttemVVeriilogg包括了了C语言的的chaar和intt数据类类型,它它允许在在Verriloog模型型和验证证程序中中直接使使用C和C+代码。Verriloog PPLI不不再需要要集成总总线功能能模型、算法模模型和CC函数。SysstemmVerriloog还为为Verriloog加入入了几个个新的数数据类型型,以便便能够在在更抽象象的层次次上建模模硬件。 ccharr:一个个两态的的有符号号变量,它与CC语言中中的chhar数数据
12、类型型相同,可以是是一个88位整数数(ASSCIII)或shhortt innt(Uniicodde); iint:一一个两态态的有符符号变量量,它与与C语言中中的innt数据据类型相相似,但但被精确确地定义义成322位; sshorrtinnt:一一个两态态的有符符号变量量,被精精确地定定义成116位; llonggintt:一个个两态的的有符号号变量,它与CC语言中中的loong数数据类型型相似,但被精精确地定定义成664位; bbytee:一个个两态的的有符号号变量,被精确确地定义义成8位; bbit:一个两两态的可可以具有有任意向向量宽度度的无符符号数据据类型,可以用用来替代代Verr
13、iloog的regg数据类类型; llogiic:一一个四态态的可以以具有任任意向量量宽度的的无符号号数据类类型,可可以用来来替代VVeriilogg的线网网或reeg数据据类型,但具有有某些限限制; sshorrtreeal:一个两两态的单单精度浮浮点变量量,与CC语言的的flooat类类型相同同; vvoidd:表示示没有值值,可以以定义成成一个函函数的返返回值,与C语言中中的含义义相同。SysttemVVeriilogg的bitt和其他他数据类类型允许许用户使使用两态态逻辑对对设计建建模,这这种方法法对仿真真性能更更有效率率。由于于Verriloog语言言没有两两态数据据类型,因此许许多
14、仿真真器都通通过将这这种功能能作为仿仿真器的的一个选选项提供供。这些些选项不不能够在在所有的的仿真器器之间移移植,而而且在需需要时用用三态或或四态逻逻辑的设设计中强强制使用用两态逻逻辑还具具有副作作用。SSysttemVVeriilogg的bitt数据类类型能够够极大改改进仿真真器的性性能,同同时在需需要的时时候仍然然可以使使用三态态或四态态逻辑。通过使使用具有有确定行行为的数数据类型型来代替替专有的的仿真器器选项,两态模模型能够够在所有有的SyysteemVeerillog仿仿真器间间移植。SysttemVVeriilogg的loggic数数据类型型比Veerillog的的线网和和寄存器器数
15、据类类型更加加灵活,它使得得在任何何抽象层层次上建建模硬件件都更加加容易。loggic类类型能够够以下面面的任何何一种方方法赋值值: 通通过任意意数目的的过程赋赋值语句句赋值,能够替替代Veerillog的的regg类型; 通通过单一一的连续续赋值语语句赋值值,能够够有限制制地替代代Verriloog的wirre类型型; 连连接到一一个单一一原语的的输出,能够有有限制地地替代VVeriilogg的wirre类型型;由于loogicc数据类类型能够够被用来来替代VVeriilogg的regg或wirre(具具有限制制),这这就使得得能够在在一个更更高的抽抽象层次次上建模模,并且且随着设设计的不不
16、断深入入能够加加入一些些设计细细节而不不必改变变数据类类型的声声明。llogiic数据据类型不不会表示示信号的的强度也也不具有有线逻辑辑的解析析功能,因此llogiic数据据类型比比Verriloog的wirre类型型更能有有效地仿仿真和综综合。5. 有有符号和和无符号号限定符符缺省情况况下,VVeriilogg neet和regg数据类类型是无无符号类类型,iinteegerr类型是是一个有有符号类类型。VVeriilogg-20001标标准允许许使用ssignned关关键字将将无符号号类型显显式地声声明成有有符号类类型。SSysttemVVeriilogg加入了了相似的的能力,它可以以通过
17、uunsiigneed关键键字将有有符号数数据类型型显式地地声明成成有无符符号数据据类型。例如:int unssignned j; 值得注意意的是uunsiigneed在Verriloog中是是一个保保留字,但并没没有被VVeriilogg标准使使用。6. 用用户定义义的类型型Veriilogg不允许许用户定定义新的的数据类类型。SSysttemVVeriilogg通过使使用tyypeddef提提供了一一种方法法来定义义新的数数据类型型,这一一点与CC语言类类似。用用户定义义的类型型可以与与其它数数据类型型一样地地使用在在声明当当中。例例如:typeedeff unnsiggnedd innt
18、 uuintt;uintt a, b;一个用户户定义的的数据类类型可以以在它的的定义之之前使用用,只要要它首先先在空的的typpedeef中说说明,例例如:typeedeff innt488; / 空空的tyypeddef,在其他他地方进进行完整整定义int448 cc;7. 枚枚举类型型在Verriloog语言言中不存存在枚举举类型。标识符符必须被被显式地地声明成成一个线线网、变变量或参参数并被被赋值。SysstemmVerriloog允许许使用类类似于CC的语法法产生枚枚举类型型。一个个枚举类类型具有有一组被被命名的的值。缺缺省情况况下,值值从初始始值0开始递递增,但但是我们们可以显显式地
19、指指定初始始值。枚枚举类型型的例子子如下:enumm rred, yeelloow, greeen RGGB;enumm WWAITT=2b011, LLOADD, DDONEE sstattes;我们还可可以使用用typpedeef为枚枚举类型型指定一一个名字字,从而而允许这这个枚举举类型可可以在许许多地方方使用。例如:typeedeff ennum FAALSEE=1b0, TRRUE boooleean;boolleann reeadyy;boolleann teest_commpleete;8. 结结构体和和联合体体在Verriloog语言言中不存存在结构构体或联联合体,而结构构体或联
20、联合体在在将几个个声明组组合在一一起的时时候非常常有用。SysstemmVerriloog增加加了结构构体和联联合体,它们的的声明语语法类似似于C。struuct reg 155:0 oopcoode;reg 233:0 aaddrr; IRR;unioon int I;shorrtreeal f; N;结构体或或联合体体中的域域可以通通过在变变量名和和域名字字之间插插入句点点(.)来引引用:IR.oopcoode = 11; / 设设置IRR变量中中的oppcodde域N.f = 00.0; / 将N设置成成浮点数数的值我们可以以使用ttypeedeff为结构构体或联联合体的的定义指指定一个
21、个名字。typeedeff sttrucct reg 7:0 oopcoode;reg 233:0 aaddrr; innstrructtionn; / 命命名的结结构体insttrucctioon IIR; / 结构体体实例一个结构构体可以以使用值值的级联联来完整整地赋值值,例如如:insttrucctioon = 55, 2200; 结构体可可以作为为一个整整体传递递到函数数或任务务,也可可以从函函数或任任务传递递过来,也可以以作为模模块端口口进行传传递。9. 数数组在Verriloog中可可以声明明一个数数组类型型,reeg和线线网类型型还可以以具有一一个向量量宽度。在一个个对象名名前面
22、声声明的尺尺寸表示示向量的的宽度,在一个个对象名名后面声声明的尺尺寸表示示数组的的深度。例如:reg 7:0 rr1 1:2566; / 2566个8位的变变量在SysstemmVerriloog中我我们使用用不同的的术语表表示数组组:使用用“压缩数数组(ppackked arrray)”这一术术语表示示在对象象名前声声明尺寸寸的数组组;使用用“非压缩缩数组(unppackked arrray)”这一术术语表示示在对象象名后面面声明尺尺寸的数数组。压压缩数组组可以由由下面的的数据类类型组成成:biit、loggic、regg、wirre以及及其它的的线网类类型。无无论是压压缩数组组还是非非压缩
23、数数组都可可以声明明成多维维的尺寸寸。bit 7:0 aa; / 一一个一维维的压缩缩数组bit b 7:0; /一个个一维的的非压缩缩数组bit 0:11 7:0 cc; /一个个二维的的压缩数数组bit 3:0 7:0 dd 11:10; / 一个个包含110个具具有4个8位字节节的压缩缩数组的的非压缩缩数组非压缩尺尺寸在压压缩尺寸寸之前引引用,这这就允许许将整个个压缩数数组作为为一个单单一的元元素进行行引用。在上面面的例子子中,dd1引用非非压缩数数组的一一个单一一元素,这个元元素是一一个包含含4个字节节的数组组。10. 在为命命名的块块中声明明Veriilogg允许变变量在一一个命名名
24、的beeginn-ennd或forrk-jjoinn语句组组中声明明。相对对于语句句组来说说,这些些变量是是本地的的,但它它们可以以被层次次化地引引用。在在SysstemmVerriloog中,既可以以在命名名的块中中也可以以在未命命名的块块中声明明。在未未命名的的块中,不能够够使用层层次名来来访问变变量。所所有的变变量类型型,包括括用户定定义的类类型、枚枚举类型型、结构构体和联联合体都都可以在在beggin-endd或forrk-jjoinn语句组组中声明明。11. 常量在Verriloog中有有三种特特性类型型的常量量:paarammeteer、speecpaaramm和loccalppa
25、raam。而而在SyysteemVeerillog中中,允许许使用cconsst关键键字声明明常量。例如:consst ccharr coolonn = “:”; 12. 可重定定义的数数据类型型SysttemVVeriilogg扩展了了Verriloog的parrameeterr,使其其可以包包含类型型。这个个强大的的功能使使得一个个模块中中的数据据类型在在模块的的每一个个实例中中重新定定义。例例如:moduule fooo; # (paarammeteer ttypee VAAR_TTYPEE = shoortiint;) (iinpuut llogiic 7:0 ii, ooutpput
26、 loggic 7:0 oo); VAAR_TTYPEE j = 00; / 如如果不重重新定义义,j的数据据类型为为shoortiint endmmoduulemoduule barr;logiic 3:0 ii, oo; fooo #(.VAAR_TTYPEE(innt) u11 (ii, oo); / 重新将将VARR_TYYPE定定义成iint类类型endmmoduule13. 模块端端口连接接在Verriloog中,可以连连接到模模块端口口的数据据类型被被限制为为线网类类型以及及变量类类型中的的regg、inttegeer和timme。而而在SyysteemVeerillog中中则去
27、除除了这种种限制,任何数数据类型型都可以以通过端端口传递递,包括括实数、数组和和结构体体。14. 字母值值在Verriloog中,当指定定或赋值值字母值值的时候候存在一一些限制制。而SSysttemVVeriilogg则为字字母值如如何指定定作了下下面的增增强: 一一个字母母值的所所有位均均可以使使用00、1、z或x作相相同的填填充。这这就允许许填充一一个任意意宽度的的向量,而无需需显式地地指定向向量的宽宽度,例例如:bit 63:0 ddataa; dataa = 1; /将datta的所所有位设设置成11 一一个字符符串可以以赋值成成一个字字符数组组,象CC语言一一样加入入一个空空结束符符
28、。如果果尺寸不不同,它它象C中一样样进行左左调整,例如:charr fooo0:12 = “helllo worrldnn”; 加加入了几几个特殊殊的串字字符:v:垂直直TABBf:换页页a:响铃铃x02:用十六六进制数数来表示示一个AASCIII字符符 数数组可以以使用类类似于CC初始化化的语法法赋值成成字符值值,但它它还允许许复制操操作符。括号的的嵌套必必须精确确地匹配配数组的的维数(这一点点与C不同),例如如:int n1: 2 1:3 = 0, 1, 2, 34; 15. 强制类类型转换换Veriilogg不能将将一个值值强制转转换成不不同的数数据类型型。SyysteemVeerill
29、og通通过使用用操作作符提供供了数据据类型的的强制转转换功能能。这种种强制转转换可以以转换成成任意类类型,包包括用户户定义的的类型。例如:int (22.0 * 33.0) / 将结结果转换换为innt类型型mytyype (ffoo) / 将fooo转换为为myttypee类型一个值还还可以通通过在强强制转换换操作符符前指定定一个110进制制数来转转换成不不同的向向量宽度度,例如如:17(x - 2) / 将结结果转换换为177位宽度度也可以将将结果转转换成有有符号值值,例如如:signned(x) / 将x转换为为有符号号值16. 操作符符Veriilogg没有C语言的的递增(+)和和递减
30、(-)操操作符。而SyysteemVeerillog加加入了几几个新的的操作符符: +和-:递递增和递递减操作作符; +=、-=、*=、/=、%=、&=、=、|=、=、=赋值值操作符符;17. 唯一性性和优先先级决定定语句在Verriloog中,如果没没有遵循循严格的的编码风风格,它它的iff-ellse和和casse语句句会在RRTL仿仿真和RRTL综综合间具具有不一一致的结结果。如如果没有有正确使使用fuull_casse和parralllel_casse综合合指令还还会引起起一些其其它的错错误。SysttemVVeriilogg能够显显式地指指明什么么时候一一条决定定语句的的分支是是唯一
31、的的,或者者什么时时候需要要计算优优先级。我们可可以在iif或casse关键键字之前前使用uuniqque或或reqquirres关关键字。这些关关键字可可以向仿仿真器、综合编编译器、以及其其它工具具指示我我们期望望的硬件件类型。工具使使用这些些信息来来检查iif或casse语句句是否正正确建模模了期望望的逻辑辑。例如如,如果果使用uuniqque限限定了一一个决定定语句,那么在在不希望望的caase值值出现的的时候仿仿真器就就能够发发布一个个警告信信息。bit 2:0a;uniqque if (aa=0) | (a=1) y= inn1;elsee iff (aa=2) y=in22;els
32、ee iff (aa=4) y=in33; / 值值3、5、6、7会引起起一个警警告priooritty iif (a22:1=0) yy = inn1; / a是0或1elsee iff (aa2=0) yy = inn2; / a是2或3elsee y = inn3; / 如果a为其他他的值uniqqueccasee (aa)0, 11: yy = inn1;2: yy = inn2;4: yy = inn3;endccasee / 值3、5、6、7会引起起一个警警告priooritty ccaseez (a)2b000? : yy = inn1; / a是0或12b00? : yy =
33、inn2; / a是2或3defaaultt : y = inn3; /如如果a为其他他的值endccasee18. 底部检检测的循循环Veriilogg包含foor、whiile和和reppeatt循环,这几个个循环都都是在循循环的起起始处检检测循环环条件。SysstemmVerriloog加入入了一个个do-whiile循循环,这这种循环环在执行行语句的的结尾处处检测循循环条件件。19. 跳转语语句在语句的的执行过过程中,C语言提提供了几几种方式式来跳转转到新的的语句,包括:retturnn、breeak、conntinnue和和gotto。在在Verriloog中除除了通过过使用ddis
34、aablee语句跳跳转到语语句组的的尾部外外,没有有提供任任何其它它跳转语语句。使使用diisabble语语句执行行中止和和继续功功能要求求加入块块的名字字,并且且会产生生不直观观的代码码。SyysteemVeerillog加加入了CC语言的的breeak和和conntinnue关关键字,这两个个关键字字不要求求使用块块名字。另外,SysstemmVerriloog还加加入了一一个reeturrn关键键字,它它可以用用来在任任何执行行点上退退出一个个任务或或函数。 bbreaak:退退出一个个循环,与C语言相相同; cconttinuue:跳跳转到一一个循环环的尾部部,与CC语言相相同; rr
35、etuurn表表达式:退出一一个函数数; rretuurn:退出一一个任务务或vooid类类型的函函数。SysttemVVeriilogg没有包包含C语言中中的gooto语语句。20. 块名字字和语句句标签在Verriloog中,我们可可以通过过在beeginn或forrk关键键字之后后指定名名字来为为beggin-endd或forrk-jjionn语句指指定名字字。这个个指定的的名字代代表整个个语句块块。SyysteemVeerillog还还允许在在endd或jioon关键键字之后后指定一一个匹配配的块名名字。这这种机制制很容易易将ennd或jioon与对对应的bbegiin或forrk联系
36、系起来,尤其是是在一个个长的块块或嵌套套的块中中。块结结尾处的的名字是是可选的的,但如如果使用用的话,它必须须与块起起始处的的名字相相同。例例如:begiin: fooo / 在在beggin之之后的块块名字 forkk: bbar / 具有名名字的嵌嵌套的块块jionn: bbar / 必须具具有相同同的名字字 end: fooo / 必必须具有有相同的的名字SysttemVVeriilogg还允许许像C语言一一样为单单个语句句设置标标签。语语句标签签放置在在语句的的前面,用来标标识这条条语句。例如:inittiall beeginntestt1: reaad_eenabble = 00;
37、teest22: ffor (i=0; i=2555; ii+)end21. 对事件件控制的的增强Veriilogg使用标记来来控制基基于特定定事件的的执行流流,SyysteemVeerillog增增强了事件控控制。 有有条件的的事件控控制标记的的一个基基本应用用就是推推断一个个具有使使能输入入的锁存存器。下下面的例例子演示示了一个个锁存器器建模的的基本风风格。alwaays (ddataa orr enn) iff (een)yy=daata;这种编码码风格对对仿真来来说是效效率低下下的,因因为即使使在使能能输入无无效的时时候,数数据输入入的每次次改变都都会触发发事件控控制。SysttemV
38、Veriilogg在事件件控制中中加入了了一个iiff条条件。只只有ifff条件件为真的的条件下下,事件件控制才才会被触触发。通通过将使使能判断断移入到到事件控控制里面面,使得得只有在在锁存器器输出能能够改变变的时候候事件控控制才会会被触发发。例如如:alwaays (aa orr enn ifff een=1)y=aa; 事事件控制制中的表表达式Veriilogg允许在在事件控控制列表表中使用用表达式式,例如如:alwaays (a * b)alwaays (mmemooryadddresss)在第一个个例子中中,是当当操作数数发生改改变的时时候还是是只有当当运算结结果发生生改变的的时候才才
39、会触发发事件控控制?在在第二个个例子中中,是当当memmoryy的地址址发生变变化的时时候还是是只有当当memmoryy的值发发生变化化的时候候才会触触发事件件控制?当事件控控制中包包含表达达式的时时候,IIEEEE Veerillog标标准允许许仿真器器进行不不同的优优化。这这就可能能导致在在不同的的仿真器器间有不不同的仿仿真结果果,可能能还会导导致仿真真与综合合之间的的结果不不一致。SysstemmVerriloog加入入了一个个chaangeed关键键字,在在事件控控制列表表中它被被用作一一个修饰饰符。(chhangged (表达达式)能够显显式地定定义只有有当表达达式的结结果发生生改变
40、的的时候才才会触发发事件控控制。例例如:alwaays (chaangeed (a * b)alwaays (chaangeed mmemooryadddresss) 事事件控制制中的赋赋值Veriilogg不允许许在事件件控制中中使用赋赋值。SSysttemVVeriilogg允许在在事件控控制中使使用赋值值表达式式。事件件控制仅仅仅敏感感于赋值值表达式式右侧的的变化。例如:alwaays (yy = a * b)22. 新的过过程Veriilogg使用allwayys过程程来表示示时序逻逻辑、组组合逻辑辑和锁存存逻辑的的RTLL模型。综合工工具和其其它软件件工具必必须根据据过程起起始处的的
41、事件控控制列表表以及过过程内的的语句来来推断aalwaays过过程的意意图。这这种推断断会导致致仿真结结果和综综合结果果之间的的不一致致。SyysteemVeerillog增增加了三三个新的的过程来来显式地地指示逻逻辑的意意图。 aalwaays_ff:表示时时序逻辑辑的过程程; aalwaays_commb:表表示组合合逻辑的的过程; aalwaays_lattch:表示锁锁存逻辑辑的过程程。例如:alwaays_commb (a or bb orr seel) begginif (sell) yy = a;elsee y = b;end软件工具具能够检检查事件件控制敏敏感列表表和过程程的内
42、容容来保证证逻辑的的功能匹匹配过程程的类型型。例如如,工具具能够检检查一个个alwwayss_coomb过过程能够够敏感过过程内读读取的所所有外部部值,对对逻辑的的每一个个分支的的相同变变量进行行赋值,并且检检查分支支是否覆覆盖了所所有可能能的条件件。如果果任何一一个条件件没有满满足,软软件工具具均会报报告该过过程没有有正确建建模组合合逻辑。23. 动态过过程Veriilogg通过使使用foork-jioon提供供了一种种静态的的并发过过程。每每一个分分支都是是一个分分离的、并行的的过程。forrk-jjionn中任何何语句的的执行必必须在组组内的每每一个过过程完成成后才会会执行。例如:ini
43、ttiall beeginn foorksendd_paackeet_ttaskk (11, 2255, 0);sendd_paackeet_ttaskk (77, 1128, 5);watcch_rresuult_tassk (1, 2555, 00);watcch_rresuult_tassk (7, 1288, 55); jiion / 所有的的任务必必须完成成后才会会到达这这里endSysttemVVeriilogg通过prroceess关关键字加加入了一一个新的的、动态态的过程程。它为为一个过过程产生生分支,然后继继续执行行而无需需等待其其他过程程完成。过程不不会阻塞塞过程或或任务内
44、内的语句句执行。这种方方式能够够建模多多线程的的过程。例如:inittiall beeginn prroceess sennd_ppackket_tassk (1, 2555, 00);proccesss seend_pacckett_taask (7, 1228, 5);proccesss waatchh_reesullt_ttaskk (11, 2255, 0);proccesss waatchh_reesullt_ttaskk (77, 1128, 5);end / 所有的的过程并并行运行行24. 任务和和函数增增强SysttemVVeriilogg为Verriloog的任任务和函函数作
45、了了几个增增强。 静静态和自自动的存存储缺省情况况下,在在Verriloog任务务或函数数内的所所有存储储都是静静态的。Verriloog-220011允许将将任务和和函数声声明成自自动的。在SyysteemVeerillog中中:(11). 在一个个静态任任务和函函数内的的特定数数据可以以显式地地声明成成自动的的。声明明成自动动的数据据在块中中具有完完整的生生命周期期,并且且在任务务和函数数调用的的入口处处初始化化;(22). 在一个个自动的的任务或或函数中中的特定定数据可可以显式式地声明明成静态态的。自自动的任任务或函函数中声声明成静静态的数数据在一一个块的的本地范范围内具具有静态态的生命命周期。 从从任何点点返回Veriilogg在一个个任务或或函数中中执行到到enddtassk或enddfunnctiion关关键字的的时候返返回。函函数的返返回值是是给函数数名赋的的最后一一个值。SysstemmVerriloog加入入了一个个retturnn关键字字,使用用这个关关键字,一个任任务或函函数可以以在任何何点上返返回。 多多语句Veriilogg要求一一个任务务或函数数只具有有一个语语句或语语句块。多条语语句必须须组合到到一个单单一的bbegiin-eend或或forrk-jjionn块中。SysstemmVerriloog去除除了这
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024服务员个人工作计划(30篇)
- 八下期中测试卷01【测试范围:第1-11课】(解析版)
- 2024年农业招商引资工作总结(修正稿)
- 远程故障诊断-洞察分析
- 医疗健康大数据应用-洞察分析
- 太阳能热水器性能提升-洞察分析
- 语义消歧与文本分析-洞察分析
- 血液净化过程中微生物污染控制-洞察分析
- 雨季桥梁施工防滑措施-洞察分析
- 引进种牛本土化饲养模式探索-洞察分析
- 煤层应力状态及煤与瓦斯突出防治研究
- 《工业数据采集技术》课程标准
- 智慧农业的无人机与遥感技术
- 河北省石家庄市2023-2024学年高一上学期期末教学质量检测生物试题(含答案解析)
- 循证护理在骨科中的护理
- 心肺复苏应急演练脚本
- 华南理工大学2022年622物理化学考研真题(含答案)
- 建筑垃圾安全生产管理制度范本
- 酒店总经理应聘计划书
- 22G101三维立体彩色图集
- 2023年CQE客诉工程师年度总结及下年规划
评论
0/150
提交评论