Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
IEC 62530:2011 等同于 IEEE Std 1800-2009,定义了 SystemVerilog——统一的硬件设计、规范和验证语言。SystemVerilog 从三个领域扩展了 Verilog HDL:设计领域、验证领域和系统级建模领域。这些扩展共同使 SystemVerilog 成为全球领先半导体公司 ASIC 和 FPGA 开发的主导语言。
SystemVerilog 接口封装了设计块之间的通信——将连线、协议和方向信息捆绑到可重用的容器中。接口中的 modport 从特定块的角度定义了信号的方向。这种抽象消除了在每个层次级别手动连接单个端口的繁琐且易错的任务。对于 AXI、AMBA 或 PCIe 等复杂协议,与传统 Verilog 端口列表相比,接口将连接代码减少了 70–80%。标准还定义了指定信号相对于时钟的时序和同步的 clocking blocks。
SystemVerilog 断言使设计师能够将功能正确性检查直接嵌入 RTL 代码中。SVA 支持两种类型的断言:立即断言和并发断言。序列和属性语言允许以简洁的声明式语法表达复杂的时序行为。SVA 也是形式验证的基础,在仿真中使用的相同断言在数学上针对 RTL 实现进行证明。
| 特性 | 描述 | 主要用途 |
|---|---|---|
| 约束随机生成 | rand/randc 类成员,solve-before 约束 | 自动激励生成 |
| 功能覆盖 | covergroup, coverpoint, cross coverage, bins | 验证完整性度量 |
| 面向对象编程 | class, 继承, 多态, 虚方法 | 可重用验证组件 |
| 动态进程 | fork-join, 进程控制, mailbox | 并发场景执行 |
| DPI | C/C++ 函数调用 | 协同仿真、参考模型 |
| 断言(SVA) | sequence, property, assert/assume/cover | 功能检查器、形式验证 |
| 时钟块 | 同步和时序规范 | 无竞争测试平台设计 |
SystemVerilog 的约束随机生成是现代验证的引擎。验证工程师声明随机变量并指定定义合法值范围的约束,求解器生成满足所有约束的随机激励,自动探索输入空间。结合功能覆盖,CRV 实现了”覆盖驱动”方法:仿真器跟踪已覆盖的场景,并将求解器指向未覆盖区域,在相同的仿真预算下实现比定向测试指数级更好的状态空间覆盖。
SystemVerilog 的 OOP 能力使 UVM 的开发成为可能。UVM 提供了标准化测试平台架构和可重用组件。虽然 UVM 不是 IEEE 1800 标准本身的一部分,但 IEEE 1800 提供了使 UVM 成为可能的语言特性。
SystemVerilog 用于现代数字设计流程的每个阶段:RTL 编码、综合、仿真、形式验证和仿真加速。标准为大多数设计结构定义了综合语义——但并非所有验证结构都是可综合的。工程师必须在其代码库中清晰地区分可综合设计子集和仅用于验证的子集,通常通过文件命名约定来实现。
SystemVerilog 仿真性能对于大型设计来说是一个持续的挑战。该语言丰富的特性集——特别是约束求解、功能覆盖采样和 SVA 评估——带来了显著的运行时间开销。对于带有 UVM 测试平台的 1 亿门 SoC,典型仿真速度为每 5–50 周期每秒。现代商业仿真器还通过将断言编译为合成检查器并使用自动覆盖采样来减少运行时影响。
IEEE 1800 在 2012 年进行了修订,增加了重要特性:用于可重用断言表达式的 let 声明、约束中的 implication 运算符以及用于形式验证环境的 assume 结构。工程师应以 2012 年修订版作为新设计的最低基线,以获得显著提高代码可读性的 let 和约束蕴涵特性。
always_ff 对所有赋值使用非阻塞赋值时才保证正确的仿真语义。静态 lint 工具应将此标记为严重违规。Verilog 主要是用于 RTL 设计的硬件描述语言。SystemVerilog 是超集,增加了接口、断言、约束随机生成、功能覆盖、OOP 和 DPI。新设计应始终使用 SystemVerilog。
不是。UVM 是定义基于 SystemVerilog 构建的类库和方法的 IEEE 标准。IEC 62530:2011 / IEEE 1800-2009 提供了语言基础;IEEE 1800.2 提供了验证方法。
SystemVerilog 是一种数字语言。对于模拟和混合信号设计,请使用 Verilog-AMS 或 VHDL-AMS。然而,SystemVerilog 常用于混合信号验证环境,其中模拟块建模为实数行为模型并与纯数字 RTL 在统一仿真环境中一起验证。
该语言不直接提供 CDC 验证原语。CDC 验证通常通过结构 CDC 分析工具、基于断言的 CDC 检查器和形式 CDC 验证工具来执行。IEEE 1800 标准的 randsequence 和 randcase 结构有时在测试平台中用于随机化时钟相位关系以进行 CDC 测试。