IP系列之scan讨论

news/2024/11/14 12:14:04/

一般scan的集成,主要就是时钟和复位:

一、时钟处理:

首先要梳理Phy里面的时钟结构,输入时钟?输出时钟?分别对应来自哪里?功能是什么?是否同步或者异步?最好罗列出表格和画出时钟结构图。内部是否有pll,pll的参考时钟频率?来自哪里?其前面是否有分支?pll后是否有自己的occ结构?Pll的输出时钟是多少?端口是否有可替代的dft_clk?参考func_sdc的描述

还要考虑ip_chain的shifi_timing是否和全局full_chip的scan_clk一致???决定了是否和对应的模块一起出向量?或者一起筛片?

ip内部的icg的TE端一般接scan_en的,但是可以在scan_insert的时候由scan_icg_ip接管处理(由两套方案处理:第一套保证了ck通路以及icg的te端的覆盖率;第二套方案更复杂,在第一套的基础上考虑了IR的功耗问题,有五种mode模式控制)

根据项目经验,pcie、usb中的ip_phy:

一般内部有pll结构,参考频率基本为低频100M左右,必须保持free running,alway with plus ,都是来顶层的pad,dft不做处理。如果模块规模很大的话,输入时钟一般很多,成千上百,不可能一个个插occ曲处理,必须分析找到近源同相位的分为一个组,在其对应的plL后插入occ,共享,切掉原有的路径,使得dft_mode下时钟稳定可控。也方便后端pr,减小面积。

注意:上述合并处理的时候会引入scan_ac下的clk通路,必须在工具中吃进sdc描述告诉后端在STA时进行约束:

creat_gen_clk -name [get_pins ] -source -master_clock -divide_by -add 

set_clk_group -asynch -name -group {}

二、复位处理:

直接mux切换dft_rst_ip 处理;dc时shift下复位无效,dc_capture下翻转测试sa_fault,提高覆盖率;ac下来自tdr的静态信号,让其保持无效。

注意:

对于occ_chain有些注意事项那:分两张情况:第一种进edt机构:不能过多,否则会导致edt解压缩能力不足,影响pattern和coverage;解决办法:1、尽量不让occ_chain_reg上core_chain去balance,单独设置多条专用的occ_chain; 2、直接减小occ_chian的长度,一般默认为2,最多设置为4;第二种不进edt结构:单独出chain_fanmily,直接上拉到顶层的复用pad。

phy中pll的输出时钟一般直接切掉,用前面的同源时钟来驱动后面的scan_cell;

ddr、hbm中的一般也有pll,其pll的输入参考时钟频率较高600M左右,来自顶层的pll的,必须保证free runing的,但是也可能有分支,需要插入occ,这样bypass这一路后端是否接受?同时也决定是否带phy一起出向量?plL的输出时钟一般也是高频时钟,端口上不一定有对应的高频切管,所以自己内部后可能有自己的occ结构实现快慢时钟切换,ac测试,所以也需要压入edt结构集成。occ的slow_clk来自shift_capture_clk,pll启振,需要lock拉高稳频,在dft_mode 下需要对pll的输入控制信号接管,采用tdr控制配置。

Phy内部的chain的集成(直接将vender的ctl文件利用tessen转成可以是被识别的tcd文件,直接吃进去集成,注意转换前后的ip_chian上时钟沿变化)需要考虑:参考scan部分讨论:都需要考虑的ip_chain的长度,决定最大的shift_time;ip_chain的链首链尾的时序?一般都是正沿进,负沿出,链尾有latch,所以需要在phY的前面插入latch的,保证hold——timing,工具都可以自动实现;ip_chian的clk_icg的se一般都是接的scan_en;同时防止后期debug,需要对ip_chain bypass处理。若存在多个ip的,则可以采用or处理,内部tdr创建各自iP单独bypass的信号,实现可以选择单个ip的bypass。还要考虑在scan集成时,分时钟域或者powre_domain来处理。

其他:

phy上的其他scan信号处理:具体问题具体分析,核心保证dft_mode 下可控。

scan_mdoe /occ_mode/opcg_mode 等scan信号,采用tdr接管,一般都是每一个信号下挂一个sib来控制开关,尽量不要下挂到一个总的sib下,否则会导致setup 阶段太长,仿真时间太长。

一些非scan的测试使能信号,比如iddq_en brun_in  ddl_en等,必须钳位成0;插个mux,slect为dft_ip_test。

其他的一些小ip,例如pvt_sensor 、pll 等:

pll 内部的chain一般不上链,但是防止仿真出现x太,必须钳位成0;要对除ref_clk和电源pin外的输入数字信号接管控制;同时害的观察pll启振后的lock信号是否拉高,采用tdr观察;一般功能也会做pll输出频率观测逻辑在模块级,clk_div_obv_*逻辑有时钟分频信号cru_obv_sel和cru_obv_sel,分频系数一般都是确定的,sel需要自己选择一个频率最高的,驱动scan_cell最多的时钟来观测。在top层会有选择某个模块的信号来观测。

sensor的内部短链一般需要上链;数字Input信号全部接管(tdr或者pad);输出也接管观测(tdr或者pad)

一些模拟ip的chian不上链,也需要钳位处理chain的输入接口为0;

三、atpg:

一般出两次pat验证:带IP_atpg和bypass_ip_atpg;来验证ip的集成前后的正确性。

一般由dft_ip_test或者dft_ip_scan_bypass 信号来使能控制两种模式的切换。

带phy的atpg可能会吃read_sdc(multi_cycle以及false_path),对pat和覆盖率有影响。

对于带ip的atpg一般都由外部的occ驱动,dc的覆盖率可能会不达标,原因是什么?是因为phy部分的ddl或者lane部分的reg没有上chain?为什么测不到?是否有增补向量来测?

对于采用Phy内部的occ设计出向量:一般叫做ncp模式。可以测试同步逻辑和异步clk之间的逻辑;需要vender提供ac_demon环境。

四、sim时注意事项:
1、首先检查环境问题:一致问题:网表、sdc、sdf;完整性问题:lib全套;电源pin:define或者force值(vdd1/vss0);feedthrough问题:一定保留穿线或者交互模块的全网表;test_proc中的问题:edt_update在load_unload中拉高再拉低,scan_en的dunmmy_cycle,以及ac时候的plL启振后clK通路问题(模块级siM加速仿真,一般force在plL的后面,分频前面;top_retarget时,都得验证force和不force,即自己启振情况是否正常,即配置是否正确?)。

2、对于ncp模式,必须采用仿真来判断启用pll自己的输出时钟和occ切换逻辑是否正常?拉出波形分析对比。


http://www.ppmy.cn/news/1545876.html

相关文章

系统架构师2023版:习题

架构设计基础 计算机基础 目前处理器市场中存在 CPU 和 DSP 两种类型的处理器,分别用于不同的场景,这两种处理器具有不同的体系结构,DSP采用()。 A.冯诺依曼结构 B.哈佛结构 C.FPGA 结构 D.与 GPU 相同的结构 解析:…

leetcode01 --- 环形链表判定

题目 . - 力扣(LeetCode) 环形链表判定 代码 /*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution {…

【矩阵的大小和方向的分解】

“大小”:在特征值分解和奇异值分解中,矩阵的“大小”通常由特征值或者奇异值表示,它们描述了矩阵在不同方向上拉伸或压缩的程度。“方向”:特征向量和奇异值分解中的方向矩阵 ( U ) 和 ( V ) 则描述了矩阵作用下空间中各个方向的…

OCC 拟合的平面转换为有界平面

问题:针对导入的部分面无法获取大小,同时也无法判断点是否在面上。但是OBB可以获取大小 解决方法:通过面拟合转换gp_Pln,然后获取面的内外边,重新修剪生成新的TopoDS_Face 疑问:本人对OCC中各种面的特性不…

开发指南077-平台上各种时间、包大小设置

1、axios访问后台接口超时 /utils/qlm_request.js文件中: const service axios.create({ baseURL: process.env.VUE_APP_BASE_API, // url base url request url // withCredentials: true, // send cookies when cross-domain requests timeout: 600000 // re…

CentOS 9 Stream 上安装 PostgreSQL 16

CentOS 9 Stream 上安装 PostgreSQL 16 CentOS 9 Stream 上安装 PostgreSQL 16设置密码并且远程连接 CentOS 9 Stream 上安装 PostgreSQL 16 在 CentOS 9 Stream 上安装 PostgreSQL 16 可以通过以下步骤完成: 添加 PostgreSQL 官方仓库: PostgreSQL 提…

ORACLE 删除archivelog日志

监控信息 df -h 查看磁盘空间 /oracle 500G 已用 450G,剩余 50G 具体分析 /oracle/oraarch 421G 占绝对大头,看文件信息 ,从2023年以来一直没有做过日志删除 参考ORACLE 正确删除归档日志的方法_oracle 清理归档日志-CSDN博客 0. 切换…

如何使用 Python 语言的正则表达式进行网页数据的爬取?

以下是使用 Python 语言的正则表达式进行网页数据爬取的一般步骤: 一、安装必要的库: requests:用于发送 HTTP 请求获取网页内容。可以使用 pip install requests 命令进行安装。re:Python 的内置正则表达式库,用于对…