DC综合学习笔记

原文链接:IC_learner - 博客园 ,作者:IC_learner

1 逻辑综合的概述

1.1 概述

综合是前端模块设计中的重要步骤之一,综合的过程是将行为描述的电路、RTL级的电路转换到门级的过程。

Design Compiler(Synopsys)工具可以将HDL语言描述的硬件电路转换到基于工艺库的门级网表

Synthesis = Translation + Optimization +Mapping

DC的工作流程主要分为这三步:

Translation :翻译,主要把描述RTL级的HDL语言,在约束下转换成DC内部的统一用门级描述的电路(Generic Boolean Gates)(DC自己的库表现),以GTECH或者没有映射的ddc形式展现。

Logic optimization :逻辑优化, 就是把统一用门级描述的电路进行优化,就是把路径调整一下,门给改一下等等。

Gate mapping : 门级映射,把优化了的统一门级描述,DC用别的厂商的工艺库把电路给映射出来,得到一个.ddc文件。这个.ddc文件可以包含许多丰富的信息,比如映射的门电路信息与网表、.v格式的网表、延时信息(sdf)、工作约束(sdc)等信息。(.ddc不能用文本编辑器打开)。.ddc这个包含的网表文件是实际意义的网表文件,而.v这个形式的网表文件是用来做后仿真的文件。

延时信息的得出:线负载模型、拓扑结构模型(现在)。

1.2 DC的启动方式

启动DC的方式有三种:

GUI :DC的图形化界面格式。用图形化界面跑一下DC。(大规模设计不可能用这种方式)。

启动方式是:$design_vision

我们可以通过 man design_vision或者design_vision -help来查看DC的启动选项。

例如,可以使用$ design_vision -topographical_mode启动design compiler,意思是:

-topographical是启动DC的拓扑模式,-topo是简写。关于什么是拓扑模式,为什么要启动拓扑模式,后面会有相关的叙述。

dc_shell : DC以命令行的格式启动:$dc_shell

我们可以通过 man dc_shell或者dc_shell -help来查看DC的启动选项,不过我们可以发现,这些选项是一致的,是告诉我们如何启动DC,启动DC的时候可以加载哪些选项。

Batch mode : 批处理模式,也就是,前面那两种方式只是把DC启动起来,还没有真正地工作(即编译工程),前面两个方式需要通过source命令把脚本写进去以后,DC读取才真正工作。而这种批处理模式是,在启动的同时,告诉DC执行哪些脚本,例如:

$dc_shell -topo -f run.tcl | tee -i run.log

意思是:使用拓扑模式启动DC,启动的同时执行run.tcl脚本文件,并且把启动过程中显示在终端的信息记录到run.log中。| tee -i就是写进信息的管道命令,讲dc_shell -topo -f run.tcl 执行后显示的信息(输出结果),流入到run.log文件中。这样子是为了在DC启动失败的时候,通过查看启动信息,进而排除错误。

本教程这三种方式在后面都有流程介绍,本教程以命令行和批处理为主,其中dc_shell主要用来介绍DC的相关命令,此外命令行和批处理模式是现在设计的主要操作方式。

2 DC综合流程

2.1 基本流程概述

图1:高层次设计流程图:

对这张图的理解:

  1. 设计之前,准备好库、HDL代码的思想、约束生成;然后根据设计思想用 RTL 源码详细地、完整地为设计建立模型、定义设计中寄存器结构和数目、定义设计中的组合电路功能、定义设计中寄存器时钟等等的设计规格和实现。

  1. 完成 RTL 源码设计之后,应让设计开发与功能仿真并行进行:

  • 在设计开发阶段,我们使用 DC 来实现特定的设计目标(设计规则和优化约束),以及执行默认选项的初步综合。

  • 如果设计开发结果未能在 10%的偏差范围内满足时序目标,则需要修正 HDL 代码,然后重复设计开发和功能验证的过程。

  • 在功能仿真中,通过特定的工具来确定设计是否能按如所需的功能工作。

  • 如果设计未能满足功能要求, 我们必须修改设计代码以及重复设计开发和功能仿真,继续设计开发和功能仿真直至设计功能正确及满足小于 10%偏差的时序目标。

  1. 使用 DC 完成设计的综合并满足设计目标。这个过程包括三个步骤,即,

综合=转化+逻辑优化+映射

首先将 RTL 源代码转化为通用的布尔等式,然后设计的约束对电路进行逻辑综合和优化,使电路能满足设计的目标或者约束,最后使用目标工艺库的逻辑单元映射成门级网表,在将设计综合成门级网表之后,要验证此时的设计是否满足设计目标。如果不能满足设计目标,此时需要产生及分析报告确定问题及解决问题。

  1. 当设计满足功能、时序以及其他的设计目标的时候,需要执行物理层设计最后分析物理层设计的性能,也就是使用DC的拓扑模式,加入floorplan的物理信息后进行综合分析设计的性能。如果结果未能满足设计目标,应返回第三步;如果满足设计目标,则本部分设计周期完成。

图2:DC在设计流程中的位置

这个图将上面的流程图细化,着重与DC的部分,描述了使用DC进行逻辑综合时要做的事,同时,也是对前面的流程图解说的图形概述。在综合的时候,首先DC的HDL compiler把HDL代码转化成DC自带的GTECH格式,然后DC的library compiler 根据标准设计约束(SDC)文件、IP-DW库、工艺库、图形库、(使用拓扑模式时,还要加入ICC生成的DEF模式,加载物理布局信息)进行时序优化、数据通路优化、功耗优化(DC的power compiler进行)、测试的综合优化(DC的DFT compiler),最后得到优化后的网表。

图3 :使用DC进行基本的逻辑综合的流程图与相应的命令

第一步: 准备设计文件,DC的设计输入文件一般为HDL文件。

第二步 : 指定库文件,需要指定的库文件包括:链接库(link library)、目标库(target library)、符号库(symbol library)、综合库(synthetic )。

link library和target library:统称为technology library(即工艺库,习惯称之为综合库),technology library 由半导体制造商提供,包含相关cell的信息及设计约束标准,其中:

target library:在门级优化及映射的时候提供生成网表的cell,即DC用于创建实际电路的库。

link library:提供设计网表中的 cell,可以跟target_library使用同一个库,但是 DC 不用 link library中的 cell 来综合设计。

当 DC 读入设计时,它自动读入由 link library 变量指定的库。当连接设计时,DC 先搜寻其内存中已经有的库,然后在搜寻由 link library 指定的库。

  注:当读入的文件是门级网表时,需要把 link library 指向生成该门级网表的库文件,否则 DC 因不知道网表中门单元电路的功能而报错。 关于工艺库里面的具体内容,后面会专门进行说明。

Symbol library :提供 Design Vision GUI 中设计实现的图形符号,如果你使用脚本模式而不使用 GUI,此库可不指定 Symbol library。

Synthetic library :即为 Designware library,名字上翻译是综合库,但却常称之为IP库,而不是直译。特殊的 Designware library 是需要授权的(比如使用多级流水线的乘法器),默认的标准 Designware 由 DC 软件商提供,无需指定。

Create_mw_lib : 主要使用DC的物理综合的时候,需要生成物理库。

第三步 : 读入设计 :设计的读入过程是将设计文件载入内存,并将其转换为 DC 的中间格式,即GTECH 格式,GTECH 格式由“soft macros” 如 adders,comparators 等组成,这些组件来自 synopsys 的 synthetic lib,每种组件具有多种结构。

读入设计有两种实现方法实现方法:read 和 analyze & elaborate(实际上read 是 analyze 与 elaborate 的打包操作 ),下面介绍二者在使用中的区别:

类别

analyze&elaborate

read

格式

verilog或VHDL

verilog、VHDL、EDIF、db等所有格式

用途

综合verilog或VHDL的RTL设计

读网表、设计预编译

设计库

用-library选项定义设计库名,存储“.syn”文件

用缺省的设置,不能存储中间结果

Generics(vhdl)

可用

不可用

Architecture(vhdl)

可用

不可用

从表格中可以看到,analyze & elaborate 可以自由指定设计库,并生成 GTECH中间文件前生成.syn 文件并存储于 work 目录下,便于下次 elaborate 节省时间,我们一般选择 analyze & elaborate 的方法读入设计。

第四步 :定义设计环境:定义对象包括工艺参数(温度、电压等),I/O 端口属性(负载、驱动、扇出),统计 wire-load 模型,设计环境将影响设计综合及优化结果。

第五步 :设置设计约束:设计约束包括设计规则约束和优化约束,设计规则约束(design rule constraint)由工艺库决定,在设计编译过程中必须满足,用于使电路能按功能要求正常工作。设计优化约束定义了 DC 要达到的时序和面积优化目标,该约束由用户指定,DC 在不违反设计规则约束的前提下,遵循此约束综合设计。

第六步 :选择编译策略:对于层次化设计,DC中有两种编译策略提供选择,分别为top-down和bottom-up。在top-down策略中,顶层设计和子设计在一起编译,所有的环境和约束设置针对顶层设计,虽然此种策略自动考虑到相关的内部设计,但是此种策略不适合于大型设计,因为top-down编译策略种,所有设计必须同时驻入内存,硬件资源耗费大。在bottom-up策略中,子设计单独约束,当子设计成功编译后,被设置为dont_touch属性,防止在之后的编译过程中被修改,所有同层子设计编译完成后,再编译之上的父设计,直至顶层设计编译完成。bottom-up策略允许大规模设计,因为该策略不需要所有设计同时驻入内存。

第七步:编译:用complie命令执行综合和优化过程,还可以利用一些选项指导编译和优化过程。

第八步:分析及解决设计中存在的问题:DC可以产生一些报告以及设计的综合和优化结果。如:时序、面积、约束、功耗等报告,这些报告有助于分析和解决设计中存在的问题以改善综合结果,我们还可以利用check_design命令检验综合的设计的一致性。

第九步:存储设计数据:DC不会自动存储综合后的设计结果,因而需要离开DC时手动存储设计数据。比如存储网表、延时信息等数据文件。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
开关电源(Switching Power Supply)是一种将电能转换成特定电压输出的电源设备,其工作原理是通过将输入直流电压(DC)快速开关切换,经过能量转换和滤波电路,最终得到所需的输出直流电压(DC)。以下是一个开关电源DCDC设计的实例: 首先,确定设计目标,包括输入电压范围、输出电压范围、输出电流要求等。 其次,根据设计目标选择合适的开关电源拓扑结构。常见的有降压(Buck)、提升(Boost)、变换(Buck-boost)等结构,根据实际需求选择合适的拓扑结构。 再次,根据选择的拓扑结构,设计工作频率和开关管等器件。高频率可以减小元件尺寸,提高效率,但也会增加干扰和损耗。选择合适的开关管和辅助元器件,以满足电源的需求。 然后,设计控制策略和反馈回路。通过控制开关管的导通和关断时间,控制输出电压的稳定性。采用合适的反馈回路来实现电压的稳定性和短路保护等功能。 接下来,设计输入和输出滤波电路。输入滤波电路用于去除输入电源中的高频噪声和干扰,输出滤波电路用于去除开关动作的脉冲噪声,使输出电压稳定。 最后,进行模拟仿真和实际电路搭建。通过仿真验证设计的可行性和稳定性,在实际搭建电路时注意布线和散热设计,以确保电源的稳定性和效率。 综上所述,开关电源DCDC设计实例包括确定设计目标、选择拓扑结构、设计器件和控制策略、设计滤波电路以及进行仿真和搭建实际电路等步骤。根据具体需求和应用场景的不同,设计方案也会有所差异。设计一个高效稳定的开关电源需要充分考虑各个环节的要求和限制,以确保电源能够可靠地提供所需的电压输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值