首页
游戏
影视
直播
广播
听书
音乐
图片
更多
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的云盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的音乐
我的影视
我的邮件
Search
1
科普:Memory Compiler生成的Register file和SRAM有何区别?
89 阅读
2
virtuoso和empyrean alps模拟仿真和混仿教程
87 阅读
3
在IC617中进行xa+vcs数模混仿
86 阅读
4
vcs debug rtl或者netlist 中的loop
52 阅读
5
文档内容搜索哪家强? 15款文件搜索软件横向评测
42 阅读
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
登录
Search
标签搜索
python
Docker
vcs
PyQT
STM32
cadence
linux
systemverilog
EDA
Alist
vscode
uos
package
MCU
C
QT
CXL
sed
sv
webdav
bennyhe
累计撰写
344
篇文章
累计收到
31
条评论
首页
栏目
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
页面
游戏
影视
直播
广播
听书
音乐
图片
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的云盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的音乐
我的影视
我的邮件
搜索到
344
篇与
的结果
2025-06-27
什么是 3D-IC
什么是 3D-IC?三维集成电路 (3D-IC) 是一种用于半导体封装的芯片堆叠技术,为半导体行业带来了新的效率、功率、性能和外形尺寸优势。3D-IC 电路是在单个封装上通过晶圆彼此堆叠或芯片与晶圆堆叠而成,各层之间通过硅通孔 (TSV) 实现互连。3D-IC 将更先进的功能封装在较小的外形尺寸内,同时能够提高性能和降低成本,有望实现“超越摩尔定律”的集成。3D-IC 封装可容纳多个异构裸片,如逻辑、存储器、模拟、射频和微机电系统 (MEMS)。其中,高速逻辑可以采用先进制程节点,而模拟逻辑可以采用较早的制程节点。这为系统级芯片(SoC) 集成提供了一个替代方案,使得开发人员不必为了在单个封装中集成更多功能而不得不采用成本昂贵的新的制程节点。 3D-IC 的优势系统级芯片 (SoC) 可将更多功能打包在一个芯片上SoC通常包括一个处理器、数字逻辑部分、存储器部分和模拟部分,以及嵌入式软件部分。一些 SoC 拥有数以亿计的逻辑门,同时追求千兆赫兹的速度。目前,SoC 设计的最大顾虑是开发成本不断增加。此外,漫长的开发周期也会增加额外的成本支出。多年来,逐渐发展起来的两种封装方式分别是堆叠封装(package-in-package,PiP)和层叠封装(package-on-package,PoP)。在 PiP 封装中,几个小型系统级封装 (SiP) 安装在一个大型系统级封装内。而在 PoP 封装中,一个系统级封装安装在另一个系统级封装之上。PiP 和 PoP 都可被归类为 3D-IC,但它们都不能提供使用TSV的真正的 3D-IC 所具备的性能、功耗、密度和外形尺寸。过去硅裸片一直使用传统的引线键合或倒装芯片技术连接到 SiP 基板上。如今,通过无源或有源的硅基板,则能提供更高密度的裸片到裸片的互连,从而提高性能并降低功耗。硅基板(opens in a new tab)还包括 TSV,将上层金属层连接到背面金属层。有时这种技术被称为 2.5D 堆叠。带 TSV 的3D-IC 有望在网络、图形、移动通信和计算等领域产生广泛影响,对于需要小型化、轻量化、低功耗器件的应用而言更是如此。具体的应用领域包括多核 CPU、GPU、数据包缓冲器/路由器、智能手机、平板电脑、笔记本电脑、相机、DVD 播放器和机顶盒。带 TSV 的3D-IC 是半导体行业的一个重要的新趋势。有了不同制程节点的芯片堆叠选项,包括模拟和射频在内的系统组件得以打破单一制程节点的限制。与传统的 SoC 相比,3D-IC 的优势可以概括为以下几点:可以降低成本,因为并非所有功能(包括模拟和存储器)都需要迁移到先进制程节点。更容易满足高速互连和带宽要求,帮助先进存储器技术达到 100Gbps的速度。3D-IC 支持更小的尺寸,可以节省电路板和终端产品的空间,是迷你型移动设备的理想选择。3D-IC 可以降低功耗,因为不再需要大型驱动器。3D 堆叠可以使用小型 I/O 驱动器,功耗更低。此外,减少电阻-电感-电容 (RLC)寄生参数 也有助于进一步降低功耗减少了跨封装之间的互连,可以实现更快的性能和更好的功耗表现。凭借模块化、允许“裸片复用”、以及将模拟/射频部分保留在成熟制程节点上的能力,可以缩短产品上市时间。新兴技术,如光芯片或 MEMS,可以集成到 3D 堆叠中。与引线键合的 SiP 相比,TSV 的 RLC 寄生效应更少、性能更高、功耗更低,并能实现更紧凑的设计。相比硅基板的方法,垂直 3D 裸片堆叠可以提供更高的集成度、更小的外形尺寸和更快的设计周期。但是 3D 堆叠也带来了其他挑战,包括散热、时序和电源管理问题。虽然从设计或工艺的角度来看,没有什么重大阻碍,但要吸引主流用户开始 3D-IC 量产,依然任重而道远。在系统级探索、3D 布局规划、实现、数据提取/分析、测试和 IC/封装协同设计等领域需要具备新的能力。为了实现质量最佳、满足工期要求、具有成本效益的设计,3D-IC 硅片实现流程需要支持统一的设计意图、抽象化以及与物理和制造数据的融合。必须建立一个定义明确的,涵盖晶圆代工厂、IP 供应商、EDA 和 OSAT封测厂商的生态系统,并提供设计工具包和参考流程。通过 Cadence 实现 3D-IC 设计具有成本效益的 3D-IC 设计需要三个领域的协同设计——芯片、封装和电路板。凭借模拟设计、数字实现、封装和PCB 设计工具的全方位产品组合,Cadence 具备独特的优势,能够支持 3D-IC 革新,并提供所需的功能,助力实现具有成本效益的带有 TSV的3D-IC 设计。Cadence 3D-IC 解决方案将 3D 设计规划、实现和系统分析集成到一个统一的管理界面中,旨在满足数字 SoC、模拟/混合信号设计和整个系统的 3D-IC 设计要求。它能够利用硬件仿真、原型验证以及基于 chipset 的互联 PHY IP,进行软硬件协同验证和全系统功耗分析,针对延迟、带宽和功耗进行功耗、性能和面积 (PPA) 优化。该解决方案还提供定制模拟设计和电路板设计、集成电路 (IC) 签核寄生参数提取、静态时序分析 (STA) ,以及信号与电源完整性 (SI/PI)、电磁干扰 (EMI) 和热分析的签核和协同设计能力。Cadence Integrity 3D-IC 平台是大容量、统一的设计和分析平台,用于设计多个芯片。该平台建立在 Cadence 领先的数字实现解决方案——Innovus Implementation System的基础上,允许系统级设计人员为各种封装方式(2.5D 或 3D)规划、实现和分析任何类型的堆叠芯片系统。Integrity 3D-IC 是业界首个集成的系统和 SoC 级解决方案,能够与 Cadence 的 Virtuoso 和 Allegro 模拟与封装实现环境进行系统分析和协同设计。
2025年06月27日
7 阅读
0 评论
0 点赞
2025-06-27
车规认证
暂无简介
2025年06月27日
4 阅读
0 评论
0 点赞
2025-06-26
五种加解密模式(CBC、ECB、CTR、OCF、CFB)
分组密码有五种工作体制:1.电码本模式(Electronic Codebook Book (ECB));2.密码分组链接模式(Cipher Block Chaining (CBC));3.计算器模式(Counter (CTR));4.密码反馈模式(Cipher FeedBack (CFB));5.输出反馈模式(Output FeedBack (OFB))。以下逐一介绍一下:1.电码本模式(Electronic Codebook Book (ECB) 这种模式是将整个明文分成若干段相同的小段,然后对每一小段进行加密。 2.密码分组链接模式(Cipher Block Chaining (CBC)) 这种模式是先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密。 3.计算器模式(Counter (CTR)) 计算器模式不常见,在CTR模式中, 有一个自增的算子,这个算子用密钥加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种加密方式简单快速,安全可靠,而且可以并行加密,但是在计算器不能维持很长的情况下,密钥只能使用一次。CTR的示意图如下所示: 4.密码反馈模式(Cipher FeedBack (CFB)) 这种模式较复杂。 5.输出反馈模式(Output FeedBack (OFB)) 这种模式较复杂。 以下附上C++源代码:/** *@autho stardust *@time 2013-10-10 *@param 实现AES五种加密模式的测试*/ #include <iostream>using namespace std; //加密编码过程函数,16位1和0int dataLen = 16; //需要加密数据的长度int encLen = 4; //加密分段的长度int encTable[4] = {1,0,1,0}; //置换表int data[16] = {1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0}; //明文int ciphertext[16]; //密文 //切片加密函数void encode(int arr[]) { for(int i=0;i<encLen;i++) { arr[i] = arr[i] ^ encTable[i]; } } //电码本模式加密,4位分段void ECB(int arr[]) { //数据明文切片 int a[4][4]; int dataCount = 0; //位置变量 for(int k=0;k<4;k++) { for(int t=0;t<4;t++) { a[k][t] = data[dataCount]; dataCount++; } } dataCount = 0;//重置位置变量 for(int i=0;i<dataLen;i=i+encLen) { int r = i/encLen;//行 int l = 0;//列 int encQue[4]; //编码片段 for(int j=0;j<encLen;j++) { encQue[j] = a[r][l]; l++; } encode(encQue); //切片加密 //添加到密文表中 for(int p=0;p<encLen;p++) { ciphertext[dataCount] = encQue[p]; dataCount++; } } cout<<"ECB加密的密文为:"<<endl; for(int t1=0;t1<dataLen;t1++) //输出密文 { if(t1!=0 && t1%4==0) cout<<endl; cout<<ciphertext[t1]<<" "; } cout<<endl; cout<<"---------------------------------------------"<<endl; } //CBC//密码分组链接模式,4位分段void CCB(int arr[]) { //数据明文切片 int a[4][4]; int dataCount = 0; //位置变量 for(int k=0;k<4;k++) { for(int t=0;t<4;t++) { a[k][t] = data[dataCount]; dataCount++; } } dataCount = 0;//重置位置变量 int init[4] = {1,1,0,0}; //初始异或运算输入 //初始异或运算 for(int i=0;i<dataLen;i=i+encLen) { int r = i/encLen;//行 int l = 0;//列 int encQue[4]; //编码片段 //初始化异或运算 for(int k=0;k<encLen;k++) { a[r][k] = a[r][k] ^ init[k]; } //与Key加密的单切片 for(int j=0;j<encLen;j++) { encQue[j] = a[r][j]; } encode(encQue); //切片加密 //添加到密文表中 for(int p=0;p<encLen;p++) { ciphertext[dataCount] = encQue[p]; dataCount++; } //变换初始输入 for(int t=0;t<encLen;t++) { init[t] = encQue[t]; } } cout<<"CCB加密的密文为:"<<endl; for(int t1=0;t1<dataLen;t1++) //输出密文 { if(t1!=0 && t1%4==0) cout<<endl; cout<<ciphertext[t1]<<" "; } cout<<endl; cout<<"---------------------------------------------"<<endl; } //CTR//计算器模式,4位分段void CTR(int arr[]) { //数据明文切片 int a[4][4]; int dataCount = 0; //位置变量 for(int k=0;k<4;k++) { for(int t=0;t<4;t++) { a[k][t] = data[dataCount]; dataCount++; } } dataCount = 0;//重置位置变量 int init[4][4] = {{1,0,0,0},{0,0,0,1},{0,0,1,0},{0,1,0,0}}; //算子表 int l = 0; //明文切片表列 //初始异或运算 for(int i=0;i<dataLen;i=i+encLen) { int r = i/encLen;//行 int encQue[4]; //编码片段 //将算子切片 for(int t=0;t<encLen;t++) { encQue[t] = init[r][t]; } encode(encQue); //算子与key加密 //最后的异或运算 for(int k=0;k<encLen;k++) { encQue[k] = encQue[k] ^ a[l][k]; } l++; //添加到密文表中 for(int p=0;p<encLen;p++) { ciphertext[dataCount] = encQue[p]; dataCount++; } } cout<<"CTR加密的密文为:"<<endl; for(int t1=0;t1<dataLen;t1++) //输出密文 { if(t1!=0 && t1%4==0) cout<<endl; cout<<ciphertext[t1]<<" "; } cout<<endl; cout<<"---------------------------------------------"<<endl; } //CFB//密码反馈模式,4位分段void CFB(int arr[]) { //数据明文切片,切成2 * 8 片 int a[8][2]; int dataCount = 0; //位置变量 for(int k=0;k<8;k++) { for(int t=0;t<2;t++) { a[k][t] = data[dataCount]; dataCount++; } } dataCount = 0; //恢复初始化设置 int lv[4] = {1,0,1,1}; //初始设置的位移变量 int encQue[2]; //K的高两位 int k[4]; //K for(int i=0;i<2 * encLen;i++) //外层加密循环 { //产生K for(int vk=0;vk<encLen;vk++) { k[vk] = lv[vk]; } encode(k); for(int k2=0;k2<2;k2++) { encQue[k2] = k[k2]; } //K与数据明文异或产生密文 for(int j=0;j<2;j++) { ciphertext[dataCount] = a[dataCount/2][j] ^ encQue[j]; dataCount++; } //lv左移变换 lv[0] = lv[2]; lv[1] = lv[3]; lv[2] = ciphertext[dataCount-2]; lv[3] = ciphertext[dataCount-1]; } cout<<"CFB加密的密文为:"<<endl; for(int t1=0;t1<dataLen;t1++) //输出密文 { if(t1!=0 && t1%4==0) cout<<endl; cout<<ciphertext[t1]<<" "; } cout<<endl; cout<<"---------------------------------------------"<<endl; } //OFB//输出反馈模式,4位分段void OFB(int arr[]) { //数据明文切片,切成2 * 8 片 int a[8][2]; int dataCount = 0; //位置变量 for(int k=0;k<8;k++) { for(int t=0;t<2;t++) { a[k][t] = data[dataCount]; dataCount++; } } dataCount = 0; //恢复初始化设置 int lv[4] = {1,0,1,1}; //初始设置的位移变量 int encQue[2]; //K的高两位 int k[4]; //K for(int i=0;i<2 * encLen;i++) //外层加密循环 { //产生K for(int vk=0;vk<encLen;vk++) { k[vk] = lv[vk]; } encode(k); for(int k2=0;k2<2;k2++) { encQue[k2] = k[k2]; } //K与数据明文异或产生密文 for(int j=0;j<2;j++) { ciphertext[dataCount] = a[dataCount/2][j] ^ encQue[j]; dataCount++; } //lv左移变换 lv[0] = lv[2]; lv[1] = lv[3]; lv[2] = encQue[0]; lv[3] = encQue[1]; } cout<<"CFB加密的密文为:"<<endl; for(int t1=0;t1<dataLen;t1++) //输出密文 { if(t1!=0 && t1%4==0) cout<<endl; cout<<ciphertext[t1]<<" "; } cout<<endl; cout<<"---------------------------------------------"<<endl; } void printData() { cout<<"以下示范AES五种加密模式的测试结果:"<<endl; cout<<"---------------------------------------------"<<endl; cout<<"明文为:"<<endl; for(int t1=0;t1<dataLen;t1++) //输出密文 { if(t1!=0 && t1%4==0) cout<<endl; cout<<data[t1]<<" "; } cout<<endl; cout<<"---------------------------------------------"<<endl; }int main() { printData(); ECB(data); CCB(data); CTR(data); CFB(data); OFB(data); return 0; }
2025年06月26日
5 阅读
0 评论
0 点赞
2025-06-26
分组密码算法的工作模式——KeyWrap密钥封装模式
密钥封装是为了对密钥进行保护,比如密钥存储在不太安全的存储设备中,或者密钥需要在网络中传输。早在2001年,NIST就发布了AES Key Wrap Specification。2002年,IETF在RFC 3394中也描述了密钥封装算法AES-KeyWrap Algorithm,电信行业协会发布了使用TDES的密钥封装算法。2008年,美国标准认可委员会(Accredited Standards Committee X9, Inc.)发布了金融服务业的密钥封装算法。2009年,RFC 5649 描述了带填充的密钥封装算法。 2012年,NIST SP 800-38F描述了AES KW、AES KWP(带填充的密钥封装算法)和TDES的TKW。NIST的这三个算法和RFC等的描述几乎完全一致。 以下描述以NIST SP 800-38F为主,结合RFC 3394和RFC 5649。 参考文献Key Wrap - Wikipedia, the free encyclopedia, http://en.wikipedia.org/wiki/Key_WrapNIST Special Publication 800-38F: Recommendation for Block Cipher Modes of Operation Methods for Key Wrapping, December 2012.J. Schaad and R. Housley, Advanced Encryption Standard (AES) Key Wrap Algorithm, RFC 3394, September, 2002.R. Housley and M. Dworkin, Advanced Encryption Standard (AES) Key Wrap with Padding Algorithm, RFC 5649, August, 2009.ANSI/TIA-102.AACA-1-2002: Project 25 – Digital Radio Over-the-Air-Rekeying (OTAR) Protocol: Addendum 1 – Key Management Security Requirements for Type 3 Block Encryption Algorithms, Telecommunications Industry Association, November, 2002.ANS X9.102-2008, Symmetric Key Cryptography For the Financial Services Industry—Wrapping of Keys and Associated Data, Accredited Standards Committee X9, Inc., June, 2008. 密钥封装有三种KW 基于AES的密钥封装,不使用填充。KWP 基于AES的密钥封装,使用填充。TKW 基于TDES的密钥封装,不使用填充。 算法明文密文使用模块KW2—254-1个64bit长3—254个64bit长W和W-1KWP1—232-1个8bit长2—232个8bit长W和W-1TKW2—228-1个32bit长3—228个32bit长TW和TW-1WC = W(S)模块准备:K(即KEK)128-bit 分组密码CIPH.输入:S,长度为n×64bit,n ≥ 3.输出C,与S等长(长度为n×64bit,n ≥ 3)。步骤初始化s = 6(n-1).S=S1 || S2 ||… || Sn . Si都是64itA0 = S1.For i = 2, …, nR0i = Si.迭代For t = 1, …, s At = MSB64(CIPHK(At-1 || R2t-1)) ⊕ [t]64; For i = 2, …, n-1:Rit = Ri+1t-1; Rnt = LSB64(CIPHK (At-1 || R2t-1)).输出结果C1 = As.For i = 2, …, nCi = Ris.Return C1 || C2 || … || Cn. W的示意图如下W的示意图 W中迭代器的示意图如下:W中迭代器的示意图 W-1S = W-1(C)模块准备:K(即KEK)128-bit 分组密码CIPH的逆函数CIPH-1输入:C,长度为n×64bit,n ≥ 3.输出S,与c等长(长度为n×64bit,n ≥ 3)。步骤初始化s = 6(n-1).C = C1 || C2 ||… || Cn . Ci都是64bitAs = C1.For i = 2, …, nRsi = Ci.迭代For t = s, …, 1 At-1 = MSB64((CIPH-1K(At ⊕[t]64)) || Rnt);R2t-1 = LSB64(CIPH-1K ((At ⊕[t]64) || Rnt). For i = 2, …, n-1:Ri+1t-1 = Rit ; 输出结果S1 = A0.For i = 2, …, nSi = Ri0.Return S1 || S2 || … || Sn. KWKW的加密KW-AE(P)和解密KW-AD(C)。加密C = KW-AE(P)输入:明文P输出:密文CICV1 = 0xA6A6A6A6A6A6A6A6.S = ICV1 || P.Return C = W(S). 解密P = KW-AD(C)输入:密文C输出:明文P或者失败ICV1 = 0xA6A6A6A6A6A6A6A6.S = W-1(C).If MSB64(S) ≠ICV1, return FAIL and stop.Return P = LSB64(n-1)(S). RFC 3394对KW采用一种便于软件实现的描述方式。输入:明文 P = P1||P2||...||Pn,n个64-bit密钥 K (KEK).输出:密文 C = C0||C1||...||Cn,(n+1)个64-bit步骤1) A = IV, IV = 0xA6A6A6A6A6A6A6A6 For i = 1 to n, R[i] = P[i]2) For j = 0 to 5 { For i=1 to n { B = AES(K, A || R[i]) A = MSB(64, B) ⊕ t,其中t = (n*j)+i R[i] = LSB(64, B) }//i }//j3) C[0] = AFor i = 1 to n, C[i] = R[i]Return C = C[0] || C[1] || ... || C[n]KWP带填充的KW加密KWP-AE(P)和带填充的KW解密KWP-AD(C)。加密C = KWP-AE(P)输入:明文P输出:密文CICV2 = 0xA65959A6.2. PAD = 08×padlenS = ICV2 || [len(P)/8]32 || P || PAD5. If len(P) ≤ 64, return C = CIPHK(S);else, return C = W(S). 这里的padlen是指将明文P填充为64bit的整数倍时需要填充(填充数据为全零字节)的最短字节数,可以为0。消息S表示在填充后消息的前面再加64比特的特殊消息,以保证S长度最少为一个分组大小(128bit)。如果S长度只有一个分组大小,则直接执行AES。 解密P = KW-AD(C)输入:密文C,C = C1||C2||...||Cn, n个64-bit输出:明文P或者失败1. ICV2 = 0xA65959A6.If n = 2, S = CIPH-1K(C); if n > 2, S = W-1(C).If MSB32(S) ≠ ICV2, return FAIL and stop.4. Plen = int(LSB32(MSB64(S))).padlen = 8(n-1)-Plen.If padlen < 0 or padlen > 7, return FAIL and stop.If LSB8×padlen(S) ≠ 08×padlen, return FAIL and stop.Return P = MSB8×Plen(LSB64×(n-1)(S)).TKW这个和KW其实是一样的,只有一下几个地方有区别:使用的密码算法不一样:KW采用AES;TKW采用TDES分组大小不一样导致半分组大小不一样:KW半分组大小64bit;TKW半分组大小32bit。详细流程可辅助参见KW。注意:TKW没有加填充的所谓TKWP算法。测试数据NIST SP 800-38F里面没有测试数据;测试数据可以在RFC 3394和RFC 5649里面查。LibTomCrypt目前尚不支持KeyWrap。————————————————版权声明:本文为CSDN博主「网糸隹」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/samsho2/article/details/85263837
2025年06月26日
14 阅读
0 评论
0 点赞
2025-06-26
四值逻辑
buf和非门与、或、异或、与非、或非、同或门case/casex/casez
2025年06月26日
2 阅读
0 评论
0 点赞
1
...
54
55
56
...
69