语言数据类型、结构、压缩和非
压缩数组、 接口、断言等等,这些都使得 SystemVerilog 在一个更高的抽象层次上提高
了设计建模的能力。SystemVerilog 由 Accellera 开发,它主要定位在芯片的实现和验证流
程上,并为系统级的设计流程提供了强大的连接能力。下面我们从几个方面对
SystemVerilog 所作的增强进行简要的介绍,期望能够通过这个介绍使大家对
SystemVerilog 有一个概括性的了解。
1. 接口(Interface)
Verilog 模块之间的连接是通过模块端口进行的。为了给组成设计的各个模块定义端口,我
们必须对期望的硬件设计有一个详细的认识。不幸的是,在设计的早期,我们很难把握设
计的细节。而且,一旦模块的端口定义完成后,我们也很难改变端口的配置。另外,一个
设计中的许多模块往往具有相同的端口定义,在 Verilog 中,我们必须在每个模块中进行相
同的定义,这为我们增加了无谓的工作量。
SystemVerilog 提供了一个新的、高层抽象的模块连接,这个连接被称为接口
(Interface)。接口在关键字 interface 和 endinterface 之间定义,它独立于模块。接口在
模块中就像一个单一的端口一样使用。在最简单的形式下,一个接口可以认为是一组线网。
例如,可以将 PCI 总线的所有信号绑定在一起组成一个接口。通过使用接口,我们在进行
一个设计的时候可以不需要首先建立各个模块间的互连。随着设计的深入,各个设计细节
也会变得越来越清晰,而接口内的信号也会很容易地表示出来。当接口发生变化时,这些
变化也会在使用该接口的所有模块中反映出来,而无需更改每一个模块。下面是一个接口
的使用实例:
interface chip_bus;// 定义接口
wireread_request, read_grant;
wire [7:0]address, data;
endinterface: chip_bus
module RAM(chip_bus io, // 使用接口
inputclk);
//可以使用 io.read_request 引用接口中的一个信号
endmodule
评论0