SystemVerilog语言知识介绍 .pdfVIP

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

SystemVerilog语言简介

SystemVerilog是一种硬件描述和验证语言(HDVL),

它基于IEEE1364-2001Verilog硬件描述语言(HDL),并

对其进行了扩展,包括扩充了C语言数据类型、结构、压缩

和非压缩数组、接口、断言等等,这些都使得SystemVeri

log在一个更高的抽象层次上提高了设计建模的能力。Syst

emVerilog由Accellera开发,它主要定位在芯片的实现和

验证流程上,并为系统级的设计流程提供了强大的连接能

力。下面我们从几个方面对SystemVerilog所作的增强进行

简要的介绍,期望能够通过这个介绍使大家对SystemVeril

og有一个概括性的了解。

1.接口(Interface)

Verilog模块之间的连接是通过模块端口进行的。为了

给组成设计的各个模块定义端口,我们必须对期望的硬件设

计有一个详细的认识。不幸的是,在设计的早期,我们很难

把握设计的细节。而且,一旦模块的端口定义完成后,我们

也很难改变端口的配置。另外,一个设计中的许多模块往往

具有相同的端口定义,在Verilog中,我们必须在每个模块

中进行相同的定义,这为我们增加了无谓的工作量。

SystemVerilog提供了一个新的、高层抽象的模块连接,

这个连接被称为接口(Interface)。接口在关键字interf

ace和endinterface之间定义,它独立于模块。接口在模块

中就像一个单一的端口一样使用。在最简单的形式下,一个

接口可以认为是一组线网。例如,可以将PCI总线的所有信

号绑定在一起组成一个接口。通过使用接口,我们在进行一

个设计的时候可以不需要首先建立各个模块间的互连。随着

设计的深入,各个设计细节也会变得越来越清晰,而接口内

的信号也会很容易地表示出来。当接口发生变化时,这些变

化也会在使用该接口的所有模块中反映出来,而无需更改每

一个模块。下面是一个接口的使用实例:

interfacechip_bus;//定义接口

wireread_request,read_grant;

wire[7:0]address,data;

endinterface:chip_bus

moduleRAM(chip_busio,//使用接口

inputclk);

//可以使用io.read_request引用接口中的一个信号

endmodule

moduleCPU(chip_busio,inputclk);

...

endmodule

moduletop;

regclk=0;

chip_busa;//实例接口

//将接口连接到模块实例

RAMmem(a,clk);

CPUcpu(a,clk);

endmodule

实际上,SystemVerilog的接口不仅仅可以表示信号的

绑定和互连。由于SystemVerilog的接口中可以包含参数、

常量、变量、结构、函数、任务、initial块、always块以

及连续赋值语句,所以SystemVerilog的接口还可以包含内

建的协议检查以及被使用该接口的模块所共用的功能。

2.全局声明和语句

在Verilog中,除了一个模块可以作为模块实例引用其

他模块外,并不存在一个全局空间。另外,Verilog允许任

意数目的顶层模块,因此会产生毫无关联的层次树。

SystemVeriog增加了一个被称为$root的隐含的顶级层

次。任何在模块边界之外的声明和语句都存在于$root空间

中。所有的模块,无论它处于哪一个设计层次,都可以引用

$root中声明的名字。这样,如果某些变量、函数或其它信

息被设计中的所有模块共享,那么我们就可以将它们作为全

局声明和语句。全局声明和语句的一个使用实例如下:

regerror_flag;//全局变量

functioncompare(...);//全局函数

always@(error_flag)//全局语句

...

moduletest;

chip1u1(...)

endmodule

modulechip1(...);

FSMu2(...);

alwa

文档评论(0)

135****2651 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档