1.03k likes | 1.26k Views
集成电路设计的 CAD 系统 北京大学. ICCAD 系统概述. ICCAD 系统的发展 第一代:60年代末:版图编辑和检查 第二代:80年代初:原理图输入、逻辑模拟向下 第三代:从 RTL 级输入向下,包括行为仿真、行为综合、逻辑综合等 流行的 CAD 系统: Cadence, Mentor Graphics, Viewlogic, Compass,Panda 等 ICCAD 系统的理想作用:实现完全的自动化设计,设计出各种各样的电路. ICCAD 系统的实际作用 设计信息输入: 语言输入编辑工具
E N D
ICCAD系统概述 • ICCAD系统的发展 • 第一代:60年代末:版图编辑和检查 • 第二代:80年代初:原理图输入、逻辑模拟向下 • 第三代:从RTL级输入向下,包括行为仿真、行为综合、逻辑综合等 • 流行的CAD系统:Cadence, Mentor Graphics, Viewlogic, Compass,Panda等 • ICCAD系统的理想作用:实现完全的自动化设计,设计出各种各样的电路
ICCAD系统的实际作用 • 设计信息输入: • 语言输入编辑工具 • 高层次描述的图形输入工具:VHDL功能图输入、逻辑图/电路图输入编辑、版图输入编辑 • 设计实现:综合器 • 设计验证:验证系统/电路符合功能/性能要求及设计规则要求 • 模拟器进行模拟(仿真)分析 • 设计规则的检查 什么是模拟? 对于设计输入抽象出模型,施加外部激励,观察输入,进行判断
整个设计过程就是把高层次的抽象描述逐级向下进行综合、验证、实现,直到物理级的低层次描述,即掩膜版图。整个设计过程就是把高层次的抽象描述逐级向下进行综合、验证、实现,直到物理级的低层次描述,即掩膜版图。 • 各设计阶段相互联系,例如,寄存器传输级描述是逻辑综合的输入,逻辑综合的输出又可以是逻辑模拟和自动版图设计的输入,版图设计的结果则是版图验证的输入。 • ICCAD系统介入了包括系统功能设计、逻辑和电路设计以及版图设计等在内的集成电路设计的各个环节
主要内容 • 系统描述及模拟 • 综合 • 逻辑模拟 • 电路模拟 • 时序分析 • 版图设计的CAD工具 • 计算机辅助测试技术 • 器件模拟和工艺模拟
系统描述与模拟:VHDL语言及模拟 • VHDL语言出现背景 一种硬件描述语言(hardware description language) 广义地说,描述电子实体的语言:逻辑图,电路图 大规模电路的出现: 逻辑图、布尔方程不太适用 需要在更高层次上描述系统 出现多种HDL语言,为便于信息交换和维护,出现工业标准
通常指高层设计阶段描述硬件 • HDL语言的特点 • 抽象地进行行为描述 • 结构化语言:可以描述电子实体的结构 • 多层次混合描述 • 既可被模拟,又可被综合 • 能提供VHDL模拟器的公司:Cadence、Mentor Graphics、Viewlogic、Synopsys等大型EDA公司和CLSI、Model-Technology、Vantage等专门公司 • Verilog
VHDL语言 • 基本概念:描述硬件电路,可以抽象地表示电路的行为和结构(完成什么功能,怎样组成) • 作用: • 对IC设计,支持从系统级到门和器件级的电路描述,并具有在不同设计层次上的模拟验证机制 • 可作为综合软件的输入语言,支持电路描述由高层向低层的转换 • 建模机制、模拟算法、模拟环境
建模机制 • 基本结构 • 行为描述 • 结构描述
VHDL语言的建模机制—— 基本结构 一个硬件单元在VHDL中看作一个设计实体 • 实体外观 • 实体说明:实体命名,实体与外部环境的接口描述,未涉及其内部行为及结构 • 实体功能 • 在结构体中实现 结构体:实体的输入-输出关系,实体的结构和行为描述 对应一个实体说明可以有多个结构体,不同的实现方案
功能描述: • 行为描述 • 数据流描述 • 结构描述 • 混合描述
Architecture behavioral of half _adder is 行为描述:描述外部行为 begin process SUM <=A+B; CO <= A and B; wait on A,B; end process; end behavioral; Architecture behavioral of half _adder is 数据流描述,未涉及具体结构 begin SUM <=A+B; CO <= A and B; end behavioral;
Architecture behavioral of half _adder is component XOR 元件的外观说明(表示符号,与实体不同) port( I1: in std_logic I2: in std_logic O1: out std_logic ); end component; component AND2 port( I1: in std_logic I2: in std_logic O1: out_ std_logic ); end component; begin U1: XOR port map(A,B,SUM); 元件引用,生成例元 (标号:元件名 端口映射) U2: AND2 port map(A,B,CO); end behavioral;
VHDL语言的建模机制——行为描述 • 电子实体中的 行为:反映信号的变化、组合和传播 行为的特点是信号的延迟和并行性 • VHDL中描述行为的基本单位是进程,由进程语句描述。
进程之间是并行的,进程内部是顺序 执行的。进程语句本身由一系列的顺序语句组成,顺序语句发生在该进程被激活的同一时刻
信号:各进程之间的通信,数据通路。信号的状态可能影响与信号相关的进程的状态信号:各进程之间的通信,数据通路。信号的状态可能影响与信号相关的进程的状态 • 信号赋值: • 模拟周期:在时刻t,从 一些信号更新、若干进程被激活到进程被挂起 • 信号在一个模拟周期完成求值,延迟td后更新值, td是信号延迟,也称DELTA延迟,在同一模拟时 刻,发生t, t+td ,t+2td,….多个模拟周期
进程并行:每个进程仅在满足一定条件的某个时刻被激活,同一时刻可以有多个进程被激活 进程并行:每个进程仅在满足一定条件的某个时刻被激活,同一时刻可以有多个进程被激活 对于串行机,模拟时钟在每个时刻停下,直到每个时刻被激活进程全被处理完
延迟描述:反映时序,建立精确的电路硬件模型延迟描述:反映时序,建立精确的电路硬件模型 • 什么是延迟? • 传输延迟 • 惯性延迟:输入信号在指定延迟时间内保持不变,元件的输出端才有响应。 进程为行为的基本单元 信号作为系统进程之间的数据通路 各进程并行执行
VHDL语言的建模机制——结构描述 • 结构描述:若干部件用信号线互连形成一个实体 • 部件:对某元件的调用(例元) 一个结构体由若干例元互连而成 • 元件:某个实体的某种结构,只有外观说明(元件说明语句) 一个元件说明,代表一种类型的元件,是一个符号 • 元件调用:元件例化语句 <例元标号>: <元件名> <外观映射表> • 结构描述中的信号:连接例元,值传递 例元的输出值变化会影响以此信号为输入的其他例元 元件例化语句可以并行
Architecture behavioral of half _adder is component XOR 元件的外观说明(表示符号,与实体不同) port( I1: in std_logic I2: in std_logic O1: out std_logic ); end component; component AND2 port( I1: in std_logic I2: in std_logic O1: out_ std_logic ); end component; begin U1: XOR port map(A,B,SUM); 元件引用,生成例元 (标号:元件名 端口映射) U2: AND2 port map(A,B,CO); end behavioral;
元件配置 元件例化语句生成例元引用的是元件,不是实体,实体结构中的例元应该同实在的实体设计相对应,进行元件配置,指出使用的实体和结构体 FOR <元件标号>: <元件名> USE ENTITY <库名>.<实体名> (结构名) 标号例元所引用的元件对应于某指定库的某实体和某结构体
Architecture structural_view OF full_adder IS Component half_adder PORT (in1,in2 : IN Std_logic; sum, carry : OUT Std_logic); End Component; Component or_gate PORT (in1,in2 : IN Std_logic; sum, carry : OUT Std_logic); End Component; Signal a,b,c : Std_logic; 说明连接元件所用的内部信号 Begin u1: half_adder PORT MAP (x,y,b,a); u2: half_adder PORT MAP (c_in,b,sum,c); u3: or_gate PORT MAP (c, a, c_out); End structural_view;
Configuration parts of full_adder IS For structural_view For u1,u2 : half_adder USE ENTITY WORK.half_adder(behav); End For; For u3 : or_gate USE ENTITY WORK.or_gate(arch1); End For; End For; End parts; 实体FULL_ADDER的配置,命名为PARTS,采用结构体 structural_view作为实体full-adder的结构体,该结构体中例化的两个元件u1,u2采用实体half-adder,结构体behav来源于WORK库,u3采用实体or-gate,结构体arch1来源于WORK库
VHDL语言的模拟算法 • 面向事件的模拟算法:同一时刻活跃信号占全部信号的15%,为提高效率,仅对发生事件的信号进行计算,对于不发生事件的信号则不进行计算 • 几个概念 • 什么是事件?信号的逻辑值发生变化 • 动态的全局事件表:记录信号事件和时间事件,可更新。 • 信号事件:信号驱动产生的事件; • 时间事件:进程由于等待时间条件而挂起的事件 • 激活进程:与电路中某变化的信号相关的进程,相应的信号称为敏感信号。 • 进程可以被敏感信号、等待时间、激活条件激活。
开始 激活所有进程 读入激励信号 记入全局事件表 施加 是 全局 事件表空? 新的输入信号 否 用户:语言输入,模拟器模拟 无 存在被激活的 进程? 是 执行被激活的进程 产生新的信号事件记入事件表; 时间等待事件记入事件表; 增加事件 进程挂起 最小时间间隔 否 当前时刻所有 激活进程模拟完 ? 是 根据全局事件表 更新相应的信号
综合 • 概念:从设计的高层次向低层次转换的过程,是一种自动设计的过程 一种专家系统 • 分类: • 系统级综合 • 高级综合 • RTL级综合:行为综合(软件:Synopsys,Ambit) • 逻辑综合 • 物理综合(逻辑图或电路图到版图,严格说应该是同级驱动)
高级综合 • 设计的算法级描述转换为RTL级描述 • 核心:分配(ALLOCATION)和调度(SCHEDULING) • 分配:给定性能、面积/功耗条件下,确定硬件资源:执行单元、存储器、控制器、总线等,产生数据通道 • 调度:确定这些结构的操作次序 • 根据控制流图和调度中产生的状态信息,利用传统的RTL/逻辑综合技术综合出控制器部分 • 目标:找到代价最小的硬件结构,使性能最佳
综合系统组成:编译器、模拟器、数据流综合子系统、控制流综合子系统、工艺映射系统逻辑图自动生成系统综合系统组成:编译器、模拟器、数据流综合子系统、控制流综合子系统、工艺映射系统逻辑图自动生成系统 • 综合过程: 输入的行为描述编译 中间数据结构 数据流综合子系统、控制流综合子系统 数据通道和控制部分(RTL级网表) 模拟验证 RTL两级工艺映射 工艺相关的结构 逻辑图自动生成 逻辑图 模拟验证
工艺映射:已知工艺无关的结构描述、目标工艺及一组设计约束,在满足设计约束条件下,在物理域上实现同一层次的结构描述。(不丢结构信息,增加工艺数据) 工艺映射:已知工艺无关的结构描述、目标工艺及一组设计约束,在满足设计约束条件下,在物理域上实现同一层次的结构描述。(不丢结构信息,增加工艺数据) 算法级不适用,RTL级(宏单元),逻辑级(标准单元或门阵单元、FPGA、PLD等)
综合中的优化问题(黑箱):资源共享、连接优化、时钟分配等综合中的优化问题(黑箱):资源共享、连接优化、时钟分配等 优化目标:面积、速度、功耗、可测试性
逻辑综合 • 概念:由给定的逻辑功能和性能要求,在一个包含许多结构、功能、性能已知的逻辑元件的逻辑单元库支持下,确定出由一定逻辑单元组成的逻辑结构 • 输入:逻辑设计描述;输出:逻辑网表或逻辑图
综合过程: 1. 设计描述 2. 设计编译 3. 逻辑化简和优化:完成逻辑结构的生成与优化,满足系统逻辑功能的要求。 4. 利用给定的逻辑单元库进行工艺映射,对生成的逻辑网络进行元件配置,进而估算速度、面积、功耗,进行逻辑结构的性能优化 5. 得到逻辑网表
综合中的优化问题(黑箱): 优化目标:面积、速度、功耗、可测试性 • 可综合的输入描述:VHDL、Verilog、HardwareC
逻辑模拟 • 逻辑模拟的基本概念:将逻辑设计输入到计算机,用软件方法形成硬件的模型,给定输入波形,利用模型算出各节点和输出端的波形,判断正确否 • 主要作用:验证逻辑功能和时序的正确性 • 分类:根据所模拟逻辑单元规模的大小 • 寄存器传输级模拟:总体操作正确性 • 功能块级模拟:加法器、计数器、存储器等 • 门级模拟:基本逻辑单元:门、触发器等 • 开关级模拟:晶体管:后仿真 主要介绍功能块级和门级逻辑模拟
几个概念 • 什么是逻辑功能?输入和输出之间的逻辑关系,不考虑与时间的关系。举例: • 什么是时序?考虑与时间的关系,输入和输出之 间与时间有关系 • 组合逻辑和时序逻辑 组合逻辑:输出只决定于同一时刻各输入状态的组合,与以前状态无关 特点:输入与输出间无反馈途径;电路中无记忆单元 时序逻辑电路:输出与输入状态有关,还与系统原先状态有关 特点:输入与输出间有反馈途径;电路中有记忆单元
逻辑模拟(续) • 设计输入方法:逻辑综合的结果;原理图输入;逻辑描述语言 • 主要作用: • 验证逻辑功能的正确性,真值表(first-step) • 延迟模拟:时序的正确性,预先检查是否有尖峰、竞争冒险现象(second step) 竞争冒险:从门的输入到输出存在延迟,不同门的延迟不同,不同通路上的延迟不同,引起电路出现错误的输出 举例: 两个路径在不同时刻到达:竞争;输出的干扰脉冲:冒险 • 主要环节:逻辑模拟模型、设计输入、模拟算法
逻辑模拟模型 • 元件的延迟模型和信号模型 • 元件的延迟模型:检查时序关系、反映竞争和冒险等现象;调用的门单元中已含有不同延迟模型信息 • 零延迟:检查逻辑关系正确性,组合逻辑和同步时序 • 单位延迟:逻辑关系正确性 • 指定延迟:不同元件或不同的元件类型指定不同的延迟;指定上升、下降时间;尖峰分析 • 最大-最小延迟:分析竞争 • 惯性延迟:可抑制尖峰 连线延迟:加到门延迟中;门之间加入延迟元件等
a b 1 最小延迟=1 最大延迟=2 a b 1 2
不同要求的逻辑模拟调用不同的延迟信息 • 快速模拟:验证逻辑功能 • 单位延迟 • 指定延迟 • 最大或最小延迟 • 详细模拟:检查竞争冒险等情况 • 双延迟模型
逻辑模拟模型(续) • 信号模型:逻辑模拟中信号的逻辑值和信号强度 • 信号值:实际电路,逻辑状态是0和1 在逻辑模拟中为了反映信号状态的过渡过程,模拟出竞争冒险,引入新的状态值 • 三值模拟 • 0,1,(不定态:记忆元件等未指定的初始态、不可预测的振荡态、无关态等) • 真值表 • 检测静态冒险 (静态0冒险和1冒险) 不能检测动态冒险
逻辑模拟模型(续) • 四值模拟 • 0,1, ,Z(高阻态:信号与其源断开后的状态,如单向开关) • 真值表 • 五值模拟、八值模拟等,但逻辑状态过多,模拟速度变慢
逻辑模拟模型(续) • 信号强度:处理线连逻辑关系:多个元件输出信号线直接相连,汇集点与信号的关系 信号强度:信号驱动能力,高强度信号占优势。 如果强度相等信号值不同,线连点强度不变,信号值未知。
逻辑描述 • 逻辑图输入:复杂电路(专门的输入编辑工具) • 对综合得到的逻辑网表可以直接模拟 • 逻辑描述语言:不同的逻辑模拟器不同 不同的设计层次不同 • 门级逻辑描述:逻辑的详细细节,门、触发器等逻辑元件及其相互连接 • 逻辑元件的描述:类型、功能、延迟、负载等 • 连接关系:线路图 • 可以嵌套,反映层次关系
以GFLS系统的描述语言为例, AB1 A B1 AB1 AXB BA1 X A1 BA1 B • NOT:A1=(A) • B1=(B) • NAND:AB1=(A,B1) BA1=(B,A1) • X=AXB(AB1,BA1)
逻辑模拟算法 • 编译方式和表格驱动方式 • 编译方式 将逻辑电路编译转换成一组指令代码。元件按功能 编成子程序,按相互间连接关系以一定顺序将子程 序连成总的可执行程序。 • 元件的计算顺序编排 输入端为0级,元件的级数等于所有前级元件最大级数加1; • 不考虑延迟,只能模拟组合逻辑电路和可忽略竞争冒险的同步时序电路
逻辑模拟算法(续) • 表格驱动方式 将逻辑电路转换成表格:电路描述表、元件类型表; 元件的扇入扇出表、信号线表 • 考虑延迟,可模拟异步时序 • 采用面向事件模拟:与VHDL模拟算法类似,信号驱动的是元件 • 对于较大规模的电路: 高速逻辑模拟器:软件硬件化,并行处理,模拟速度提高 1000倍
电路模拟 • 电路设计:根据电路性能确定电路结构和元件参数, 没有自动设计软件 设计人员根据电路性能要求,初步确定电路结构和元件参数,利用电路模拟软件进行模拟分析,判断修改 • 电路模拟:根据电路的拓扑结构和元件参数将电路问题转换成适当的数学方程并求解,根据计算结果检验电路设计的正确性 模拟对象:元件 优点:不需实际元件、可作各种模拟甚至破坏性模拟
电路模拟(续) • 在集成电路设计中起的作用: • 版图设计前的电路设计,保证电路正确(包括电路结构和元件参数) • 有单元库支持:单元事先经过电路模拟 • 无单元库支持的全定制设计:由底向上,首先对单元门电路进行电路设计、电路模拟,依此进行版图设计,直至整个电路 • 后仿真:考虑了寄生参数,由电路模拟预测电路性能 • 典型软件:SPICE、HSPICE