芯片后端验证
《芯片后端验证》课件
芯片后端验证的流程
1
设计与实现
2
基于需求规范进行电路、布局和时序
设计,并进行物理层面的实现。
3
性能评估
4
对芯片的功能、性能和可靠性进行全 面评估和测试,确保达到设计要求。
需求分析
确定和收集芯片设计和验证的需求, 包括功能、性能和电气规范。
Synopsys Verification IP自动 化测试平台
用于创建和执行自动化测试环境,加速芯片 验证过程。
Keysight SystemVue射频系统 仿真器
用于对射频芯片进行系统级仿真和验证,检 测和调试射频问题。
芯片后端验证的案例分析
海思鸿芯麒麟9000芯片 的后端验证
详细介绍了海思鸿芯麒麟9000 芯片在后端验证过程中遇到的 问题和解决方案。
仿真与验证
使用电路仿真、综合、时序分析和特 定电路分析等技术,对芯片进行验证 和调试。
芯片后端验证的技术
电路仿真技术
通过模拟和验证电路的行为,检测和解决潜 在的设计错误和问题。
时序分析技术
分析电路内部的时序关系,确保数据在正确 的时间到达目的地。
电路综合技术
通过将高级设计描述转化为可实现电路的工 具,进行电路的逻辑综合和优化。
2 各种芯片后端验证 3 未来芯片后端验证
技术的应用场景
技术的发展与应用
介绍了电路仿真、综合、
前景
时序分析和特定电路分
展望了人工智能、虚拟
析等技术的具体应用场
验证和自动验证等技术
景。
在芯片后端验证芯片的后端验证
soc验证的认识
soc验证的认识SOC验证,即系统级芯片验证(System-on-Chip Verification),是指对集成电路系统进行全面验证的过程。
在SOC设计中,集成了多个功能模块,包括处理器、内存、外设等,因此需要进行验证以确保整个系统的功能和性能符合设计要求。
SOC验证的目标是发现和解决集成电路系统中可能存在的缺陷和问题,确保系统在实际使用中能够正常运行。
SOC验证的重要性不言而喻。
首先,验证是保证集成电路系统质量的关键一环。
在SOC设计中,各个功能模块的正确性和一致性对整个系统的性能和可靠性至关重要。
通过验证,可以发现和解决设计中的错误和缺陷,提高系统的稳定性和可用性,减少后期修复和维护的成本。
SOC验证有助于提高设计效率和节约开发时间。
在SOC设计中,验证是一个复杂而耗时的过程。
通过使用SOC验证工具和方法,可以自动化验证流程,提高验证的效率,减少人力资源的投入。
同时,验证可以在设计周期的早期发现问题,避免在后期重新设计或修改,节约开发时间和成本。
SOC验证的方法和技术也在不断发展和创新。
传统的SOC验证主要依赖于仿真和测试,通过生成测试用例和模拟运行来验证系统的正确性。
然而,随着集成电路系统规模的不断扩大和复杂性的增加,传统验证方法已经不能满足需求。
因此,人们提出了基于形式化验证、模型检测、虚拟平台等新的验证方法和工具,以提高验证效率和准确性。
除了验证集成电路系统的正确性,SOC验证还需要考虑系统的安全性。
随着网络技术和物联网的发展,SOC系统的安全性面临越来越多的挑战。
黑客攻击、信息泄露、软件漏洞等安全威胁需要通过验证手段进行防范和应对。
因此,SOC验证中的安全验证成为了一个重要的研究领域,人们提出了一系列安全验证方法和技术,以确保SOC系统的安全性。
SOC验证在现代科技发展中起着重要的作用。
通过验证集成电路系统的正确性和安全性,可以提高系统的质量和可靠性,节约开发时间和成本。
SOC验证的方法和技术也在不断创新和发展,以适应日益复杂和安全的SOC系统需求。
芯片eda验证流程
芯片eda验证流程1.引言1.1 概述概述芯片是现代电子产品的核心组成部分,它们承担着诸多关键功能的实现。
然而,芯片的设计与制造是一项复杂而严谨的过程,需要多个环节的验证与测试来确保其性能和可靠性的有效发挥。
EDA(Electronic Design Automation)验证流程是芯片设计中非常重要的一环。
它是指利用计算机辅助工具和相应的软件来分析和验证芯片设计的过程。
通过EDA验证流程,设计工程师可以发现和解决设计中的问题,确保芯片设计在满足要求的情况下能够正常工作。
一般而言,EDA验证流程包括了设计规范的制定、电路仿真、逻辑综合、布局布线等多个步骤。
在设计规范制定阶段,工程师需要明确芯片的功能需求、性能指标、功耗要求等,并制定相应的设计规范和约束。
接下来,通过电路仿真和逻辑综合,设计工程师可以验证芯片的电气特性、逻辑正确性等。
最后,通过布局布线,工程师可以优化芯片的物理结构,提高电路性能和布局的可靠性。
EDA验证流程的核心在于验证与测试。
在验证过程中,设计工程师需要使用各种工具和技术,如SPICE模拟器、逻辑验证、功耗分析等,来检测芯片设计中的问题并进行修正。
同时,在测试阶段,工程师会使用特定的测试工具和技术,如加载板、测试软件等,来验证芯片的功能是否满足要求。
通过EDA验证流程,设计工程师能够全面、系统地验证芯片设计的各个环节,确保其性能和可靠性的有效发挥。
同时,EDA验证流程也为芯片设计提供了一套规范化的标准,使得设计工作更加可控和可追溯。
总而言之,EDA验证流程在芯片设计中具有重要的意义和作用,它为芯片设计的成功实施提供了有力支持。
文章结构部分的内容应该包括该长文的章节和子章节的组织方式,以及每个章节的主要内容概述。
根据给定的目录:2. 正文2.1 EDA验证流程概述2.2 EDA验证流程要点文章结构部分的内容可以如下所示:文章结构如下:1. 引言1.1 概述1.2 文章结构1.3 目的2. 正文2.1 EDA验证流程概述在这一节中,我们将介绍芯片EDA验证流程的概念和基本流程。
芯片设计后端知识点
芯片设计后端知识点芯片设计的后端阶段是一个非常重要的环节,它涉及到芯片的物理实现和验证。
在这个阶段,设计工程师需要熟悉一系列关键的知识点,以确保芯片的性能、功耗和可靠性等方面得到有效的优化。
本文将介绍几个与芯片设计后端相关的重要知识点。
一、物理实现物理实现是芯片设计的核心环节,它包括了门级综合、布局布线和时序分析等步骤。
1. 门级综合门级综合是将逻辑门级的RTL描述转化为门级网表的过程,其目的是为了将逻辑电路实现为具体的门级电路。
在门级综合过程中,需要考虑到电路延时、功耗和面积等因素,以达到设计的性能指标。
2. 布局布线布局布线是将门级网表转化为物理结构的过程,包括将逻辑电路布置在芯片上,并且进行电路的连线。
布局布线的目标是最小化电路面积,同时保证电路的正常工作。
3. 时序分析时序分析主要是为了确保电路在不同的时钟周期下能够正确工作。
在时序分析中,需要考虑到时钟信号的传输延迟、电路中的时序约束等因素。
通过时序分析,可以预测电路的性能和稳定性。
二、功耗优化功耗是芯片设计中一个非常重要的指标,尤其是在移动设备和低功耗应用中。
在芯片设计的后端阶段,需要采取一系列的措施来对功耗进行优化。
1. 时钟树设计时钟树是芯片中用于分发时钟信号的网络。
设计工程师需要通过合理的时钟树设计,减少时钟信号的传输延迟,从而降低功耗。
2. 电源网设计电源网是芯片中用于供电的网络。
设计工程师需要通过合理的电源网设计,减小供电噪声和功耗损耗,以提高芯片的可靠性和效率。
3. 功耗分析和优化在物理实现的过程中,需要进行功耗分析,以确定芯片的功耗情况,并采取相应的措施进行优化。
例如,通过减少电流泄漏、优化电路结构等方式来降低功耗。
三、时序约束时序约束是芯片设计中的重要指导,它规定了电路中各个信号的时序关系,确保电路能够按照指定的时钟周期进行工作。
1. 输入输出延迟时序约束中需要考虑到输入输出的延迟情况,即在输入信号发生变化后,相应输出信号需要在指定的时间内出现。
芯片fpga验证流程
芯片fpga验证流程1. 原理图设计FPGA验证的第一步是进行原理图设计,即将设计的电路拆分成逻辑门、时钟、控制器等基本部件,并将这些部件根据需要布局和布线。
由于FPGA具有可编程性,因此一般使用HDL(Hardware Description Language)语言进行设计和模拟。
2. 仿真验证在进行FPGA设计之前,需要进行仿真验证,以保证设计的正确性。
使用仿真工具对设计的电路进行模拟,可以快速检测出设计中的错误和不足之处。
仿真验证需要注意时钟同步、数据传输、芯片会场布局等问题。
3. 物理验证在完成电路的设计后,需要进行物理验证。
其中包括板级布局、芯片级布局、测试访问机制等物理设计。
在这一阶段中,需要考虑布局对时序、信号完整性和电磁干扰等方面的影响。
4. 静态时序分析静态时序分析是验证在各种情况下FPGA系统的信号传输时间是否能满足硬性时序要求的一项关键任务。
这一过程通常包括设置时钟时延、根据门级网络实现和约束文件添加关键路径等。
5. 时钟分析时钟是FPGA设计中非常重要的元素,“时钟域过渡捕捉”是指当信号从一个时钟域转到另一个时钟域时,捕捉到信号的过程。
在FPGA设计过程中,出现时钟域过渡捕捉错误会导致系统不可预测的行为,因此时钟分析是不可或缺的一步。
6. 功耗分析FPGA芯片设计中,功耗一般分为静态功耗和动态功耗。
在FPGA设计的过程中,需要对功耗进行有效控制,以确保芯片设计能够满足功耗规格和限制。
这一步骤的目标是将功耗保持在可行范围内,同时确保电路的性能和功能稳定。
7. 芯片测试和验证芯片测试和验证是FPGA设计流程中的最后一步,用于确定芯片设计的正确性、性能和可靠性。
在芯片测试和验证过程中,需要进行硬件测量和软件测试,依据测试结果对设计进行修改和纠正,直到达到设计要求。
以上就是FPGA验证流程的主要步骤。
在实际工作中,还需要根据实际情况进行调整和修改,以达到最佳的验证效果。
芯片设计中的仿真与验证技术研究
芯片设计中的仿真与验证技术研究随着科技的不断发展,各行各业的电子设备越来越普及,芯片设计作为其核心部件的重要性也日益突显。
在芯片设计中,仿真与验证技术是非常重要的工具,其作用在于验证芯片是否符合设计要求,降低生产成本,提高芯片的可靠性和稳定性。
本文将对芯片设计中的仿真与验证技术进行详细探讨。
一、仿真技术仿真技术是指利用计算机模拟实际系统的过程。
在芯片设计中,仿真技术主要用于验证芯片的电路设计和性能。
在设计过程中,芯片的电路结构非常复杂,需要对其进行电气和物理仿真,以确保其性能能够达到设计要求。
在仿真中,可以利用各种仿真工具进行电气仿真、物理仿真和时序仿真等多方面测试,以确保芯片的各项参数符合设计要求。
1.1 电气仿真电气仿真主要是指通过电路分析仿真软件对芯片电路进行模拟,并得到对其性能进行评估的结果。
在芯片设计中,设计者需要进行静态和动态电路仿真,以保证芯片的电路设计合理,并消除电路设计中的缺陷。
对于电路仿真,常用的仿真软件包括SPICE (Simulation Program with Integrated Circuit Emphasis)、HSPICE(Hierarchical Simulation Program with Integrated Circuit Emphasis)和PSPICE等,具有方便、快速、准确等优点。
1.2 物理仿真物理仿真主要是指通过模拟芯片电路的物理过程,对芯片的性能和信号传输进行检测。
在芯片设计中,芯片物理仿真能够帮助设计者提前发现设计缺陷,避免在实际生产过程中出现问题。
物理仿真中,常用的仿真工具有、ANSYS 和 COMSOL Multiphysics 等。
1.3 时序仿真时序仿真是指对芯片的时序性能进行仿真分析,以保证芯片在各种工作情况下性能稳定可靠。
在芯片设计中,时序仿真是非常重要的,主要是为了确保芯片在各种工作状态下都能够正常工作,并保证其性能稳定。
芯片验证策略六部曲
芯片验证策略六部曲验证的策略篇之一:设计的流程通过芯片产品开发的流程图,而在描述中我们将开发流程分为了两条主线:芯片功能的细分不同人员的任务分配即是说不同人员需要在硅前的不同阶段实现和测试芯片的模块功能。
如果我们从另外一个角度看,芯片的开发即是将抽象级别逐次降低的过程,从一开始的抽象自然语言描述到硬件的HDL语言描述再到最后的门级网表。
而在我们已经介绍过RTL设计和门级网表以后,这里需要引入一个目前更高抽象级的描述TLM(事务级模型,transaction level models)。
TLM一般会在早期用于构建硬件的行为,侧重于它的功能描述,不需要在意时序。
同时各个TLM模型也会被集成为一个系统,用来评估系统的整体性能和模块之间的交互。
同时TLM模型在早期的设计和验证中,如果足够准确的话,甚至可以替代验证人员的参考模型,一方面为硬件设计提供了可以参考的设计(来源于系统描述侧),一方面也加速了验证(无需再构建参考模型,而且TLM 模型足够准确反映硬件描述)。
TLM模型的需求和ESL开发早期的芯片开发模式是遵循先从系统结构设计、到芯片设计制造、再到上层软件开发的。
但随着产品开发的压力,一方面我们需要让系统人员、硬件人员和软件人员都保持着充沛的工作量,同时对于一个芯片项目而言,我们也希望硬件人员和软件人员可以尽可能的同时进行开发。
这听起来怎么可能?毕竟芯片还没有制造出来,没有开发板怎么去构建软件呢?在这里我们系统结构人员会在早期构建一个高抽象级的系统,同时该系统必须具备该有的基本功能和各模块的接口保持信息交互,通过将功能描述变成可运行的系统,让硬件人员和软件人员可以在早期就利用该系统进行硬件参照和软件开发。
这种可以为复杂系统建立模型,让多个流程分支并行开发的方式被称作ESL(电子系统级,electronic system-level)开发。
传统的系统设计流程传统的系统设流程是瀑布形式(waterfall)开发的,这种顺序开发的方式存在明显的边界:时间边界:不同的开发子过程之间是保持顺序执行的,几乎没有可以交叠的空间来缩短整体的项目交付时间。
芯片验证流程
芯片验证流程
芯片验证流程是指在芯片设计完成后,对芯片进行测试和验证的一系列流程。
这个过程的目的是确保芯片符合设计规格和客户需求,同时保证其稳定性和可靠性。
芯片验证流程通常包括以下几个步骤。
首先,设计验证阶段,通过电路仿真工具对电路进行验证,确保其满足设计规格。
接下来,功能验证阶段,通过使用开
发板和其他测试工具进行验证,测试芯片的各项功能是否正常。
然后,性能验证阶段,通过使用高性能测试设备,对芯片的性能进行测试和验证,如功耗、速度和可靠性等。
最后,系统验证阶段,通过使用完整的系统环境对芯片进行验证,确保其与系统其他组件的兼容性和稳定性。
在整个验证过程中,需要对芯片进行多次测试和验证,并对测试结果进行分析和评估。
如果发现问题,需要进行适当的修复和再验证。
最终,当芯片通过所有的测试和验证,并满足设计规格和客户需求时,才能进行下一步的生产制造。
总之,芯片验证流程是非常重要的,它可以帮助确保芯片的质量和可靠性,并最终保证产品的成功。
芯片验证方法
芯片验证方法芯片验证是在芯片设计完成后,通过一系列测试和验证手段来确保芯片的功能和性能符合设计要求的过程。
以下是一些常见的芯片验证方法:1.仿真验证:使用数字仿真工具,通过对设计电路进行逻辑仿真和时序仿真来验证芯片的功能和时序性能。
这种方法可以在软件环境中模拟电路的行为,快速检测设计中的错误和问题。
2.逻辑等价性检查:通过对比设计电路与参考电路的逻辑等价性,来验证设计电路的正确性。
这种方法可以检测出设计中的逻辑错误,确保设计与预期行为一致。
3.高级验证:使用专门的验证语言(如SystemVerilog和Universal Verification Methodology)编写测试程序,对芯片进行全面的功能、性能和时序验证。
这种方法可以验证复杂的功能和时序关系,并捕捉潜在的设计问题。
4.物理验证:在设计完成后,进行物理验证,包括布局和验证电路的连线、完整性和可靠性。
这种方法确保芯片的物理布局和连接满足设计规范和要求。
5.边界扫描测试:通过在芯片上插入测试电路,对芯片进行边界扫描测试,以检测芯片的逻辑错误和故障。
这种方法可以帮助发现设计中的问题,并提高芯片的可靠性。
6.功耗验证:通过对芯片进行功耗分析和验证,确保芯片在正常运行时的功耗满足设计要求。
这种方法可以优化芯片的功耗性能,并提高芯片的能效。
7.硅验证:在芯片制造完成后,进行硅验证,即将芯片进行实际测试和验证。
通过在实际硅芯片上运行测试程序,检测芯片的功能、性能和时序等方面是否符合设计要求。
这些方法可以单独或结合使用,以确保芯片设计的正确性、可靠性和性能等方面的要求。
芯片验证是一个复杂和关键的过程,需要综合使用多种验证手段和工具,以确保芯片的质量和可靠性。
IC后端流程(初学必看)
校外IC后端实践陈述之袁州冬雪创作本教程通过对synopsys公司给的lab停止培训,从verilog代码到版图的整个流程(当然只是基本流程,因为真正一个大型的设计不是那末简单就完成的),此教程的目标就是为了让大家尽快懂得数字IC设计的大概流程,为以后学习建立一个基础.此教程只是自己探索实验的成果,其实不代表内容都是正确的,只是为了说明大概的流程,外面一定还有很多未完善而且有错误的地方,我在此后的学习当中会对其逐一完善和修正.此后端流程大致包含一下内容:1.逻辑综合(工具DC 逻辑综合是干吗的就不必诠释了把?)2.设计的形式验证(工具formality)形式验证就是功能验证,主要验证流程中的各个阶段的代码功能是否一致,包含综合前RTL代码和综合后网表的验证,因为如今IC设计的规模越来越大,如果对门级网表停止动态仿真的话,会花费较长的时间(规模大的话甚至要数星期),这对于一个对时间要求严格(设计周期短)的asic设计来讲是不成容忍的,而形式验证只用几小时即可完成一个大型的验证.别的,因为版图后做了时钟树综合,时钟树的拔出意味着进入布图工具的原来的网表已经被修改了,所以有需要验证与原来的网表是逻辑等价的.3.静态时序分析(STA),某种程度上来讲,STA是ASIC设计中最重要的步调,使用primetime对整个设计布图前的静态时序分析,没有时序违规,则进入下一步,否则重新停止综合.(PR后也需作signoff的时序分析)4.使用cadence公司的SOCencounter对综合后的网表停止自动规划布线(APR)5.自动规划以后得到详细的延时信息(sdf文件,由寄生RC和互联RC所组成)反标注到网表,再做静态时序分析,与综合近似,静态时序分析是一个迭代的过程,它与芯片规划布线的接洽非常慎密,这个操纵通常是需要执行许多次才干知足时序需求,如果没违规,则进入下一步.6.APR后的门级功能仿真(如果需要)7.停止DRC和LVS,如果通过,则进入下一步.8.用abstract对此lab实验停止抽取,发生一个lef文件,相当于一个hard macro.9.将此macro作为一个模块在别的一个top设计中停止调用.10.设计一个新的ASIC,第二次设计,我们需要添加PAD,因为没有PAD,就不是一个完整的芯片,详细操纵下面会说.11.重复第4到7步1.逻辑综合1)设计的verilog代码2)综合之前,我们要选取库,写好约束条件,修改dc的启动文件,方针库选择TSMC(此设计都是用TSMC18的库)的typical.db.(选择max库会比较好)Dc的饬令众多,但是最基本的饬令差未几,此设计的约束文件饬令如下:create_clock -period 10 [get_ports clk] //用于时钟的创建set_clock_latency -source -max 0.2 [get_ports clk] //外部时钟到core的clk连线延时set_clock_latency -max 0.1 [get_ports clk] //core的clk到寄存器clk端的net连线延时set_clock_uncertainty -setup 2 [get_ports clk] //时钟延时的不确定性,求setup违规时会被计算出来set_clock_uncertainty –hold 1 【all_clocks】set_input_delay -max 0.5 -clock clk[get_ports [list [remove_from_coll [all_inputs] clk] ] //输入延时,外部信号到input端的连线延时set_output_delay -max 0.5 -clock clk [all_outputs] //输出延时set_driving_cell -lib_cell INVX4 [all_inputs] //输入端的驱动强度set_load -pin_load 0.0659726 [all_outputs] //输出端的驱动力set_wire_load_model -name tsmc18_wl10 -library typical //外部net的连线模子set_wire_load_mode enclosed //定义建模连线负载相关形式set_max_area 0compilereport_timingreport_constraintchange_names -rule verilog –hierset_fix_multiple_ports_net –all//输出网表,自动规划布线需要//输出ddc//输出延时文件,静态时序分析时需要//输出约束信息,自动规划布线需要3)逻辑综合启动design_vision.R输入约束文件.F4)时序分析综合以后我们需要分析一下时序,看时序是否符合我们的要求,综合实际上是一个setup时间的知足过程,但是我们综合的时候,连线的负载只是库提供的(即上面的wire_load),其实不是实际的延时,所以一般做完综合以后,时间余量(slack)应该为时钟的30%(经历值),以便为后面实际规划布线留下充足的延时空间.因为如果slack太小,甚至接近于0,虽然我们看起来是没有时序违规的,但是实际规划以后,时序必定无法知足.使用report_timing饬令,可以检查时序分析陈述:****************************************Report : timing-path full-delay max-max_paths 1-sort_by groupDesign : muxDate : Fri Jul 2 12:29:44 2010****************************************Operating Conditions: typical Library: typical(模子库)Wire Load Model Mode: enclosedStartpoint: data2[4] (input port clocked by clk)Endpoint: dataout_reg_15_(rising edge-triggered flip-flop clocked by clk)Path Group: clkPath Type: maxDes/Clust/Port Wire Load Model Library------------------------------------------------mux tsmc18_wl10 typical(线载模子及库)Point Incr Path--------------------------------------------------------------------------input external delay0.50 0.50 fdata2[4] (in)0.01 0.51 fmult_14/b[4] (mux_DW_mult_uns_0)0.00 0.51 fmult_14/U131/Y (INVX1) 0.54 1.05 rmult_14/U161/Y (NOR2X1) 0.14 1.18 fmult_14/U39/S (CMPR42X1) 0.68 1.87 fmult_14/U12/CO (ADDFX2) 0.32 2.19 fmult_14/U11/CO (ADDFX2) 0.23 2.42 fmult_14/U10/CO (ADDFX2) 0.23 2.65 fmult_14/U9/CO (ADDFX2) 0.23 2.88 fmult_14/U8/CO (ADDFX2) 0.23 3.10 fmult_14/U7/CO (ADDFX2) 0.23 3.33 fmult_14/U6/CO (ADDFX2) 0.23 3.56 fmult_14/U5/CO (ADDFX2) 0.23 3.79 fmult_14/U4/CO (ADDFX2) 0.23 4.02 fmult_14/U3/CO (ADDFX2) 0.23 4.25 fmult_14/U2/CO (ADDFX2) 0.22 4.47 fmult_14/product[15] (mux_DW_mult_uns_0) 0.00 4.47 fdataout_reg_15_/RN (DFFTRXL) 0.00 4.47 fdataout_reg_15_/CK (DFFTRXL) 0.00 10.20 r----------------------------------------------------------------------------------------------------------------------------------------------------我们来看以上陈述,dc陈述的时候会显示出关键途径,即延时最大的途径,时序分析包含两段,前面一段是信号的延迟时间,即data arrival time 为4.47,下面是计算要求时间,也即相对于时钟,设计所能忍受的最大延时,由于到达寄存器clk端延时,即clock network delay,所以设计增加了0.30的余量,同样由于时钟的不确定度(可以提前也可以延后0.1),我们取最坏情况,就是时钟超前0.1,则时间余量减去0.1,最后一个是门的建立时间要求,是0.19,最后得到数据的要求时间.Slack是要求时间减去到达时间的差值,slack越大越好.越大说明留给规划布线的时序越宽松.从陈述中我们看出,时序余量为5.55,说明时序达到了要求,足够知足我们以后规划布线的时序要求.当然,我们有专门的时序分析工具,primetime,下面会稍微先容.2.形式验证1)怎么包管综合前和综合后的网表逻辑功能是一致的呢,对门级网表停止动态仿真,又太华侈时间,于是,一款强大的验证工具formality,给了我们很好的帮忙.2)形式验证数据准备:综合前RTL代码,综合后的网表,综合所用到的库.3)验证过程如下:1.首先我们打开formality,饬令为fm_shell(饬令行界面),formality(图形界面).初学者一般使用图形界面,使用图形界面的时候,工具会自动发生一个log文件,记录饬令,我们可以将这个文件内容做一个fms格式,这样在下次验证的时候可使用饬令界面.2.打开formality如下第一步:首先我们加入原RTL代码,reference->read_design file->verilog->mux.v,选择好以后load file第三步:设置top名 reference->set top design 我们选择mux为top名同样的方法对网表停止设置(第二个菜单栏implementation)然后转到第四栏,点击run matching最后转到第五栏,verify,如果网表无错,会显示验证通过.3 静态时序分析静态时序分析主要针对大型ASIC设计,4 自动规划布线1)数据准备第一:需要综合后的网表以及时序约束第二:需要自动规划布线的物理库(lef文件,这里用到tsmc18_6lm_cic.lef, tsmc18_6lm_antenna_cic.lef)为了可以懂得lef文档的作用,这里对lef做简单的先容,lef一般分为两种:一种是技术物理库,主要包含工艺信息,设计规则信息,金属通孔信息等.下例是对金属一层的定义,TYPE指明METAL1是可布线层,WIDTH 定义的是METAL1的默许布线宽度,SPACING用于设定METAL1布线间距.DIRECTION HORIZONTAL指明METAL1是用于水平走线,当然这其实不料味着它不克不及垂直走线,在一些布线资源较少的区域,还是可以选择垂直布线的.详细先容,可以参考相关技术文档.LAYER METAL1TYPE ROUTING ;WIDTH 0.230 ;MAXWIDTH 9.9 ;AREA 0.202 ;SPACING 0.230 ;SPACING 0.6 RANGE 10.0 100000.0 ;PITCH 0.560 ;DIRECTION HORIZONTAL ;EDGECAPACITANCE 9.1090e-05 ;END METAL1别的一种就是单元物理库,定义了单元库中各单元的信息,文件又有两部分一种是SITE语句对规划(placement)最小单位的定义,另外一部分是采取MACRO语句对单元属性及几何形状的描绘,下例是对一个与门为例来看看lef是如何描绘它的.MACRO是单元定义的关键字,每个MACRO代表一个单元.CLASS core说明该单元是用于芯片的核心区,SIZE确定了单元的面积大小,比方5.04是代表该单元的高度,后面我们做单元供电route的时候,可以看到它们的宽度就是这个数值.再后面就是定义引脚A,B,Y,VDD,VSS等.MACRO AND2X1CLASS CORE ;FOREIGN AND2X1 0.000 0.000 ;ORIGIN 0.000 0.000 ;LEQ AND2XL ;SIZE 2.640 BY 5.040 ;SYMMETRY x y ;SITE tsm3site ;PIN YDIRECTION OUTPUT ;PORTLAYER METAL1 ;RECT 2.355 2.380 2.500 2.660 ; ENDEND YPIN BDIRECTION INPUT ;PORTLAYER METAL1 ;RECT 0.800 2.315 1.215 2.895 ; ENDEND BPIN ADIRECTION INPUT ;PORTLAYER METAL1 ;RECT 0.150 1.820 0.565 2.315 ; ENDEND APIN VSSDIRECTION INOUT ;USE ground ;SHAPE ABUTMENT ;PORTLAYER METAL1 ;RECT 1.790 -0.400 2.640 0.400 ; RECT 1.450 -0.400 1.790 0.575 ; RECT 0.000 -0.400 1.450 0.400 ; ENDEND VSSPIN VDDDIRECTION INOUT ;USE power ;SHAPE ABUTMENT ;PORTLAYER METAL1 ;RECT 1.755 4.640 2.640 5.440ENDEND VDDOBSLAYER METAL1 ;RECT 1.835 1.935 1.885 2.355 ;ENDEND AND2X1第三:时序库文件,typical.lib,也就是时序文件,定义了门的各种时序信息,某种意义来讲,这个和综合使用的db库是等价的.2)规划布线过程:第一步:打开encounter 把数据输入,别的在advanced栏的Power相应位置填上VDD,和VSS.如下图,设置完以后,记得把设置的配置文件做一个save以便于下次使用第二步:打开以后,我们可以看到芯片区域,左边粉红色的就是尺度单元,中间阿谁就是我们要设计的区域,64%是指cell面积的占有率,一般来讲节制在70%左右,布线的时候不会引起拥塞.别的我们需要对芯片停止稍微的更改,Floorplan->specify floorplan.,将core to IO那些项都填上45,留给电源环的放置.第三步:添加电源环设置如下图,NET填写VDD和VSS,layer选择顶层的两层金属,宽度设置为20(这个不定,可以根据实际设计来定),offset选择center in channel,则电源环会被设置在IO与core之间.之后电源环就加出来了,当然这是一个小电路,电源规划比较简单,对于一个复杂的电路,还需要横竖添加stripes,降低IRdrop.第四步:自动规划以及安插尺度单元,因为此设计较小,并没有block,所以可以直接停止尺度单元的放置.Place->standard cells and blocaks->OK然后我们发现尺度单元已经被加出来了:第五步:安插好了以后,我们需要将电源,地,等接口先毗连起来,首先我们在floorplan中选择global net connection,分别将VDD,VSS等都毗连起来.然后我们需要specify route将电源和地线先毗连起来,选择route->specify route因为我们这个设计只有尺度单元,所以我们只要选择尺度单元的布线即可:完成以后,点击OK,会得到下面的图:每行的row都有线毗连到外面的电源环第六步:时钟树综合(CTS),这是一个APR设计中最重要的一环,为什么要停止时钟树综合呢,简单地说,因为信号传输的延时,我们需要让相应途径的时钟途径的也具有同样的延时,通过添加时钟缓冲器的方法,来消除各途径的建立时间,详细请参考相关书籍和资料.添加好时钟树以后的版图如下:加了时钟树以后的版图密集了很多,因为加了很多buf.时钟树的剧本:AutoCTSRootPin clkPeriod 10nsMaxDelay 500ps # set_clock_latencyMinDelay 0ps # set_clock_latencyMaxSkew 100psSinkMaxTran 400psBufMaxTran 400psObstruction NODetailReport YESPadBufAfterGate NORouteClkNet NOPostOpt YESOptAddBuffer YESOptAddBufferLimit 100NoGating NOBuffer CLKBUFX1 CLKBUFXL CLKBUFX2 CLKBUFX3 CLKBUFX4 CLKBUFX8 CLKBUFX12 CLKBUFX16 CLKBUFX20 CLKINVXL CLKINVX1 CLKINVX2 CLKINVX3 CLKINVX4 CLKINVX8 CLKINVX12 CLKINVX16 CLKINVX20END然后将剧本选中,并停止时钟树综合.第七步:优化设计,饬令optDesign –postCTS,然后report_timing检查时序陈述,确定无违规,再停止完全布线.第八步:完全布线,route ->nanoroute->route之后得到的版图如下所示:第九步:保管设计,提取需要的数据.这里特别注意提取gds文件的时候,需要指定库文件中的streamOut.map文件,和merge gds(tsmc18_core.gds)文件,如图所示保管网表,并将此版图提取的网表做一次formality,与原代码匹配成功.5 第二次静态时序分析用版图实际提取的延时文件停止6 APR后仿真用modelsim对版图提取的网表和sdf文件停止仿真.7 用calibre对版图停止DRC及其LVS验证在做这步之前,我们需要把相关的文档拷贝到icfb的工作目次下Encounter导出的gds文档:这里是mux8.gds(注意merge库的map 文件)技术文档如:,可以在厂家提供的库中去找Caliber验证文件:drc,lvs文档第一步:将encounter的版图数据导入virtuoso,打开icfb&,选择file->import->stream然后将版图信息和技术文件填入:导入成功以后会出现我们所做的库,mux就是我们encounter中所画的版图.我们把版图打开:这就是我们所画的版图然后在此停止drc,和lvs,通过以后再停止下面的工作.第二步:drc检查此处有错,其实不是逻辑有问题,是因为密度不敷的问题,需要在encounter阶段加FILLER,FILLER是与逻辑无关的,因为代工厂的流片加工要求,需要加的,密度不敷,加工容易引起问题.所以如果DRC 报近似错误,如果是需要流片的版图,除非代工厂同意,否则必须清除这些错误.第三步:lvs检查1)Lvs检查之前,我们需要把综合后的verilog文件转换成网表文件,用于lvs,方法如下:终端下执行:v2lvs -v mux.v -l tsmc18_lvs.v -o CHIP.spi -s tsmc18_lvs.spi -c cic_ -ncalibre -lvs -spice layout.spi -hier -auto Calibre-lvs-cur_soce,之后会得到一个的网表文件.()2)用来lvs的网表我们选择之前导出:然后run lvs,匹配成功!8 用abstract对模块停止抽取我们把8*8乘法器模块用abstract工具导出lef,作为硬核,用于后面自动规划布线的调用,我们可以从此试验中找到模数混合自动版图的设计思想.Abstract Def=>Lef第一步:创建一个新的library,并关联一个tf文件.注:(1)不需要输入streamOut.map也不必点上(no merge)不需要更改.Top Cell Name 为空第五步:打开 library manager 在mux库里打开mux的layout,并选择tools=>layout.第六步:选择 Edit=>Search ,点击 Add Criteria ,如下设置,选择aplly ,在选择 WordStr All.第七步:保管退出第八步:打开 abstract,并打开mux库.然后把mux模块从core导入到block当中,方法:点击mux,然后cell=>move=>block=>OK.第九步:点击GDS图中label,然后点击Q检查Properity.看看是什么层,然后看看下面的net的Properity是什么层,以及是什么purpose.层:METAL3,Purpose:pin.详细含义主要看abstract UG.<1> 点击,输入Map text labels to pinsMap text labels to pins 的书写格式及含义参考abstract UG.<2>点击<3>点击<4> Export lef之后我们得到一个该模块的lef文件,下面我们就用这个模块做一次调用.9将此macro作为一个模块在别的一个top设计中停止调用.第一步:首先我们还是回到综合,我们重新设计一个top,这个top将包含新的逻辑功能,之前的mux模块,还有PAD模块.这个设计的大概框图如下:PDIDGZ为数字输入IO口PDO04CDG为数字输出IO口PVDD1DGZ 为供电PAD高电端PVSS1DGZ 为供电PAD的地电端Multiple为之前做的宏模块Mux为新加逻辑第二步,代码的改写:我们重新编写过verilog代码(带PAD),带PAD做综合有个好处,可以不必设置输入输出端口的驱动,因为PAD的驱动已经很大了,这样综合出的成果更接近实际.新的verilog代码如下:module mux_1 (clk,clr,a,b,y);//(这里我们引用了新的逻辑,注意这个mux_1和之前的没半点关系,只是为了体现调用关系随便加的一个而已)input clk,clr;input [7:0] a,b;output [15:0] y;reg [15:0] y;always @(posedge clk)beginif(!clr)beginy<=0;endelsebeginy<=a*b;endendendmodulemodulePAD(clk_pcb,clk_core,clr_pcb,clr_core,data1_pcb,data1_core,da ta2_pcb,data2_core,dataout_core,dataout_pcb);(这是PAD模块,注意连系前面的框图是想想是如何加的)input clk_pcb,clr_pcb;output clk_core ,clr_core;input [7:0] data1_pcb,data2_pcb;output [7:0] data1_core,data2_core;input [15:0] dataout_core;output [15:0] dataout_pcb;PDIDGZ PAD_CLK (.PAD(clk_pcb),.C(clk_core));PDIDGZ PAD_CLR (.PAD(clr_pcb),.C(clr_core));PDIDGZ PAD_DATA1_0 (.PAD(data1_pcb[0]),.C(data1_core[0])); PDIDGZ PAD_DATA1_1 (.PAD(data1_pcb[1]),.C(data1_core[1])); PDIDGZ PAD_DATA1_2 (.PAD(data1_pcb[2]),.C(data1_core[2])); PDIDGZ PAD_DATA1_3 (.PAD(data1_pcb[3]),.C(data1_core[3])); PDIDGZ PAD_DATA1_4 (.PAD(data1_pcb[4]),.C(data1_core[4])); PDIDGZ PAD_DATA1_5 (.PAD(data1_pcb[5]),.C(data1_core[5])); PDIDGZ PAD_DATA1_6 (.PAD(data1_pcb[6]),.C(data1_core[6])); PDIDGZ PAD_DATA1_7 (.PAD(data1_pcb[7]),.C(data1_core[7])); PDIDGZ PAD_DATA2_0 (.PAD(data2_pcb[0]),.C(data2_core[0]));PDIDGZ PAD_DATA2_1 (.PAD(data2_pcb[1]),.C(data2_core[1])); PDIDGZ PAD_DATA2_2 (.PAD(data2_pcb[2]),.C(data2_core[2])); PDIDGZ PAD_DATA2_3 (.PAD(data2_pcb[3]),.C(data2_core[3])); PDIDGZ PAD_DATA2_4 (.PAD(data2_pcb[4]),.C(data2_core[4])); PDIDGZ PAD_DATA2_5 (.PAD(data2_pcb[5]),.C(data2_core[5])); PDIDGZ PAD_DATA2_6 (.PAD(data2_pcb[6]),.C(data2_core[6])); PDIDGZ PAD_DATA2_7 (.PAD(data2_pcb[7]),.C(data2_core[7])); PDO04CDG PAD_DATAOUT_0 (.I(dataout_core[0]),.PAD(dataout_pcb[0]));PDO04CDG PAD_DATAOUT_1 (.I(dataout_core[1]),.PAD(dataout_pcb[1]));PDO04CDG PAD_DATAOUT_2 (.I(dataout_core[2]),.PAD(dataout_pcb[2]));PDO04CDG PAD_DATAOUT_3 (.I(dataout_core[3]),.PAD(dataout_pcb[3]));PDO04CDG PAD_DATAOUT_4 (.I(dataout_core[4]),.PAD(dataout_pcb[4]));PDO04CDG PAD_DATAOUT_5 (.I(dataout_core[5]),.PAD(dataout_pcb[5]));PDO04CDG PAD_DATAOUT_6 (.I(dataout_core[6]),.PAD(dataout_pcb[6]));PDO04CDG PAD_DATAOUT_7 (.I(dataout_core[7]),.PAD(dataout_pcb[7]));PDO04CDG PAD_DATAOUT_8 (.I(dataout_core[8]),.PAD(dataout_pcb[8]));PDO04CDG PAD_DATAOUT_9 (.I(dataout_core[9]),.PAD(dataout_pcb[9]));PDO04CDG PAD_DATAOUT_10 (.I(dataout_core[10]),.PAD(dataout_pcb[10]));PDO04CDG PAD_DATAOUT_11 (.I(dataout_core[11]),.PAD(dataout_pcb[11]));PDO04CDG PAD_DATAOUT_12 (.I(dataout_core[12]),.PAD(dataout_pcb[12]));PDO04CDG PAD_DATAOUT_13 (.I(dataout_core[13]),.PAD(dataout_pcb[13]));PDO04CDG PAD_DATAOUT_14 (.I(dataout_core[14]),.PAD(dataout_pcb[14]));PDO04CDG PAD_DATAOUT_15(.I(dataout_core[15]),.PAD(dataout_pcb[15]));PVDD1DGZ vdd1 (); (现在不必加的)PVDD1DGZ vdd2 ();PVDD1DGZ vdd3 ();PVDD1DGZ vdd4 ();PVSS1DGZ vss1 ();PVSS1DGZ vss2 ();PVSS1DGZ vss3 ();PVSS1DGZ vss4 ();PCORNERDG c1 ();PCORNERDG c2 ();PCORNERDG c3 ();PCORNERDG c4 ();endmodule#############################顶层模块#########################module top(clock,clear,da1,da2,dataout_out);input clock,clear;input [7:0] da1,da2;output [15:0] dataout_out;wire clk_core,clr_core;wire [7:0] data1_core,data2_core;wire [15:0] dataout_core;wire [15:0] y;PADPAD_TOP(.clk_pcb(clock),.clk_core(clk_core),.clr_pcb(clear),. clr_core(clr_core),.data1_pcb(da1),.data1_core(data1_core),.d ata2_pcb(da2),.data2_core(data2_core),.dataout_core(dataout_c ore),.dataout_pcb(dataout_out));mux_1 mux_1 (.clk(clk_core),.clr(clr_core),.a(data1_core),.b(data2_core), .y(y));mux mutiple (.clk(clk_core),.clr(clr_core),.data1(y[15:8]),.data2(y[7:0]) ,.dataout(dataout_core));(这里是对硬核的调用)endmodule第三步:逻辑综合注意的是,我们在逻辑综合之前,需要加如mux的db库文件,此文件由encounter规划布线以后发生的延时文件再颠末pt静态时序分析以后发生.我们给顶层模块加如约束:Current_design toplinkcreate_clock -period 10 [get_ports clock]set_clock_latency -source -max 0.2 [get_ports clock]set_clock_latency -max 0.1 [get_ports clock]set_clock_uncertainty -setup 0.01 [get_ports clock]set_input_delay -max 0.5 -clock clock [all_inputs]set_output_delay -max 0.5 -clock clock [all_outputs]#set_driving_cell -lib_cell INVX4 [all_inputs]#set_load -pin_load 0.0659726 [all_outputs]set_wire_load_model -name tsmc18_wl10 -library typicalset_wire_load_mode enclosedset_dont_touch mux(注意此处,就是综合的时候不针对mux停止综合,综合工具会自动逾越鸿沟对其他逻辑停止综合)set_dont_touch_network [all_clocks]compile -boundarychange_names -rule verilog -hier第四步:规划布线用综合得到的网表(top.sv)和约束文件(sdc).并将之前的mux模块的lef文档准备好.这里碰到了一个问题,在逻辑综合之前的代码我已经加如了PAD的VDD ,VSS和corner,但是综合完以后就不见了,原因不明,这时在规划之前就要手动添加上去.数据准备:时序文件:对应于上面的lib文件,typical.lib,block的lib(由PT发生),PAD的libIo文件:可以自己定义顶层端口的位置(下面会介如何做io文件)Sdc文件:综合后发生的约束文件.Io文件的设置,主要由四个方向决议,N,W,S,E就和我们英文里的四个方向的首字母一样,当然还有NW,WS,SE,NE,四个角,是用与corner的摆放,该设计有34个口,外加8个供电PAD,加上四个CORNER总共有46个PAD,主要的是42个PAD,我们可以将这42个PAD放到自己想设置的位置,对于一个真正的设计,要思索以后连线的长度,外部模块摆放位置等,来合理安插io的位置.如图所示为该设计的PAD规划图:根据此规划图,我们对此设计的io文件编辑如下,io文件对应实际规划中的规则是,N是由io文件列表的顺序从左到右的放置,W方向是由下到上的放置,S同N,E同W.Pad: PAD_TOP/PAD_DATAOUT_12 NPad: PAD_TOP/PAD_DATAOUT_13 NPad: PAD_TOP/PAD_DATAOUT_14 NPad: PAD_TOP/PAD_DATAOUT_15 NPad: PAD_TOP/PAD_CLK NPad: PAD_TOP/vss2 NPad: PAD_TOP/vdd2 NPad: PAD_TOP/PAD_DATA1_0 NPad: PAD_TOP/PAD_DATA1_1 NPad: PAD_TOP/PAD_DATA1_2 NPad: PAD_TOP/PAD_DATA1_3 NPad: PAD_TOP/c1 NEOrient: R0Pad: PAD_TOP/c2 SWPad: PAD_TOP/PAD_DATAOUT_4 WPad: PAD_TOP/PAD_DATAOUT_5 WPad: PAD_TOP/PAD_DATAOUT_6 WPad: PAD_TOP/PAD_DATAOUT_7 WPad: PAD_TOP/vdd1 WPad: PAD_TOP/vss1 WPad: PAD_TOP/PAD_DATAOUT_8 WPad: PAD_TOP/PAD_DATAOUT_9 WPad: PAD_TOP/PAD_DATAOUT_10 WPad: PAD_TOP/PAD_DATAOUT_11 WPad: PAD_TOP/c3 NWPad: PAD_TOP/PAD_DATAOUT_0 SPad: PAD_TOP/PAD_DATAOUT_1 SPad: PAD_TOP/PAD_DATAOUT_2 SPad: PAD_TOP/PAD_DATAOUT_3 WPad: PAD_TOP/PAD_CLR SPad: PAD_TOP/vdd3 SPad: PAD_TOP/vss3 SPad: PAD_TOP/PAD_DATA2_7 SPad: PAD_TOP/PAD_DATA2_6 SPad: PAD_TOP/PAD_DATA2_5 SPad: PAD_TOP/PAD_DATA2_4 SPad: PAD_TOP/PAD_DATA2_3 EPad: PAD_TOP/PAD_DATA2_2 EPad: PAD_TOP/PAD_DATA2_1 EPad: PAD_TOP/PAD_DATA2_0 EPad: PAD_TOP/vdd4 EPad: PAD_TOP/vss4 EPad: PAD_TOP/PAD_DATA1_7 EPad: PAD_TOP/PAD_DATA1_6 EPad: PAD_TOP/PAD_DATA1_5 EPad: PAD_TOP/PAD_DATA1_4 E一切准备好以后,我们导入所有的准备数据会看到一个有PAD和宏模块的的芯片图因为PAD的面积较大,所以其他单元和模块看起来就比较小了.第五步:规划。
芯片后端岗位职责
芯片后端岗位职责
芯片后端工程师(Backend Engineer)主要负责芯片后端设计和实现的工作,也被称为IC设计工程师。
他们负责设计芯片电路和实现电路功能。
下面是芯片后端工程师的岗位职责:
1. 完成芯片物理设计:根据芯片设计的规格要求,完成芯片的编码、物理实现、布局、布线和检测方案编写等工作,确保整个芯片符合规范要求。
2. 芯片布局:根据芯片的规格要求和设计规范,设计芯片的布局方案,使用布局工具进行布局,并进行布局优化,以确保芯片布局的准确性、稳定性和性能。
3. 芯片布线:完成芯片的布线工作,确保芯片电路的稳定性和性能。
4. 物理验证:完成芯片物理实现后,进行物理验证,确保芯片满足规格要求。
5. 芯片封装:根据芯片的需求,进行芯片封装设计和实现,实现芯片的物理引脚与PCB设计的连接。
6. 芯片测试:根据芯片设计的功能和测试规格,完成芯片测试程序的编写和测试,并生成相关测试报告。
7. 测试数据分析:对芯片测试中的数据进行分析,找出芯片的问题并制定解决方案。
8. 与团队沟通:与芯片设计团队沟通,确保芯片的整体设计符合规范,并在芯片后端设计过程中解决问题。
综上所述,芯片后端工程师是一项重要的工作,需要高度专业技能,技术知识和负责任的工作态度,将为芯片设计和制造提供有力的支持和保障。
芯片验证方法
芯片验证方法芯片验证方法主要包括仿真验证、验证台验证和实际验证三个阶段。
仿真验证是在芯片设计完成后,通过电路仿真工具对芯片功能模块进行功能验证和性能验证的过程。
验证台验证是将芯片设计加载到验证平台上,并通过外部控制器和测试仪器来对芯片进行功能验证和性能验证。
实际验证是将芯片设计加载到实际硬件平台上,并通过真实的测试条件来对芯片进行功能验证和性能验证。
在芯片验证过程中,工程师们需要根据芯片设计的特点和要求来选择合适的验证方法和工具。
下面我们将详细介绍芯片验证方法的具体步骤和常用工具。
一、仿真验证1. 仿真验证的概念仿真验证是在芯片设计完成后,通过电路仿真工具对芯片设计进行功能验证和性能验证的过程。
通过仿真验证,可以验证芯片的功能模块是否符合设计要求,排除设计错误,提高芯片设计的可靠性和正确性。
2. 仿真验证的步骤(1)建立仿真模型:首先需要根据芯片设计的功能模块和性能指标来建立相应的仿真模型,包括模块间的连接关系和信号传输路径。
(2)编写测试用例:根据芯片设计的功能需求和性能要求,编写相应的测试用例来对芯片进行功能验证和性能验证。
(3)仿真运行:通过电路仿真工具运行测试用例,对芯片进行功能验证和性能验证,并分析仿真结果。
(4)优化设计:根据仿真结果,对芯片设计进行调整和优化,以满足功能和性能要求。
3. 常用仿真工具常用的电路仿真工具包括Cadence、Synopsys、Mentor等,这些仿真工具提供了丰富的仿真模型和验证功能,可以帮助工程师们高效地进行芯片验证工作。
二、验证台验证1. 验证台验证的概念验证台验证是将芯片设计加载到验证平台上,并通过外部控制器和测试仪器来对芯片进行功能验证和性能验证的过程。
通过验证台验证,可以对芯片在实际测试环境下的功能和性能进行验证,更接近实际应用场景。
2. 验证台验证的步骤(1)搭建验证平台:首先需要搭建相应的验证平台,在平台上加载芯片设计和外部测试设备,并建立相应的测试连接。
ic开发验证方式
ic开发验证方式IC(集成电路)开发的验证方式可以分为以下几种:1. 仿真验证:通过使用电子设计自动化(EDA)工具进行电路级或系统级仿真,验证电路的功能和性能。
仿真可以帮助检测潜在的设计错误、验证电路的工作状态以及评估性能参数。
常见的仿真工具包括SPICE(模拟电路仿真程序)、Verilog和VHDL(硬件描述语言)等。
2. 逻辑验证:逻辑验证主要用于验证数字电路的功能和正确性。
通过使用逻辑设计自动化工具(如逻辑综合和逻辑仿真工具)来验证电路设计是否满足预期的布尔逻辑行为。
常见的逻辑验证工具包括模型仿真器(如ModelSim、VCS等)和形式验证工具(如FormalProver)等。
3. 物理验证:物理验证主要针对集成电路的版图、布局和物理约束进行验证,以确保电路在物理层面上满足要求。
物理验证包括布局布线验证、时序收敛验证、功耗分析等。
常见的物理验证工具包括Calibre、IC Validator、PrimeTime 等。
4. FPGA/ASIC验证:对于FPGA(现场可编程门阵列)或ASIC(专用集成电路)的开发,通常需要进行硬件验证。
这种验证方式涉及将设计编译到FPGA或ASIC芯片上,然后进行测试和调试以确认其功能和性能。
常见的硬件验证工具包括ModelSim、Xilinx ISE、Cadence Incisive等。
5. 实际验证:在所有虚拟验证完成后,需要将设计制造成实际的芯片,并使用实际的测试设备进行验证。
这包括芯片生产、封装、测试和验证等步骤。
实际验证通常需要借助自动测试设备(ATE)来进行测试和验证。
以上是一些常见的IC开发验证方式,实际使用的验证方法可能会因设计需求和开发流程而有所不同。
验证过程中的重要原则是确保设计在各个层面上都符合预期要求,并最大程度地减少设计错误和风险。
ic的前端设计和后端设计流程
ic的前端设计和后端设计流程根据个人掌握的知识,写写自己的理解。
前端设计(也称逻辑设计)和后端设计(也称物理设计)并没有统一严格的界限,涉及到与工艺有关的设计就是后端设计。
1.规格制定芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求。
2.详细设计Fabless根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。
3.HDL编码使用硬件描述语言(VHDL,Verilog HDL,业界公司一般都是使用后者)将模块功能以代码来描述实现,也就是将实际的硬件电路功能通过HDL语言描述出来,形成RTL (寄存器传输级)代码。
4.仿真验证仿真验证就是检验编码设计的正确性,检验的标准就是第一步制定的规格。
看设计是否精确地满足了规格中的所有要求。
规格是设计正确与否的黄金标准,一切违反,不符合规格要求的,就需要重新修改设计和编码。
设计和仿真验证是反复迭代的过程,直到验证结果显示完全符合规格标准。
仿真验证工具 Synopsys的VCS。
5.逻辑综合――Design Compiler仿真验证通过,进行逻辑综合。
逻辑综合的结果就是把设计实现的HDL代码翻译成门级网表(netlist)。
综合需要设定约束条件,就是你希望综合出来的电路在面积,时序等目标参数上达到的标准。
逻辑综合需要基于特定的综合库,不同的库中,门电路基本标准单元(standard cell)的面积,时序参数是不一样的。
所以,选用的综合库不一样,综合出来的电路在时序,面积上是有差异的。
一般来说,综合完成后需要再次做仿真验证(这个也称为后仿真,之前的称为前仿真)逻辑综合工具Synopsys的Design Compiler。
6.STAStatic Timing Analysis(STA),静态时序分析,这也属于验证范畴,它主要是在时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例(violation)。
XTY数值数据处理器的后端设计及验证
第19卷第3期邯郸学院学报2009年9月Vol.19No.3Journal of Handan College Sept.2009XTY数值数据处理器的后端设计及验证张俊峰,江涛(西安通信学院通信装备管理系,陕西西安710106)————————————————————————————————————————————摘要:数值数据处理器(NDP)芯片已问世多年,但对类xx87系列的研究仍在持续,由于xx87系列的技术难度以及国外技术封锁等原因,国内相应的对其研究成果极为鲜见.本文旨在开发具有我国自主知识产权与xx87完全兼容的专用芯片,采用的是先进的0.18m CMOS工艺,采用布局布线工具Astro按照版图规划、版图布局和版图布线的流程,生成最终的版图文件GDSII,实现了从netlist到GDSII的转换.关键词:数值数据处理器;逻辑综合;静态时序分析;时钟树;布局布线中图分类号:TN919.2文献标识码:A文章编号:1673-2030(2009)03-0065-04收稿日期:2009-06-26作者简介:张俊峰(1978—),男,河北邯郸人,西安通信学院通信装备管理系讲师,西安交通大学硕士研究生.————————————————————————————————————————————1Astro版图设计流程Astro是Synopsys公司开发的APR(Auto Place and Route)布局布线工具软件,提供Cell-Based Design Flow 实体设计部分,它可以满足五千万门,在0.10m及以下工艺线生产的SOC设计的工程和技术要求.它的前身是Avanti公司的Apollo,因此和Apollo具有相同的数据模型和用户环境,但它扩展了Apollo0.18m的P&R(布局布线)解决方案,能够实现0.13m及其以下工艺的物理设计.[1]125-128(1)读入网表,跟foundry提供的标准单元库和PAD库以及宏模块库进行映射.读入时序约束文件,设置好timing setup菜单,为后面进行时序驱动的布局布线做准备;(2)版图规划,规定了芯片的大致面积和管脚位置以及宏单元位置等粗略的信息,力求使后面布线能顺利满足布线布通率100%的要求和时序的要求;(3)根据时序和面积的要求摆放标准单元电路;(4)时钟树综合,为了降低clock uncertainty等而产生由许多buffer单元组成的“时钟树”;(5)自动布线,先对电源线和时钟信号布线,然后对信号线布线,目标是最大程度地满足时序和设计规则;(6)为满足design rule从而foundry能成功制造出该芯片而做的修补工作.2XTY-87芯片版图总体设计在数字集成电路设计的过程中,版图设计一般都是由自动布局布线工具进行的.通过工具将版图设计中的主要部分设计完成后,再根据实际要求对芯片版图进行适当修改.在XTY-87芯片的版图设计过程中,模拟部分采用Cadence公司的版图设计工具V irtuoso Layout Editor进行模拟版图设计,数字版图和数模混合版图的设计则采用Synopsys的版图设计工具Astro,最后用Mentor公司的Calibre对整个数模混合电路的版图进行了DRC以及LVS验证.设计时数字部分采用了SMIC公司的0.18m、1P5M数字工艺,布线时使用了1层多晶硅和4层金属.由图1可以看到,该芯片从版图平面结构上看主要由I/O、数字内核(core)以及一个或多个宏单元(其中包P A./.括模拟模块、LL、ROM、R M等)组成I O在整个芯片的外面部分,一般情况下其是连成一个环状的在版图设计时,要考虑到电源I/O 与输入输出I/O 之间的比例,使芯片中所有的I/O 都能得到足够的电压.数字集成电路的内核(core)为标准单元摆放的地方.在版图设计中,考虑到版图的紧凑性,一般采用double back ,相邻排(row)共用同一个电源或者地线,最大程度上减少了芯片的整体面积.在I/O 和内核之间有专门放置电源环的地方.电源环为整个芯片提供电源.按照芯片对功耗的要求,需要版图的电源线与地线都具有比较高的电流承载能力.[2]4宏单元的摆放需要针对不同的芯片设计要求,具体的情况具体分析.对于ROM 与RAM 而言,需要在其周围放置足够的电源带(Stripe),这样做的目的是为了使ROM 上的电源线能够以最短的距离连接到电源上.对于模拟版图模块,需要在其与相邻的数字版图之间添加隔离带加以隔离.3XTY-87芯片摆放标准单元主要包括预布局优化(Pre-Place )、布局优化(In-Place )与布局后优化(Post-Place ),Astro 通过这一步在给定的约束的基础上完成标准单元的布局.图2为完成了放置标准单元前后的本芯片的版图示意图:4XTY-87芯片实钟树综合在大规模集成电路中,大部分时序元件间的数据传输是由时钟信号同步控制的,时钟频率决定了数据处理和数据传输的速度,CTS (Clock Tree Synthesis )它是电路性能最主要的标志.当集成工艺进入深亚微米阶段,决定时钟频率的主要因素有两个,一是组合逻辑电路部分的最长路径的延时,一是同步元件内的时钟偏差(Clock Skew ),现代集成技术使得组合逻辑电路的开关速度提高,因此时钟偏差成为影响电路性能的制约因素.[3]12-15时钟树延迟模型很多,如自上而下的时钟树BB 算法,利用启发式方法划分电路,使各个电路总电容负载基本相同;自上而下的构造时钟树的KCR 算法等,迭代地连接相近的子对,解决时钟汇点不对称分布的问题.一般在ASIC 芯片设计中,运用正态随机分布的思想,来解决驱动元件的选择问题,即假定驱动元件都是按照正态分布原则,以某一基准驱动强度分布的,其相邻器件分布在最佳驱动值两边.以某一定值开始左右搜索,找出最佳的器件驱动范围.具体算法描述如下:2()2012()12t d x E x e d tπ=+∫为可能的最佳驱动时,抽象器件表征量进行两次搜索法:第一步,选择驱动能力居中的器件和其左右两图1芯片版图示意图图2放置标准单元前后的本芯片的版图d .部分相邻的器件{buf n/4,buf n/2,buf 3n/4}做时钟树综合、分析;第二步,选择驱动能力居中的器件,左右作进一步二次靠近,{buf n/8,buf n/2,buf 5n/8}将两次时钟树效果进行对比;也可以做远离算法,即每一步向外偏离.Astro 时钟树综合技术是建立在Astro 先进算法上的,它包括了参数提取,延时计算及时序分析等,在时钟树综合时,考虑了Blockage 及预布线.CTS (时钟树综合)[4]的目标,一是要减少多个触发器之间的时钟到达时间差,二是减少时钟树综合时,插入器件的延迟.CTS 是在驱动时钟的器件输出端到触发器之间插入多个buffer 或inverter 来实现的.命令格式为astCTS ,Astro 通过这一步在时钟树的路径上插入缓冲器或者反相器,完成时钟树综合的目标.CTS 完成后版图为图3所示:5XTY-87芯片版图布线设计全局布线为整个芯片中没有连接的线进行全局路径规划.此过程用一个两维的全局布线模型来模拟布线要求.布线工具使用标准单元的平均高度来设置全局布线模型的高度和宽度.在全局布线过程中并不将信号线布到实际的路径上,但是它会将连到每个全局布线模型上的线都记录下来,以便于进一步的布线.[5]95-1051)布线修复,在详细布线后,如果仍然存在很多违反设计规则的地方,就需要采用命令axgSearchRepair 对布线再进行修复.如果布线修复后仍然存在着DRC 错误,可以将Search Repair Loop 的数值加大,再进行一次修复.如果继续存在DRC 错误,就应该考虑对芯片重新进行版图规划,适当加大版图面积或者优化宏单元的摆放位置;[6]45-472)布线后时钟树的优化,由于布线会使时钟树综合后的clock skew 以及路径的延时发生微小的变化,因而需要对布线后的时钟树再次进行优化,命令格式为astPostRouteCTO ;3)布线优化,芯片的布线完成之后,时序问题会变差,所以在最后流片前需要进行优化.要对整个版图的布线进行优化,命令格式为:axgRoutOpt ;4)DFM (Design For Manufacture ),为满足design rule 从而foundry 能成功制造出该芯片而做的修补工作.这一步主要包括修补天线效应、单孔变成多孔、金属开槽、填充金属等.命令格式为:axgSearchRepair ,axgAddFillerCell ,axgSlotWire ,axgFillWireTrack.整个芯片的整体版图如图4所示:6结束语本论文的重点在于超大规模集成电路,尤其是深亚微米下协处理器设计流程的研究.XTY87-1的物理验证工作主要是基于公司的LD F K SR 3完成的之所以选择可编程器件作验证,是为了确保协处图3CTS完成后版图为图4芯片的整体版图Altera CP EP 10200C240-.理器XTY87-1与微处理器的接口通信时序兼容.同时也为了验证文中所述体系结构在实际应用中的有效性.最终验证表明基于CPLD的XTY87-1可完全替代xx87工作.最后,基于XTY87-1的实验结果表明(详细分析结果见附录):早先的xx87集成了近3万只晶体管,时钟频率为5MHZ,面积约5mm2,功耗为3w;我们XTY87-1芯片为86位浮点运算,面积1200m×1200m,最高工作频率达到70MHZ,数字部分功耗不到10mw,设计合理正确,具有较高的实用价值和一定的学术意义,综合性能优于同类芯片,达到了预先的设计要求.参考文献:[1]刘必慰,陈书明,汪东.先进微处理器体系结构及其发展趋势[J].计算机应用研究,2007,(3).[2]Kashfi F,Mehdi Fakhraie S.Implementation of a high-speed low-power32-bit adder in70nm t echnology[C].2006.[3]于海,樊晓桠,张盛兵.32位RISC微处理器FPGA验证平台设计与实现[J].计算机工程与应用,2007,(5).[4]R L Hummel.80x86处理器和80x87协处理器大全[M].北京:电子工业出版社,1994.[5]Ferretti M,Ozdag R O,Beerel PA.High performance asynchronous ASIC back-end design flow using s i ngle-track full-buffer standard cells[C].2004.[6]Rabaey J M C A,Ni kolic B.Digi tal Integrated Circuits-A Design Perspective[M].New Je rs ey:Pretice Hall,2003.Back-end Design and V erification of XTY NDPZHANG Jun-feng,JIANG Tao(Department of Communication and Administration,Xi’an Communication Institute PLA,Xi’an,710106,China)Abstr act:With the development of computer network,network security has also become an important issue.The necessary of network security was first developed and based on a framework for network security system design put forwarded,detailed analysis of the phase of network security design is made in this paper,and architecture model and policy management implemented mode land process of design are given,which hangs security architecture,security policy implement and the enforced mechanism of network security together.We built the final layout file after the design flows such as floorplan,placement and routing by using Astro which is the P&R tools of Synopsys.We translate the netlist to GDSII after layout design.K ey wor ds:numeric data processor;logic synthesis;static timing analysis;clock tree;P&R。
芯片后端开发基础知识
芯片后端开发基础知识芯片后端开发是指在芯片设计的最后阶段,通过将设计转化为实际的芯片布局和电路连接,完成芯片的生产。
本文将从几个方面介绍芯片后端开发的基础知识。
一、芯片后端开发的流程芯片后端开发的流程主要包括芯片布局、布线和物理验证三个阶段。
1. 芯片布局:芯片布局是指将芯片的各个功能模块进行合理的位置分配,以满足芯片性能和功耗的要求。
布局过程需要考虑电路的连接、信号传输的延迟和功耗等因素。
2. 布线:布线是指根据芯片布局的结果,将各个功能模块之间的电路连接起来。
布线过程需要考虑信号传输的延迟、噪声和功耗等因素,以实现芯片设计的性能要求。
3. 物理验证:物理验证是指对芯片的布局和布线结果进行验证,确保芯片在物理层面上能够正常工作。
物理验证主要包括电气规则检查、设计规则检查和电磁兼容性分析等。
二、芯片后端开发的工具在芯片后端开发过程中,需要使用一些专门的EDA(Electronic Design Automation)工具来辅助设计和验证。
1. 布局工具:布局工具可以帮助设计师将芯片的功能模块进行位置分配,并优化布局以满足性能和功耗要求。
常用的布局工具有Cadence的Virtuoso和Synopsys的IC Compiler等。
2. 布线工具:布线工具可以根据给定的布局结果,将芯片的功能模块进行电路连接,并优化布线以满足性能要求。
常用的布线工具有Cadence的Innovus和Synopsys的IC Compiler等。
3. 物理验证工具:物理验证工具可以对芯片的布局和布线结果进行各种检查和分析,确保芯片在物理层面上能够正常工作。
常用的物理验证工具有Cadence的Assura和Synopsys的StarRC等。
三、芯片后端开发的基本原理芯片后端开发的基本原理是在保证电路功能正确的前提下,最大限度地提高芯片性能和降低功耗。
为了实现这一目标,需要注意以下几点:1. 布局规则:布局规则是指在芯片布局过程中需要遵循的一些规则,如电源和地线的布局、时钟树的布局和功耗分布等。
高级ASIC芯片综合
高级ASIC芯片综合引言高级ASIC芯片综合是现代集成电路设计过程中至关重要的一环。
在设计一款基于应用特定集成电路(ASIC)的芯片时,综合是将高级硬件描述语言(HDL)代码转化为布局级实现的关键步骤。
本文将介绍高级ASIC芯片综合的概念、流程和常用工具,以及综合过程中需要注意的事项。
什么是高级ASIC芯片综合?高级ASIC芯片综合是指将高级硬件描述语言(HDL)代码转化为低级综合电路的过程。
综合过程将HDL代码转化为逻辑门级(Logic Gate Level)的等效电路表示。
综合过程中,电路中的逻辑元件、引脚等都会被对应的表达方式替代,从而保持原有的逻辑功能。
综合的目的是通过对电路进行逻辑优化,减少芯片的面积、功耗和延迟等指标。
高级ASIC芯片综合流程高级ASIC芯片综合流程通常包括以下几个关键步骤:1. 静态分析静态分析是综合流程的第一步,其目的是将输入的HDL代码进行词法和语法分析,以确定代码的正确性。
静态分析可以检查语法错误、未定义的信号和模块等问题,以确保代码的正确性。
2. 逻辑映射逻辑映射是将HDL代码中的逻辑元件映射到物理逻辑门库中的等效元件的过程。
在逻辑映射过程中,综合工具会根据目标芯片的物理库文件,选择合适的逻辑门来替代HDL代码中的逻辑元件,以保证逻辑功能的正确性。
3. 时序优化时序优化是综合过程中最为重要的一步。
通过对电路时序的优化,可以降低芯片的时钟频率、减小电路的延迟,并提高电路的工作速度。
时序优化的关键是找到适当的时钟和数据路径来满足设计的时序约束。
4. 功耗优化综合过程中的另一个重要目标是功耗优化。
功耗优化包括减少芯片的静态功耗和动态功耗。
静态功耗可以通过电路的面积优化来降低,而动态功耗可以通过减小电路的开关次数来降低。
5. 布局综合布局综合是将逻辑门级的电路转化为布局级的电路的过程。
布局综合会考虑到芯片的物理约束和布局规则,以及信号的延迟和电容等因素。
布局综合的目的是确定芯片中各逻辑元件的位置和连线,以满足电路的时序约束和电路的物理规则。
芯片验证工作内容
芯片验证工作内容芯片验证是在芯片设计完成后的一个重要环节,旨在确保芯片的功能和性能符合设计要求。
芯片验证工作内容主要包括以下几个方面:一、验证计划的制定在芯片验证工作开始之前,需要制定详细的验证计划。
验证计划包括验证的目标、验证方法、验证环境、验证时间计划等内容。
验证计划的制定需要根据芯片的设计要求和实际情况进行合理的安排,以确保验证工作的高效进行。
二、验证测试环境的搭建在进行芯片验证之前,需要搭建相应的测试环境。
测试环境包括验证平台、验证工具和验证程序等。
验证平台是指用于运行验证程序的硬件设备,验证工具是指用于辅助验证的软件工具,验证程序是指编写的用于验证芯片功能和性能的测试程序。
三、功能验证功能验证是验证芯片是否按照设计要求正确地实现了各项功能。
功能验证的方法主要包括仿真验证和实物验证。
仿真验证是在计算机上运行验证程序模拟芯片的工作情况,通过检查仿真结果来验证芯片的功能是否正确。
实物验证是将芯片制作成实物后,通过实际测试来验证芯片的功能是否正确。
四、性能验证性能验证是验证芯片的性能是否符合设计要求。
性能验证的方法主要包括电性能测试和功能性能测试。
电性能测试是通过测量芯片在不同工作条件下的电气特性来验证芯片的性能。
功能性能测试是通过运行验证程序来测试芯片在不同工作条件下的功能性能,如运行速度、功耗等。
五、验证结果分析与报告在验证工作完成后,需要对验证结果进行分析和总结,并撰写验证报告。
验证报告应包括验证的目标、验证方法、验证环境、验证时间计划、验证结果和分析等内容。
验证报告是验证工作的总结和归纳,对于进一步改进芯片设计和验证方法具有重要意义。
六、问题解决与改进在验证过程中可能会出现各种问题,如芯片功能不正常、性能不达标等。
针对这些问题,需要及时解决并进行相应的改进。
问题解决与改进是验证工作的重要环节,能够提高芯片的质量和可靠性。
芯片验证工作内容包括验证计划的制定、验证测试环境的搭建、功能验证、性能验证、验证结果分析与报告以及问题解决与改进等方面。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
layout view 上亦會以閃動方式顯示錯 誤。
1芯4 片后端验证
版图验证工具-DIVA
分析错误(Explain)
1芯5 片后端验证
版图验证工具-DIVA
click 於閃動處以得悉所違犯 rule 的說明
在 CIW 上所看到違犯 rule 的 項目
2芯片后端验证
版图验证工具-DIVA
❖ Diva -Design Interactive Verification Automation
DIVA 是 Cadence软件中的验证工具集, 用它可以找出并纠正设计中的错误.它除了可 以处理物理版图和准备好的电气数据,从而进 行版图和线路图的对查(LVS)外。还可以在 设计的初期就进行版图检查,尽早发现错误并 互动地把错误显示出来,有利于及时发现错误 所在,易于纠正。
版图验证
❖ IC 后端流程图:
1芯片后端验证
Cadence 版图验证工具
Diva
Diva 是 Cadence 的版图编辑大师Virtuoso集 成的交互式版图验证工具,具有使用方便、操 作快捷的特点,非常适合中小规模单元的版图 验证。
Dracula
Dracula(吸血鬼)是 Cadence 的一个独立的 版图验证工具,按批处理方式工作,功能十分 强大,目前是完整芯片验证的标准。
❖ 提取层次
Flat Hierarchical Micro
1芯8 片后端验证
版图验证工具-DIVA
Extractor 界面
1芯9 片后端验证
版图验证工具-DIVA
Extract 主要 是抽取出一 些參數來提 供 LVS 時做 比對用。
查看 CIW 上出現 no error 後再到 library browser 就可看到一個 extracted view
同 样 , 可 以 选 择 Verify-Markers-Explain 来 看 错 误的原因提示。选中该菜单后,用鼠标在版图上出错 了的地方单击就可以了。也可以选择Verify-MarkersDeபைடு நூலகம்ete把这些错误提示删除。
1芯3 片后端验证
版图验证工具-DIVA
在 CIW 上可以看到檢查過程的訊息, 並
local。
remote 表示在远程机器上运行。 Remote Machine Name 远程机器的名字。
1芯2 片后端验证
版图验证工具-DIVA
❖ Diva 查错:
错误在版图文件中会高亮显示,很容易观察到。 另外也可以选择Verify-Markers-Find菜单来帮助找错。 单击菜单后会弹出一个窗口,在这个窗口中单击apply 就可以显示第一个错误。
ERC
LVS
6芯片后端验证
版图验证工具-DIVA
❖ DRC:对 IC 版图做几何空间检查,以确保线路能够被
特定加工工艺实现。
❖ ERC:检查电源、地的短路,悬空器件和节点等电气
特性。
❖ LVS:将版图与电路原理图做对比,以检查电路的连
接,与MOS的长宽值是否匹配。
❖ LPE:从版图数据库提取电气参数(如MOS的W、L值
2芯0 片后端验证
版图验证工具-DIVA
❖ LVS
2芯1 片后端验证
BJT、二极管的面积,周长,结点寄生电容 等)并以Hspice 网表方式表示电路。
7芯片后端验证
版图验证工具-DIVA
❖ DIVA工具流程
8芯片后端验证
版图验证工具-DIVA
❖ Design Rule Checking
9芯片后端验证
版图验证工具-DIVA
DRC 界面
1芯0 片后端验证
版图验证工具-DIVA
3芯片后端验证
版图验证工具-DIVA
Diva 工具集组成: 1.设计规则检查(iDRC) 2.版图寄生参数提取(iLPE) 3.寄生电阻提取(iPRE) 4.电气规则检查(iERC) 5.版图与电路图一致比较(iLVS)
4芯片后端验证
版图验证工具-DIVA
❖ Remark:
1. Diva中各个组件之间是互相联系的,有时 候一个组件的执行要依赖另一个组件先执 行。例如:要执行LVS就先要执行DRC。
检查。
11芯片后端验证
版图验证工具-DIVA
Switch Names
在DRC文件中,我们设置的switch在这里都会出现。这个选项可 以方便我们对版图文件进行分类检查。这在大规模的电路检查中 非常重要。
Echo Commands 选上时在执行DRC的同时在CIW窗口中显示DRC文
件。
Rules File 指明DRC规则文件的名称,默认为divaDRC.rul Rules Library 这里选定规则文件在哪个库里。 Machine 指明在哪台机器上运行DRC命令。 local 表示在本机上运行。对于我们来说,是在本机运行的,选
,必須一一解決,直到 DRC
check 完全 no error 為止,並做
Save。
按 Apply 會一 一解釋所違犯 的 rule
可以清除閃 動的標記
1芯6 片后端验证
版图验证工具-DIVA
❖ Extractor
1芯7 片后端验证
版图验证工具-DIVA
❖ Extractor 功能
提取器件和互联信息用于 ERC 或 LVS 提取网表 提取有寄生参数的版图网表用于模拟
2. 运行 Diva 之前,要准备好规则验证文件, 这些文件有默认名称:做DRC时的文件应 以divaDRC.rul命名,版图提取文件以 divaEXT.rul命名。做LVS时规则文件应以 divaLVS.rul命名。
5芯片后端验证
版图验证工具-DIVA
❖ DIVA功能
DRC
Extractor
Checking Method指的是要检查的版图的类型:
Flat 表示检查版图中所有的图形,对子版图块不检查。 Hierarchical利用层次之间的结构关系和模式识别优化,检查电路
中每个单元块内部是否正确。 hier w/o optimization 利用层次之间的结构关系而不用模式识别
优化,来检查电路中每个单元块 。 Checking Limit 可以选择检查哪一部分的版图: Full 表示查整个版图 Incremental 查自从上一次DRC检查以来,改变的版图。 by area 是指在指定区域进行DRC检查。一般版图较大时,可以分块