深入解析数字IC设计流程及EDA工具应用

版权申诉
0 下载量 73 浏览量 更新于2024-10-19 收藏 4.55MB RAR 举报
资源摘要信息:"数字IC设计流程与工具" 数字IC设计是集成电路设计的一个重要分支,它涉及到使用电子组件、晶体管等元件在硅片上构建高度复杂的电路。数字IC设计专注于处理数字信号的电路,这与模拟电路设计形成对比,后者处理的是模拟信号。数字IC设计的最终目标是实现特定的数字逻辑功能,比如算术运算、数据存储或数据传输等。 数字IC设计流程大致可以分为以下几个阶段: 1. 需求分析:设计师需要明确IC产品应满足的性能要求、功耗、成本、封装和可靠性等指标。 2. 系统级设计:在此阶段,设计师将制定系统架构并进行系统仿真,以验证功能和性能是否符合设计规格。 3. 高级综合:将高级硬件描述语言(HDL)编写的算法和逻辑转换成门级描述,即逻辑网表。 4. 门级仿真:验证转换后的逻辑网表是否符合预定的功能。 5. 布局与布线(Layout and Routing):设计师使用EDA工具根据逻辑网表生成物理版图,布局决定各个组件的放置位置,布线则决定组件间的连接方式。 6. 物理验证:完成布局布线后,进行一系列的验证,如DRC(Design Rule Check)、LVS(Layout Versus Schematic)等,以确保设计符合工艺要求,并且版图与原理图一致。 7. 提交制造:物理验证通过后,版图数据将被提交给晶圆制造厂进行实际制造。 数字IC设计所需的EDA(Electronic Design Automation,电子设计自动化)工具非常关键。这些工具包括了设计、仿真、分析、验证和制造等各个阶段所需的专业软件。一些主流的EDA工具包括: - Cadence:提供从设计到制造的全套EDA解决方案,包括IC设计工具(如Virtuoso)和仿真工具(如Incisive)。 - Synopsys:提供综合、仿真、验证等多种设计工具,其中Design Compiler用于逻辑综合,VCS用于仿真。 - Mentor Graphics:提供多种设计工具,如ModelSim用于仿真,Calibre用于物理验证。 - Keysight Technologies:提供电子测量和分析工具,如ADS用于高频电路设计与仿真。 - Altium Designer:主要用于PCB设计,但在IC封装设计阶段也有应用。 在数字IC设计流程中,设计师需要掌握各种硬件描述语言,如Verilog或VHDL,这些语言用于描述硬件电路的行为和结构。同时,掌握不同设计阶段所需的专业软件工具是必要的,这包括了逻辑综合工具、仿真工具、布局布线工具和验证工具等。 数字IC设计是一个复杂的工程,不仅要求设计师有扎实的电子电路理论知识,还要求熟练运用各类EDA工具进行设计、分析、仿真和验证。随着集成电路工艺的进步,IC设计也正朝着更高集成度、更低功耗和更高性能的方向发展,对设计师的能力要求也在不断提升。

select * from ( select row_.*, rownum rownum_ from ( select * from ( select distinct OB.BUSI_ORDER_ID, 0 as HIS_ID, OB.BUSI_CODE, OB.CUST_ID, OB.CEASE_REASON, OB.ORDER_STATE, OB.CHANNEL_TYPE, ob.user_id, OB.IS_BATCH_ORDER, OB.APPLICATION_ID, OB.CREATE_DATE, OB.DONE_DATE, OB.EFF_DATE, OB.EXP_DATE, OB.OPER_ID, OB.ORG_ID, OB.REGION_ID, OB.NOTE, OB.PROCESS_STATE, nvl(oi.cust_name, ic.cust_name) cust_name, nvl(oc.icc_id, iu.icc_id) icc_id, nvl(oc.svc_num, iu.svc_num) svc_num, icp.cust_name parent_cust_name, icp.cust_id parent_cust_id, ol.order_list_id from ord_busi ob left join ord_offer oo on oo.busi_order_id = ob.busi_order_id and ob.user_id = oo.user_id left join info_user iu on oo.user_id = iu.user_id left join info_cust ic on ob.cust_id = ic.cust_id left join ord_cust oi on ob.cust_id = oi.cust_id and ob.busi_order_id = oi.busi_order_id left join info_cust icp on nvl(ic.parent_cust_id, oi.parent_cust_id) = icp.cust_id left join ( SELECT * FROM ord_user WHERE user_order_id IN ( SELECT MAX(user_order_id) user_order_id FROM ord_user GROUP BY busi_order_id,user_id ) ) oc on ob.user_id = oc.user_id and ob.busi_order_id = oc.busi_order_id left join ord_list ol on ob.busi_order_id = ol.busi_order_id WHERE 1 = 1 and OB.CUST_ID IN( SELECT DISTINCT CUST_ID FROM (SELECT CUST_ID, PARENT_CUST_ID FROM INFO_CUST UNION SELECT CUST_ID, PARENT_CUST_ID FROM ORD_CUST) TMP START WITH TMP.CUST_ID = '10001009208' CONNECT BY TMP.PARENT_CUST_ID = PRIOR TMP.CUST_ID ) union all select distinct OB.BUSI_ORDER_ID,OB.HIS_ID, OB.BUSI_CODE, OB.CUST_ID, OB.CEASE_REASON, OB.ORDER_STATE, OB.CHANNEL_TYPE, OB.USER_ID, OB.IS_BATCH_ORDER, OB.APPLICATION_ID, OB.CREATE_DATE, OB.DONE_DATE, OB.EFF_DATE, OB.EXP_DATE, OB.OPER_ID, OB.ORG_ID, OB.REGION_ID, OB.NOTE, OB.PROCESS_STATE, nvl(oi.cust_name,ic.cust_name) cust_name , nvl(oc.icc_id, iu.icc_id) icc_id, nvl(oc.svc_num,iu.svc_num) svc_num, icp.cust_name parent_cust_name, icp.cust_id parent_cust_id, ol.order_list_id from ord_busi_his ob left join ord_offer_his oo on oo.busi_order_id = ob.busi_order_id 优化一下

2023-06-02 上传