PSS是Accellera组织定义的测试用例生成规范,其思想是定义一个抽象模型,EDA工具可以从中生成适用于每个设计层次结构和每个验证平台的测试,即PSS定义了统一的测试场景,而场景的使用可以横跨不同验证层次和配置。 这种特性决定了PSS本身是不可执行的,用户需要EDA工具分析抽象模型从而生成实现。
一、概述
1.1 技术特征
垂直复用性:不同验证层次,包括模块级、子系统级、以及系统级验证(软件仿真/EMU/FPGA/硅后测试) 水平复用性:不同验证项目跨平台使用 不同验证环境,例如cache子系统验证、pcie子系统验证等
1.2 技术生态
PSS解析器
Synopsys: VCPS Mentor: inFact 从IP到SoC级的便携式激励自动化测试 Cadence: Perspec Breker: Trek系列 Breker最先提出portable stimulus的概念 Blended modeling for PSS 开源的PSS解析器。 论文:Blended Modeling Applied to the Portable Test and Stimulus Standard github链接:https://github.com/blended-modeling/PSS.git 视频案例讲解:https://play.mdh.se/media/t/0_4t63df9w
二、具体实现
2.1 架构层次
输入
测试用例的描述文件,分为两种格式,分别是DSL格式(Domain Specific Language,领域特定语言)和C++语言格式。
输出
输出就是不同验证层次下的测试用例。
2.2 设计流程
验证计划制定 根据功能点搭建PSS模型,模型中主要包括对测试场景或行为进行描述的action、不同action之间的组合调度、约束信息以及覆盖率组信息
模型的action描述: 外部接口实现PSS到SV或C的转换:
随后将PSS模型基于PSS解析器生成用于特定平台的测试用例。 此外也可以通过PSS模型中的覆盖率组收集基于图形的覆盖率,对该类覆盖率的分析可以发现现有测试约束以及配置中可能存在的缺陷或漏洞,从而得知当前生成的case是否满足验证计划中要求的全部测试场景。 case生成完成后进入动态仿真阶段。
注意,PSS模型构建的工作主要分为两部分,其一是利用PSS做测试场景建模,其二是采用PSS测试场景并为之提供映射测试单元动作的接口语言实现。由于PSS调用了验证人员提供的接口库,确保了在特定场景下的随机性,因此通常先利用PSS实现测试场景描述,再利用PSS测试场景来生成更为详尽且针对DUT随机性更强、覆盖更全的测试代码。
2.3 举例说明
以PCIe控制器的模块级、子系统、系统级验证举例说明。
PSS模型构建——跨层次验证测试用例生成
模块级验证关注单一功能的测试场景,例如PCIe控制的AXI总线接口组件的读写功能、ATU地址转换、TL层模块的cfg/mem报文等; 子系统验证关注多个模块间的协调组合场景,例如AXI slave接口事务到ATU地址转换单元再到不同的TLP事务之间的组合; 而在系统级验证,除了多个模块单元间的协调组合,还会加入多个子系统之间的调度与协调,例如PCIe控制器接入到SoC后,与中断控制器中断路由、与DDR的数据读写交互等。 因此从验证流程来讲,验证层次越高,验证场景越复杂,但大多会涵盖底层级验证中的测试场景。
三、PSS标准
action的特征