使用 Verilog 的设计流程
下图总结了 ASIC(即门阵列、标准单元)或 FPGA 的高级设计流程。在实际设计情况中,以下部分中描述的每个步骤可能会分为几个较小的步骤,并且随着错误的发现,部分设计流程将被迭代。
系统级验证
作为第一步,Verilog 可用于对包含一个或多个 ASIC 或 FPGA 的完整系统的各个方面进行建模和仿真。这可能是系统的完整功能描述,允许在开始详细设计之前验证规范。或者,这可以是抽象系统的某些属性的部分描述,例如用于检测系统性能瓶颈的性能模型。
Verilog 不太适合系统级建模。这是 SystemVerilog 的动机之一,它增强了该领域的 Verilog。
RTL 设计和测试平台创建
一旦整体系统架构和分区稳定,就可以开始每个 ASIC 或 FPGA 的详细设计。首先在寄存器传输级别捕获 Verilog 中的设计,并在 Verilog 中捕获一组测试用例。这两项任务是互补的,有时由不同的设计团队单独执行,以确保正确解释规范。如果要使用自动逻辑综合,RTL Verilog 应该是可综合的。测试用例生成是一项重要任务,需要严格的方法和大量的工程独创性:最终 ASIC 或 FPGA 的质量取决于这些测试用例的覆盖范围。
对于当今大型、复杂的设计,验证可能是一个真正的瓶颈。这为 SystemVerilog 提供了另一个动机 – 它具有加快测试平台开发的功能。
RTL验证
然后模拟 RTL Verilog 以根据规范验证功能。 RTL 仿真通常比门级仿真快一两个数量级,经验表明,最好通过进行更多仿真来利用这种加速,而不是花更少的时间进行仿真。
在实践中,通常会花费 70-80% 的设计周期在寄存器传输级别及以上级别编写和模拟 Verilog,并花费 20-30% 的时间来综合和验证门。
前瞻综合
尽管一些探索性综合将在设计过程的早期进行,以提供准确的速度和面积数据来帮助评估架构决策并检查工程师对如何综合 Verilog 的理解,但主要综合生产运行被推迟直至功能仿真完成。在设计的功能得到验证之前,投入大量时间和精力进行综合是毫无意义的。
抽象层次
Verilog 描述可以跨越多个抽象级别,即详细级别,并且可以在设计过程的各个阶段用于不同的目的。
在最高级别,Verilog 包含随机函数(队列和随机概率分布)来支持性能建模。
Verilog 支持抽象行为建模,因此可用于在高抽象级别对系统功能进行建模。这在系统分析和分区阶段很有用。
Verilog 支持寄存器传输级描述,用于数字电路的详细设计。综合工具将 RTL 描述转换为门级。
Verilog 支持门和开关级描述,用于验证数字设计,包括门和开关级逻辑仿真、静态和动态时序分析、可测试性分析和故障分级。
Verilog还可以用来描述仿真环境:测试向量、预期结果、结果比较和分析。
通过一些工具,Verilog 可用于控制仿真,例如设置断点、采用检查点、从时间 0 重新启动、跟踪波形。然而,这些功能中的大多数并不包含在 1364 标准中,而是特定模拟器专有的。大多数模拟器都有自己的命令语言;许多工具都是基于 Tcl,这是一种行业标准工具语言。
Verilog 的适用范围
正如我们已经看到的,Verilog 可以用于不同的抽象级别。但是,在使用 Verilog 时,这些不同级别的抽象有多大用处呢?
设计过程
下图显示了结合 Verilog 的电子系统设计过程的非常简化的视图。该图的中心部分显示了设计过程中将受到 Verilog 影响的部分。
系统级
在硬件-软件分离之前,Verilog 不太适合抽象系统级仿真。 SystemVerilog 在某种程度上解决了这个问题。与 VHDL 支持用户定义类型和重载运算符(允许设计人员将其工作抽象到问题领域)不同,Verilog 限制设计人员使用预定义的系统功能和任务进行随机仿真,并且可以使用用于对性能、吞吐量和队列进行建模,但仅限于内置语言功能允许的范围内。设计人员偶尔会在设计过程的这一阶段使用随机抽象级别。
数字的
Verilog 适用于当今的数字硬件设计过程,从功能仿真、手动设计和逻辑综合到门级仿真。 Verilog 工具提供了该领域的集成设计环境。
Verilog 还适用于专门的实现级设计验证工具,例如故障仿真、开关级仿真和最坏情况时序仿真。通过导入 SDF 文件,Verilog 可用于模拟门级扇出负载效果和布线延迟。
RTL 抽象级别用于综合之前的功能仿真。抽象的门级别存在于综合后,但这种抽象级别通常不是由设计者创建的,它是 EDA 工具(例如综合和时序分析)采用的抽象级别。
仿真
由于 Verilog 作为编程语言的灵活性,它已被扩展到在有限的情况下处理模拟仿真。有一个标准草案 – Verilog-AMS – 解决模拟和混合信号仿真问题。
综合 Verilog
如何编写良好的可综合 Verilog 代码来为您提供所需的硬件?
综合是一个广泛的术语,通常用于描述非常不同的工具。综合可以包括 ASIC 供应商用来生成常规 RAM 和 ROM 类型结构的芯片编译器和函数生成器。本教程中的综合是指从 Verilog 描述生成随机逻辑结构。这最适合门阵列和 FPGA 等可编程设备。
综合不是万能的!使用 Verilog 处理高级设计以及现实的综合期望至关重要。
Verilog 仿真的定义是一成不变的,并被语言参考手册中。其他使用 Verilog 的工具(例如综合)将对 Verilog 语言做出自己的解释。 Verilog 综合有一个 IEEE 标准(IEEE Std. 1364.1-2002),但没有供应商严格遵守它。
Verilog 功能正确还不够;它必须以指导综合工具生成良好硬件的方式编写,此外,Verilog 必须与所使用的特定综合工具的特性相匹配。我们将在本 Verilog 教程中解决其中一些特性。
目前综合有3种:
- 行为综合
- 高级综合
- RTL综合
这三个综合之间存在一些重叠。我们将重点关注 RTL 综合,这是迄今为止最常见的。 RTL 代码的本质是 Verilog 中描述的操作与特定的时钟周期相关联。综合网表表现出相同的逐时钟周期行为,允许 RTL 测试平台轻松地重新用于门级仿真。
没有回复内容