摘要:本文介绍了基于标准单元库的深亚微米数字集成电路的自动化设计流程。此流程从 设计的系统行为级描述或TL级描述开始,依次通过系统行为级的功能验证,设计综合, 综合后仿真,自动化布局布线,到最后的版图后仿真。在这里,我们用Synopsys公司的 VSS(VHDL System Simulator)工具进行各种仿真,用Design Compiler进行综合,用Cadence 公司的Silicon Ensemble进行自动布局布线。对于最后的版图后仿真,由于输出文件的限 制,我们改用Active--DL工具进行验证。本文同时用一个实例DDFS对整个流程加以了举 例说明。 关键词:库,仿真,约束,综合,floorplan,布局布线
摘要:本文介绍了基于标准单元库的深亚微米数字集成电路的自动化设计流程。此流程从 设计的系统行为级描述或 RTL 级描述开始,依次通过系统行为级的功能验证,设计综合, 综合后仿真,自动化布局布线,到最后的版图后仿真。在这里,我们用 Synopsys 公司的 VSS(VHDL System Simulator)工具进行各种仿真,用 Design Compiler 进行综合,用 Cadence 公司的 Silicon Ensemble 进行自动布局布线。对于最后的版图后仿真,由于输出文件的限 制,我们改用 Active-HDL 工具进行验证。本文同时用一个实例 DDFS 对整个流程加以了举 例说明。 关键词:库,仿真,约束,综合, floorplan,布局布线
前言 前言 传统的芯片设计方法是手工全定制。随着半导体工艺的几何缩小,集成电路设计已经 到了深亚微米的时代。在同一面积上,晶体管数目的迅猛增加,传统的芯片设计方已几乎 变得不可能。再加上time-to-market的压力越来越大,用户要求芯片制造商在最短的时间 内用最低的费用生产高性能产品。为了解决这些问题,新的方法学和工具得到了发展。近 几年来,为了缓解time-to-market的压力和快速更新设计以满足用户的要求,一些高性能 的工具和技术得到了发展。高级设计语言的应用,如HDL,Verilog,取代了手画电路图 并且提高了设计重用。技术更改指令EC0(Engineering Change Orders))技术的发展更进一 步的提高了设计重用。Formal Verification代替动态仿真,不仅提高了验证速度,更重 要的是它摆脱了工艺的约束和仿真test bench的不完全性,更全面的检查了电路的功能。 从行为级开始综合大大提高了设计者的设计灵活性,使设计者更进一步脱离了工艺与物理 的限制。设计预算方法学的发展使设计者在较少的时间内得到了较好的Q0,并且提供了 更好的环境约束。模块编译器简化和自动化了data-path设计,帮设计者解决复杂而没有 规则的data-path设计。自动布局布线提高了版图生成的效率,减少了过多的人工干预所 带来的不确定性。版图提取和分析加强了逻辑设计与物理设计之间的联系与信息交换,更 进一步提高了逻辑综合时对版图的考虑。设计重用技术,验证技术,行为综合和逻辑综合, 设计预算技术,模块编译技术,布局布线自动化,版图提取和分析等技术的应用大大提高 了设计人员的设计能力,缩短了设计周期。 本文讲述的是基于标准单元库的数字集成电路的设计流程和方法学。它从行为级的DL 描述开始,依次进行系统行为级仿真,RTL级仿真,逻辑综合,综合后仿真,自动化布局 布线,最后是版图后仿真。所有这些步骤都是通过工具自动完成,快速而有效。 我用Synopsys公司的VSS(VHDL System Simulator)工具进行各种仿真,用Design Compiler进行综合,用Cadence公司的Silicon Ensemble进行自动布局布线。对于最后的 版图后仿真,由于输出文件的限制,我们改用Active-DL工具进行验证。并且解决clock tree和版图后仿真的问题。本文用DDFS,I2C,counter等实例对整个流程加以了验证。 本文的第1章简要介绍了深亚微米数字集成电路的设计流程。从第2章开始我们将分 章节详细介绍各个主要步骤。第2章介绍系统行为级仿真方法。第3章介绍行为级综合和 模型编译。第4章解释了综合的概念,介绍了逻辑综合的实现及讨论了几个常见问题的解 决方法。第5章解决了版图后仿真的实现问题,阐述了各种技术库的生成,比较了系统行 为级仿真和综合后仿真的区别。第6章介绍了Formal Verification和其他辅助工具的应 用。第7章详细讲述了自动化布局布线方法,解决了clock tree的生成问题。由于版图后 仿真与综合后仿真在操作上没什么区别,这里就略去不讲
前 言 1 1 前 言 传统的芯片设计方法是手工全定制。随着半导体工艺的几何缩小,集成电路设计已经 到了深亚微米的时代。在同一面积上,晶体管数目的迅猛增加,传统的芯片设计方已几乎 变得不可能。再加上 time-to-market 的压力越来越大,用户要求芯片制造商在最短的时间 内用最低的费用生产高性能产品。为了解决这些问题,新的方法学和工具得到了发展。近 几年来,为了缓解 time-to-market 的压力和快速更新设计以满足用户的要求,一些高性能 的工具和技术得到了发展。高级设计语言的应用,如 VHDL , Verilog ,取代了手画电路图, 并且提高了设计重用。技术更改指令 ECO(Engineering Change Orders)技术的发展更进一 步的提高了设计重用。 Formal Verification 代替动态仿真,不仅提高了验证速度,更重 要的是它摆脱了工艺的约束和仿真 test bench 的不完全性,更全面的检查了电路的功能。 从行为级开始综合大大提高了设计者的设计灵活性,使设计者更进一步脱离了工艺与物理 的限制。设计预算方法学的发展使设计者在较少的时间内得到了较好的 QOR ,并且提供了 更好的环境约束。模块编译器简化和自动化了 data-path 设计,帮设计者解决复杂而没有 规则的 data-path 设计。自动布局布线提高了版图生成的效率,减少了过多的人工干预所 带来的不确定性。版图提取和分析加强了逻辑设计与物理设计之间的联系与信息交换,更 进一步提高了逻辑综合时对版图的考虑。设计重用技术,验证技术,行为综合和逻辑综合, 设计预算技术,模块编译技术,布局布线自动化,版图提取和分析等技术的应用大大提高 了设计人员的设计能力,缩短了设计周期。 本文讲述的是基于标准单元库的数字集成电路的设计流程和方法学。它从行为级的 HDL 描述开始,依次进行系统行为级仿真, RTL 级仿真,逻辑综合,综合后仿真,自动化布局 布线,最后是版图后仿真。所有这些步骤都是通过工具自动完成,快速而有效。 我用 Synopsys 公司的 VSS(VHDL System Simulator)工具进行各种仿真,用 Design Compiler 进行综合,用 Cadence 公司的 Silicon Ensemble 进行自动布局布线。对于最后的 版图后仿真,由于输出文件的限制,我们改用 Active-HDL 工具进行验证。并且解决 clock tree 和版图后仿真的问题。本文用 DDFS , I2C , counter 等实例对整个流程加以了验证。 本文的第1章简要介绍了深亚微米数字集成电路的设计流程。从第 2 章开始我们将分 章节详细介绍各个主要步骤。第 2 章介绍系统行为级仿真方法。第 3 章介绍行为级综合和 模型编译。第 4 章解释了综合的概念,介绍了逻辑综合的实现及讨论了几个常见问题的解 决方法。第 5 章解决了版图后仿真的实现问题,阐述了各种技术库的生成,比较了系统行 为级仿真和综合后仿真的区别。第 6 章介绍了 Formal Verification 和其他辅助工具的应 用。第 7 章详细讲述了自动化布局布线方法,解决了 clock tree 的生成问题。由于版图后 仿真与综合后仿真在操作上没什幺区别,这里就略去不讲
EDA设计的概述 第1章 EDA设计的概述 随着电路设计进入LSI,甚至LSI时代,电路规模迅速上升到几十万门甚至几 百万门。根据摩尔定律,每十八个月增加一倍。而设计人员的设计能力只是一个线性增长 的曲线,远远跟不上电路规模指数上升的速度。为了弥补这个差距,工业界对DA软件和 设计方法不断提出新的要求。在80年代,由美国国防部支持的Very High Speed Integrated Circiut发展计划促成了VHDL的诞生,并使之成为了国际标准。而Cadence公司的Verilog DL在工业界获得了广泛的接受,并最终成为了国际标准。利用DL进行设计大大方便了设 计输入,提高了设计抽象程度,更有利于设计人员发挥聪明才智,因而可以大大提高设计 效率,缩短了设计周期。 随着电路规模的增大和系统复杂度的增加,直接用电路实现已是不可能,RTL级的DL 编码也变得越来越难以忍受。行为级综合技术的发展为设计者带来了曙光。它使设计者开 始逐步摆脱繁重的RTL级编码,大大提高了设计者的设计灵活性和设计效率,减少了工艺 及物理对设计的约束。 为了提高设计的速度和设计成功率,利用已验证正确的设计作为新设计的一部分是现 在大规模设计的常用方法。随着时代的发展,人们对产品的要求越来越高。他们要求的不 仅仅是新产品的出现,更多的是要求改善旧产品的性能,增加更多的功能。为此对旧的设 计的修改是必须的。为了充分利用以前的成果,减少修改的工作量,加快设计修改速度, 同时尽量不影响不变部分,提高修改的成功率,技术更改指令EC0被提了出来并得到了发 展。 随着半导体工艺的不断进步,器件的特征尺寸越来越小,线宽越来越窄,器件的速度 变得越来越快。但同时随着设计的越来越复杂,电路规模的越来越大,金属线的长度和层 数不断增加,线宽也随之变小。这都导致了金属连线的延时变大。于是器件的延时不再是 一个系统的主要延时,连线的延时变得越来越重要,甚至超过了器件的延时。因此以前设 计系统时只考虑器件延时的观念已经行不通,设计时考虑连线的延时是必须的。设计者在 设计时必须同时考虑到综合和版图,且使综合和版图尽量结合在一起。把综合后的时序信 息前注释到布局布线,同时布局布线后提取寄生参数和时序延时信息后注释回综合,从而 使逻辑设计和物理设计紧密的结合起来。考虑到连线延时,必须进行版图后仿真。版图后 仿真必须后注释大量的版图时序延时信息。 电路规模的增大导致了时钟同步的问题。时钟到达不同子模块的延时不同,这成了一 个系统失败的致命弱点。为了解决时钟延时的问题,在布局布线中CLOCK TREE的技术得到 了极大的发展。它较好的解决了这时钟延时的问题。 随着系统规模的不断增大,功耗的问题变得越来越重要,散热成了人们的一大难题。 为此,设计者在进行设计系统的时候必须考虑功耗的问题。在逻辑综合后必须进行功耗分 析。 ●设计流程 基于标准单元库的数字集成电路设计方法主要流程为及工具使用如下: 1. 功能与规格要求: 2. 行为级编码,仿真test bench的准备及DFT存储器的BIST插入: 3.用VSS进行系统行为级的功能验证; 4.用Behavioral Compiler进行行为级综合,生成RTL级网表; 5.用VSS进行RT1级仿真: 6. 用Design Compiler进行初级综合: 7.用Design Budgeter进行设计约束的分配: 8.用Design Compiler进行逻辑综合与测试扫描插入: 9.用SS进行综合后时序功能验证; l0.用Design Compiler或Prime Time版图前静态时序分析: 11.用Power Compiler进行功耗分析: l2.用Silicon Ensemble进行f1 oorplan,.布局,Clock Tree的插入以及全局布线: l3.插入Clock Tree后的网表重新读回Design Compiler: l4.用Formality验证原来的综合后网表和插入Clock Tree后的网表:
EDA设计的概述 1 1 第 1 章 EDA 设计的概述 随着电路设计进入 VLSI ,甚至 ULSI 时代,电路规模迅速上升到几十万门甚至几 百万门。根据摩尔定律,每十八个月增加一倍。而设计人员的设计能力只是一个线性增长 的曲线,远远跟不上电路规模指数上升的速度。为了弥补这个差距,工业界对 EDA 软件和 设计方法不断提出新的要求。在 80 年代,由美国国防部支持的 Very High Speed Integrated Circiut 发展计划促成了 VHDL 的诞生,并使之成为了国际标准。而 Cadence 公司的 Verilog HDL 在工业界获得了广泛的接受,并最终成为了国际标准。利用 HDL 进行设计大大方便了设 计输入,提高了设计抽象程度,更有利于设计人员发挥聪明才智,因而可以大大提高设计 效率,缩短了设计周期。 随着电路规模的增大和系统复杂度的增加,直接用电路实现已是不可能, RTL 级的 HDL 编码也变得越来越难以忍受。行为级综合技术的发展为设计者带来了曙光。它使设计者开 始逐步摆脱繁重的 RTL 级编码,大大提高了设计者的设计灵活性和设计效率,减少了工艺 及物理对设计的约束。 为了提高设计的速度和设计成功率,利用已验证正确的设计作为新设计的一部分是现 在大规模设计的常用方法。随着时代的发展,人们对产品的要求越来越高。他们要求的不 仅仅是新产品的出现,更多的是要求改善旧产品的性能,增加更多的功能。为此对旧的设 计的修改是必须的。为了充分利用以前的成果,减少修改的工作量,加快设计修改速度, 同时尽量不影响不变部分,提高修改的成功率,技术更改指令 ECO 被提了出来并得到了发 展。 随着半导体工艺的不断进步,器件的特征尺寸越来越小,线宽越来越窄,器件的速度 变得越来越快。但同时随着设计的越来越复杂,电路规模的越来越大,金属线的长度和层 数不断增加,线宽也随之变小。这都导致了金属连线的延时变大。于是器件的延时不再是 一个系统的主要延时,连线的延时变得越来越重要,甚至超过了器件的延时。因此以前设 计系统时只考虑器件延时的观念已经行不通,设计时考虑连线的延时是必须的。设计者在 设计时必须同时考虑到综合和版图,且使综合和版图尽量结合在一起。把综合后的时序信 息前注释到布局布线,同时布局布线后提取寄生参数和时序延时信息后注释回综合,从而 使逻辑设计和物理设计紧密的结合起来。考虑到连线延时,必须进行版图后仿真。版图后 仿真必须后注释大量的版图时序延时信息。 电路规模的增大导致了时钟同步的问题。时钟到达不同子模块的延时不同,这成了一 个系统失败的致命弱点。为了解决时钟延时的问题,在布局布线中 CLOCK TREE 的技术得到 了极大的发展。它较好的解决了这时钟延时的问题。 随着系统规模的不断增大,功耗的问题变得越来越重要,散热成了人们的一大难题。 为此,设计者在进行设计系统的时候必须考虑功耗的问题。在逻辑综合后必须进行功耗分 析。 设计流程 基于标准单元库的数字集成电路设计方法主要流程为及工具使用如下: 1. 功能与规格要求; 2. 行为级编码,仿真 test bench 的准备及 DFT 存储器的 BIST 插入; 3. 用 VSS 进行系统行为级的功能验证; 4. 用 Behavioral Compiler 进行行为级综合,生成 RTL 级网表; 5. 用 VSS 进行 RTl 级仿真; 6. 用 Design Compiler 进行初级综合; 7. 用 Design Budgeter 进行设计约束的分配; 8. 用 Design Compiler 进行逻辑综合与测试扫描插入; 9. 用 VSS 进行综合后时序功能验证; 10. 用 Design Compiler 或 Prime Time 版图前静态时序分析; 11. 用 Power Compiler 进行功耗分析; 12. 用 Silicon Ensemble 进行 floorplan,布局,Clock Tree 的插入以及全局布线; 13. 插入 Clock Tree 后的网表重新读回 Design Compiler ; 14. 用 Formality 验证原来的综合后网表和插入 Clock Tree 后的网表;
EDA设计的概述 2 15.用Prime Time进行全局布线后静态时序分析: l6.用Silicon Ensemble进行细节布线: l7.用Prime Timing进行版图后静态时序分析: 18.用VCS或其他门级电路的仿真器进行版图后时序功能验证: 19.流片 大体的流程图如图1.1所示: 由于篇幅的限制,本文将只详细讲述几个重要的工具,其他工具只讲述其流程
EDA设计的概述 2 2 15. 用 Prime Time 进行全局布线后静态时序分析; 16. 用 Silicon Ensemble 进行细节布线; 17. 用 Prime Timing 进行版图后静态时序分析; 18. 用 VCS 或其他门级电路的仿真器进行版图后时序功能验证; 19. 流片 大体的流程图如图 1.1 所示: 由于篇幅的限制,本文将只详细讲述几个重要的工具,其他工具只讲述其流程
EDA设计的概述 3 功能与规格要求 行为级编码 功耗分析 行为级的功能验证 f1 oorplan,布 局, NO 和全 布线 功能正确? 重新综合插入CT后 YES 的网表 行为级综合 插入CT前后的逻辑 网表比较 RTL级功能验证 全局布线后STA NO 功能正确? NO 时序满足? YES YES 初级综合 细节布线 RCs,SDF 约束分配 版图后STA 逻辑综合与测试扫 描的插入 40 时序满足? 综合后仿真 YES 版图后仿真 功能正确? 0 、功能正确? YES 版图前STA 流片 NO 时序满足? YES 图1.1数字集成电路的设计流程 3
EDA设计的概述 3 3 功能与规格要求 行为级编码 行为级的功能验证 行为级综合 功能正确? RTL级功能验证 功能正确? 初级综合 约束分配 逻辑综合与测试扫 描的插入 综合后仿真 功能正确? 版图前STA 时序满足? 功耗分析 floorplan ,布 局, CT插入和全 局布线 重新综合插入CT后 的网表 全局布线后STA 时序满足? 细节布线 版图后STA 时序满足? 版图后仿真 功能正确? 插入CT前后的逻辑 网表比较 流片 NO YES YES NO NO YES YES NO YES NO NO YES NO YES RCs,SDF 图 1.1 数字集成电路的设计流程
行为级仿真 第2章 行为级仿真 2.1行为级仿真简介 当设计完成后,为了验证功能是否正确,设计者必须对其设计源文件进行仿真。因为 这时的设计文件为行为级的DL文件,故称此仿真称为行为级仿真。当设计源文件经过行 为综合,或手工编写,转换为RTL级设计文件后,设计者还必须进行RTL级仿真。因为RTL 级仿真与行为级仿真在具体操作上没什么区别,本文将不再讲述TL级仿真。 2.1.1工具介绍: synopsys提供了数个仿真工具:Scirocco、VH⑩L仿真工具、Verilog仿真工具。 不同的仿真工具有不同用途和各自的优点。 1.Scirocco Scirocco为RTLO级功能验证提供最快最高性能的HDL仿真。Scirocco既支持基于 周期(cycle-based)的仿真也支持事件驱动(event-driven)的仿真。Scirocco使基 于周期(cycle-based)的仿真有着事件驱动(event--driven)仿真的灵活性。这个技术为综合 的设计优化提供了最佳性能。它支持混合语言仿真。Scirocco支持各级的设计描述,但只 对行为级和寄存器级进行优化。Scirocco支持后仿真机制。支持多语言,多平台,多仿真 器。Scirocco有强大的纠错能力。 后仿真机制:就是通过把VCD(a Value Change Dump)历史文件作为输入,对事件驱动 仿真不再进行调试,而直接分析VCD文件里记录的仿真结果。 2.HDL仿真工具 VHDL仿真工具用于Synopsys高级设计学的功能验证阶段。它包括Synopsys系统仿真 器(VSS)和Cyclone。VSS是一个事件驱动仿真器,Cyclone是一个基于周期的仿真器。 VSS和Cyclone都可用于确认和验证寄存器级设计,VSS还可用于验证门级设计。VHDL仿 真器工具顾名思义只能对DL设计进行仿真,但是它可以产生Verilog目标文件,使其可 用于VCS(Verilog Compiled Simulator)仿真器。同样对于Verilog设计,设计者也可通 过VCS仿真器产生VHDL目标文件,使其用于VSS仿真器。这样就解决了混合语言仿真的问 题。 基于周期仿真器:只在每个时钟的有效沿计算设计源代码的值,而对每个周期内的其 他时序信息不与考虑,即对时钟周期间的事件不进行仿真。信号在时钟沿是被假设为稳定 的,因此建立时间,保持时间,脉冲宽度的违约现象都被忽略。虽然两个时钟沿间的信号 和时序信息被忽略了,但是它大大加快了仿真的速度和俭省了内存空间。对复杂的大型设 计,这种仿真机制有着很大的优势。 事件驱动仿真器:在单个周期内,信号值在最后稳定之前,于逻辑路径的任何一点都 可能改变数次。每当某个事件发生,仿真器就对信号值更新一次。仿真器在整个时钟周期 都描绘出所有信号的值。 基于周期仿真和事件驱动仿真的区别如图2.1所示:
行为级仿真 1 第 2 章 行为级仿真 2.1 行为级仿真简介 当设计完成后,为了验证功能是否正确,设计者必须对其设计源文件进行仿真。因为 这时的设计文件为行为级的 HDL 文件,故称此仿真称为行为级仿真。当设计源文件经过行 为综合,或手工编写,转换为 RTL 级设计文件后,设计者还必须进行 RTL 级仿真。因为 RTL 级仿真与行为级仿真在具体操作上没什么区别,本文将不再讲述 RTL 级仿真。 2.1.1 工具介绍: synopsys 提供了数个仿真工具: Scirocco 、 VHDL 仿真工具、 Verilog 仿真工具。 不同的仿真工具有不同用途和各自的优点。 1. Scirocco Scirocco 为 RTL0 级功能验证提供最快最高性能的 VHDL 仿真。 Scirocco 既支持基于 周期( cycle-based )的仿真也支持事件驱动( event-driven )的仿真。 Scirocco 使基 于周期(cycle-based)的仿真有着事件驱动(event-driven)仿真的灵活性。这个技术为综合 的设计优化提供了最佳性能。它支持混合语言仿真。 Scirocco 支持各级的设计描述,但只 对行为级和寄存器级进行优化。 Scirocco 支持后仿真机制。支持多语言,多平台,多仿真 器。 Scirocco 有强大的纠错能力。 后仿真机制:就是通过把 VCD(a Value Change Dump)历史文件作为输入,对事件驱动 仿真不再进行调试,而直接分析 VCD 文件里记录的仿真结果。 2. VHDL 仿真工具 VHDL 仿真工具用于 Synopsys 高级设计学的功能验证阶段。它包括 Synopsys 系统仿真 器(VSS)和 Cyclone 。 VSS 是一个事件驱动仿真器, Cyclone 是一个基于周期的仿真器。 VSS 和 Cyclone 都可用于确认和验证寄存器级设计, VSS 还可用于验证门级设计。 VHDL 仿 真器工具顾名思义只能对 VHDL 设计进行仿真,但是它可以产生 Verilog 目标文件,使其可 用于 VCS(Verilog Compiled Simulator) 仿真器。同样对于 Verilog 设计,设计者也可通 过 VCS 仿真器产生 VHDL 目标文件,使其用于 VSS 仿真器。这样就解决了混合语言仿真的问 题。 基于周期仿真器:只在每个时钟的有效沿计算设计源代码的值,而对每个周期内的其 他时序信息不与考虑,即对时钟周期间的事件不进行仿真。信号在时钟沿是被假设为稳定 的,因此建立时间,保持时间,脉冲宽度的违约现象都被忽略。虽然两个时钟沿间的信号 和时序信息被忽略了,但是它大大加快了仿真的速度和俭省了内存空间。对复杂的大型设 计,这种仿真机制有着很大的优势。 事件驱动仿真器:在单个周期内,信号值在最后稳定之前,于逻辑路径的任何一点都 可能改变数次。每当某个事件发生,仿真器就对信号值更新一次。仿真器在整个时钟周期 都描绘出所有信号的值。 基于周期仿真和事件驱动仿真的区别如图 2.1 所示:
行为级仿真 2 C y c l o n ss i m u l a t e s th i s p a t h I n o n e Io c k c l o ud R e 8 i s t e r e g i s t c 1 oc k C 1 o c k 事件驱动仿真 D a t a 于周期仿 真 D a t a 图2.1事件驱动与基于周期仿真的区别 1)VSS介绍 VSS是一种贯穿从概念到ASIC sign off的功能强大的仿真器。它可以用于仿真和调 试综合前和综合后行为级,寄存器级和门级描述的VDL设计。它是一个复杂的事件驱动仿 真器。虽然高级设计的三个设计发展阶段:概念确认阶段,功能验证阶段,执行验证阶段, VSS都可以使用,但是它更适合于概念确认阶段和执行验证阶段(门级仿真)。 它有三种仿真机制: Interpreted:具有充分的内嵌交互调试特性 Compiled:具有最快的RTL和行为级仿真速度 Gate-level:快速门级仿真和ASIC sign off验证 VSS核心程序:HDL分析器(vhdl-event)、HDL库分析器(liban)、HDL仿真器 (vhdlsim)、VHDL调试器(vhdldbx)、波形观察器(waves)。 2)Cyclone介绍: Cyclone是一个快而功能强大的基于周期的仿真器。它直接计算和仿真RTL级源代码, 而不是在仿真前先把RTL级代码综合成门级电路。它使用简单的逻辑和强度值。它把 std_1 ogic package里定义的9状态逻辑转换成了2状态逻辑(0,1,Z)或3状态逻辑(0, 1,X,Z)。它映射L,H,W弱逻辑状态为0,1,X强逻辑状态,减少了仿真时逻辑 值的数目。它忽略了逻辑延时值。Cyclone有着比VSS更高的性能和更少的运行仿真时间。 在功能验证阶段,设计模型较稳定,仿真次数较少(同概念确认阶段相比)。Cyclone就是 为这种较稳定模型的的冗长侧试优化的。而且它具有良好的直觉性和交互性的调试性能, 方便了设计者在功能验证阶段修改其设计。Cyclone与Synopsys的综合工具紧密的结合在 一起,它将影响HDL源代码,使其更适合于综合。因此在RTL功能验证阶段,建议使用Cyclone 仿真器。 l.Verilog仿真工具 Verilog仿真工具的具体应用和VHDL仿真工具类似,只不过它只适用于Verilog源代 码的仿真,而DL仿真器只适合于DL源代码的仿真。Verilog仿真工具的仿真器为 VCS(Verilog Compiled Simulator)。它的具体介绍略。 以上各种软件的使用大同小异,特别是仿真命令几乎没什么区别。其中有点需要注意 的是:Scirocco与其他仿真工具在流程上有点小区别。那就是Scirocco因为即支持基于 周期的仿真又支持事件驱动的仿真,所以在它用混合模式分析源文件后,进行混合模式仿 真前,需要产生分块文件给它进行分块处理。如果不对需要进行基于周期仿真的顶层设计用 分块命令语句指定,它将以事件驱动模式运行。分块命令语句为: cycle [option]design root (design_root为顶层设计的configuration-name)。 下面的介绍我们主要以VDL仿真工具中的VSS为例。 2.1.2系统行为级仿真流程(如图2.2所示)
行为级仿真 2 图 2.1 事件驱动与基于周期仿真的区别 1) VSS 介绍 VSS 是一种贯穿从概念到 ASIC sign off 的功能强大的仿真器。它可以用于仿真和调 试综合前和综合后行为级,寄存器级和门级描述的 VHDL 设计。它是一个复杂的事件驱动仿 真器。虽然高级设计的三个设计发展阶段:概念确认阶段,功能验证阶段,执行验证阶段, VSS 都可以使用,但是它更适合于概念确认阶段和执行验证阶段(门级仿真)。 它有三种仿真机制: Interpreted : 具有充分的内嵌交互调试特性 Compiled : 具有最快的 RTL 和行为级仿真速度 Gate-level : 快速门级仿真和 ASIC sign off 验证 VSS 核心程序: VHDL 分析器(vhdl -event)、 VHDL 库分析器(liban)、 VHDL 仿真器 (vhdlsim)、 VHDL 调试器(vhdldbx)、波形观察器(waves)。 2) Cyclone 介绍: Cyclone 是一个快而功能强大的基于周期的仿真器。它直接计算和仿真 RTL 级源代码, 而不是在仿真前先把 RTL 级代码综合成门级电路。它使用简单的逻辑和强度值。它把 std_logic package 里定义的 9 状态逻辑转换成了 2 状态逻辑(0 ,1, Z)或 3 状态逻辑(0 , 1 , X , Z)。它映射 L , H , W 弱逻辑状态为 0 ,1, X 强逻辑状态,减少了仿真时逻辑 值的数目。它忽略了逻辑延时值。 Cyclone 有着比 VSS 更高的性能和更少的运行仿真时间。 在功能验证阶段,设计模型较稳定,仿真次数较少(同概念确认阶段相比)。 Cyclone 就是 为这种较稳定模型的的冗长测试优化的。而且它具有良好的直觉性和交互性的调试性能, 方便了设计者在功能验证阶段修改其设计。 Cyclone 与 Synopsys 的综合工具紧密的结合在 一起,它将影响 HDL 源代码,使其更适合于综合。因此在RTL 功能验证阶段,建议使用Cyclone 仿真器。 1. Verilog 仿真工具 Verilog 仿真工具的具体应用和 VHDL 仿真工具类似,只不过它只适用于 Verilog 源代 码的仿真,而 VHDL 仿真器只适合于 VHDL 源代码的仿真。 Verilog 仿真工具的仿真器为 VCS(Verilog Compiled Simulator)。它的具体介绍略。 以上各种软件的使用大同小异,特别是仿真命令几乎没什幺区别。其中有点需要注意 的是: Scirocco 与其他仿真工具在流程上有点小区别。那就是 Scirocco 因为即支持基于 周期的仿真又支持事件驱动的仿真,所以在它用混合模式分析源文件后,进行混合模式仿 真前,需要产生分块文件给它进行分块处理。如果不对需要进行基于周期仿真的顶层设计用 分块命令语句指定,它将以事件驱动模式运行。分块命令语句为: cycle [option] design_root (design_root 为顶层设计的 configuration-name)。 下面的介绍我们主要以 VHDL 仿真工具中的 VSS 为例。 2.1.2 系统行为级仿真流程(如图 2.2 所示) Data Data Clock Clock Register Register Logic cloud Cyclons simulates this path in one clock cycle 事件驱动仿真 基于周期仿真 From cloud T o cloud
行为级仿真 3 新建setup文件 建立设计库 得到VHDL源文件 S 分析VHDL源文件 五 设计仿真 显示和分析结果 验证仿真覆盖 图2.2系统行为级仿真设计流程 1.新建setup文件 VHDL仿真工具的setup文件.synopsys_.vss.setup指定了你的VHDL设计库名与实际 的NIX目录的映射关系,建立了你的查找路径,并给仿真控制变量赋值。 2.建立设计库 设计库用于存放源程序分析后的中间文件和设计所的reference库。 3.得到VHDL源文件 4.分析VHDL源文件 VDL分析器检查VHDL源文件的句法和语法错误。经检查没有错误的DL源文件转换 为中间格式的文件存放于设计库中。 5.设计仿真 VDL仿真器根据设计库里的中间文件建立完整的层次结构,计算仿真值。 6.显示和分析结果 利用波形观察器观察和分析仿真结果。 7.验证仿真的coverage coverage文件(.cov)列出了VHDL源文件每一行源代码的执行时间数。通过这些信息 可以验证设计瓶颈和未被激励的面积。 2.2 setup文件 仿真工具在每一次启动的时候都将读一次定义了环境变量的setup文件。VHDL仿真工 具有着三个同名的setup文件。一个为安装目录下的setup文件。它定义了缺省环境。一 个为你的根目录下的setup文件,它定义了了你所有设计的共同setup信息。一个为你工
行为级仿真 3 图 2.2 系统行为级仿真设计流程 1. 新建 setup 文件 VHDL 仿真工具的 setup 文件.synopsys_vss.setup 指定了你的 VHDL 设计库名与实际 的 UNIX 目录的映射关系,建立了你的查找路径,并给仿真控制变量赋值。 2. 建立设计库 设计库用于存放源程序分析后的中间文件和设计所的 reference 库。 3. 得到 VHDL 源文件 4. 分析 VHDL 源文件 VHDL 分析器检查 VHDL 源文件的句法和语法错误。经检查没有错误的 VHDL 源文件转换 为中间格式的文件存放于设计库中。 5. 设计仿真 VHDL 仿真器根据设计库里的中间文件建立完整的层次结构,计算仿真值。 6. 显示和分析结果 利用波形观察器观察和分析仿真结果。 7. 验证仿真的 coverage coverage 文件(.cov)列出了 VHDL 源文件每一行源代码的执行时间数。通过这些信息 可以验证设计瓶颈和未被激励的面积。 2.2setup 文件 仿真工具在每一次启动的时候都将读一次定义了环境变量的 setup 文件。 VHDL 仿真工 具有着三个同名的 setup 文件。一个为安装目录下的 setup 文件。它定义了缺省环境。一 个为你的根目录下的 setup 文件,它定义了了你所有设计的共同 setup 信息。一个为你工 建立设计库 得到VHDL源文件 分析VHDL源文件 设计仿真 显示和分析结果 验证仿真覆盖 新建setup文件
行为级仿真 4 作目录下的setup文件,它定义了你这个设计的setup信息。当你启动仿真工具时它依次 从你的安装目录,你的根目录,你的工作目录读入这三个setup文件。最后读的setup文 件有最高的优先权,即相同的变量定义,后面读入的setup文件定义将覆盖前面的setup 文件的定义。 如果想察看setup文件定义的变量可用命令show setup列出所有变量。 2.2.1 Setup文件的编辑 setup文件的一个简单样本: WORK LIBI LIB1 user/design/libl TIMEBASE ns ● 设计库的映射: library_logical_name design_library_name design_library_name host_directory_name library logical name:是指你在HDL源文件中库语句所写的库名,既LIBRARY, USE语句中的库名。 design_library name:是指仿真工具使用的中间库名。 host directory name:是指你的库所存放的实际目录。 如:上华的库csmc06我们放在根目录的csmchdlib子目录下。我们任取一个 有效的design library name-一libs,则设计库的映射写为: csmc06 >libs libs /home/usr/csmchdlib 有关设计库映射的详细说明请见建立设计库那一节。 ● 变量定义 variable name value 如:TIMEBASE=ns ●其他常用命令 如果你的命令需要续行请用续行符号“\” libs:/home/usr/ggh/sample_projects/example /debugger/libl 如果你要注释一个语句,请用注释符“-“ 如:-this is time base 注意:如果你想改变你的仿真精度,侧修改你的TIMEBASE变量。 2.3建立设计库 设计库用于存放设计分析后的中间文件,仿真器从设计库里取出中间文件仿真。 设计库还用于存放你的设计所引用的reference库,reference库在你的VHDL源文件 里用库语句说明(USE,LIBRARY)。 设计库有三个名字:a logical name,a library name,a physical name。 a logical name:是VHDL源文件里调用的库的名字,既library,use语句里指明的 库名。 a library name:是仿真工具使用的中间库名,它映射库的logical name到physical name。 a physical name:是你实际的主机上目录,它用于存放你的分析后的中间文件,或你 的资源库。 它们的关系如图2.3所示:
行为级仿真 4 作目录下的 setup 文件,它定义了你这个设计的 setup 信息。当你启动仿真工具时它依次 从你的安装目录,你的根目录,你的工作目录读入这三个 setup 文件。最后读的 setup 文 件有最高的优先权,即相同的变量定义,后面读入的 setup 文件定义将覆盖前面的 setup 文件的定义。 如果想察看 setup 文件定义的变量可用命令 show_setup 列出所有变量。 2.2.1 Setup 文件的编辑 setup 文件的一个简单样本: WORK > LIB1 LIB1 : user/design/lib1 TIMEBASE = ns 设计库的映射: library_logical_name > design_library_name design_library_name : host_directory_name library logical name :是指你在 VHDL 源文件中库语句所写的库名,既 LIBRARY , USE 语句中的库名。 design_library_name :是指仿真工具使用的中间库名。 host_directory_name :是指你的库所存放的实际目录 。 如:上华的库 csmc06 我们放在根目录的 csmchdlib 子目录下。我们任取一个 有效的 design library name—libs ,则设计库的映射写为: csmc06 > libs libs : /home/usr/csmchdlib 有关设计库映射的详细说明请见建立设计库那一节。 变量定义 variable_name = value 如:TIMEBASE = ns 其他常用命令 如果你的命令需要续行请用续行符号 “\” 如: libs: /home/usr/ggh/sample_projects/example \ /debugger/lib1 如果你要注释一个语句,请用注释符 “- -“ 如:--this is time base 注意:如果你想改变你的仿真精度,则修改你的 TIMEBASE 变量。 2.3 建立设计库 设计库用于存放设计分析后的中间文件,仿真器从设计库里取出中间文件仿真。 设计库还用于存放你的设计所引用的 reference 库, reference 库在你的 VHDL 源文件 里用库语句说明(USE, LIBRARY)。 设计库有三个名字: a logical name, a library name, a physical name 。 a logical name :是 VHDL 源文件里调用的库的名字,既 library , use 语句里指明的 库名。 a library name :是仿真工具使用的中间库名,它映射库的 logical name 到 physical name 。 a physical name :是你实际的主机上目录,它用于存放你的分析后的中间文件,或你 的资源库。 它们的关系如图 2.3 所示:
行为级仿真 5 VHDL Source File Operating System Directory library libl; LIBRARY 1 /remote/vhdl/dlib/lib_a VHDL Design Unit Library Design Logical Library Name VHDL Name Design Unit 图2.3三个设计库的关系 设计库有两种,一种为存放仿真分析后的中间文件的工作库(work library),一种为存 放你的设计调用的库的资源库(resource library)。 当你想改变你的VHDL源文件中调用的库时,我们可以通过改变setup文件中设计库的 映射来方便的实现。既我们不用改变VHDL源文件中LIBRARY语句。而是在setup文件中更 改设计库的design library name和design physical name,使其映射到新的目录,从而 达到了改变HDL源文件所调用的库的目的。 2.3.1创建work1 ibrary work library的约定design logical name为WORK,当然我们也可在调用VHDL分 析器的命令中利用-work选项覆盖这个缺省的design logical name。我们任选一个合法的 design library name,把logical name映射到这个名字: WORK design_library_name. 我们再创建一个系统目录作为design physical name,在setup文件中把这系统目录映射 到design library name:design_library_.name:design_physical_name。这就完成了 work library的创建。 2.3.2创建resource1 ibrary 根据VHDL源文件中LIBRARY语句指定的库名,我们得到design logical name。如: LIBRARY csmc06,则这csmc06就是我们的design logical name。然后我们任意指定一个 合法的design library name,在setup文件中把design logical name映射到library name:design_logical_name>design_library_name。再我们找到这资源库所存放的目录, 把其作为我们的design physical name,在setup文件中映射:design_.library_name: design_physical_.name。这就完成了resource library的创建。 2.3.3特别注意: a design library name必须映射到一个存在的目录,而不是一个空目录,否则VHDL 分析器在分析源文件的时候将报错,且停下来。 我们分析完源文件,在对中间文件进行仿真前,不能更改setup文件中设计库的映射 关系,否则仿真器将会找不到你的设计。 一个design library name只能对应一个目录。如果你的设计库有多个名字。请用多 个design logical name与之对应。 2.4设计分析 调用HDL分析器对设计源文件进行分析,我们可以使用vhdlan或gvan命令。 vhdlan命令格式:vhdlan[options].filename._list 例如我们分析mux.vhd文件 %vhdlan mux.vhd gvan命令格式:gvan[options],filename_list vhdlan支持基于周期的仿真(-cycle)和事件驱动的仿真(-event),但是-cycle的分 析必须是用Cyclone仿真器进行仿真。 gvan命令调用HDL分析器的图形界面,它把所有它检查到的错误都显示在错误浏览
行为级仿真 5 图 2.3 三个设计库的关系 设计库有两种,一种为存放仿真分析后的中间文件的工作库(work library),一种为存 放你的设计调用的库的资源库(resource library)。 当你想改变你的 VHDL 源文件中调用的库时,我们可以通过改变 setup 文件中设计库的 映射来方便的实现。既我们不用改变 VHDL 源文件中 LIBRARY 语句。而是在 setup 文件中更 改设计库的 design library name 和 design physical name ,使其映射到新的目录,从而 达到了改变 VHDL 源文件所调用的库的目的。 2.3.1 创建 worklibrary work library 的约定 design logical name 为 WORK ,当然我们也可在调用 VHDL 分 析器的命令中利用-work 选项覆盖这个缺省的 design logical name 。我们任选一个合法的 design library name ,把 logical name 映射到这个名字: WORK > design_library_name 。 我们再创建一个系统目录作为 design physical name ,在 setup 文件中把这系统目录映射 到 design library name : design_library_name : design_physical_name 。这就完成了 work library 的创建。 2.3.2 创建 resourcelibrary 根据 VHDL 源文件中 LIBRARY 语句指定的库名,我们得到 design logical name 。如: LIBRARY csmc06 ,则这 csmc06 就是我们的 design logical name 。然后我们任意指定一个 合法的 design library name, 在 setup 文件中把 design logical name 映射到 library name: design_logical_name > design_library_name 。再我们找到这资源库所存放的目录, 把其作为我们的 design physical name ,在 setup 文件中映射: design_library_name : design_physical_name 。这就完成了 resource library 的创建。 2.3.3 特别注意: a design library name 必须映射到一个存在的目录,而不是一个空目录,否则 VHDL 分析器在分析源文件的时候将报错,且停下来。 我们分析完源文件,在对中间文件进行仿真前,不能更改 setup 文件中设计库的映射 关系,否则仿真器将会找不到你的设计。 一个 design library name 只能对应一个目录。如果你的设计库有多个名字。请用多 个 design logical name 与之对应。 2.4 设计分析 调用 VHDL 分析器对设计源文件进行分析,我们可以使用 vhdlan 或 gvan 命令。 vhdlan 命令格式: vhdlan [options] filename_list 例如我们分析 mux.vhd 文件 %vhdlan mux.vhd gvan 命令格式: gvan [options] filename_list vhdlan 支持基于周期的仿真(-cycle)和事件驱动的仿真(-event),但是-cycle 的分 析必须是用 Cyclone 仿真器进行仿真。 gvan 命令调用 VHDL 分析器的图形界面,它把所有它检查到的错误都显示在错误浏览