> 技术文档 > 1.3 定义SystemVerilog的RTL综合子集 & 1.4 针对ASIC和FPGA的建模_使用systemverilog进行rtl建模——基于systemverilog的asic与fpga设

1.3 定义SystemVerilog的RTL综合子集 & 1.4 针对ASIC和FPGA的建模_使用systemverilog进行rtl建模——基于systemverilog的asic与fpga设

本节内容摘自《使用SystemVerilog进行RTL建模——基于SystemVerilog的ASIC与FPGA设计》

1.3 定义SystemVerilog的RTL综合子集

SystemVerilog 既是一种硬件设计语言,也是一种硬件验证语言。官方的IEEE SystemVerilog 标准并没有区分这两个目标,也没有指定 SystemVerilog语言中能用于综合的子集语句。相反,提供 RTL 综合编译器的公司定义了哪些SystemVerilog 语言构造被特定产品支持。

缺乏 SystemVerilog 综合标准导致每个综合编译器支持不同的 SystemVerilog 标准子集。这意味着设计工程师在编写用于综合的模型时需要小心。参考所使用的综合编译器的文档,并遵循该编译器的语言子集是至关重要的。为一个综合编译器编写的模型可能需要修改才能与另一个综合编译器兼容。本书定义了一个 SystemVerilog 的子集,该子集可以与本书撰写时市面上大多SystemVerilog RTL 综合编译器兼容。只要遵循本书中定义的语言限制和编码指南,模型就可以在任何主要的 SystemVerilog 综合编译器上进行综合。

1.4  针对ASIC和FPGA的建模

ASIC 和 FPGA 技术的完整定义超出了本书的范围,本书主要讨论使用SystemVerilog 语言的正确数字逻辑建模风格。

本节的目的是探讨 ASIC 和 FPGA 技术如何影响 SystemVerilog 建模风格。关于 ASIC 和 FPGA 实现的细节以及这些技术的适当应用留待其他工程书籍和讨论中探讨。然而,为了实现 RTL 建模最佳实践的目标,理解 ASIC 和 FPGA的基本概念是非常重要的。

1.4.1  标准单元ASIC
与可以执行多种功能的通用 IC(如微处理器)不同,ASIC(application specific integrated circuit,专用集成电路)被设计用于执行特定任务。控制器、音频格式转换和视频处理是 ASIC 用于执行特定任务的例子。ASIC 还可以包括一个或多个嵌入式处理器,以执行通用操作及其特定任务。带有嵌入式处理器的 ASIC 通常被称为系统级芯片(system on chip,SoC)。

提供 ASIC 的公司被称为 ASIC 供应商。其中一部分供应商提供 ASIC 技术,并进行实际的制造和生产,一部分 ASIC 供应商仅提供 ASIC 技术,制造和生产则留给其他公司。

大多数 ASIC 技术使用标准单元,这些是预先设计的逻辑块,由一个到多个逻辑门组成。一个 ASIC 单元库可能有几百个标准单元,例如 AND、NAND、 OR、NOR、异或、同或、2-1 MUX、D 型 触发器、锁存器等。每个单元都具有明确定义的电气特性,例如传播延迟、建立时间、保持
时间及电容。

设计 ASIC 涉及从库中选择适当的单元并将它们连接在一起以执行所需的功能。在整个过程中使用软件工具。ASIC 设计的典型流程如图 1.5 所示。

 图 1.5 所示的步骤如下:

(1)    规范设计的预期功能。

(2)    在抽象的 RTL 层次上进行所需功能的建模。在这个阶段,重点是功能,而不是物理实现。

(3)仿真,用于验证功能,1.5 节将更详细地讨论仿真。

(4)综合,用于将 RTL 功能映射到目标ASIC 类型的适当标准单元。综合的输出称为门级网表。这一综合过程将在 1.6 节更详细地描述。

(5)等价性检查(形式验证的一种),用于验证门级实现是否在功能上等同于 RTL功能。

(6)时钟树综合,用于在设计中均匀分布时钟驱动器。此时还会使用工具,插入扫描链,为设计增加可测试电路部分。

(7)布局布线,布局布线的目的是通过软件计算如何在实际芯片上布局单元并布线互连走线。布局布线软件的输出是图形数据系统文件(GDSII)文件。 GDSII 是一种二进制格式,包含有关几何形状(多边形)和实际在芯片中构建集成电路所需的其他数据的信息。

(8)设计规则检查(DRC)是为了确保遵循 ASIC 制造厂定义的所有规则,例如门扇出负载。

(9)静态时序分析(STA)是为了确保在考虑互连网络和时钟树偏移的延迟效应后,满足建立时间 / 保持时间。

(10)最后一步是将 GDSII 文件和其他数据发送到 ASIC 的制造厂。将这些文件发送给制造厂被称为流片(taping out)。在 ASIC 设计的早期,使用磁片将这些文件发送到制造厂。

本书对 ASIC 设计流程的这些步骤进行了概括。有许多细节被省略了,并不是所有公司都遵循这个确切的流程。有时第(9)步(静态时序分析)会在设计流程的早期进行,并可能在流程中多次进行。

本书的重点是 RTL 建模用于仿真和综合,即图 1.5 中的第(2)步和第(3)步,这种建模水平位于设计过程的前端。

设计细节如时钟树、扫描链和时序分析将在设计流程的后期出现,超出了本书的介绍范围。在 RTL 级别,设计工程师专注于实现所需的功能,而不是实现细节。然而,理解前端之后的建模、仿真和综合仍然很重要,因为 RTL 编码风格会影响后续设计流程中工具的有效性。

还有其他类型的 ASIC 技术不使用标准单元,如全定制、门阵列和结构化ASIC,SystemVerilog 可以以类似的方式设计这些类型的 ASIC,尽管所涉及的软件工具可能不同。本书专注于使用 SystemVerilog 对更一般的标准单元 ASIC技术进行建模。

1.4.2  FPGA
FPGA(field programmable gate array,现场可编程门阵列)是一种集成电路,包含固定数量的逻辑块,这些逻辑块可以在 IC 制造后进行配置(ASIC的内容和布局必须在制造之前确定)。以往的 FPGA 的功能性无法与 ASIC 相提并论,并且运行速度较慢,这在 RTL 级别设计时是重要的考虑因素。随着FPGA 技术的进步,显著缩小了 FPGA 和 ASIC 之间的差距。一般来说,FPGA可以用于实现与 ASIC 相同的功能。

FPGA 包含许多小逻辑组件的阵列,这些组件被称为可配置逻辑块(CLB)。一些 FPGA 供应商将这些块称为逻辑阵列块(LAB)。一个典型的 CLB 可能包含一个或多个查找表(LUT)、一些多路复用器(MUX)和一个存储元件,如 D 型触发器。大多数 FPGA 中的查找表是小型 RAM,编程产生逻辑操作,如与(AND)、或(OR)和异或(XOR)。从 LUT 中选择所需的操作,可以使 CLB 以多种方式使用,从简单的与门、异或门到更复杂的组合功能。某些FPGA 中的 CLB 可能还具有其他功能,例如加法器。MUX 允许组合结果直接从 CLB(异步输出)输出,或在存储元件中寄存(同步输出)。

FPGA 由成千上万的 CLB、可编程的 IO 元件和连接这些元素的可编程互连网络组成。设计人员可以通过硬件描述语言(HDL)来进行编程,将这些逻辑块和互连网络配置为实现特定的硬件逻辑功能。

复杂 FPGA 的典型设计流程如图 1.6 所示。

FPGA 设计流程的前端与 ASIC 的类似,但后端不同。FPGA 流程的后端部分与 ASIC 流程的主要区别在于布局布线。在 ASIC 中,布局布线软件决定了集成电路的制造方式。在 FPGA 中,综合和布局布线软件决定了如何对预先制造的集成电路进行编程。本书专注于前端步骤(2)和(3),即 RTL 建模和仿真,在这两个步骤中,ASIC 和 FPGA 设计之间几乎没有区别。

1.4.3  ASIC和FPGA的RTL编码风格
理想情况下,相同的 RTL代码可以用于 ASIC 或 FPGA。在 RTL级别工作时,工程师的重点是设计和验证功能,而不必担心实现细节。综合编译器的作用是将 RTL 功能映射到特定的 ASIC 或 FPGA。

大多数情况下,RTL 代码在 ASIC 和 FPGA 上都能同样良好地综合。尽管如此,这一普遍性仍然存在例外。RTL 模型的某些方面需要考虑设计将实现于ASIC 还是 FPGA。这些方面包括:

(1)复位:大多数 ASIC 单元库包括同步复位触发器和异步复位触发器。设计工程师可以使用他们认为最适合设计的复位类型编写 RTL 模型。一些 FPGA 的灵活性较低,仅具有一种类型的复位触发器(通常是同步的)。虽然综合编译器可以将具有异步复位的 RTL 模型映射到门级同步复位,但需要额外的逻辑门。许多 FPGA 还支持全局复位功能和上电触发器自定义状态,而ASIC 则没有这些功能。8.1.5 节将更详细地讨论复位建模。

(2)向量大小:ASIC 在最大向量宽度和向量运算方面基本不受限制。在大向量上进行复杂操作将需要大量逻辑门,但大多数 ASIC 中使用的标准单元架构可以适应这些操作。FPGA 在这方面更为严格。FPGA 中预定义的 CLB 数量及其布局可能会限制在非常大的向量实现复杂操作的能力,这种制约源于两个方面:一是可用的 CLB 数量,二是 CLB 之间互连走线的复杂性。ASIC 和FPGA 之间的这种差异意味着,即使在 RTL 抽象级别,设计工程师也必须牢记设计的功能会受到设备的限制。

本书介绍的大多数示例、编码风格和指南同样适用于 ASIC 和 FPGA 设计。对于那些罕见的会对 ASIC 或 FPGA 产生影响的 RTL 编码风格的例外情况,本书将会予以特别说明。