
集成电路版图设计基础第三章:数字IC版.ppt
63页第三章第三章第三章第三章数字数字数字数字ICIC版图版图版图版图设计过程 验证电路逻辑 编译网表版图设计过程 平面布局 布置 布线 预制门阵列芯片 验证 流程图 实例school of phyebasics of ic layout design1school of phyebasics of ic layout design2n n设计输入:设计输入: VHDL VHDL 硬件描述语言(硬件描述语言(HDLHDL)) VerilogHDLVerilogHDL VHDL VHDL:: Very High Speed Integrated Circuits HDLVery High Speed Integrated Circuits HDL 于于19871987年成为年成为IEEEIEEE标准标准 在系统抽象方面略胜一筹在系统抽象方面略胜一筹 VerilogHDLVerilogHDL::19831983年由年由Phil MoorbyPhil Moorby首创首创 于于19951995年成为年成为IEEEIEEE标准标准 容易掌握,在开关电路描述方面比容易掌握,在开关电路描述方面比VHDLVHDL强很多强很多 设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design3n n设计输入:设计输入:HDLHDL HDLHDL::Hardware Description Language Hardware Description Language HDL HDL编码的模拟验证要比晶体管级的编码的模拟验证要比晶体管级的SPICESPICE模拟快得多,但不模拟快得多,但不如真正的如真正的SiSi芯片快。
芯片快n n硬件描述语言的特点:硬件描述语言的特点: 特点一:可以在不同的抽象层次对电路加以描述有:特点一:可以在不同的抽象层次对电路加以描述有: 系统级、行为级、寄存器传输级(系统级、行为级、寄存器传输级(RTLRTL级)、门级、开级)、门级、开 关级(晶体管级)关级(晶体管级) 特点二:在每个抽象层次的描述上都可被模拟验证,(节约成特点二:在每个抽象层次的描述上都可被模拟验证,(节约成 本,缩短开发周期,保证正确性)本,缩短开发周期,保证正确性) 特点三:较高层次的特点三:较高层次的HDLHDL描述与具体的工艺实现无关,便于标准描述与具体的工艺实现无关,便于标准 化与发展可重用技术化与发展可重用技术 设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design4n n设计输入:设计输入:HDL - HDL - 从域和层次表示分层分级设计思想从域和层次表示分层分级设计思想 域:域: 行为域:集成电路的功能行为域:集成电路的功能 结构域:集成电路的逻辑和电路组成结构域:集成电路的逻辑和电路组成 物理域:集成电路掩膜版的几何特性和物理特性的具体实现物理域:集成电路掩膜版的几何特性和物理特性的具体实现 层次:层次: 系统级:系统级: 系统最高层次的抽象描述,输入输出关系系统最高层次的抽象描述,输入输出关系 行为级:行为级: 侧重于模块行为功能的实现侧重于模块行为功能的实现 RTLRTL级:级: 完成信号在各级寄存器之间的传送任务完成信号在各级寄存器之间的传送任务 门级:门级: 通过调用基本门来实现通过调用基本门来实现 开关级:开关级: 用晶体管描述用晶体管描述 设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design5n n设计输入:设计输入:HDL - HDL - 从域和层次表示分层分级设计思想从域和层次表示分层分级设计思想 设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design6n n设计输入:设计输入:HDL HDL 硬件描述语言的抽象级别:硬件描述语言的抽象级别: 行为级:有关行为和技术指标模块,容易理解行为级:有关行为和技术指标模块,容易理解 RTLRTL级:级: 有关逻辑执行步骤的模块,较难理解有关逻辑执行步骤的模块,较难理解 门级:门级: 有关逻辑部件互相连接的模块,很难理解有关逻辑部件互相连接的模块,很难理解 开关级:有关物理形状和布局参数的模块,非常难理解开关级:有关物理形状和布局参数的模块,非常难理解 抽象级别和综合与仿真的关系:抽象级别和综合与仿真的关系: 行为仿真:行为的验证和验证模块分割的合理性。
行为仿真:行为的验证和验证模块分割的合理性 前仿真:前仿真: 即即 RTLRTL级仿真,检查有关模块逻辑是否正确级仿真,检查有关模块逻辑是否正确 逻辑综合:把逻辑综合:把RTLRTL级模块转换成门级级模块转换成门级 后仿真:后仿真: 用门级模型做验证,检查门的互连逻辑功能用门级模型做验证,检查门的互连逻辑功能 布局布线:布局布线: 在门级模型的基础上加上了布线延时在门级模型的基础上加上了布线延时 布局布线后仿真:与真实的电路最接近的验证布局布线后仿真:与真实的电路最接近的验证 设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design7n n设计输入:设计输入:HDL – VHDL,Verilog HDLHDL – VHDL,Verilog HDL VHDL VHDL发展的较早,语法严格,而发展的较早,语法严格,而Verilog HDLVerilog HDL是在是在C C语言的基语言的基础上发展起来的一种硬件描述语言,简洁,高效,灵活,语法较础上发展起来的一种硬件描述语言,简洁,高效,灵活,语法较自由,因此赢得了大多数工程师的喜爱。
自由,因此赢得了大多数工程师的喜爱 VHDLVHDL和和Verilog HDLVerilog HDL两者相比,两者相比,VHDLVHDL的书写规则比的书写规则比VerilogVerilog烦琐一些,但烦琐一些,但verilogverilog自由的语法也容易让少数初学者出错自由的语法也容易让少数初学者出错 国外电子专业很多会在本科阶段教授国外电子专业很多会在本科阶段教授VHDL,VHDL,在研究生阶段教授在研究生阶段教授verilogverilog 对于对于PLD/FPGAPLD/FPGA设计者而言,两种语言可以自由选择设计者而言,两种语言可以自由选择 如果您是如果您是ASICASIC(专用集成电路)设计人员,则必须首先掌握(专用集成电路)设计人员,则必须首先掌握verilogverilog,因为在,因为在ICIC设计领域,设计领域,9090%以上的公司都是采用%以上的公司都是采用verilogverilog进行进行ICIC设计设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design8n n设计输入:设计输入:HDL – VHDL,Verilog HDLHDL – VHDL,Verilog HDL VHDL VHDL和和Verilog HDLVerilog HDL有很多的共同点,如硬件描述与实现工有很多的共同点,如硬件描述与实现工艺无关,能形式化地抽象表示电路的行为和结构,具有电路仿真艺无关,能形式化地抽象表示电路的行为和结构,具有电路仿真与验证机制以保证设计的正确性等。
与验证机制以保证设计的正确性等 目前,国内外设计者使用目前,国内外设计者使用VerilogVerilog和和VHDLVHDL的情况:的情况: 美国:美国:Verilog: 60%, VHDL: 40%Verilog: 60%, VHDL: 40% 台湾:台湾:Verilog: 50%, VHDL: 50%Verilog: 50%, VHDL: 50% 大陆:大学大陆:大学, ,公司公司设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design9n n设计输入:设计输入:HDL – VHDL,Verilog HDLHDL – VHDL,Verilog HDL设计过程设计过程 - - 验证电路逻辑验证电路逻辑适用抽象层次的比较抽象层次抽象层次VHDLVHDLVerilog HDLVerilog HDL系统级系统级行为级行为级寄存器传输寄存器传输(RTL)(RTL)级级门级门级开关级开关级school of phyebasics of ic layout design10n n设计输入:设计输入:HDL – VHDLHDL – VHDL VHDL VHDL 即即 VHSIC HDL (VHSIC : Very High Speed IC)VHSIC HDL (VHSIC : Very High Speed IC)。
它起源于美国国防部(它起源于美国国防部(DOD: Department Of DefenseDOD: Department Of Defense)于)于8080年代初提出的超高速集成电路发展计划年代初提出的超高速集成电路发展计划VHSICVHSIC “The DOD The DOD mandated that all digital electronic circuits be described mandated that all digital electronic circuits be described in VHDL.”in VHDL.”由于由于ADAADA语言是语言是DODDOD支持的程序设计语言,因而支持的程序设计语言,因而VHDL VHDL 是在是在ADAADA语言的基础上发展起来的语言的基础上发展起来的 VHDL advantages:VHDL advantages: design verification and auto-regression tests; design verification and auto-regression tests; VHDL is recommended for government contracts; VHDL is recommended for government contracts; VHDL commercial models are available for purchase; VHDL commercial models are available for purchase; VHDL is a documentation language; VHDL is a documentation language; VHDL is a simulation language. VHDL is a simulation language.设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design11n n设计输入:设计输入:HDL – VHDLHDL – VHDL BASIC DATA TYPE: BASIC DATA TYPE: Bit Bit BIT_VECTOR(0 TO 7) BIT_VECTOR(0 TO 7) STD_LOGIC STD_LOGIC STD_LOGIC_ VECTOR(15 DOWNTO 0) STD_LOGIC_ VECTOR(15 DOWNTO 0) I/O direction I/O direction IN IN OUT OUT INOUT - INOUT - 输入输出双向口输入输出双向口 BUFFER - BUFFER - 与与INOUTINOUT类似,区别在于输入信号来自于实类似,区别在于输入信号来自于实 体内部产生的回读输出的信号,即允许反馈,体内部产生的回读输出的信号,即允许反馈, 一般不用。
一般不用 设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design12n n设计输入:设计输入:HDL – VHDL HDL – VHDL 五大元素之五大元素之“ “library & package”library & package” 库声明结构:库声明结构: library library_name;library library_name; use library_name.package_name.all; use library_name.package_name.all; 由于由于STD_LOGIC,signedSTD_LOGIC,signed等数据类型不属于等数据类型不属于VHDLVHDL标准库,所标准库,所以使用时要予以以下声明:以使用时要予以以下声明: library IEEE;library IEEE; use IEEE.Std_Logic_1164.all; use IEEE.Std_Logic_1164.all; use IEEE.Std_Logic_Arith.all; use IEEE.Std_Logic_Arith.all;设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design13n n设计输入:设计输入:HDL – VHDL HDL – VHDL 五大元素之五大元素之“ “library & package”library & package” 在在VHDLVHDL语言中,在一个实体的说明部分与构造体部分中定义语言中,在一个实体的说明部分与构造体部分中定义的数据类型,常量及子程序对于其他实体的说明部分与构造体部的数据类型,常量及子程序对于其他实体的说明部分与构造体部分是不可见的。
程序包说是为了使一组类型说明,常量说明和子分是不可见的程序包说是为了使一组类型说明,常量说明和子程序说明对多个设计实体都成为可见的而提供的一种结构程序说明对多个设计实体都成为可见的而提供的一种结构 一个程序包所定义的项对另一个单元并不是自动可见的,需在一个程序包所定义的项对另一个单元并不是自动可见的,需在使用该程序包的使用该程序包的VHDLVHDL程序前加上程序前加上useuse语句 定义程序包的一般语句结构如下:定义程序包的一般语句结构如下: PACKAGE PACKAGE 程序包名程序包名 IS -- IS -- 程序包首程序包首 程序包首说明部分程序包首说明部分 END END 程序包名程序包名; ; PACKAGE BODY PACKAGE BODY 程序包名程序包名 IS -- IS -- 程序包体程序包体 程序包体说明部分以及包体内程序包体说明部分以及包体内 END END 程序包名程序包名; ;设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design14n n设计输入:设计输入:HDL – VHDL HDL – VHDL 五大元素之五大元素之“ “entity”entity” “entity” “entity”称为实体,描述了电路器件外部情况及各信号端口的称为实体,描述了电路器件外部情况及各信号端口的基本性质。
基本性质 entity entity_name isentity entity_name is port (p_name : port_m data_type; port (p_name : port_m data_type; … … p_name : port_m data_type); p_name : port_m data_type); end entity entity_name; end entity entity_name;电路的端口及其端口信号描述语句电路的端口及其端口信号描述语句PORT()PORT() p_name p_name端口信号名端口信号名 port_m port_m 端口模式:端口模式:ININ、、OUTOUT、、INOUTINOUT、、BUFFERBUFFER data_type data_type 数据类型:整数数据类型数据类型:整数数据类型 INTEGERINTEGER 布尔数据类型布尔数据类型 BOOLEANBOOLEAN 标准逻辑位数据类型标准逻辑位数据类型 STD_LOGIC STD_LOGIC 位数据类型位数据类型 BITBIT 设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design15n n设计输入:设计输入:HDL – VHDL HDL – VHDL 五大元素之五大元素之“ “entity”entity” 标准逻辑位数据类型标准逻辑位数据类型“ “STD_LOGIC”STD_LOGIC”取值:取值: ( 'U', -- Uninitialized( 'U', -- Uninitialized 'X', -- Forcing Unknown 'X', -- Forcing Unknown '0', -- Forcing 0 '0', -- Forcing 0 '1', -- Forcing 1 '1', -- Forcing 1 'Z', -- High Impedance 'Z', -- High Impedance 'W', -- Weak Unknown 'W', -- Weak Unknown 'L', -- Weak 0 'L', -- Weak 0 'H', -- Weak 1 'H', -- Weak 1 '-' '-',, -- Don't Care); -- Don't Care); 位数据类型位数据类型” ”BIT”BIT”取值:取值: BITBIT数据类型的信号规定的取值范围是逻辑位数据类型的信号规定的取值范围是逻辑位‘ ‘1’1’,,‘ ‘0’0’。
设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design16n n设计输入:设计输入:HDL – VHDL HDL – VHDL 五大元素之五大元素之“ “architecture”architecture” “architecture” “architecture”称为结构体,结构体负责描述电路内部逻辑功称为结构体,结构体负责描述电路内部逻辑功能或电路结构,并行语句能或电路结构,并行语句, ,可以同时存在多个可以同时存在多个 architecture architecture_name of entity_name isarchitecture architecture_name of entity_name is architecture_declarations architecture_declarations(说明语句)(说明语句) beginbegin concurrent_statements concurrent_statements(功能描述语句)(功能描述语句) end [ architecture ] [ architecture_name ];end [ architecture ] [ architecture_name ];说明语句:说明语句: 包括在结构体中需要说明和定义的数据对象、包括在结构体中需要说明和定义的数据对象、数数 据类型、元件调用声明等。
并非必须的据类型、元件调用声明等并非必须的功能描述语句:必须的,给出相应的电路功能描述语句,可以是功能描述语句:必须的,给出相应的电路功能描述语句,可以是 并行语句、顺序语句或他们的混合并行语句、顺序语句或他们的混合设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design17n n设计输入:设计输入:HDL – VHDL HDL – VHDL 五大元素之五大元素之“ “process”process” “process” “process”进程语句和顺序语句,进程语句和顺序语句,VHDLVHDL所有合法的顺序描述所有合法的顺序描述语句必须放在进程语句中,如语句必须放在进程语句中,如IF_THEN_ELSE_END IFIF_THEN_ELSE_END IF等[process_label:] process [ ( sensitivity_list ) ] [ is ][process_label:] process [ ( sensitivity_list ) ] [ is ] [process_declarations] [process_declarations] begin begin sequential_statements sequential_statements end process [ process_label ] ; end process [ process_label ] ; sensitivity_listsensitivity_list:敏感信号表,通常要求把进程中所有的输入信:敏感信号表,通常要求把进程中所有的输入信号都放在敏感信号表中。
号都放在敏感信号表中 processprocess的执行依赖于敏感信号的变化,当某一敏感信号发生的执行依赖于敏感信号的变化,当某一敏感信号发生跳变,就将启动此进程语句,而在执行一遍整个进程的顺序语句跳变,就将启动此进程语句,而在执行一遍整个进程的顺序语句后,便返回进程的起始端,进入等待状态,直到下一次敏感信号后,便返回进程的起始端,进入等待状态,直到下一次敏感信号中某一信号跳变才再次进入中某一信号跳变才再次进入“ “启动启动- -运行运行” ”状态,再执行一遍进程状态,再执行一遍进程 一个结构体中,可以存在多个进程,它们是并行的,而任意一一个结构体中,可以存在多个进程,它们是并行的,而任意一个进程属于顺序语句个进程属于顺序语句 设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design18n n设计输入:设计输入:HDL – VHDL HDL – VHDL 五大元素之五大元素之“ “configuration”configuration” “configuration” “configuration”决定使用哪一个决定使用哪一个“ “architecture”architecture”。
configurationconfiguration结构:结构: configuration configuration_name of entity_name isconfiguration configuration_name of entity_name is for architecture_name for architecture_name end for; end for; end configuration_name; end configuration_name;设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design19n n设计输入:设计输入: HDL – packageHDL – package实例实例 package logic is —package logic is —包头说明包头说明 type three_state_logic Is (‘0’, ‘1’, ‘z’);type three_state_logic Is (‘0’, ‘1’, ‘z’); constant unknown_value constant unknown_value ::three_state_logic three_state_logic ::=‘0’=‘0’;; function invert (inputfunction invert (input::three_state_logic) return three_state_logicthree_state_logic) return three_state_logic;; end logicend logic;; package body logic is —package body logic is —包体说明包体说明 function invert (inputfunction invert (input::three_state_logic) return three_state_logicthree_state_logic) return three_state_logic;; beginbegin case input is case input is when ‘0’ => return ‘1’ when ‘0’ => return ‘1’;; when ‘1’ => return ‘0’when ‘1’ => return ‘0’;; when ‘z’ => return ‘z’when ‘z’ => return ‘z’;; end caseend case;; end invertend invert;; end logicend logic;;设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design20n n设计输入:设计输入: HDL – packageHDL – package实例实例 use logic.three_state_logic.logic;use logic.three_state_logic.logic;use logic.three_state_logic.invert;use logic.three_state_logic.invert; entity inverter is entity inverter is port ( x : in three_ state_logic;port ( x : in three_ state_logic; y : out three_ state_logic ); y : out three_ state_logic );end inverter;end inverter; architecture inverter_body of inverter is architecture inverter_body of inverter is beginbegin process (x) process (x) begin begin y<=invert (x); --- y<=invert (x); --- 一个函数调用一个函数调用 wait on x;wait on x; end process; end process;end inverter_body;end inverter_body;设计过程设计过程 - - 验证电路逻辑验证电路逻辑use logic.alluse logic.allschool of phyebasics of ic layout design21n n设计输入:设计输入: HDL – VHDLHDL – VHDL实例实例 library IEEE;library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_1164.all; library ch60hp231d; library ch60hp231d; use ponents.all; use ponents.all; entity NAND2 is entity NAND2 is port ( A : in std_logic; port ( A : in std_logic; B : in std_logic; B : in std_logic; Z : out std_logic); Z : out std_logic); end NAND2; end NAND2;设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design22n n设计输入:设计输入: HDL – VHDLHDL – VHDL实例实例 architecture STRUCT of NAND2 isarchitecture STRUCT of NAND2 is signal I: std_logic; signal I: std_logic; begin begin U0 : an02d1 port map(A,B,I); U0 : an02d1 port map(A,B,I); U1 : in01d1 port map(I,Z); U1 : in01d1 port map(I,Z); end STRUCT; end STRUCT;设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design23n n设计输入:设计输入: HDL – VHDLHDL – VHDL实例实例 architecture DATAFLOW of NAND2 isarchitecture DATAFLOW of NAND2 is begin begin Z <= A nand B; Z <= A nand B; end DATAFLOW; end DATAFLOW; architecture RTL of NAND2 is architecture RTL of NAND2 is begin begin process process ((A A,,B B)) beginbegin if (A=’1’) and (B=’1’) then if (A=’1’) and (B=’1’) then Z <= ‘0’; Z <= ‘0’; else else Z <= ‘1’; Z <= ‘1’; end if; end if; end process; end process; end RTL; end RTL;设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design24n n设计输入:设计输入: HDL – VHDLHDL – VHDL实例实例 configuration cfg_nand2 of NAND2 is configuration cfg_nand2 of NAND2 is for RTL for RTL end for; end for; end cfg_nand2; end cfg_nand2;设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design25n n设计输入:设计输入:HDL – Verilog HDLHDL – Verilog HDL Verilog HDL Verilog HDL 是在是在C C语言的基础上发展起来的一种硬件描述语言。
它语言的基础上发展起来的一种硬件描述语言它是由是由GDA(Gateway Design Automation)GDA(Gateway Design Automation)公司的公司的Phil MoorbyPhil Moorby在在19831983年首创的,最初只是设计了一个仿真与验证的工具,之后又陆续开年首创的,最初只是设计了一个仿真与验证的工具,之后又陆续开发了相关的故障模拟与时序分析工具发了相关的故障模拟与时序分析工具19851985年年MoorbyMoorby推出了他的第三推出了他的第三个商用仿真器个商用仿真器VerilogVerilog--XL ,XL ,并获得了巨大的成功,从而使并获得了巨大的成功,从而使Verilog HDLVerilog HDL得到了推广应用得到了推广应用19891989年年CadenceCadence公司收购了公司收购了GDA,GDA,使得使得Verilog HDL Verilog HDL 成为了该公司的独家专利成为了该公司的独家专利19901990年年CadenceCadence公司公开发表了公司公开发表了Verilog Verilog HDLHDL,并成立,并成立OVI (Open Verilog International)OVI (Open Verilog International)组织以促进组织以促进Verilog Verilog HDL HDL 语言的发展。
语言的发展19951995年年Verilog HDLVerilog HDL成为成为IEEEIEEE标准 Cadence custom tools: Cadence VLSI tools:Cadence custom tools: Cadence VLSI tools: Virtuoso Schematic Editor NC-Verilog (LDV) Virtuoso Schematic Editor NC-Verilog (LDV) Spectre Simulation Buildgates Spectre Simulation Buildgates Virtuoso Layout Editor Silicon Ensemble (SE) Virtuoso Layout Editor Silicon Ensemble (SE) Diva Diva设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design26n n设计输入:设计输入:HDL – Verilog HDLHDL – Verilog HDL发展历史发展历史 设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design27n n设计输入:设计输入:HDL – Verilog HDLHDL – Verilog HDL的应用的应用 -- ASIC -- ASIC 和和FPGAFPGA设计师可用它来编写可综合的代码。
设计师可用它来编写可综合的代码 -- -- 描述系统的结构,做高层次的仿真描述系统的结构,做高层次的仿真 -- -- 验证工程师编写各种层次的测试模块对具体电路设计工程师验证工程师编写各种层次的测试模块对具体电路设计工程师 所设计的模块进行全面细致的验证所设计的模块进行全面细致的验证 -- -- 库模型的设计:可以用于描述库模型的设计:可以用于描述ASIC ASIC 和和FPGAFPGA的基本单元的基本单元 ((CellCell)部件,也可以描述复杂的宏单元()部件,也可以描述复杂的宏单元(Macro CellMacro Cell)设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design28n n设计输入:设计输入:HDL – Verilog HDLHDL – Verilog HDL的特点的特点 -- -- 既能进行面向综合的电路设计,也能进行电路的模拟仿真;既能进行面向综合的电路设计,也能进行电路的模拟仿真; -- -- 多层次上对设计系统进行描述,从开关级、门级、寄存器传输多层次上对设计系统进行描述,从开关级、门级、寄存器传输 级(级(RTLRTL)到行为级,设计规模任意;)到行为级,设计规模任意; -- -- 灵活的电路描述风格:行为、结构、数据流或混和;灵活的电路描述风格:行为、结构、数据流或混和; -- -- 行为描述语句(条件、赋值、循环等)类似于软件高级语言,行为描述语句(条件、赋值、循环等)类似于软件高级语言, 便于使用;便于使用; -- -- 内置各种基本逻辑门(内置各种基本逻辑门(and, or, nand, etc.)and, or, nand, etc.)以及开关级元件以及开关级元件 ((pmospmos,,nmosnmos,,cmoscmos);); -- -- 用户定义原语(用户定义原语(UDPUDP):组合、时序逻辑。
组合、时序逻辑设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design29n n设计输入:设计输入:HDL – Verilog HDLHDL – Verilog HDL在不同抽象层次上的描述形式在不同抽象层次上的描述形式设计过程设计过程 - - 验证电路逻辑验证电路逻辑门级module array_buf(in,out,en);input [3:0] in;output [4:0] out;input en;/*instance*/bufif1 array_buf0(out[0],in[0],en);bufif1 array_buf1(out[1],in[1],en);bufif1 array_buf2(out[2],in[2],en);bufif1 array_buf3(out[3],in[3],en);endmoduleRTL级module mux (out,a,b,sel);output out;input a,b,sel;assign out =(sel= =0)?a:bendmodule行为级/算法级sum=0;for(i=0;i<7;i=i+1)beginsum=sum+A[i];endsum_out<=sum;school of phyebasics of ic layout design30n n设计输入:设计输入:HDL – Verilog HDLHDL – Verilog HDL代码的基本结构代码的基本结构 Verilog HDL Verilog HDL 是由称之为是由称之为modulemodule的模块组成的,一个完整的的模块组成的,一个完整的Verilog HDLVerilog HDL模块由以下五个部分组成:模块由以下五个部分组成:设计过程设计过程 - - 验证电路逻辑验证电路逻辑1. 1. 模块定义行模块定义行2. 2. 端口类型说明端口类型说明3. 3. 数据类型说明数据类型说明4. 4. 描述体描述体5. 5. 结束行结束行school of phyebasics of ic layout design31n n设计输入:设计输入:HDL – Verilog HDLHDL – Verilog HDL代码的基本结构代码的基本结构 设计过程设计过程 - - 验证电路逻辑验证电路逻辑例例: :上升沿上升沿DD触发器的描述及对应电路触发器的描述及对应电路mudule dff_pos(data,clk,q); input data,clk; output q; reg q; always @(posedge clk) q <= data;endmodule 模块定义行端口类型说明数据类型说明 描述体 结束行school of phyebasics of ic layout design32n n设计输入:设计输入:HDL – Verilog HDLHDL – Verilog HDL代码的基本结构代码的基本结构设计过程设计过程 - - 验证电路逻辑验证电路逻辑模块描述模块定义行端口类型说明数据类型说明描述体结束行过程块1过程块2….过程语句(initial/always) 块语句(begin-end/fork-join)过程语句:过程语句:一个模块内可以包含任意多个一个模块内可以包含任意多个initialinitial和和alwaysalways语句,且并行执行。
语句,且并行执行initialinitial语句只执行一次,在模拟开始时执行,执行结束则模拟终止语句只执行一次,在模拟开始时执行,执行结束则模拟终止alwaysalways语句可由电平敏感事件控制、边沿触发事件控制或者二者的组合语句可由电平敏感事件控制、边沿触发事件控制或者二者的组合school of phyebasics of ic layout design33n n设计输入:设计输入:HDL – Verilog HDLHDL – Verilog HDL代码的基本结构代码的基本结构设计过程设计过程 - - 验证电路逻辑验证电路逻辑块语句:块语句:顺序语句块:顺序语句块:begin-end begin-end 并行语句块:并行语句块:fork-joinfork-joinbeginbegin #2 data=1; #2 data=1; #3 data=0; #3 data=0; #4 data=1; #4 data=1;endendforkfork #2 data=1; #2 data=1; #3 data=0; #3 data=0; #4 data=1; #4 data=1;joinjoin0 2 5 90 2 5 90 2 3 40 2 3 4school of phyebasics of ic layout design34n n设计输入:设计输入:HDL – Verilog HDLHDL – Verilog HDL always always语句、语句、“ “assign assign 语句语句” ”和和“ “元件的实例调用,如元件的实例调用,如and2 and2 aa ( q, a, b);”aa ( q, a, b);”是是Verilog Verilog 模块中三种可以生成逻辑电路的语句。
模块中三种可以生成逻辑电路的语句 如果信号变量是在过程块如果信号变量是在过程块 (initial(initial块块 或或 alwaysalways块块) )中被赋值中被赋值的,必须把它声明为寄存器的,必须把它声明为寄存器regreg类型变量在类型变量在alwaysalways块的块的regreg变变量并不一定生成触发器,如量并不一定生成触发器,如“ “always @(b) out1 = ~b;”always @(b) out1 = ~b;”只是只是生成了一个反相器的组合逻辑生成了一个反相器的组合逻辑 有些有些VerilogVerilog硬件描述语言是不可综合的,仅仅是用于仿真验证硬件描述语言是不可综合的,仅仅是用于仿真验证测试的行为语言;有些不好的编码风格会导致在综合时产生不希测试的行为语言;有些不好的编码风格会导致在综合时产生不希望的逻辑,有的甚至会引起功能的紊乱所以养成好的编码习惯望的逻辑,有的甚至会引起功能的紊乱所以养成好的编码习惯是有必要的,因为这些好的编码习惯能够规避一些可能在综合以是有必要的,因为这些好的编码习惯能够规避一些可能在综合以及后端的版图方面出现的不必要的麻烦。
及后端的版图方面出现的不必要的麻烦设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design35n n设计输入:设计输入:Verilog HDLVerilog HDL实例实例 module count4(out,reset,clk); module count4(out,reset,clk); output[3:0] out; output[3:0] out; input reset,clk; input reset,clk; reg[3:0] out; reg[3:0] out; always @(posedge clk) always @(posedge clk) begin begin if (reset) if (reset) out<=0; out<=0; else else out<=out+1; out<=out+1; end end endmodule endmodule 设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design36n n模拟验证:模拟验证: 对所设计的电路要用模拟器进行逻辑功能验证。
对所设计的电路要用模拟器进行逻辑功能验证 而模拟验证的前提是要而模拟验证的前提是要“ “搭建搭建” ”一个测试平台一个测试平台 测试平台测试平台” ”testbench”testbench”可以对行为或者结构级的电路模块可以对行为或者结构级的电路模块进行动态的全面测试,通过观测被测试模块的输出信号是否符合进行动态的全面测试,通过观测被测试模块的输出信号是否符合要求,可以调试和验证逻辑系统的设计和结构正确与否,发现问要求,可以调试和验证逻辑系统的设计和结构正确与否,发现问题并及时修改题并及时修改设计过程设计过程 - - 验证电路逻辑验证电路逻辑 测试信 clk 号和测 试条件 的控制 resetcounter4 被测模out 块对测 试信号 的响应counter4 testbenchschool of phyebasics of ic layout design37n n模拟验证:模拟验证:testbenchtestbench `timescale 1ns/1ns initial `timescale 1ns/1ns initial `include "count4.v“ begin clk =0; reset=0; `include "count4.v“ begin clk =0; reset=0; module coun4_tb; #DELY reset=1; module coun4_tb; #DELY reset=1; #DELY reset=0; #DELY reset=0; reg clk,reset; #(DELY*20) $finish; reg clk,reset; #(DELY*20) $finish; wire[3:0] out; end wire[3:0] out; end parameter DELY=100; initial parameter DELY=100; initial $monitor($time,,,"clk=%d $monitor($time,,,"clk=%d count4 mycount(out,reset,clk); reset=%d out=%d", count4 mycount(out,reset,clk); reset=%d out=%d", clk, reset,out); clk, reset,out); always #(DELY/2) clk = ~clk; endmodule always #(DELY/2) clk = ~clk; endmodule 设计过程设计过程 - - 验证电路逻辑验证电路逻辑以以$ $字符开始的标识符表字符开始的标识符表示系统任务或系统函数。
示系统任务或系统函数 school of phyebasics of ic layout design38n n模拟验证:模拟验证:testbench - testbench - 编译器指令编译器指令 `timescale 10ns/1ns `timescale 10ns/1ns parameter d=1.57; parameter d=1.57; #d #d -- `timescale 10ns/1ns -- `timescale 10ns/1ns:以反引号:以反引号“ “ ` ”` ”开始的语句是编译器指令开始的语句是编译器指令 `timescale `timescale 将模块中所有时延的单位设置为将模块中所有时延的单位设置为10ns10ns,时间精度为,时间精度为1ns1ns -- parameter d=1.57-- parameter d=1.57;; #d#d:: parameterparameter参数定义。
参数定义 “#1.57”#1.57”是代表是代表 1.571.57个个“ “时间单位(时间单位(10ns10ns))” ”,也就是,也就是15.7ns15.7ns,可是精度只能取到,可是精度只能取到1ns1ns,, 四舍五入之后四舍五入之后“ “#d”#d”也就是延时是也就是延时是16ns16ns -- verilog-- verilog中是没有默认中是没有默认timescaletimescale的一个没有指定的一个没有指定timescaletimescale的的VerilogVerilog 模块就有可能错误的继承了前面的模块就有可能错误的继承了前面的timescaletimescale参数所以推荐参数所以推荐“ “在每个在每个 modulemodule的前面指定的前面指定`timescale,`timescale,或者在最后加一个或者在最后加一个`resetall`resetall来确保来确保 timescaletimescale的局部有效的局部有效” ”。
设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design39n n模拟验证:模拟验证:testbench - testbench - 编译器指令编译器指令 * * `define, `undef `define, `undef :用于文本替换用于文本替换 * * `ifdef, `else, `endif `ifdef, `else, `endif :用于条件编译用于条件编译 * `default_nettype `default_nettype :将那些没有被说明的连线定义线网类型将那些没有被说明的连线定义线网类型 * * `default_nettype wand`default_nettype wand:定义缺省的线网为线与类型定义缺省的线网为线与类型 * * `include `include :嵌入内嵌文件编译时,这一行由文件:嵌入内嵌文件编译时,这一行由文件“ “xx.v” xx.v” 替代 * `resetall `resetall :将所有的编译指令重新设置为缺省值。
将所有的编译指令重新设置为缺省值 * `timescale `timescale :当一个设计中的多个模块带有自身的:当一个设计中的多个模块带有自身的`timescale`timescale编编 译指令时将发生什么?在这种情况下,模拟器总是定位在所有模块译指令时将发生什么?在这种情况下,模拟器总是定位在所有模块 的最小时延精度上,并且所有时延都相应地换算为最小时延精度的最小时延精度上,并且所有时延都相应地换算为最小时延精度 * `unconnected_drive pull1/pull0, `nounconnected_drive`unconnected_drive pull1/pull0, `nounconnected_drive:: 在模块实例化中,出现在这两个编译器指令间的任何未连接的输入在模块实例化中,出现在这两个编译器指令间的任何未连接的输入 端口或者连接到高电平或者连接到低电平端口或者连接到高电平或者连接到低电平 * `celldefine, `endcelldefine `celldefine, `endcelldefine :用于将模块标记为单元模块。
它:用于将模块标记为单元模块它 们包含模块们包含模块(module)(module)定义某些定义某些PLIPLI例程使用单元模块例程使用单元模块设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design40n n模拟验证:模拟仿真软件模拟验证:模拟仿真软件 Logic Design and Verification (LDV) - CadenceLogic Design and Verification (LDV) - Cadence VHDL System Simulator (VSS) VHDL System Simulator (VSS) Verilog Compiled Simulator (VCS) Verilog Compiled Simulator (VCS) Modelsim - Mentor Graphics Modelsim - Mentor Graphics Quartus II - Altera Quartus II - Altera Active-HDL - Aldec Active-HDL - Aldec设计过程设计过程 - - 验证电路逻辑验证电路逻辑Cadence LDV 5.1- Synopsys- Synopsysschool of phyebasics of ic layout design41n n模拟验证:模拟仿真软件模拟验证:模拟仿真软件 20072007年年EDAEDA软件前三位的是软件前三位的是SynopsysSynopsys、、CadenceCadence和和MentorMentor。
从市场占有看从市场占有看, Cadence, Cadence的强项产品为的强项产品为ICIC板图设计(板图设计(AllegroAllegro系统系统互连设计平台)和服务互连设计平台)和服务,Mentor Graphics,Mentor Graphics的强项产品为的强项产品为PCBPCB设计和设计和深亚微米深亚微米ICIC设计验证和测试设计验证和测试, Synopsys, Synopsys的强项产品为逻辑综合的强项产品为逻辑综合 - Cadence - Cadence ::美国加州圣何塞全球最大的电子设计技术美国加州圣何塞全球最大的电子设计技术(Electronic (Electronic Design Technologies) Design Technologies)、程序方案服务和设计服务供应商程序方案服务和设计服务供应商 - Synopsys- Synopsys::美国加州美国加州Mountain ViewMountain View。
20022002年并购年并购Avant! Avant! 后,该公司后,该公司 成为提供前后端完整成为提供前后端完整ICIC设计方案的领先设计方案的领先EDAEDA工具供应商工具供应商 - Mentor - Mentor ::美国俄勒冈州的美国俄勒冈州的WilsonvilleWilsonville 中文译名中文译名“ “明导资讯明导资讯” ” - Altera - Altera ::美国加州圣何塞可编程芯片逻辑解决方案倡导者美国加州圣何塞可编程芯片逻辑解决方案倡导者 - Aldec - Aldec ::美国内达华州致力于可编程芯片逻辑的设计验证领域美国内达华州致力于可编程芯片逻辑的设计验证领域设计过程设计过程 - - 验证电路逻辑验证电路逻辑school of phyebasics of ic layout design42n n模拟验证:生成的模拟验证:生成的“ “testbench”testbench”与与“ “仿真波形仿真波形” ” 设计过程设计过程 - - 验证电路逻辑验证电路逻辑counter4 waveformcounter4 testbenchschool of phyebasics of ic layout design43 Synplify - Synplicity Synplify - Synplicityn n编译器编译器/ /逻辑综合器:逻辑综合器: Design Compiler - SynopsysDesign Compiler - Synopsys Buildgates - Cadence Buildgates - Cadence 综合网表(综合网表(NetlistNetlist):): module div47_ungating ( reset, clk, sel, clk47 );module div47_ungating ( reset, clk, sel, clk47 ); input reset, clk, sel; input reset, clk, sel; output clk47; output clk47; wire clk4, clk5, n_2, n53, n54; wire clk4, clk5, n_2, n53, n54; div4_ungating mydiv4 ( .reset(n54), .en4(n53), .clk(clk), .clk4(clk4) ); div4_ungating mydiv4 ( .reset(n54), .en4(n53), .clk(clk), .clk4(clk4) ); div5_ungating mydiv5 ( .reset(n54), .en5(n_2), .clk(clk), .clk5(clk5) ); div5_ungating mydiv5 ( .reset(n54), .en5(n_2), .clk(clk), .clk5(clk5) ); inv1a1 U20 ( .A(n53), .Y(n_2) ); inv1a1 U20 ( .A(n53), .Y(n_2) ); mx2a3 U21 ( .D0(clk5), .D1(clk4), .S(n53), .Y(clk47) ); mx2a3 U21 ( .D0(clk5), .D1(clk4), .S(n53), .Y(clk47) ); clk1a3 U22 ( .A(sel), .Y(n53) ); clk1a3 U22 ( .A(sel), .Y(n53) ); buf1a1 U23 ( .A(reset), .Y(n54) ); buf1a1 U23 ( .A(reset), .Y(n54) ); endmodule endmodule设计过程设计过程 - - 编译网表编译网表school of phyebasics of ic layout design44n n综合:综合: 综合是前端模块设计中的重要步骤之一,综合的过程是将行为描述综合是前端模块设计中的重要步骤之一,综合的过程是将行为描述的电路、的电路、RTLRTL级的电路转换到门级的过程。
级的电路转换到门级的过程 综合可分为行为级综合、逻辑综合、测试综合以及物理综合等等综合可分为行为级综合、逻辑综合、测试综合以及物理综合等等 行为级综合:行为级综合:是一种高层次综合高层次综合是连接系统行为和系是一种高层次综合高层次综合是连接系统行为和系统结构之间的纽带高层次综合在算法一级接受系统的行为描述,转统结构之间的纽带高层次综合在算法一级接受系统的行为描述,转换成为用换成为用ALUALU、、RAMRAM等功能单元、存储单元和互联元件(多路选择器,等功能单元、存储单元和互联元件(多路选择器,总线等)描述的电路结构高层次综合是电路综合领域中最上层任务总线等)描述的电路结构高层次综合是电路综合领域中最上层任务传统高层次综合的主要任务包括传统高层次综合的主要任务包括调度调度、、分配分配和和控制电路生成控制电路生成三个部分三个部分 所谓所谓调度调度,就是将系统行为中的操作赋给执行过程中的某一时间段就是将系统行为中的操作赋给执行过程中的某一时间段所谓所谓分配分配,是将操作和变量赋给相应的硬件进行运算和存储,将数据,是将操作和变量赋给相应的硬件进行运算和存储,将数据传输通道赋给相应的硬件进行数据的传输。
传输通道赋给相应的硬件进行数据的传输控制电路的生成控制电路的生成,是在数,是在数据通路设计好之后,综合一个按调度要求驱动数据通路的控制器目据通路设计好之后,综合一个按调度要求驱动数据通路的控制器目前的高层次综合的研究重点在数据通路综合上前的高层次综合的研究重点在数据通路综合上 设计过程设计过程 - - 编译网表编译网表school of phyebasics of ic layout design45n n综合:综合: 物理综合:物理综合:工具如工具如SynopsysSynopsys公司的公司的Physical CompilerPhysical Compiler,它是解,它是解决决0.180.18微米以下工艺技术的微米以下工艺技术的ICIC设计环境,是设计环境,是SynopsysSynopsys物理综合流程物理综合流程的最基本的模块,它将综合、布局、布线集成于一体,让的最基本的模块,它将综合、布局、布线集成于一体,让RTLRTL设计者设计者可以在最短的时间内得到性能最高的电路可以在最短的时间内得到性能最高的电路 通过集成综合算法、布局通过集成综合算法、布局算法和布线算法。
在算法和布线算法在RTLRTL到到GDS IIGDS II的设计流程中,的设计流程中,Physical Physical CompilerCompiler向设计者提供了可以确保即使是最复杂的向设计者提供了可以确保即使是最复杂的ICIC设计的性能预设计的性能预估性和时序收敛性估性和时序收敛性 逻辑综合:逻辑综合:SynopsysSynopsys公司的公司的Design Compiler(DC)Design Compiler(DC)是公认的标准,是公认的标准,同时也是目前工业领域最流行的综合工具它可以方便地将同时也是目前工业领域最流行的综合工具它可以方便地将HDLHDL语言语言描述的电路转换到基于工艺库的门级网表描述的电路转换到基于工艺库的门级网表设计过程设计过程 - - 编译网表编译网表school of phyebasics of ic layout design46n n综合:综合: 测试综合:测试综合:经过代工厂复杂的制造过程后,已经包含了若干个裸片经过代工厂复杂的制造过程后,已经包含了若干个裸片的晶圆需要进行严格的测试然后划片、封装,经过封装后的裸片变成的晶圆需要进行严格的测试然后划片、封装,经过封装后的裸片变成芯片。
但此芯片仍然需要进一步进行封装后测试,若无故障,才能算芯片但此芯片仍然需要进一步进行封装后测试,若无故障,才能算真正的产品真正的产品 可测性设计可测性设计DFTDFT((design for testdesign for test)就是指为了使测试(制造测试))就是指为了使测试(制造测试)尽可能简单而有意识地在设计中加入一定附加逻辑的设计方法尽可能简单而有意识地在设计中加入一定附加逻辑的设计方法 DFTDFT可分为两个范畴,设计范畴和测试模式生成范畴可分为两个范畴,设计范畴和测试模式生成范畴 设计范畴的任务是在考虑了扫描链插入的逻辑综合之后所进行的测设计范畴的任务是在考虑了扫描链插入的逻辑综合之后所进行的测试综合;试综合; 自动测试模式生成自动测试模式生成(ATPG)(ATPG)的任务是根据所采用的故障模型确定一的任务是根据所采用的故障模型确定一最小的激励向量集以使得设计的故障覆盖率达到期望值最小的激励向量集以使得设计的故障覆盖率达到期望值 扫描综合的工具:扫描综合的工具:SYNOPSYSSYNOPSYS的的DFT CompilerDFT Compiler。
ATPGATPG工具:工具:SYNOPSYSSYNOPSYS的的TetraMAXTetraMAX,,MENTORMENTOR的的FastScanFastScan设计过程设计过程 - - 编译网表编译网表school of phyebasics of ic layout design47n n驱动强度:驱动强度: 编译器综合生成很大的网络,所以我们试图用单个驱动源驱编译器综合生成很大的网络,所以我们试图用单个驱动源驱动多个单元,这时需要考虑单元的驱动强度或扇出动多个单元,这时需要考虑单元的驱动强度或扇出 扇出数表示一个门能够驱动多少个器件如单元库中多个不扇出数表示一个门能够驱动多少个器件如单元库中多个不同的反相器表示成同的反相器表示成 1x1x,,2x2x或或4x4x等,就表明了它们的驱动强度等,就表明了它们的驱动强度设计过程设计过程 - - 编译网表编译网表inv2inv4inv81x2x4xschool of phyebasics of ic layout design48n n时钟数综合:时钟数综合:Clock Tree Synthesis (CTS)Clock Tree Synthesis (CTS) 如果编译器把一个大的网络分割成较小易于驱动的部分,会如果编译器把一个大的网络分割成较小易于驱动的部分,会自动插入额外的缓冲单元来驱动每一个新形成的小网络。
缓冲单元自动插入额外的缓冲单元来驱动每一个新形成的小网络缓冲单元帮助驱动门和布线电容,本身并没有什么逻辑功能帮助驱动门和布线电容,本身并没有什么逻辑功能 作为基准的时钟,通常要连接成千上万个门,时钟网络一般作为基准的时钟,通常要连接成千上万个门,时钟网络一般都非常大,所以我们要插入缓冲器以驱动分割后的时钟网络,形成都非常大,所以我们要插入缓冲器以驱动分割后的时钟网络,形成时钟树,此过程称为时钟树,此过程称为“ “时钟树综合时钟树综合” ”设计过程设计过程 - - 编译网表编译网表Clock Tree Networkschool of phyebasics of ic layout design49n n版图设计工具:版图设计工具: Silicon Ensemble - CadenceSilicon Ensemble - Cadence Astro - Synopsys Astro - Synopsys1、读入网表,跟foundry提供的标准单元库和 Pad 库以及宏模块库进行映射;2、整体布局,规定了芯片的大致面积和管脚位置以及宏单元位置等粗略的信息; 3、读入时序约束文件,设置好 timing setup 菜单,为后面进行时序驱动的布局布线做准备; 4、详细布局,力求使后面布线能顺利满足布线布通率 100%的要求和时序的要求; 5、时钟树综合,为了降低 clock skew 而产生由许多 buffer单元组成的“时钟树”; 6、布线,先对电源线和时钟信号布线,然后对信号线布线,目标是最大程度地满足时序; 7、为满足 design rule 从而 foundry 能成功制造出该芯片而做的修补工作,如填充一些 dummy等。
这七大步骤是基本的流程,其中每大步骤里面包含很多小的步骤 版图设计过程版图设计过程 - - 平面布局平面布局P&R flowschool of phyebasics of ic layout design50n n平面平面/ /整体布局(整体布局(FloorplanningFloorplanning):): 平面布局工具在芯片上划出功能区域、平面布局工具在芯片上划出功能区域、确定这些区域间的连接关系、确定确定这些区域间的连接关系、确定I/OI/O压压焊块的位置,并反馈有关平面布局在进行焊块的位置,并反馈有关平面布局在进行布线时的难易程度平面布局工具从编译布线时的难易程度平面布局工具从编译软件产生的网表文件中获取它所需要的连软件产生的网表文件中获取它所需要的连接关系和门的信息接关系和门的信息 由于最终的平面布局输出文件说明了由于最终的平面布局输出文件说明了各个门的总体位置,所以平面布局工具就各个门的总体位置,所以平面布局工具就会知道所有导线的大致长度,把这些信息会知道所有导线的大致长度,把这些信息回送到数字电路模拟器中验证,以检查由回送到数字电路模拟器中验证,以检查由于这些估计的导线影响电路时序的可能性于这些估计的导线影响电路时序的可能性有多大。
有多大版图设计过程版图设计过程 - - 平面布局平面布局P&R flowschool of phyebasics of ic layout design51n n布置布置/ /详细布局(详细布局(PlacementPlacement):): 布置工具固定每块(布置工具固定每块(blockblock)逻辑门的)逻辑门的确切位置,力求使后面布线能顺利满足布线确切位置,力求使后面布线能顺利满足布线布通率布通率100%100%的要求和时序的要求的要求和时序的要求 布置软件从某一模块开始,寻找与这一布置软件从某一模块开始,寻找与这一模块相关的部件,然后根据逻辑门的连接关模块相关的部件,然后根据逻辑门的连接关系和平面布局工具的输出文件来安排它们的系和平面布局工具的输出文件来安排它们的位置 很多布置工具根据设计中信号的时序要很多布置工具根据设计中信号的时序要求来确定门的布置,这一方法称为求来确定门的布置,这一方法称为“ “时序驱时序驱动版图设计动版图设计” ” I/OI/O驱动器是一些特殊的单元,它们将驱动器是一些特殊的单元,它们将驱动输入信号,提供输出,并包括了驱动输入信号,提供输出,并包括了ESDESD保保护和测试电路。
护和测试电路I/OI/O驱动器也在此时布置驱动器也在此时布置版图设计过程版图设计过程 - - 布置布置P&R flowschool of phyebasics of ic layout design52n nCTSCTS((Clock Tree SynthesisClock Tree Synthesis):): CTSCTS包括针对时钟树的综合和优化;包括针对时钟树的综合和优化;另外还包括布局后优化阶段另外还包括布局后优化阶段IIII((Post-Post-CTS optimizationCTS optimization)CTSCTS是为了降是为了降低低clock skewclock skew而产生由许多而产生由许多bufferbuffer单单元组成的元组成的“ “时钟树时钟树” ” n nRoutingRouting(布线):(布线): 布线是在门单元和布线是在门单元和I/OI/O引脚都确定引脚都确定好位置后,需要用布线工具把它们连接好位置后,需要用布线工具把它们连接起来两类高优先级的网线,电源和时起来。
两类高优先级的网线,电源和时钟线,必须先进行布线,因为它们是最钟线,必须先进行布线,因为它们是最关键的信号线之后才对信号线布线,关键的信号线之后才对信号线布线,目标是最大程度地满足时序目标是最大程度地满足时序版图设计过程版图设计过程 - - 布线布线P&R flowschool of phyebasics of ic layout design53n nClock Tree Optimization (CTO)Clock Tree Optimization (CTO):: what are the different CTO options and how do they reduce what are the different CTO options and how do they reduce skew?skew? skew: skew: 就是从时钟树根就是从时钟树根(clock root)(clock root)到所有的寄存器之中到所有的寄存器之中, ,最长和最长和最短的插入延迟的相差就是最短的插入延迟的相差就是: : clk1_skew = clk1_max_insertion_delay - clk1_min_insertion_delay clk1_skew = clk1_max_insertion_delay - clk1_min_insertion_delay the different options in CTO to reduce skew are described in the the different options in CTO to reduce skew are described in the following list.following list. 1 Buffer and Gate Sizing 2 Buffer and Gate Relocation 1 Buffer and Gate Sizing 2 Buffer and Gate Relocation 3 Level Adjustment 4 Reconfiguration 3 Level Adjustment 4 Reconfiguration 5 Delay Insertion 6 Dummy Load Insertion 5 Delay Insertion 6 Dummy Load Insertion 版图设计过程版图设计过程 - - CTOCTOschool of phyebasics of ic layout design54n nClock Tree Optimization (CTO)Clock Tree Optimization (CTO):: 版图设计过程版图设计过程 - - CTOCTOschool of phyebasics of ic layout design55n nClock Tree Optimization (CTO)Clock Tree Optimization (CTO):: 版图设计过程版图设计过程 - - CTOCTOschool of phyebasics of ic layout design56n nClock Tree Optimization (CTO)Clock Tree Optimization (CTO):: 版图设计过程版图设计过程 - - CTOCTOschool of phyebasics of ic layout design57版图设计过程版图设计过程 - - 预制门阵列芯片预制门阵列芯片 门阵列是一种预先定义并已部分预先制造出来的芯片,它实门阵列是一种预先定义并已部分预先制造出来的芯片,它实际上是许多逻辑门的阵列。
半导体制造商将圆片加工到淀积金属际上是许多逻辑门的阵列半导体制造商将圆片加工到淀积金属层之前,然后不再加工并就此存放起来,直到需要时再启用层之前,然后不再加工并就此存放起来,直到需要时再启用 此时仍然要使用平面布局工具、布置工具和布线工具,但是此时仍然要使用平面布局工具、布置工具和布线工具,但是不必布置任何扩散区或多晶硅,只需完成金属层和接触层这类不必布置任何扩散区或多晶硅,只需完成金属层和接触层这类芯片对于试制样品(芯片对于试制样品(prototypingprototyping)电路非常有用电路非常有用 这样,芯片不需要等这样,芯片不需要等1212个星期或者更长的时间才能制造出来,个星期或者更长的时间才能制造出来,而加工一个门阵列只需要几个星期的时间,因为只需完成工艺的而加工一个门阵列只需要几个星期的时间,因为只需完成工艺的最后几步最后几步CycloneIII EP3C120 FPGA Xilinx Virtex5 FPGA school of phyebasics of ic layout design58版图设计过程版图设计过程 - - 验证验证chip verification flow school of phyebasics of ic layout design59n n验证:验证: 验证方法可以分为模拟、仿真和形式验证三种。
验证方法可以分为模拟、仿真和形式验证三种 模拟完全是在软件中完成的,而仿真则是在硬件中进行而模拟完全是在软件中完成的,而仿真则是在硬件中进行而形式验证就是将两个设计进行等价性检验的技术形式验证就是将两个设计进行等价性检验的技术 n n形式验证:形式验证: 形式验证和静态时序分析形式验证和静态时序分析(”Formal Verification”(”Formal Verification”和和 ” ”STA”)STA”) 工具相结合来对设计流程中的各个层次的时序和功能进行验证是一工具相结合来对设计流程中的各个层次的时序和功能进行验证是一个非常好的习惯个非常好的习惯 形式验证的工具有形式验证的工具有SynopsysSynopsys公司的公司的FormalityFormality和和VerplexVerplex公公司的司的Conformal LECConformal LEC等(目前等(目前VerplexVerplex已被已被CadenceCadence收购)。
收购)版图设计过程版图设计过程 - - 验证验证school of phyebasics of ic layout design60n n设计验证:设计验证: 布线后的设计文件需要进行布线后的设计文件需要进行后仿真后仿真,此时的参数都已经是,此时的参数都已经是实实际的布线数据际的布线数据,而非此前的估计值根据仿真结果以发现问题并对,而非此前的估计值根据仿真结果以发现问题并对版图设计进行相应修改版图设计进行相应修改n n物理验证:物理验证: GDSII GDSII 文件包含了所有的部件、单元的所有连接以及所有的文件包含了所有的部件、单元的所有连接以及所有的通孔等信息通孔等信息 在得到布线后的在得到布线后的GDSIIGDSII后,需要运用后,需要运用DRC (Design Rule DRC (Design Rule Check)Check)对对GDSIIGDSII文件进行工艺设计规则检查,用文件进行工艺设计规则检查,用LVS (Layout LVS (Layout Versus Schematic)Versus Schematic)软件检查软件检查GDSIIGDSII文件和综合后的逻辑网表文件和综合后的逻辑网表(logic netlist)(logic netlist)的连接关系是否对等。
的连接关系是否对等 版图设计过程版图设计过程 - - 验证验证school of phyebasics of ic layout design61版图设计过程版图设计过程 - - 验证验证单元布置数据布线数据晶体管级版图GDSII文件融合GDSII文件产生GDSIILogic NetlistDRCLVSDRC及LVS检查school of phyebasics of ic layout design62版图设计过程版图设计过程 - - 流程图流程图Logic DesignLogic SynthesisFloorplanP&R ToolsGDS IIDRC + LVSFinal Chip DataDigital LibrariesTiming ChecksNetlistTiming ChecksGDSIIdigital ic design flowschool of phyebasics of ic layout design63版图设计过程版图设计过程 - - 实例实例a layout example of digital ic 。












