首页
游戏
影视
直播
广播
听书
音乐
图片
更多
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的云盘
我的搜索
我的记录
我的图片
我的图书
我的笔记
我的音乐
我的影视
我的邮件
我的游戏
Search
1
virtuoso和empyrean alps模拟仿真和混仿教程
360 阅读
2
在IC617中进行xa+vcs数模混仿
301 阅读
3
文档内容搜索哪家强? 15款文件搜索软件横向评测
264 阅读
4
科普:Memory Compiler生成的Register file和SRAM有何区别?
258 阅读
5
通俗易懂的AI知识体系图及其产业链全景图
198 阅读
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
登录
Search
标签搜索
AI
python
Docker
vcs
PyQT
STM32
cadence
linux
systemverilog
EDA
Alist
vscode
uos
package
MCU
C
QT
CXL
sed
sv
bennyhe
累计撰写
387
篇文章
累计收到
33
条评论
首页
栏目
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
页面
游戏
影视
直播
广播
听书
音乐
图片
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的云盘
我的搜索
我的记录
我的图片
我的图书
我的笔记
我的音乐
我的影视
我的邮件
我的游戏
搜索到
387
篇与
的结果
2025-07-07
SSH协议详解
作为程序员,一定不会没有用过ssh吧。当我们需要远程登录到服务器上进行操作的时候,一般就会用ssh。ssh是secure shell的简称,它相对于早起的telnet和rsh的明文传输,提供了加密、校验和压缩,使得我们可以很安全的远程操作, 而不用担心信息泄露(当然不是绝对的,加密总有可能被破解,只是比起明文来说那是强了不少)。本文会详细的讲解SSH协议是怎么定义的,以及他是怎么实现安全的加密。几个基本概念在介绍ssh协议之前,有几个涉及到的基本概念首先需要介绍,它们对于理解ssh协议本身有非常重要和关键的作用。加密加密的意思是将一段数据经过处理之后,输出为一段外人无法或者很难破译的数据,除了指定的人可以解密之外。 一般来说,加密的输入还会有一个key,这个key作为加密的参数, 而在解密的时候也会用一个相关联(有可能是相同)的key作为输入。粗略来说是下面的流程:加密方encrypted_data = encrypt(raw_data, key)解密方raw_data = decrypt(encrypted_data, key1)目前主流的加密算法一般分为下面两类:1.私钥(secret key)加密,也称为对称加密2.公钥(public key)加密私钥加密所谓的私钥加密,是说加密方和解密方用的都是同一个key,这个key对于加密方和解密方来说是保密的,第三方是不能知道的。在第三方不知道私钥的情况下,是很难将加密的数据解密的。一般来说是加密方先产生私钥,然后通过一个安全的途径来告知解密方这个私钥。公钥加密公钥加密,是说解密的一方首先生成一对密钥,一个私钥一个公钥,私钥不会泄漏出去,而公钥则是可以任意的对外发布的。用公钥进行加密的数据,只能用私钥才能解密。加密方首先从解密方获取公钥,然后利用这个公钥进行加密,把数据发送给解密方。解密方利用私钥进行解密。如果解密的数据在传输的过程中被第三方截获,也不用担心,因为第三方没有私钥,没有办法进行解密。公钥加密的问题还包括获取了公钥之后,加密方如何保证公钥来自于确定的一方,而不是某个冒充的机器。假设公钥不是来自我们信任的机器,那么就算我们用公钥加密也没有用,因为加密之后的数据是发送给了冒充的机器,该机器就可以利用它产生的私钥进行解密了。所以公钥加密里面比较重要的一步是身份认证。需要说明一下,一般的私钥加密都会比公钥加密快,所以大数据量的加密一般都会使用私钥加密,而公钥加密会作为身份验证和交换私钥的一个手段。数据一致性/完整性数据一致性说得是如何保证一段数据在传输的过程中没有遗漏、破坏或者修改过。一般来说,目前流行的做法是对数据进行hash,得到的hash值和数据一起传输,然后在收到数据的时候也对数据进行hash,将得到的hash值和传输过来的hash值进行比对,如果是不一样的,说明数据已经被修改过;如果是一样的,则说明极有可能是完整的。目前流行的hash算法有MD5和SHA-1算法。身份验证身份验证说的是,判断一个人或者机器是不是就是你想要联系的。也就是说如果A想要和B通信,一般来说开始的时候会交换一些数据,A怎么可以判断发送回来的数据就真的是B发送的呢?现实中有很多方法可以假冒一个机器。在SSH里面,这主要是通过公钥来完成的。首先客户端会有一个公钥列表,保存的是它信任的机器上面的公钥。在开始SSH连接之后,服务器会发送过来一个公钥,然后客户端就会进行查找,如果这个公钥在这个列表里面,就说明这个机器是真的服务器。当然实际的情况会复杂一些。实际上服务器不是真的发送公钥过来,因为这很容易被第三方盗取。这个在下面会详细的讲述。SSH2协议概况理解一个协议最好是从他的大概信息交流流程来了解。这个在《SSH: The Secure》里面有很详细的说明,我从中摘取了几个主要的图来说明一下。首先是一个主要的脉络图:可以看到,里面有几个关键的key:1.session key: 这个是用来作为secret key加密用的一个key,同时也作为每个ssh连接的标识ID。2.host key: 这个是用来作为server的身份验证用的。3.known-hosts: 这个是存在客户端的一个可信server的public key列表。4.user key: 这个是用来作为client的身份验证用的。当server和client交换了session key之后,所有的数据都会使用这个session来进行私钥加密。上面的图是一个很粗略的描述,下面这个图是对SSH2协议的一个详细的描述:上面这幅图大致的说明了SSH2协议的全景。首先SSH2协议分为3个子协议,分别是SSH-TRANS, SSH-AUTH和SSH-CONN。其中SSH-TRANS是传输协议,定义了传输的包和加密通道,其他两个协议是建立在这个协议之上的。SSH-AUTH是SSH里面用于验证客户端身份的协议。我们在用ssh命令输入密码的那一步实际上就是在这个阶段。可以看到的是,虽然传输的是用户名和密码,但是由于这个协议建立在SSH-TRANS之上,所以内容都是加密的,可以放心的传输。而SSH-CONN是真正的应用协议。在这里可以定义各种不同的协议,其中我们经常使用的scp、sftp还有正常的remote shell都是定义在这里的一种协议实现。这里的各种应用协议都要首先经过SSH-AUTH的验证之后才可以使用。这个三个协议之间的关系可以用下面这幅图来说明:其中SSH-TRANS是基本的协议,SSH-AUTH和SSH-CONN都是通过这个协议来实现安全加密的。虽然在时序上,SSH-CONN发生在SSH-AUTH之后,但是SSH-CONN并不依赖于SSH-AUTH。SSH ProtocolSSH-TRANS首先介绍一下SSH-TRANS的基本结构。在客户端连接上SSH服务器之后,会进行下面协议通信:客户端和服务端都向对方发送一个ssh版本字符串。字符串的格式如下:SSH-protoversion-softwareversion SP comments CR LF其中comment是可选的。 一般来说,目前用的ssh服务器和客户端一般都是支持SSH2,所以一个开始的version string一般就像下面这样:SSH-2.0-OpenSSH CR LF接下来的通信都用SSH自身定义的一个Binary Packet Protocol进行通信。这个Binary Packet Protocol其实就是将所有的用户数据都加上长度头,然后再进行加密。一个Packet的定义如下:uint32 packet_lengthbyte padding_lengthbyte[n1] payload; n1 = packet_length - padding_length - 1byte[n2] random padding; n2 = padding_lengthbyte[m] mac (Message Authentication Code - MAC); m = mac_length实际上所有的数据都放在payload里面。最后的mac是用来给数据计算校验码用的。在传输完ssh version string之后,客户端和服务端会开始进行key exchange,简称kex。Kex是用来让客户端和服务器生成本次通信的密钥和session ID的。 在kex之后,服务器和客户端都有一个key和hash,而私钥加密用的secret key就是通过这两个值来生成的。 具体的算法这里就不阐述了,可以去看SSH-TRANS的RFC[2]。在kex的最后一步,服务器会给客户端发送他自己的public key。 而客户端会通过在自己的known_hosts里面查找这个public key来验证服务器的身份。 至此,服务器和客户端都用来secret key,所以接下来所以数据都会进行加密,而不用担心信息泄露。 在kex之后,客户端就可以开始进行SSH-AUTH,也就是叫服务器验证自己的身份。SSH-AUTH在客户端的身份认证中,有3种预先定义好的方法可以用。1.public key2.password3.hostbased其中前两种是我们平常最常用的:password就是一般的密码验证,而public key就是一般的无密码验证。 当服务器成功的验证了客户端的身份之后,就会开始客户端请求的服务(service)了。 需要注意的是,服务器的验证方式并不是说3种方式任选其一,而是可以组合的。也就是说,服务器可以要求客户端同时通过Password和public key两种方式的认证。SSH-CONN这个也就是我们最后用到的一个服务的协议定义了。最常用的包括shell, port forwarding,X11 forwarding等等。在SSH-CONN里面最重要的就是Channel的机制了。在SSH-CONN里面,和服务器的通信基本上都是通过建立channel来通信的。 多个channel共享同一个ssh session。SSH协议自身定义如何负责多个channel之间消息的分发。 对于使用者来说只需要开多个channel就可以了。 比如说普通在ssh的客户端开启port forwarding的时候,就会开启一个shell channel和一个forwarding channel。 这一part对于程序员来说都是比较熟悉的。Library目前看的ssh的库主要有libssh和libssh2。其中的比较可以在这里找到。从接口上来说, libssh2的接口定义比较清晰,不过libssh2只能用于client端的开发,而libssh可以进行server和client端的开发。 而且libssh2的文档比libssh的文档要差些。在做开发的时候文档是一个很关键的因素。References:.SSH: The Secure Shell.SSH-TRANS.SSH-ARCH.SSH-AUTH.SSH-CONN
2025年07月07日
30 阅读
0 评论
0 点赞
2025-07-04
CMSIS 到底是什么?
CMSIS 到底是什么?先来看看ARM公司对CMSIS的定义:ARM® Cortex™ 微控制器软件接口标准 (CMSIS) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层。CMSIS 可实现与处理器和外设之间的一致且简单的软件接口,从而简化软件的重用,缩短微控制器开发人员新手的学习过程,并缩短新设备的上市时间。软件的创建是嵌入式产品行业的一个主要成本因素。通过跨所有 Cortex-M 芯片供应商产品将软件接口标准化(尤其是在创建新项目或将现有软件迁移到新设备时),可以大大降低成本。我们知道,不同厂家,比如FSL,ST,Energy Micro等不同厂家的内核都是使用Cortex M,但是这些MCU的外设却大相径庭,外设的设计、接口、寄存器等都不一样,因此,一个能够非常熟练使用STM32软件编程的工程师很难快速地上手开发一款他不熟悉的,尽管是Cortex M内核的芯片。而CMSIS的目的是让不同厂家的Cortex M的MCU至少在内核层次上能够做到一定的一致性,提高软件移植的效率。CMSIS的结构:CMSIS 包含以下组件:CMSIS-CORE:提供与 Cortex-M0、Cortex-M3、Cortex-M4、SC000 和 SC300 处理器与外围寄存器之间的接口CMSIS-DSP:包含以定点(分数 q7、q15、q31)和单精度浮点(32 位)实现的 60 多种函数的 DSP 库CMSIS-RTOS API:用于线程控制、资源和时间管理的实时操作系统的标准化编程接口CMSIS-SVD:包含完整微控制器系统(包括外设)的程序员视图的系统视图描述 XML 文件此标准可进行全面扩展,以确保适用于所有 Cortex-M 处理器系列微控制器。其中包括所有设备:从最小的 8 KB 设备,直至带有精密通信外设(例如以太网或 USB)的设备。(内核外设功能的内存要求小于 1 KB 代码,低于 10 字节 RAM)。框架看上去CMSIS-Core和CMSIS-DSP很好理解,但是CMSIS-RTOS不好理解,这玩意是干嘛的再看一张图吧:看了这张图的含义更清楚些,CMSIS-RTOS在用户的应用代码和第三方的RTOS Kernel直接架起一道桥梁,一个设计在不同的RTOS之间移植,或者在不同Cortex MCU直接移植的时候,如果两个RTOS都实现了CMSIS-RTOS,那么用户的应用程序代码完全可以不做修改。已经支持的MCU和工具链: 完整的CMSIS文档可以从ARM公司网站下载,大小有100多M字节。 如何使用CMSIS,需要哪些文件,以Freescale Kinetis L系列举例。独立于编译器的文件:● Cortex-M3内核及其设备文件(core_cm0.h + core_cm0.c)─ 访问Cortex-M0内核及其设备:NVIC等─ 访问Cortex-M0的CPU寄存器和内核外设的函数● 微控制器专用头文件(device.h) - MKL25Z4.h─ 指定中断号码(与启动文件一致)─ 外设寄存器定义(寄存器的基地址和布局)─ 控制微控制器其他特有的功能的函数(可选)● 微控制器专用系统文件(system_device.c) -- system_MKL25Z4.h + system_MKL25Z4 .c ─ 函数SystemInit,用来初始化微控制器--函数 void SystemCoreClockUpdate (void); 用于获取内核时钟频率─SystemCoreClock,该值代表系统时钟频率─ 微控制器的其他功能(可选)● 编译器启动代码(汇编或者C)(startup_device.s) - startup_MKL25Z4.s for Keil─ 微控制器专用的中断处理程序列表(与头文件一致)─ 弱定义(Weak)的中断处理程序默认函数(可以被用户代码覆盖)一、前言二、CMSIS标准三、CMSIS文件1、Include文件2、Source文件四、总结一、前言使用过ARM单片机的朋友肯定听说过CMSIS,可以说CMSIS是开启ARM单片机的金钥匙,是不是想到单片机的启动文件了呢,对的,启动文件只是CMSIS的一部分,你是不是跟我一样对它感到既熟悉又陌生呢?二、CMSIS标准CMSIS ( Cortex Microcontroller Software Interface Standard ),翻译过来是ARM Cortex™ 微控制器软件接口标准 。这个标准是谁提的呢?提的这个标准是用来干什么的呢?这里不得不说说ARM和STM32、TI这些公司的关系了,ARM 是一个做芯片标准的公司,它负责的是芯片内核的架构设计,而TI、ST这样的公司,他们并不做标准,他们是芯片公司,他们是根据 ARM 公司提供的芯片内核标准设计自己的芯片。所以,任何一个做 Cortex M3 芯 片 ,他们的内核结构都是一样的,不同的是他们的存储器容量, 片上外设 IO 以及其他模块的区别。标准是谁提的呢?ARM跟芯片厂商共同提出的,目的就是为了不同芯片厂商生产的Cortex-M3芯片能在软件上基本兼容,各芯片厂商就得按照这个标准去编写自己芯片内核的驱动程序,比如系统函数的命名、芯片初始化启动流程等;STM32的官方库(标准库、HAL库、LL库)就是按照这个标准写的。这个标准是用来干什么的呢?如下图它向下负责与内核和各个外设直接打交道,向上提供实时操作系统用户程序调用的函数接口。分为 3 个基本功能层:核内外设访问层:ARM 公司提供的访问,定义处理器内部寄存器地址以及功能函数。中间件访问层:定义访问中间件的通用 API, 也是 ARM 公司提供。外设访问层:定义硬件寄存器的地址以及外设的访问函数。三、CMSIS文件看完上面的介绍是不是已经晕菜了,看完跟没看一样没看到实际的代码。下面就打开任意一工程下的CMSIS,我以STM32F4xx为例,在路径 \CMSIS\Device\ST\STM32F4xx 下,有Include、Source两个文件,我们主要用到了这两个文件下的微控制器专用头文件、启动代码 。1、Include文件在该文件中主要使用了stm32f4xx.h 和 stm32f429xx.h(不同的芯片这个文件不同),如下图(1)在stm32f429xx.h 头文件包含了该芯片所有外设的寄存器定义和封装内存操作,直接操作这些寄存器就可以控制外设了,使用STM32任何型号的芯片都需要包含这个头文件。(2)在stm32f4xx.h中会根据芯片型号宏标识符(我这里是STM32F429xx )选择对应的头文件(stm32f429xx.h),如果定义了USE_HAL_DRIVER宏标识符,还会将HAL库外设驱动包含进来,具体包含关系为:2、Source文件在该文件中主要用到了 system_stm32f4xx.c、startup_stm32f429xx.s、stm32f429xx_flash.icf。如下图:startup_stm32f429xx.s启动文件的作用主要是进行堆栈的初始化,中断向量表以及中断函数定义等。会设置系统复位后,直接调用 SystemInit函数进行系统初始化。还有一个很重要的作用就是系统复位后引导进入 main函数。system_stm32f4xx.c主要是声明和定义了系统初始化函数 SystemInit 以及系统时钟更新函数 SystemCoreClockUpdate。SystemInit函数的作用是进行时钟系统的一些初始化操作以及中断向量表偏移地址设置,但它并没有设置具体的时钟值stm32f429xx_flash.icf定义了芯片的FLASH和RAM的起始和结束地址、以及大小STM32单片机的启动流程:四、总结CMSIS就是定义了一套芯片外设控制及编写规范的标准。我们在移植一个新的工程时,只需要修改添加:1、添加system_stm32f4xx.c、startup_stm32f429xx.s、stm32f429xx_flash.icf2、添加stm32f4xx.h3、修改全局宏标识 STM32F429xx
2025年07月04日
58 阅读
0 评论
0 点赞
2025-07-03
网页嵌入网页
嵌入网页文件<html> <head> <meta charset="utf-8" /> >title<page nesting</title> </head> <body> <! --Navigation column header location --> 80" 80"= height"100%"= width"header.html"iframe" scrolling="no" frameborder="no"></iframe> >"content" =iddiv<I am content</div> <! --End footer position --> 80" 80"= height"100%"= width"footer.html"iframe" scrolling="no" frameborder="no"></iframe> </body> </html>添加一个ifram 嵌入网页全屏显示按钮code here...上面代码,可以将header.html替换为其他网页文件Embed url<html> <head> >title<Cloud Music</title> </head> <body> <iframe src="http://www.tuwei.space/home.html" width="100%" height="1000" frameborder="0" allowfullscreen="true"></iframe> </body> </html>上面代码,width 是100%, 表示可以根据窗口大小自动铺满,allowfullscreen表示容许全屏Embed search engine dialog box<form action="http://www.baidu.com/baidu" target="_blank"> <table bgcolor="#FFFFFF"><tr><td> <input name=tn type=hidden value=baidu> <a href="http://www.baidu.com/"> <img src="http://img.baidu.com/img/logo-80px.gif" alt="Baidu" align="bottom" border="0"> </a> <input type=text name=word size=30> <input type="submit" value="百度搜索"> </td></tr> </table> </form>效果: 添加全屏按钮<html> <head> <style> #myFrame { width: 100vw; height: 100vh; } .fullscreen { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 9999; background-color: #ffffff; } </style> </head> <body> <button onclick="openFullscreen()">全屏显示</button> <div id="myFrame"> <iframe id="iframeContent" src="https://www.pilisf.com" width="100%" height="1000" frameborder="0" allowfullscreen="true"></iframe> <div id="fullscreenOverlay" class="fullscreen" style="display:none;"></div> </div> <script> var iframe = document.getElementById("iframeContent"); function openFullscreen() { var fullscreenOverlay = document.getElementById("fullscreenOverlay"); if (iframe.requestFullscreen) { iframe.requestFullscreen(); } else if (iframe.mozRequestFullScreen) { iframe.mozRequestFullScreen(); } else if (iframe.webkitRequestFullscreen) { iframe.webkitRequestFullscreen(); } else if (iframe.msRequestFullscreen) { iframe.msRequestFullscreen(); } else { fullscreenOverlay.style.display = "block"; } } </script> </body> </html>效果:点击全屏显示,嵌入网页就会全屏显示
2025年07月03日
27 阅读
0 评论
0 点赞
2025-07-03
数字后端基本概念介绍——Track
The basic concept of the digital backend that I want to introduce to you today is Track. Track refers to the trace track, which, like row, can constrain the direction of the trace device. The signal line usually has to be on the track. The height of an std cell is usually expressed by metal2 track pitch. The commonly used std cell libraries are 7T / 9T / 12T, which are distinguished by track. 9T means that nine lines can be walked within the height range of an std cell, so generally speaking, the size of a 7T cell is the smallest, and the size of a 9T cell is slightly larger. big.The colorful lines in the figure below are the track traces defined on each layer.Usually we define the attributes of track in the technology lef of design, as shown in the figure below:LAYER M1TYPE ROUTING ;DIRECTION VERTICAL ;PITCH 0.090 0.064;OFFSET 0.000 0.000;MAXWIDTH 2 ;WIDTH 0.032 ;In the definition of M1 layer above, TYPE ROUTING means that this is a routing layer. We have other types including Implant, Masterslice, etc.The direction represents the direction of the metal prefer routing of this layer. It is worth noting here that each layer of track will be divided into pref track and non-pref track. The pref track is the mainstream routing direction on this layer, and the remaining non-pref track is the non-mainstream direction. Therefore, the mainstream routing direction in the above example is vertical (vertical), and the non-mainstream is horizontal (honrizontal). usually. The wire that takes the non-pref track will be wider, which will take up more winding resources. Therefore, it is generally not recommended to use non-pref track. Especially in the design of advanced processes, winding resources are extremely tight, and non-pref track is generally rarely used.PITCH IS the SPACING BETWEEN EACH track. In the above example, the vertical spacing is 0.09 and the horizontal spacing is 0.064.OFFSET is the distance from the starting point of the first trackWIDTH represents the default width of the wire on this layer, and MAXWIDTH represents the maximum width that cannot be exceeded.
2025年07月03日
79 阅读
0 评论
0 点赞
2025-07-01
谈谈CP和FT测试
关于CP和FT的测试,我本来以为这个话题已经是业界常识,不需要专门再谈了.不过前几天和一个设计公司的主管交流了一下,发现其实很多非测试专业的从业人员对这两个概念其实了解并不像我以为的那样深刻.所以,我还是有必要在这里再谈一下按照国际惯例,首先需要再解释一下什么是CP和FT测试.CP是(ChipProbe)的缩写,指的是芯片在wafer的阶段,就通过探针卡扎到芯片管脚上对芯片进行性能及功能测试,有时候这道工序也被称作WS(WaferSort);而FT是Final Test的缩写,指的是芯片在封装完成以后进行的最终测试,只有通过测试的芯片才会被出货由于测试治具上的差异,CP和FT的不同点并不仅仅限于所处的工序阶段不同,两者在效率和功能覆盖上都有着明显的差异,这些信息是每一个IC从业人员需要基本了解的在绝大多数情况下,特别是在国内,我们目前在CP测试上选用的探针都还是悬臂针(也有叫环氧针的,因为针是用环氧树脂固定的缘故).这种类型的针比较长,而且是悬空的,信号完整性控制上非常困难,所以一般数据的最高传输率只有100~400Mbps,高速信号的测试是几乎不可能的;另外,探针和pad的直接接触在电气性能上也有局限,容易产生漏电和接触电阻,这对于高精度的信号测量也会带来巨大的影响.所以,通常CP测试仅仅用于基本的连接测试和低速的数字电路测试当然,理论上在CP阶段也可以进行高速信号和高精度信号的测试,但这往往需要采用专业的高速探针方案,如垂直针/MEMS探针等技术,这会大大增加硬件的成本.多数情况下,这在经济角度上来说是不合算的那这样一来,我们还需不需要CP测试?或者在CP测试阶段如何对具体测试项目进行取舍呢?要回答这个问题,我们就必须对CP的目的有深刻的理解.那CP的目的究竟是什么呢?首先,CP最大的目的就是确保在芯片封装前,尽可能地把坏的芯片筛选出来以节约封装费用.所以基于这个认识,在CP测试阶段,尽可能只选择那些对良率影响较大的测试项目,一些测试难度大,成本高但fail率不高的测试项目,完全可以放到FT阶段再测试.这些项目在CP阶段测试意义不大,只会增加测试的成本.要知道,增加一个复杂的高速或高精度模拟测试,不仅仅会增加治具的成本,还会增加测试机台的费率和增加测试时间.这些测试项目在FT阶段都是要测试的,所以没有必要放在CP阶段重复进行了其次,一些芯片的部分模组地管脚在封装的时候是不会引出来了,也就是说在FT阶段这些模组很难甚至无法测量.在这样的情况下,测试就必须在CP阶段进行.这也是必须进行CP测试的一个重要原因还有一种特殊情况,芯片的封装是SIP之类的特殊形式.一方面这种封装形式在FT阶段可测性较低,而且多芯片合封的情况下,整体良率受每颗die的良率影响较大,所以一般需要在封装前确保每颗die都是好品(KGD: Known Good Die).这种情况下,往往无论多困难,都需要在CP阶段把所有测试项目都测一遍了所以,基于以上的认识,我们就比较容易在具体项目中判断CP测试项目的取舍了.简单而言:1)因为封装本身可能影响芯片的良率和特性,所以芯片所有可测测试项目都是必须在FT阶段测试一遍的.而CP阶段则是可选2)CP阶段原则上只测一些基本的DC,低速数字电路的功能,以及其它一些容易测试或者必须测试的项目.凡是在FT阶段可以测试,在CP阶段难于测试的项目,能不测就尽量不测.一些类似ADC的测试,在CP阶段可以只给几个DC电平,确认ADC能够基本工作.在FT阶段再确认具体的SNR/THD等指标3)由于CP阶段的测试精度往往不够准确,可以适当放宽测试判断标准,只做初步筛选.精细严格的测试放到FT阶段4)如果封装成本不大,且芯片本身良率已经比较高.可以考虑不做CP测试,或者CP阶段只做抽样测试,监督工艺5)新的产品导入量产,应该先完成FT测试程序的开发核导入.在产品量产初期,FT远远比CP重要.等产品逐渐上量以后,可以再根据FT的实际情况,制定和开发CP测试以上只是根据我个人的经验总结的一些最基本的CP/FT测试常识.事实上,在具体的项目中,会有很多复杂的问题出现,这些问题的对应和解决不是我短短一篇文章所能全部覆盖到的.本文的作用只是给广大非测试专业的从业人员提供一些最基本的概念信息.在实际的案例中,往往需要具体问题具体分析.总而言之,对于任何一家设计公司而言,优秀的测试工程师或团队是确保产品良率和成本控制币不可少的因素
2025年07月01日
43 阅读
0 评论
0 点赞
1
...
61
62
63
...
78