POR是所有SoC设计的关键功能序列,其作用是将系统从任意状态恢复至正常状态。任何未被检测到的POR缺陷都可能导致实际芯片中的灾难性后果。复杂数量的重置逻辑给验证工程师带来了更大挑战——他们需要在RTL仿真过程中捕捉这些设计缺陷。随着SoC规模和复杂度的持续增长,其上电复位逻辑的复杂程度也在不断攀升。当前,电源管理逻辑的引入进一步加剧了这一问题。导致复位逻辑复杂度增加的因素可归纳如下:

  1. 全局复位通常有多种触发源,例如上电复位、硬件复位、软件复位和看门狗定时器复位。
  2. 系统级芯片(SoC)集成的IP模块数量持续增加。
  3. 不同IP模块的复位策略可能存在差异(包括同步复位、异步复位、扫描复位、部分复位、完全复位或不可复位的触发器)。
  4. 系统级芯片的复位控制器逻辑需满足所有数字模块、模拟模块及不同锁相环(PLL)的复位需求。
  5. 支持由SoC焊盘参数配置的多种工作模式会进一步增加复杂度。
  6. 复杂的电源模式及其对应的应用场景转换也会带来设计复杂性。
  7. 当引入保持寄存器时,复位方案的复杂程度可能更上一层楼。

SoC复位逻辑的复杂性给有限资源和有限SoC执行时间下的验证带来了各种新挑战。主要验证挑战如下:

  1. 系统级芯片(SoC)复位序列会为不同模块生成特定的复位指令。必须严格遵循该序列以确保所有模块都能恢复正常工作状态。因此需要通过验证来覆盖并检查不同模块的各种工作模式组合。
  2. 在POR采样逻辑中使用的不可复位触发器,可能因RTL和GLS仿真过程中未初始化的触发器导致X传播现象。为验证此类触发器,需在复位时刻用预设/随机值对它们进行强制置位/沉积操作,以确保仿真顺利进行。
  3. 基于焊盘参数支持的各种SoC功能配置需要进行全面验证。必须在SoC层面运行涵盖所有可能工作模式的功能场景,确保所有配置都能按预期运行。
  4. 设计中的所有可复位触发器都应连接到顶层复位信号,即当全局复位信号被激活时,所有可复位触发器都应被复位。实际上,若存在复位连接缺失或不同电源域间传播阻断的情况,很容易被忽略。

目前,针对复位验证的大多数研究工作都集中在连接性检查上。然而,在低功耗设计中,电源丢失(POR)故障的根本原因可能多种多样:有些是“静态”故障,可以通过检查设计结构来发现;而有些则是“动态”故障,只有在功耗感知仿真过程中才能被捕捉。为此,我们提出了一种自动提取POR断言的解决方案,用于识别功耗感知仿真中的所有非复位寄存器。通过该方案,我们可以在早期RTL仿真阶段利用提取的POR断言筛选出大量真实的POR故障案例。

与先前重置验证方法的比较

在联发科的前期研究[3]中,我们曾阐述如何运用形式化技术验证全局复位方案。全局复位故障可能由多种原因导致:例如复位连接缺失或错误、存储元件复位源与复位引脚之间的逻辑设计缺陷等。相较于为所有可能场景编写基于仿真的测试来验证全局复位能否有效传递至目标存储元件并完成复位功能,更高效的做法是在目标存储元件的复位引脚上添加SVA(存储验证地址),通过形式化引擎证明当满足设计复位条件时,这些复位引脚将被正确激活。下文将展示一个示例SVA的具体实现。

global_reset_check: assert property

(@(global_clock) `GLOBAL_RESET |-> ##`DELAY _rst);

`GLOBAL_RESET由全局复位条件定义,该条件由任意合法的SVA表达式构成,用于形成此全局复位验证SVA的前件部分。`delay由全局复位条件满足与复位信号有效之间实际周期延迟决定。为消除不必要的误触发,可采用最大延迟值。_rst是直接连接目标存储元件复位引脚的信号。本方法旨在验证全局复位与目标存储元件复位引脚之间的连接逻辑。`GLOBAL_RESET部分同样遵循这一设计理念。除构成全局复位条件所需的逻辑外,应尽可能保留其他逻辑以供形式化引擎验证。

但使用全局复位断言的正式技术仍存在一些缺点,因此我们开发了具有POR断言的功耗感知仿真来克服这些缺点。这两种方法的对比总结在表I中。

Feature/Method

Global Reset Assertions + Formal Techniques

Power-on Reset Assertions + Power-aware Simulation

Checking mechanism

Static, structural

With dynamic power control sequences

Power aware

No

Yes, with UPF

Clocking event

Must

Not necessary, use user specified time interval

Coverage

Exhaustive

Pattern dependant

Tool capacity

Limited by design complexity, abstraction techniques are needed for whole chip

Able to run whole chip simulation ( limited by machine memory)

Software included

No

Yes

形式化验证技术的优势在于能够全面探索SoC复位方案的所有可能条件,而基于仿真的技术则受限于预设的测试模式。然而,现有的复位验证形式化技术主要侧重静态和结构检查,难以描述动态功耗控制序列,也无法将软件或固件纳入验证范围。此外,当前大多数形式化工具不具备“功耗感知”功能,即未考虑功耗感知功能(UPF)。另一个局限是形式化验证需要时钟事件作为基础,但异步复位通常不依赖时钟信号。在形式化技术诸多缺陷中,设计复杂度限制是最突出的问题。这种复杂性要求工程师采用多种简化技术来适配设计需求,这给实际应用带来了障碍。因此,为克服形式化技术的这些缺陷,我们提出的解决方案是在基于UPF的功耗仿真中实现自动POR断言。

工具流程和结果

图1展示了我们提出的解决方案流程图。该流程需要的输入包括可选的软件/固件、测试平台、RTL代码和UPF代码。测试平台与软件/固件配合使用,用于通过不同源和条件对POR进行刺激测试;RTL代码用于提取POR断言;UPF代码则用于开启功耗感知仿真,并提供电源开启触发事件以供POR断言验证。流程的第一步是解析并编译输入源代码。在此阶段,系统会自动识别图2中的预定义编码风格,从而提取并限定寄存器的异步置位、复位或同时进行这两种操作。需要说明的是,本研究仅考虑异步置位/复位寄存器,因为我们的大多数设计都采用此类寄存器实现。流程的第二步是基于提取的POR断言进行功耗感知仿真。在此步骤中,软件/固件与测试平台将通过不同的低功耗和复位场景对设计进行刺激测试,因此仿真器会生成电源开启触发事件以供POR断言验证。最后,当仿真完成后,断言失败情况将显示在仿真日志中供审查。

图1:基于功耗感知仿真技术的上电复位断言验证流程

在VCS NLP[5]1209SP1-7版本及后续版本中实现了该解决方案,用于捕捉功耗感知仿真中的POR问题。通过解析并识别图2中的编码风格,系统自动生成POR断言并绑定寄存器,以检查在重新供电时能否正确复位这些寄存器。目前这些断言仅适用于Verilog模块中具有异步复位功能的触发器,而不适用于设计VHDL部分或当前使用的同步触发器。简而言之,这些断言是在Verilog模块中实现的,每个符合标准的触发器都会实例化对应的Verilog模块,并将功耗域状态、时钟和复位信号值、复位感知(复位极性)等信息作为端口连接参数。断言消息中呈现的时钟和复位信号名称被封装为字符串常量,通过初始块填充。UPF功耗域名称和触发器的层级路径则通过模拟器DPI调用进行标记。

图2:在重置断言时绑定电源的编码样式

经过与设计验证团队的讨论,我们确定了如图3所示的三种复位场景。这三种复位场景能够覆盖设计中所有可能的复位行为。图3中Tmax和Twidth的定义如下:1) Tmax:复位信号应在上电后Tmax时间内被激活;2) Twidth:复位信号在上电后至少需持续Twidth时间单位。其中时间单位由Verilog代码或仿真器选项指定的时间尺度定义。对于图3中的案例1,由于复位信号在整个断电期间保持有效,因此仅需检查Twidth时间单位;对于案例2和3,由于复位信号在上电后被激活,需同时检查Tmax和Twidth时间单位。需要特别说明的是,这种检查基于用户指定的仿真时间间隔而非时钟周期,因为在上电后复位信号被激活时,可能不会触发时钟事件。

图3:通过上电复位断言检查的3种复位场景。

要启用POR断言,用户需要在VCS中添加编译时选项(如图4所示),并通过set_design_attributes在UPF中设置Tmax(SNPS_active_reset_duration)和Twidth(SNPS_inactive_reset_duration)参数(如图5所示)。这两个延迟值将作为全局参数传递给整个设计触发器的所有断言。当功率感知仿真过程中违反Tmax或Twidth时,系统会显示如图6和图7所示的警告信息。SNPS_active_reset_duration和SNPS_inactive_reset_duration的数值以绝对值形式出现在断言信息中,应理解为该次仿真运行中VCS的已解决时间单位。LP_RESET_ASSERT_FAIL断言被推迟到仿真队列的响应区,以避免在复位操作与上电时间+SNPS_inactive_reset_duration延迟值重合时触发。

通过本方案,我们在SoC设计中发现了先前形式化解决方案已验证的真实漏洞,这证明了该方案能够克服形式化技术的局限性。

图4:用于打开上电复位断言的编译时选项

图5:设置活动和非活动复位持续时间的UPF命令

图6:违反Tmax时的警告消息

图7:违反Twidth时的警告消息

工具的实施挑战

由于大多数复位技术都采用图3所示的“复位案例1”模式,因此在低功耗验证中,上电时的复位断言成为一大挑战。若采用同步复位方案,则可假设其仅在上电时停止时钟门控并触发复位后才生效。但与同步复位方案相比,“复位案例1”定义的异步复位方案问题更为复杂。假设复位在关机周期前被触发,相关逻辑将同时被复位。此时由于电源域进入关机状态,所有逻辑都会被仿真器置为未知状态。当系统唤醒时(假设复位由开启域驱动且不存在复位负边沿),再次复位逻辑就变得困难重重。类似地,若复位在关机期间被触发,由于设计被置为未知状态且无法复位,仿真器会丢失复位的负边沿信号。因此,工具必须对每个时序模块进行复位推断。完成复位检测后,需检查其唤醒状态下的电平,并通过感应边沿重置对应逻辑。

为满足复位断言需求,工具需要识别设计中每个时序模块的本地时钟和复位信号,并在上电时触发Tmax和Twidth的必要验证。若复位在上电时已处于激活状态,则仅需启动Twidth检查。若复位在上电时处于未激活状态,则应先启动Tmax检查,待复位激活后再进行Twidth检查。因此,为确保正确实现POR断言机制,我们特别设计了在关机时重新初始化断言序列的方案,从而在整个仿真过程中,每次域上电时都能验证这些断言的有效性。

官方描述见vc nlp user guide: Power-on Reset Assertions Support章节

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/89975.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/89975.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/89975.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年最新 AI 技术:全景洞察与深度解析​

2025 年最新 AI 技术:全景洞察与深度解析​在科技飞速发展的当下,AI 技术无疑是最耀眼的那颗星,持续为我们的生活与工作带来前所未有的变革。步入 2025 年,AI 技术更是呈现出多点突破、全面开花的态势,下面就为大家深入…

Vue项目中的AJAX请求与跨域问题解析

一、AJAX请求方式对比与选型1. 原生XHR方式基本使用示例:缺点分析:代码冗长复杂回调地狱问题需要手动处理JSON转换错误处理不够直观2. jQuery的AJAX基本使用示例:$.ajax({url: http://localhost:5000/api/data,type: GET,success: function(d…

使用 Longformer-base-4096 进行工单问题分类

简述最近接了对Ticket 进行问题分类的任务,使用了prompt和机器学习两种方式来解决,这里重点介绍Longformer-base-4096 模型训练的方案使用 Longformer-base-4096 模型实现文本分类系统,利用 Longformer 处理长序列的能力进行准确分类。该解决…

Matplotlib和Plotly知识点(Dash+Plotly分页展示)

Matplotlib和Plotly知识点(DashPlotly分页展示)0、Matplotlib、Plotly和Dash区别 (推荐用DashPlotly)1.1、Matplotlib (静态图)1. Figures(图形)概念创建Figure保存和显示Figure2. S…

YOLO12论文阅读:Attention-Centric Real-Time Object Detectors

文章链接: 2502.12524https://arxiv.org/pdf/2502.12524 摘要 (Abstract)​​ 长期以来,增强 YOLO 框架的网络架构至关重要,但尽管注意力机制在建模能力方面已被证明具有优越性,改进却主要集中在基于 CNN 的方面。这是因为基于…

秋招Day17 - Spring - 事务

Spring事务的种类编程式事务和声明式事务介绍一下编程式事务管理?通过编程的方式显式控制事务的开始、提交和回滚,一般使用TransactionTemplate的execute方法介绍一下声明式事务管理?基于AOP,通过调用代理对象拦截目标方法&#x…

多维基分析求导法则

对于n维点R0(I1,I2,I3,......In)如果到R(I1, I2 , I3 ,......,In )有基分析求导定理:即R0 R0 *(x1 ,x2 ,x3 ,.............xn) R当I1,I2,....,In独立不能转化时有了独立变量的求导和积分不相干法则…

Java值传递和构造函数

一.Java值传递首先我们来看一串代码:输出 10 20,而不是20 10 这是为什么呢?有内存图可以知道,这个change方法所改变的东西最终没有写回到main之中,且他传的是具体的数据,所以还会输出原数据,就相…

电商项目_秒杀_架构及核心

秒杀架构设计先看下普通web项目架构: (Nginx : 反向代理、负载均衡,一般是运维部分做生产搭建的时候配置好)秒杀架构设计:和普通架构区别:原先由Web 服务或Nginx服务提供的静态资源放到了CDNNginx的职责放⼤…

4x4矩阵教程

4x4矩阵教程 1. 简介 四维矩阵是计算机图形学和3D变换中的重要工具&#xff0c;用于表示三维空间中的仿射变换。本教程将介绍如何使用C实现四维矩阵的基本运算和变换。 2. 代码实现 2.1 头文件 (matrix4x4.h) #ifndef MATRIX4X4_H #define MATRIX4X4_H#include <array> #…

Oracle 数据库共享池与大池调优指南

在 Oracle 数据库的内存管理中&#xff0c;共享池&#xff08;Shared Pool&#xff09;和大池&#xff08;Large Pool&#xff09;是 SGA&#xff08;系统全局区&#xff09;中负责缓存与资源分配的核心组件。合理配置和调优这两个池&#xff0c;能显著提升数据库性能 —— 尤其…

C# Lambdab表达式 Var 类

Lambdab 是用于创建一个方法的表达式Func<参数1类型, 参数2类型, 返回值类型> fnName >(参数1 参数2) {方法代码体}Func<int, int, bool> fnName (int a, int b) > {return a > b; };//调用时和普通方法一致 Console.WriteLine(fnName(10,20)); // false…

【Python】常见模块及其用法

文章目录1. 什么是模块和包&#xff1f;2. 常见的模块及其用法2.1 time概览2.1.1 时间获取方法2.1.2 时间格式化与解析2.1.3 程序计时与延迟2.1.4 时间转换2.2 random概览2.2.1 基本随机数2.2.2 随机整数2.2.3 序列操作2.2.4 概率分布2.2.5 随机种子2.2.6 状态管理2.3 os概览2.…

洛谷 P3478 [POI 2008] STA-Station

【题目链接】 洛谷 P3478 [POI 2008] STA-Station 【题目考点】 1. 树形动规&#xff1a;换根动规 换根动规&#xff0c;又名二次扫描法&#xff0c;一般是给一颗不定根树&#xff0c;通过两次扫描来求解。 我们可以先任选一个根结点root&#xff0c;通过树形动规的思想计算…

【爬虫】03 - 爬虫的基本数据存储

爬虫03 - 爬虫的数据存储 文章目录爬虫03 - 爬虫的数据存储一&#xff1a;CSV数据存储1&#xff1a;基本介绍2&#xff1a;基本使用3&#xff1a;高级使用4&#xff1a;使用示例二&#xff1a;JSON数据存储1&#xff1a;基础json读写2&#xff1a;字符串和对象的转换3&#xff…

深入分析计算机网络数据链路层和网络层面试题

计算机网络体系结构1. 请简述 OSI 七层模型和 TCP/IP 四层模型&#xff0c;并比较它们的异同。OSI 七层模型&#xff1a;应用层&#xff1a;直接为用户的应用进程提供服务&#xff0c;如 HTTP&#xff08;超文本传输协议&#xff0c;用于 Web 浏览器与服务器通信&#xff09;、…

云服务器新装的mysql8,无法通过远程连接,然后本地pymysql也连不上

阿里云服务器&#xff0c;用apt-get新装的mysql-server&#xff0c;竟然无法通过远程连接到&#xff0c;竟然是这个原因。不是防火墙&#xff0c;iptables早就关了。也不是安全组&#xff0c;不是人为限制访问的话&#xff0c;根本没必要弄安全组 排查过程 netstat -antop|grep…

质量即服务:从测试策略到平台运营的全链路作战手册

&#xff08;零&#xff09;为什么需要“质量即服务” 当业务方说“今晚一定要上线”&#xff0c; 当开发说“我只改了两行代码”&#xff0c; 当运维说“回滚窗口只有 5 分钟”&#xff0c; 质量必须像水电一样随取随用&#xff0c;而不是上线前的大坝泄洪。 这篇手册提供一张…

Java -- 自定义异常--Wrapper类--String类

自定义异常&#xff1a;概念&#xff1a;当程序中出现了某些错误&#xff0c;但该错误信息并没有在Throwable子类中描述处理&#xff0c;这个时候可以自己设计异常&#xff0c;用于描述该错误信息。步骤&#xff1a;1. 定义类&#xff1a;自定义异常类名&#xff08;程序员自己…

一文速通《线性方程组》

目录 一、解题必记知识点 二、解题必备技巧 三、非齐次线性方程组求解 四、齐次线性方程组求解 ★五、解析题目信息&#xff0c;获取暗含条件 一、解题必记知识点 (1) (2)基础解系线性无关&#xff0c;基础解系 解空间的一个基&#xff0c;基 一组线性无关的、能够生…