在本文中,让我向您先容用于验证IP、子系统和SoC的各种验证方法,并阐明为什么我们须要像PSS这样的新方法/标准。
对付处理 SoC 验证流程的验证工程师来说,理解如何利用 SoC 构建电子系统至关主要,无论是在 IP 级别进行白盒验证、在子系统级别进行灰盒验证,还是在 SoC 级别进行黑盒验证。
如何利用 SoC 构建电子系统?

任何芯片、大略的嵌入衰落掌握器或繁芜的片上系统 [SoC] 都将具有一个或多个处理器。图1显示了一个繁芜的电子系统,该系统由智好手机等电子设备所需的硬件和软件组成。
图1:电子系统和片上系统
硬件由繁芜的SoC组成,该SoC包含设备所需的险些所有组件。就智好手机而言,我们集成了所有称为IP[知识产权]的硬件组件,如CPU、GPU、DSP、运用场置器、接口IP 如USB,UART,SPI,I2C,GPIO,以及系统掌握器、内存与掌握器、蓝牙和WiFi等,并由此创建出SoC。
该件由运用软件和系统软件组成。运用软件供应用户界面,系统软件供应接口,使运用软件处理硬件。在智好手机的情形下,运用软件可以是YouTube,Netflix,GoogleMap等移动运用程序,系统软件可以是操作系统[OS],如ios或Android。系统软件供应固件和协议栈等所有内容,以及运用软件与硬件接口所需的操作系统。操作系统并行管理多个运用程序线程、内存分配和 I/O 操作,作为系统软件的核心组件。
接下来阐明一下全体系统是如何事情的,就像智好手机一样。例如,当你调用智好手机上的打算器等运用时,操作系统会将可实行二进制文件从存储内存加载到RAM中。然后,它立即将其起始地址加载到其处理器的程序计数器[PC]中。处理器 [ARM/x86/RISC-V] 实行加载到 PC [RAM 地址] 所指向的 RAM/缓存中的二进制文件。这个预编译的二进制文件只不过是处理器的机器措辞,因此处理器根据其指令[ADD/SUB/MULT/LOAD]实行运用程序并打算结果。
利用处理器理解SoC设计过程可以帮助验证工程师在系统级处理任何繁芜的子系统/芯片验证。作为SoC验证过程的一部分,验证工程师可能须要处理各种事情,例如系统建模的虚拟原型设计,IP,子系统和SoC功能验证,硬件 - 软件协同验证,仿真,ASIC原型设计,硅后验证等。因此,它须要对硬件和软件有凝聚力和完全的理解,才能作为验证专家独立事情,有时还须要与软件团队密切互助,以处理软件,RTOS /固件/堆栈,以进行芯片/系统级验证。
现在让我们磋商各种验证方法。
IP验证
IP 是任何 SoC 的基本构建块。因此,IP验证须要详尽的白盒验证,这须要形式验证和随机仿照等方法,特殊是对付处理器IP,由于统统都是由它们作为任何SoC的核心组件启动和驱动的。图 2 显示了我们如何通过基于 SystemVerilog 的 UVM TB 的详尽随机仿照来验证处理器 IP。所有处理器指令都可以利用各种随机值进行仿照,从而生成功能、断言和代码覆盖率。我们利用覆盖范围来衡量验证的进度和质量,然后进行终极的验证签核。IP 级验证哀求在 HVL 编程、正式和动态 ABV、仿真调试以及利用 VIP 和 EDA 工具方面具备良好的专业知识。
图2 RISC-V 紫外光验证环境
ABV- 基于断言的验证,VIP – 验证 IP
UVM-通用验证方法 UVC-UVM 验证组件
BFM总线功能模型VIP验证IP RAL寄存器抽象层
子系统验证
子系统紧张由预验证的IP和一些新建的IP组成,例如特定于芯片的网桥和系统掌握器。图 3 显示了我们如何从子系统构建 SoC,该子系统利用 AMBA 等片上总线集成了所有必要的接口 IP、网桥和系统掌握器。在这种情形下,我们更喜好基于仿照的灰盒验证,特殊是利用验证IP的随机仿照。所有VIP,如AXI,AHB,APB,GPIO,UART,SPI和I2C UVC [UVM验证组件]都将配置并与各自的接口连接。如图 3 所示,我们创建了其他 TB 组件,如参考模型、记分板和 UVM RAL,以使验证环境自检。我们在顶层实行各种VIP UVM序列,验证数据流,并丈量总线的性能。
图3 子系统UVM验证环境
SoC芯片验证
SoC紧张由预先验证的第三方IP和一些内部IP组成。常日,我们更喜好利用硬件仿真或仿照(simulation/emulation)技能进行黑盒验证,以进行SoC级验证。例如,您可能会碰着繁芜的 SoC 验证环境,如图 4 所示。SoC测试平台[TB]将具有各种测试平台组件,如标准UVM验证IP[USB /蓝牙/WiFi和标准接口],带有UVM包装器的传统HDL TB组件[JTAG Agent],自定义UVM代理[固件代理],以及一些显示器,以及记分牌和SystemC / C / C++功能模型。在这种情形下,您将不得不在芯片级别处理固件和UVM序列。作为验证工程师,您须要知道如何利用标准 VIP、传统 HDL BVM 和固件代码实现这种稠浊验证环境,更主要的是,理解如何利用 EDA 工具自动实行simulation/emulation。
图 4:SoC 验证环境
UVM-通用验证方法 UVC-UVM 验证组件
BFM总线功能模型VIP验证IP RAL寄存器抽象层
让我阐明一下它是如何事情的。例如,如果SoC利用ARM处理器,常日我们将ARM RTL [加密网表/RTL]更换为其称为DSM [设计仿真模型]的功能模型,该模型可以利用固件[用C编写]作为勉励来启动任何操作并驱动所有其他外设[RTL IP]。因此,SoC 验证职员编写 UVM 序列,通过固件测试用例天生各种定向场景,并验证 SoC 功能。在仿真过程中,固件C源代码被编译为目标代码[ARM机器措辞二进制文件],该目标代码将加载到片上RAM中。ARM 处理器模型 [DSM] 从内存中读取目标代码,并通过配置和驱动所有 RTL 外设模块 [Verilog/VHDL] 来启动操作。它适用于仿照和仿真(simulation/emulation)。如果 SoC 非常繁芜,则首选硬件仿真以加速验证过程并实现更快的验证sign-off。
为什么选择 PSS?
图 5:IP、子系统和 SoC 验证方法
PSS 定义:可移植测试和勉励标准定义了一个规范,用于创建勉励和测试场景的单一表示形式,可供不同配置下不同集成级别的各种用户利用,从而能够天生在各种实行平台上运行的场景的不同实现,包括但不限于, 仿真、仿真、FPGA 原型设计和后硅。利用此标准,用户可以一次指定一组行为,从中可以派生多个实现。
图6:PSS流程
如图6所示,利用PSS,我们可以定义测试场景,并利用任何验证技能在任何级别的IP/子系统/SoC上实行它们。例如,我们可以在 PSS 中定义 IP 的测试场景。在IP级验证中,我们可以利用EDA从其PSS规范中天生断言以进行形式验证,如果须要,我们可以从相同的PSS规范天生UVM测试用例,用于SoC级别的仿照或仿真。我们不须要手动重写 IP/子系统级测试用例,即可在 SoC 级别迁移和重用它们。PSS规范对付各种技能都保持不变。根据我们的选择,如正式/仿照/仿真,EDA工具可以从任何措辞或方法(如C / C++ / Verilog / SystemVerilog / UVM)的PSS形态天生测试用例。
形式验证和PSS等方法正在不断发展,同时EDA供应商也在利用ML等技能自动天生测试和验证sign-off。因此,在不久的将来,该行业须要才华横溢且技能娴熟的验证工程师,他们可以与芯片架构师互助,通过“按布局校正”方法推动首次硅成功的验证过程,而不仅仅是处理黑盒验证的传统验证职员,该验证职员紧张涉及编写测试用例和管理回归测试。您是否对芯片验证感兴趣,并为这项主要事情做好了准备?
原文
https://semiwiki.com/semiconductor-services/maven-silicon/316734-soc-verification-flow-and-methodologies/