精华内容
下载资源
问答
  • 逻辑综合

    千次阅读 2019-07-30 20:16:54
    利用工具将RTL代码转换为门级网表的过程叫做逻辑综合(Logic Synthesis),常见的逻辑综合工具是synopsys的design compile(DC); 综合一个设计的过程从读取RTL代码开始,通过施加时序约束关系,映射 产生一个门级...

    利用工具将RTL代码转换为门级网表的过程叫做逻辑综合(Logic Synthesis),常见的逻辑综合工具是synopsys的design compile(DC)

    综合一个设计的过程从读取RTL代码开始,通过施加时序约束关系,映射 产生一个门级网表文件;它可以分为三步

    1. 翻译:读入电路的RTL级描述,并将语言描述翻译成相应的功能块以及功能块之间的拓扑结构。这一过程的结果是在综合器内部生成电路的布尔函数表达式,不做任何逻辑重组和优化。

    2. 优化:根据所施加的时序和面积约束,按照一定的算法对翻译结果进行逻辑重组和优化。

    3. 映射:根据所施加的时序和面积约束,从目标工艺库中搜索符合条件的单元来构成实际电路的逻辑网表

    如下图所示:逻辑综合=翻译+优化+映射

    流程介绍

    (1)用RTL代码进行设计

    即用可综合的RTL代码进行设计的编写;

    (2)指定工艺库

    在根据约束条件进行逻辑综合时,对于选择的流片工艺,工艺库会提供综合工具所需要的标准逻辑单元的全部信息,即工艺库含有特定工艺条件下的标准逻辑单元的逻辑功能、单元面积、输入到输出的时序关系、输出的扇出限制以及对逻辑单元进行时序检查所需要的信息等.综合工具将根据工艺库提供的这些信息,对器件进行选择和电路结构调整,使其达到时序收敛;主要包括以下几个库:

    link_library:链接库,它是DC在解释综合后网表时用来参考的库;一般情况下,它和目标库相同;当使用综合库时,需要将该综合库加入链接库列表中;

    target_library:综合的目标库,它一般是由生产线提供的工艺相关的库;

    symbol_library:指定的符号库;

    synthetic_library:综合库,它包含了一些可综合的与工艺无关的IP;

    (3)读入RTL代码文件

    将RTL代码输入给综合工具,由综合工具进行编译;

    (4)定义环境的约束条件

    主要包括 : 设置环境条件     set_operating_conditions
                        设置线负载模型 set_wire_load_model
                        设置驱动强度     set_drive set_driving_cell
                        设置电容负载     set_load
                        设置扇出负载     set_fanout_load 

    (5)定义设计的约束条件

    主要包括:时钟定义的命令
                                                       creat_clock
                                                       set_colck_latency
                                                       set_clock_uncertainty
                                                       creat_generated_clock

                    设计规则约束
                                                       set_max_transition 最大跳变时间

                                                       set_max_fanout  最大扇出

                                                       set_max_capacitance 最大电容

                输入输出端口的延时
                                                      set_input_delay
                                                      set_output_delay 

               设置最大面积                 set_max_area
               设置伪路径                     set_false_path
               设置多周期路径              set_multicycle_path

    (6)设定综合策略 

    提供两种综合策略:自顶向下和自底向上

    对于一些规模较小的设计,一般采用自顶向下的策略,该方法的缺点是编译时间太长,一旦改变其中的某一个模块就必须重新编译;该方法的优点是仅需要对顶层进行约束,将整个设计作为整体来进行优化,可以得到较好的优化效果;

    自底向上的综合策略是指先将各个单独的子模块进行综合和优化,然后将它们整合到上一层模块中进行综合,重复这一过程直至顶层模块;这种方法的优点是对各个模块的管理很方便,缺点是需要很多脚本来维护综合后的设计;

    展开全文
  • DC逻辑综合学习资料

    2020-11-26 14:38:03
    比较系统的讲解了DC逻辑综合的步骤,概念等关键内容,整合了S家官方学习资料和网络资源以及自己本人经验,纯粹是本人亲自做的PPT,比较适合有一定基础的初学者。交流过程中如有疑问,欢迎指正批评。
  • fpga逻辑综合

    2013-07-08 17:23:29
    逻辑综合及门级仿真
  • DC逻辑综合使用流程
  • 逻辑综合工具designCompiler使用教程
  • FSM双逻辑综合目标区域优化
  • 为什么要逻辑综合 逻辑综合的基本原理 逻辑综合需要提供哪些文件 逻辑综合过程中施加约束 逻辑综合能产生那些结果

    逻辑综合系列主要说明以下问题:

    • 为什么要逻辑综合
    • 逻辑综合的基本原理
    • 逻辑综合需要提供哪些文件
    • 逻辑综合过程中施加约束
    • 逻辑综合能产生那些结果

    综合是前端设计的重要步骤之一,其过程是将行为描述的电路、RTL级的电路转换到门级,其目的在于:决定电路门级结构,寻求时序与面积的平衡,寻求功耗与时序的平衡,增强电路的测试性。常见的工具是synoosys公司的 Design Compiler,将HDL语言描述的电路转换到基于工艺库的门级网表。

    逻辑综合的步骤为:转译(Translation)、优化(Optimize)、映射(Mapping)

    DC在综合过程中会将电路划分为以下的处理对象:

      

    1. Design:整个需要综合的电路,即我们待综合的对象
    2. Port:最外部的端口,一般是电路与外部交互的IO口
    3. Clock:由于时钟上的任何问题都会对电路造成重要的影响,所以时钟需要单独处理
    4. Cell:被例化的模块
    5. Reference:例化模块的原电路
    6. Pin:Cell自身的引脚,注意与Port的区别
    7. Net:内部连线

    用Design Compiler做综合的流程如下:

    其实施流程为:

    1. 预综合过程(pre-synthesis process)
    2. 施加设计约束(contrainting design)
    3. 设计综合(synthesizing design)
    4. 后综合过程(post-synthesis process)

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

      ②指定库文件,需要指定的库文件包括:

    链接库(link library) 、目标库(target library) 、符号库(symbol library)、综合库(synthetic library)

      下面是库的解释,具体的解释在后面有说,这里先进行简单地概述一下:

     Link library & target library

        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

      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  可以自由指定设计库,并生成 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 策略允许大规模设计,因为该策略不需要所有设计同时驻入内存。

      ⑦编译: 

    用 Compile 命令执行综合与优化过程,还可以利用一些选项指导编译和优化过程。

      ⑧分析及解决设计中存在的问题 

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

      ⑨存储设计数据 

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

    展开全文
  • 逻辑综合工具DesignCompiler使用教程

    万次阅读 多人点赞 2019-07-18 12:01:25
    逻辑综合工具Design Compiler使用教程 图形界面design vision操作示例 逻辑综合主要是将HDL语言描述的电路转换为工艺库器件构成的网表的过程。综合工具目前比较主流的是synopsys公司Design Compiler,我们在设计实践...

    逻辑综合工具Design Compiler使用教程

    图形界面design vision操作示例

    逻辑综合主要是将HDL语言描述的电路转换为工艺库器件构成的网表的过程。综合工具目前比较主流的是synopsys公司Design Compiler,我们在设计实践过程中采用这一工具。Design compiler有两种工作模式,一种是tcl模式,另一种为图形模式。在设计中为增强直观性,采用图形界面design vision。TCL命令行模式可在设计过程中摸索熟悉,并使之成为习惯。tcl模式在启动工具之前,准备工作有四项:设计的HDL源文件、采用的工艺库文件、设计的约束文件、工具的启动文件。图形界面模式最少需要前两项,这里不作多说明。

    1. 启动工具

    登陆Linux之后进入的目录即是用户的家目录,在家目录下建立dcLab作为本次实验dc的操作主目录。在dcLab目录下,建立设计存放目录如source、约束文件目录如constrn、输出网表文件目录ntlst、报告输出目录rpt、log文件目录log、dc启动目录work,等等。
    实验室中的工作站存放有umc公司和tsmc公司的0.18um标准单元库的所有文件,存放在目录:/usr/eda/designKit/下面,设计过程中需要查找的话注意路径与示例中的图片上所示路径稍有不同。
    Design compiler工具在工作站中已经安装完毕,且用户的环境变量和license也已设置完成,登录之后直接启动工具即可。如果打开终端之后无法启动工具,可能就是license没有启动,需要首先采用命令:start_slic启动license,然后design vision才能正常开启与工作。建立相关的工程目录之后,进入本次实验的工作目录:~/dcLab/work后,采用启动命令:design_vision&,启动工具后相应的界面如下图1所示。
    在该界面中,最上方为菜单项和工具栏,用于设计过程中的各项操作。当窗口中选中不同的对象时,不同的菜单项和工具项会被激活。工具栏下面就是主窗口,用于显示不同的设计对象、各种报告等。再下方为log/history窗口,log
    页面显示操作响应,history界面回显菜单操作相应的tcl命令,操作过程中一定要对照查看,尽快熟悉tcl模式。最下方有design_vision-xg-t提示的就是tcl命令输入的位置,可以尝试将history页面的回显键入,查看响应。
    在这里插入图片描述
    图1 design vision启动界面
    启动工具之后就可以工作了,主要可分为四部分内容:对工程进行启动项设置、对设计进行面积/功耗/时序/环境/drc等约束、对设计进行综合、查看报告并保存结果。

    2. 配置工程启动文件

    工具启动之后,需要设置相应的工程启动文件,用于设定搜索路径、相关库文件等内容,对应工作目录下的.synopsys_dc.setup文件(该文件应该位于工具启动目录~/dcLab/work下,dc启动过程中会自动读取该文件的内容用来配置工程启动项。
    我们此时假设该文件不存在,当设置完成之后,可以将之保存,以后重启工具就可以不必设置了)。选择菜单项File—>Setup…,出现Application Setup窗口,如下图2所示。启动项相关的内容就在该表项中设置,用户可以直接填入相关内容,或者点击各栏右侧的查找按钮(标有…的小框)找到相应路径或
    者文件的位置。
    在这里插入图片描述
    图2 setup设置窗口
    在该窗口中可以看到打有红星()标号的项目是必须设置的,但是一般填上四项:search path、Link library、Target library*、symbol library*。首先来设置搜索路径,该项主要用来指明设计中工具所需文件的路径,应该包括源代码文件路径、工艺库文件(如果源代码有pad,则也应该包括pad库文件所在路径)、工具提供的中间库文件(gtech、designWare)路径、以及操作过程中需要读取的中间文件所在路径等。点击search path条目右侧的查找按钮,就会出现set search path 表格窗口,如下图3所示。
    在这里插入图片描述
    图3 search path设置窗口
    表格窗口已有的几项保留不动,其中第一项的点符号(.)表示当前工作目录,其余3项为工具提供的通用(gtech)库、ip单元库(design ware)以及符号(symbol)库和仿真模型库所在位置。点击Add…按钮,添加搜索路径(注意
    工作站上的软件工具、库文件均存放在/usr/eda目录下,与本例位置/opt/eda/稍有不同),如下图4所示。
    在这里插入图片描述
    图4 添加search path窗口
    选择标准单元工艺库所在的目录,点击OK完成一条搜索路径的设置,回到图3 界面,此时表格窗口中会多出一项刚刚添加的路径。同样,点击Add…按钮添加其余的搜索路径:symbol所在路径、设计代码所在路径、约束文件所在路径、io工艺库所在路径等。完成路径设置后,图3 所示的search path设置窗口会变成如下图5所示。点击OK按钮完成set search path工作。
    在这里插入图片描述
    图5 完成search path的表格窗口
    以上工作对应的tcl命令:set search_path “path”,其中path内容就是上
    述的路径(如”…/code …/constrn /usr/eda/designKit/umn18/sc-x/synopsys”)。
    完成搜索路径的设置后,要进行工艺库相关的文件配置。其实配置好搜索路径后可以直接将相应的库文件写入对应的表格项,同一项中各文件中间用空格分开即可。这里为了熟悉工具,仍然逐项查找填写。在图2界面中,点击Link library右侧的查找按钮,出现Set Link Libraries的表格窗口,如下图6所示。
    在这里插入图片描述
    图6 链接库的表格窗口
    在上图中第一项不要改动,表示的是链接对象为当前内存。同上面设置search path一样,点击Add…按钮,查找库文件(注意工作站上的路径位置与本例不同),出现的界面如下图7所示。
    在这里插入图片描述
    图7 链接库的查找与选择
    选中库文件后(注意link library和后面的target library采用的是synopsys的数据库文件格式db或者ddc,该文件是二进制格式;欲了解其内容可以察看
    相对应的lib文本文件,试着读一下会了解更多),点击open按钮,回到图6的界面,其中增加了一项刚刚选择的库文件,如下图8所示的界面,至此完成一个库文件的设定。
    在这里插入图片描述
    图8 选定slow.db链接库
    在标准单元库中选定slow.db和fast.db两个库文件,io单元库中也一样。一般在逻辑综合中最大延时是最重要的约束,因此也可以直接采用slow或者worst case库,而不标明fast或者best case库。本例中将其加上,主要用于对照时序报告察看二者的区别。
    设置完成链接库之后,形成如下图9所示的表格图窗,其中最后一项为工具自带的design ware IP库,用于复杂功能逻辑优化(?)。
    在这里插入图片描述
    图9 链接库文件选定图窗
    因为在前面设置了search path,其中包括了上述工艺相关库的路径,因此在设置link library和后面的target library的时候,可以直接写上库的文件名称而略
    去路径,工具可以自动完成相应文件的搜索,去除路径之后的链接库文件如下图10所示。
    在这里插入图片描述
    图10 无路径的链接库文件选定图窗
    在上图10或者图9中,点击OK按钮完成连接库的设定。设置链接库的操作可以直接采用tcl命令set link_library ”library” 来完成,其中引号中的就是刚才设定的几个库文件,用空格分开,简单吧。
    目标库的设定(target library)同link library操作一样,而且除了没有表示内存的星号(*)之外,内容也是完全一样的。选定或者填写结果如下图11所示。
    在这里插入图片描述
    图11 目标库的设定图窗
    目标库设置采用的tcl命令为:set target_library “lib”,其中lib的内容即为刚才设置的几个库文件(例“fast.db slow.db”)。
    然后再进行符号(symbol)库的设定,符号库主要是用来在gui窗口中查看电路时使用的,表示基本单元器件的视图。同target library一样,也可以直接写
    入库名,忽略路径。因该umc库中没有symbol文件,故采用工具中自带的symbol库文件。选择窗口、库名称见下图12。
    在这里插入图片描述
    图12 目标库的设定图窗
    符号库设置的tcl命令为:set symbol_library “lib”。在图12中点击ok按钮,完成设置symbol库。
    至此setup内容已经完成设置,结果如下图13所示。
    在这里插入图片描述
    图13 setup设定窗口
    在图13中,点击OK按钮,完成启动项内容的设置。随后该设置可以在菜单命令中导出:File—>Save info—>Design Setup,将该文件保存为设计启动配置文件.synopsy_dc.setup,直接放在work目录下。下次再在该目录下启动工具的时候就不必重新配置,点击File—>Setup…,就可以看到表格中的各项已经配置完成了。

    3.设计读入

    完成启动项配置后就要将设计倒入工具,选择菜单命令:File—>Read…,出现Read Design窗口。查找设计代码所在路径,选中所有需要的设计代码,如下图14所示。点击Open按钮,完成代码读入。
    在这里插入图片描述
    图14 setup设定窗口
    在读入代码的过程中,注意dv下方的log窗口回显与报告,如下图15。同时点选history键,查看相应的tcl命令:read(或者read_verilog)。
    在这里插入图片描述
    图15 读入设计时的窗口
    读入设计之后,当前的设计会是读如过程中最后一个代码文件对应的设计,
    要将顶层设计设为当前设计。在dv主界面的工具栏下方的工具条下下拉选项选中、设置当前设计,我们这里是dcLabCore。同样注意history栏中的tcl命令:set current_design dcLabCore,记住对应的操作。
    在这里插入图片描述
    图16 当前设计设定
    完成当前设计的设定后,以后的操作就是针对该设计进行的。下面要做的就是将设计与库链接起来。选择菜单命令:File—>Link Design。出现Link Design窗口,如下图所示。注意Search path与Link library两项与前述启动项中的设置是否一致。
    在这里插入图片描述
    图17 Link Design窗口
    点击OK按钮完成设计与库的链接。此时要注意log窗口的链接过程的操作回显,及时修改错误与告警。
    完成链接后要对设计进行检查。选择菜单命令:Design—>Check Design,出现如下窗口,点击OK按钮,对设计进行检查。注意log栏中的报告。
    在这里插入图片描述
    图18 Check Design窗口
    至此,读入设计的工作完成。在这过程中,源代码中的各种与综合相关的问题都会被检查出来,注意随时查看报告并修改直到被综合器接受。下面就要对设计进行约束了。

    4.设计约束与编译

    在dv的主界面中,因为已经读入设计,此时很多菜单和工具栏已经激活。在图16中,先选中Logical Hierarchy中的dcLabCore项,点击工具栏中的Create Symbol View(或者菜单项Schematic—>New Symbol View 选项),出现当前设计的symbol,我们的约束就要在当前设计中添加。
    这里之所以先创建一个symbol,因为很多设计的约束,比如创建时钟(create clock)、输入输出延时(set input_delay/output_delay)、驱动与负载(set drive/load)、时钟无关路径(set false_path)等等,都是针对设计的端口的(port),图形化的
    界面操作起来容易些。得到的symbol如下图19所示。
    在这里插入图片描述
    图19 创建当前设计的symbol
    首先创建时钟,在symbol中选中clk_cal端口,然后选择菜单项Attributes—> Specify Clock…,注意灰色的Port name项应该为clk_cal;如果不是,不要关闭Specify Clock窗口,再在symbol上选中该端口,就会发现port name相应改变。
    时钟的约束这里设定主要有四项,一项是时钟的名称,要方便易记、意义明确就好;二项是时钟的周期,由频率决定,这里clk_cal为50M,故周期20ns(时间单位在库中定义);三项是时钟的波形,定义一个时钟周期内高电平所处的时间区间;四项是将时钟网络设定为don’t touch,也就是在综合的过程中,时钟线上不要添加包括驱动buffer在内的任何器件。时钟信号clk_cal的选择与填写过
    程如下图20所示。
    在这里插入图片描述
    图20 创建时钟clk_cal
    注意在Don’t touch network选项前打勾。点击OK按钮完成时钟clk_cal的创建。时钟的参数这里就不解释了。同样的方法创建时钟clk_cd,如下图。
    在这里插入图片描述
    图21 创建时钟clk_cd
    时钟信号clk_cd频率80M,故此周期12ns,同clk_cal一样,将上升沿设定在波形中间。以上操作对应tcl命令:create_clock。
    创建完成时钟之后,就要进行输入(set input_delay)和输出延时(output_delay)的约束,因为该约束是相对于时钟信号的。在symbol界面中,按住键盘ctr键,用鼠标选择addi1/addi2/multi1/multi2/cacul_ind端口(因为这些端口是和同一时钟clk_cal绑定的,设计中输入由时钟clk_cal驱动的触发器中),选择Attributes—> Operating Environment —>Input Delay菜单项,填写、选中相应的项目。如下图所示。
    在这里插入图片描述
    图21 创建相对时钟clk_cal的输入延时
    通常输入延时计算为时钟周期的60%,也就是说留出60%的外部裕量。注意图中Relative to clock项的时钟选择要与设计中的定义一致。
    同样完成相对于时钟信号clk_cd的端口codei、codec_ind的输入延时,选择、填写后的界面如下图21所示。上述操作对应的tcl命令为:set input_delay “port”,
    其中port即为相应于时钟的端口。
    在这里插入图片描述
    图21 创建相对时钟clk_cd的输入延时
    完成输入延时之后进行输出延时的设定(output_delay)。选中symbol中的端口caculo(它是由时钟信号clk_cal驱动输出),选择菜单项Attributes —> Operating Environment —>Output Delay,填写、选择如下图的内容,点击Apply按钮完成设置。
    在这里插入图片描述
    图21 创建相对时钟clk_cal的输出延时
    同样完成输出信号decdo的输出延时的设定,注意该信号是和时钟clk_cd绑定的。以上操作定应tcl命令:set output_delay。
    现在除了输入信号sub_en和输出信号sub_ovfl以外,所有的信号(除rstn)都进行了约束。现在来进行余下这两个端口信号的约束。在symbol中选中这两个端口,选择菜单项Attributes—>Optimization Constraints—>Timing Constraints,出现Timing Constraints窗口,如下图所示选择填写,完成约束。对应的tcl命令为:set max_delay。
    在这里插入图片描述
    图22 约束输入与输出间的最大延时
    这里采用set max_delay的方法是因为输入端口信号sub_en到输出信号端口sub_ovfl之间没有时序逻辑,只有组合逻辑,因此要约束输入端口到输出端口之间的最大延时(最小延时除非有需要,否则可以不加以约束)。
    时序约束中还需要将无关路径区分开来,采用set_false_path的方法。所谓无关路径,就是告诉综合器某两条或者多条路径之间没有时序关系,可以不必理会、优化这些路径间的电路。设计中。sub_en端口的信号送入纯组合逻辑,而且与时钟clk_cal和clk_cd不存在相位依赖关系,故此这里设置为false path。在symbol界面中选定sub_en端口和clk_cal、clk_cd端口,选择菜单项:Attributes
    —>Optimization Directive—>Timing Paths,出现如下窗口,From栏中留有sub_en项,To栏中留有clk_cal和clk_cd两项,选中False path项。
    在这里插入图片描述
    图23 无关路径设置
    下面来设置驱动与负载(drive/load)。首先选中symbol中的输入信号端口,如下图所示。选择菜单项Attributes—> Operating Environment—>Drive Strength,出现Drive Strength窗口。按照下图填写、选择相应的内容,完成驱动设置。
    在这里插入图片描述
    图24-a 配置输入驱动
    在这里插入图片描述
    图24-b 配置输入驱动
    在symbol界面选中三个输出端口,选择菜单项Attributes—> Operating Environment—>Load,出现Load窗口。注意选中三个输出信号端口。在Capacitive load栏中填容性负载数值。
    在这里插入图片描述
    图25 输出负载约束
    以上操作对应tcl命令:set drive/load。
    现在来设置操作环境(Operating Conditions)的设置。选择菜单项Attributes—> Operating Environment—> Operating Conditions,出现如下窗口。
    在这里插入图片描述
    图26 操作环境的设置
    按照图示选择相应的内容,按按钮OK完成操作环境的设置。对应的tcl命令为:set operating_conditions。
    同样的,完成wire Load的设置:选择Attributes—> Operating Environment—> Wire Load菜单项,选择umc18_wl20模型。对应的tcl命令:set wire_load。
    在这里插入图片描述
    图27 线载模型的设置
    下面进行design rule的设定,主要是fanout和transition。选择菜单项Attributes—> Optimization Constraints—> Design Constraints,出现下图所示界面,只填写图示的两项即可。对应的tcl命令:set max_fanout/transition。
    在这里插入图片描述
    图28 fanout与transition的设置
    至此,设计相关约束设置完成,可以对设计进行综合了。选择菜单项Design—> Compile Design,出现设计编译窗口,如图选择,点击OK按钮编译设计。
    在这里插入图片描述
    图29 设计编译界面
    编译的过程会随着设计的复杂变慢,编译的过程中注意log窗口的输出。完成编译后,需要查看各种报告。

    5.查看报告与设计输出

    很多时候综合并不是一次就通过的,在这过程中有可能时序不满足约束要求,或者约束设置的不合理,或者设计本身有问题等,需要查看报告、调试。这里最重要的一个报告是约束报告。选择菜单项Design—>Report Constraints,出现如下图30所示的界面。
    在这里插入图片描述
    图30 约束报告选择界面
    勾选想要查看的内容,点击OK按钮,可以看到与约束相关的报告。简单的一个报告如下图31所示。
    查看报告的选项大多位于菜单Design和Timing之下。在完成综合之后,如果Report Constraints没有发现错误和不期望的告警,可以尝试将这些报告项输出,具体查看一下,非常有助于了解设计、熟悉工具。同时可以对照库中的.lib
    文件查看一些参数。
    在这里插入图片描述
    图31 约束报告结果
    如果没有报告错误,就可以将设计保存下来。选择菜单项File—>Save as,可以将设计保存为各种格式。
    在这里插入图片描述
    图32 保存设计界面
    同样可以保存启动项文件和约束文件:选择菜单项File—>Save info—> Constraints/Design setup,保存相应文件。
    6..synopsys_dc.setup文件与dcLab.con文件
    a. 启动项文件
    文件.synopsys_dc.setup应位于当前的工作目录中,Linux/Unix下为隐含文件。这里先给出一典型的.synopsys_dc.setup文件,如下所示。
    在这里插入图片描述
    文件.synopsys_dc.setup第一项内容设定工具工作过程中需要搜索的路径位置(search_path),一般包括源代码的目录、库文件(工艺库模型文件、symbol文件)的目录、约束/运行脚本的目录、某些中间文件的目录以及在工具的安装目录配置的启动搜索目录,包括gtech库等目录。
    文件.synopsys_dc.setup第二项内容一般用来设定目标库(target_library),也就是工艺库的名称,综合过程中工具会自动在搜索目录中寻找,来完成综合工作。第三项内容一般用来设定链接库(link_library),用于解析设计电路中的最小颗粒单元,其中,*,用来表示内存。
    文件.synopsys_dc.setup第四项内容用来设定symbol库,也就是design vision
    可以看到的网表图形。其余的内容还可以包括命名规则、别名定义等,可以任意设定,示例中没有一一给出。
    b.设计的约束文件
    约束文件主要用于优化设计电路的,主要内容有:读入/分析源文件、设定设计的工作条件/环境/设计规则、时序条件、面积约束、综合策略等。
    首先是读入源代码,也就是HDL文本描述的设计文件,此处不用制定目录,design compiler会在搜索目录($search_path)中搜索。tcl语句如下:

    read_verilog {dcLabCore.v dcLabTop.v iopads.v}
    读入设计原文件后,一般设定当前设计,这样约束条件才可有针对性施加:
    current_design dcLabCore
    设定当前设计后,要完成链接,也就是将设计与库链接起来,用于映射过程中搜寻相应的单元,完成综合。tcl语句: link
    检查设计,主要是检查完成转换(translate)的设计: check_design。然后设定输出网表的格式规则,输出未优化的设计:
    set verilogout_no_tri true
    change_names -rule verilog -hier
    write -f ddc -hier –out ../output/dcLabCore.ddc
    然后对设计设定时序约束,这是最重要的一项约束,用于设定设计的工作速度的。针对不同的设计部分,有不同的约束方法。这里假设设计为全同步设计,单时钟工作,复杂情况参考design compiler的手册即可。以下语句设定时钟及属性、输入信号的时间裕量:
    create_clock –name clk_cal -period 20 [get_ports clk_cal]
    #名称clk_cal,对应端口clk_cal,50M工作频率
    set_clock_uncertainty -setup 0.2 [get_clocks clk_cal] #时钟的不确定时间
    set_clock_latency -source -max 0.3 [get_clocks clk_cal]#时钟输入延时
    set_clock_latency -max 0.1 [get_clocks clk_cal]#时钟延时
    set_clock_transition -max 0.2 [get_clocks clk_cal]#时钟上升/下降时间
    set_dont_touch_network [get_ports "clk* rstn"]
    #不对时钟复位信号优化
    set_ideal_network [get_ports "clk* rstn"] #延时分析时认为时钟复位无延时
    set_input_delay -max 12 -clock clk_cal [get_ports "add* mult*"]#输入信号裕量
    set_output_delay -max 12 -clock clk_cal [get_ports "caculo"] #输出时间裕量
    完成时序约束后,要对设计的工作环境、设计规则等进行约束,如下约束语句:
    set_wire_load_mode top
    #设定线载模型的模式
    set_wire_load_model -library slow -name umc_wl20 -max
    #线载模型,要粗略综合一下估出面积,再设定
    以下是设计规则的约束:
    set_driving_cell -lib_cell FFEDQHD4X -pin Q [get_ports all_inputs]
    #驱动能力的约束
    set max_cap [expr [load_of slow/AND2HD4XSPG/A] * 5]
    set_load [expr 3 * $max_cap] [all_outputs] #设计负载设定
    set_fanout_load 10 [all_outputs] #扇出负载
    然后是综合的策略,简单的设计比较容易,这里不展开:
    compile -map_effort medium -incremental_mapping
    输出综合报告、输出综合网表、综合数据以及标准延时文件:
    rc > log/rc.log #时序报告
    write -f verilog -hier -out output/dcLabTop.sv #输出网表
    write -f ddc -hier -out output/dcLabTop.ddc#综合数据文件
    write_sdf -version 2.1 mapped/light_controller.sdf #标准延时文件
    

    上述内容为约束文件主要内容,同学们可以讲示例中的约束保存下来自己细看一下。

    展开全文
  • 基于MCU芯片的逻辑综合研究.pdf
  • 分析了量子电路可逆逻辑综合的意义、研究现状和研究进展,给出了相关的研究方法和目前量 子可逆逻辑综合研究中存在的主要问题,提出了量子可逆逻辑综合中的最小量子代价、最小化垃圾 信息位、最小化门的数量和可逆逻辑...
  • 逻辑综合重点解析(Design Compiler篇)

    万次阅读 多人点赞 2019-02-02 17:54:54
    逻辑综合重点解析(Design Compiler篇) 前言 3 1、逻辑综合(Logic Synthesis)分为哪三个步骤? 4 2、当你拿到一个ddc格式的文件,你是否能够知道这是一个已经综合过的设计? 4 3、使用Design Compiler进行...

    前言
    本文摘录自微信公众号 “数字芯片实验室”
    欢迎关注
    在这里插入图片描述

    1、逻辑综合(Logic Synthesis)分为哪三个步骤?
    在这里插入图片描述
    逻辑综合的行为是将数字电路的寄存器传输级描述(RTL,Register Transfer Level)“综合”成门级网表(Gate-Level Netlist)。Design Compiler将RTL和根据设计需求编写的约束文件作为输入综合出门级网表,在性能、面积和功耗之间进行trade-offs。后端Place&Route工具(ICC、Innovus)将门级网表作为输入生成GDSII文件用于芯片制造。
    逻辑综合 = 翻译 + 优化+ 映射。其中,read_verilog将RTL翻译成GTECH,compile进行综合,也就是优化和映射成工艺相关的门级网表。

    2、当你拿到一个ddc格式的文件,你是否能够知道这是一个已经综合过的设计?
    False
    综合前和综合后的设计都能够保存为.ddc格式。一般保存在unmapped和mapped 文件夹下。

    3、使用Design Compiler进行逻辑综合出现下述log,请问gtech.db和standard.sldb包含哪些信息?

    在这里插入图片描述
    gtech.db和standard.db是synopsys提供的默认库,分别包含了GTECH逻辑单元和基本的DesignWare IP模块。在使用read命令时,这些库都被自动地加载。

    4、Design Compiler综合过程中,target_library是如何被使用的?
    target_library使用在"compile"过程中,用来生成工艺相关的门级网表。Design Compiler尽量选择面积最小的逻辑门去满足设计功能和时序的要求。
    如果不通过“set target_library *”指定目标工艺库,默认值是your_library.db,同时工具会报出warning

    5、Design Compiler 综合过程中 “link”命令完成了什么功能?
    link是Design Compiler ”resolve”设计中例化模块的过程。Design Compiler通过变量“link_library”指定例化模块库的位置,和target_library一样,默认为your_library.db。建议显式地使用link命令,否则工具可能带着“unresolved references”进行综合,产生没有意义的结果,同时浪费时间。

    6、link_library = “ * $target_library”中的 "*"指的是什么 ?
    DC memory 。Design Compiler 首先会在DC memory中寻找匹配的例化模块。

    7、Design Compiler 逻辑综合中 search_path变量的作用是什么?
    DC在search_path指定的目录底下寻找设计代码和库文件。建议在search_path中使用相对路径,增强脚本环境的可移植性

    8、Design Compiler 逻辑综合流程中,下述脚本的意义是?
    在这里插入图片描述
    避免某些设计者只使用run 脚本综合设计,不仔细查看log和reoport。基于错误的link或者check_design结果run完整个综合流程会浪费大量不必要的时间。

    9、将综合前的设计保存为.ddc的格式文件有什么好处?
    read命令将rtl(unmapped)翻译成GTECH格式。对于一个较大的设计,rtl to ddc需要花费很长的时间。当我们需要对设计重新进行compile时,只要读取保存的unmapped的设计(.ddc)就能节省很多时间。如果rtl已经被更新,还是要重新读入rtl.

    10、请问在Design Compiler综合过程中,下述命令的作用是什么?
    在这里插入图片描述
    Design Compiler 完成了ASIC设计流程中的rtl to netlist过程,后续需要有第三方工具完成netlist to GDSII的实现。而第三方工具对于netlist有字符语法上的限制,所以需要使用change_names 命令,才能让第三方工具正确识别netlist。

    11、下面哪个是关于target_library和link_library变量正确的表述?

    a)所有在设计中例化的宏模块都应该在target_library中设置
    b) 在compile期间,DC从link_library中选择最小的逻辑门去满足时序要求
    c) link_library用于resolve例化模块,target_library用于在compile
    d) link_library自动加载.ddc文件

    C
    a) 应该是 link_library
    b) 应该是 target_library
    d) 应该是 link

    12、在设计中,port和pin有什么异同?
    相同点:port和pin都是一个input/output;
    不同点:port是当前设计的input/output;
    pin是当前设计中例化模块的input/output。
    如果当前设计被另外的设计例化,则port会变成pin

    13、在Design Compiler中如何正确地使用set_max_area约束命令?
    如果是面积约束过于严格,或者直接设为0,Design Compiler将执行面积优化,直到无法优化为止。面积优化可能会增加run time,但是不会影响时序优化。 时序约束优先级总是高于面积约束。 如果run time是一个需要在乎的问题,请将面积约束设为实际设计要求的值。 如果不关心run time,可以将其设置0。

    14、Design Compiler是如何划分时序路径进行时序分析的?
    在这里插入图片描述
    Design Compiler将设计划分为一个个timing path,每一条路径都有一个startpoint(input port、触发器的clock pin)和一个endpoint(output ports、触发器的data pin)
    Design Compiler会计算每一条路径的延时,然后比较arrive time和require time来判断这条路径是否满足时序要求。

    15、Design Compiler如何在逻辑综合的时候考虑到时钟树的影响?
    在这里插入图片描述
    Design Compiler可以使用 set_clock_uncertainty命令来建模时钟的skew + jitter + margin。如果不设置的话,默认值为0

    16、Design Compiler如何在逻辑综合阶段考虑时钟延迟的影响?
    在这里插入图片描述
    时钟的network latency是指时钟输入端口到触发器的时钟端延迟;
    时钟的source latency是指实际的时钟源到时钟输入端口延迟。
    在pre_layout阶段,使用set_clock_latency (-source)来建模;
    在post_layout阶段,使用set_propagated_clock来建模。

    17、什么是virtual clock,有什么用处 ?
    未连接到任何port或pin的时钟
    用作输入或输出延迟的参考点

    18、为什么模块级设计推荐寄存器输出?
    方便后级模块时序约束和时序预算

    19、input path、output path和reg-to-reg path分别被什么sdc语句约束?
    input path :set_input_delay
    output path :set_output_delay
    reg-to-reg : create_clock

    20、Design Compiler综合中,set_max_capacitance命令的用处是什么?
    max_capacitance属于“逻辑DRC”,它限制了端口的扇出电容。默认情况下,逻辑DRC的优先级高于时序和面积约束。max_capacitance是由工艺厂的库决定的。

    21、如何通过tcl脚本找出lib库最大的max_capacitance ?

    在这里插入图片描述

    22、Design Compiler 在综合时如何估计pre_layout的cell和net延时?

    在这里插入图片描述
    Design Compiler使用非线性延迟模型生成查找表, 用于计算cell延迟。
    在这里插入图片描述
    基于扇出和工艺厂提供的线负载模型(set_wire_load_model)计算net延迟。

    23、Design Compiler 的Topographical Mode相比Wire Load Models有什么优势?
    线负载模型(WLM)是基于工艺厂的数据统计,而不是特定于自己的设计。在深亚微米(UDSM)设计中,互连寄生参数对路径延迟有很大的影响 ,WLM是不够准确的。
    Topographical Mode使用placement算法来估计线延时,提供和实际物理布局更好的时序相关性。
    Topographical Mode 除了逻辑库之外,还需要物理库(Milkyway)

    24、使用Design Compiler,在compile或optimize之后应该执行的分析操作是什么?
    report_constraint –all_violators,如果这个报告表明没有违规行为,不需要进一步的时序和逻辑DRC分析。 如果有违规,可以使用report_timing执行更详细的分析。

    25、Milkyway库包含了哪些信息,Design Compiler中如何指定Milkyway库?
    物理Milkyway库(例如std,ip和pad)包含cell的物理布局描述,用于执行placement。 technology file定义了该工艺金属层,物理设计规则,电阻,电容单位等。TLU-plus文件定义深亚微米RC寄生模型。 这些文件由工艺厂商提供。
    在Design Compiler中,由下列命令定义:

    在这里插入图片描述
    26、Floorplan是通过什么指标来设置芯片的大小和形状的?
    Aspect Ratio(height/width),默认比值为1
    在这里插入图片描述
    Utilization(利用率)决定了cell的密集程度,提高利用率将减少core大小,默认利用率为0.6
    在这里插入图片描述

    27、DC Topographical mode如何读入设计的实际物理布局信息?
    1、 source PhysConstr.tcl
    2、 extract_physical_constraints <def_file>

    28、为什么用于综合的verilog不建议使用for循环?
    DC无法优化for循环的逻辑,只是单纯进行展开和复制,这可能降低电路的面积和性能

    29、Milkyway库中的“Layout” vs. “Abstract” 视图有什么不同?
    Milkyway库中包含相应的Abstract视图和 Layout视图, Abstract视图用于Place & Route减少工具处理的数据量。
    在这里插入图片描述
    Abstract视图不包含底层器件细节,仅包含以下内容:

    • cell的轮廓(placement工具将每个cell放置在core中的site上。 Placement工具只需要知道的是cell的大小和形状(轮廓)。)
    • 引脚位置和层(引脚通常是金属连接的区域。routing工具使用这些引脚位置来布线
    • Metal blockages(cell中某些不能布线的金属层区域,因为这些区域已经被该cell使用。上面的示例布局太简单,不需要Metal blockages。 Metal blockages更常见于IP宏模块

    30、针对上图,分别使用report_timing、report_timing -max_paths 2、report_timing -nworst 2 -max_paths 2会输出哪些slack ?
    在这里插入图片描述
    report_timing: 由于4条路径都属于同一path group,因此report_timing只会报出一条路径,即时序最差的路径(Slack =-0.3)
    report_timing -max_paths 2在每个endpoint都会报出一个最差的slack ,即(Slack = -0.3、Slack = -0.15)
    report_timing -max_paths 2 -nworst 2在每个endpoint允许报出两个最差的slack,即(Slack = -0.3、Slack = -0.25)

    31、分析上述时序报告,该进行什么样的优化操作?
    在这里插入图片描述
    请注意,相对于12.5ns的时钟周期,input delay为8.4 ns - 几乎为70%!
    实际上,该值要小得多,可以考虑将input delay减少到更合理的数字。

    32、如何生成上图所示的时钟,假设触发器的setup为0.03ns,Tmax最大允许延时为多大?
    在这里插入图片描述
    create_clock –period 1.6 –waveform {0 0.4 0.6 1.4 } –name My_CLK [get_ports Clk]
    Tmax = 0.6 - 0.4 – 0.03 = 0.17ns

    33、怎样理解上述原理图和约束?
    在这里插入图片描述
    指定外部逻辑(JANE’s_DESIGN)使用的时间,然后Design Compiler计算内部逻辑(MY_DESIGN)允许的时间。

    在这里插入图片描述
    如何约束上述设计?如果FF2和FF3的setup要求为0.2 ns:
    最大延迟TNmax =
    最大延迟TXmax =

    create_clock –period 3.6 –waveform {0.0 1.2} [get_ports Clk]
    set_input_delay –max 1.3 –clock Clk –clock_fall [get_ports A]

    Tn, max = 3.6 – 1.2 – 1.3 - 0.2 = 0.9ns
    Tx, max = 3.6 – 0.2 = 3.4ns

    34、如何约束上图多输入路径?假设触发器setup要求为0.14ns,两条路径中哪一条更加严格?
    在这里插入图片描述

    在这里插入图片描述
    create_clock -period 2 [get_ports Clk]
    set_input_delay -max 0.3 –clock Clk –clock_fall [get_ports A]
    set_input_delay -max 1.2 –clock Clk –add_delay [get_ports A]

    M1:TNmax = 2 – 1 – 0.3 – 0.14 = 0.56ns
    M2:TNmax = 2 – 1.2 – 0.14 = 0.66 ns

    35、如何约束上图多输出路径?假设触发器setup要求为0.1ns,两条路径中哪一条更加严格?
    在这里插入图片描述
    在这里插入图片描述
    create_clock -period 4 [get_ports Clk]
    set_output_delay –max 2.5 –clock Clk [get_ports B]
    set_output_delay –max 0.7 –clock Clk - clock_fall –add_delay [get_ports B]

    T1:TSmax = 4 – 2.5 = 1.5ns
    T2:TSmax = 2 – 0.7 = 1.3 ns

    36、用什么命令来设置设计驱动和负载约束?
    set_driving_cell 、set_load

    37、如何约束上述包含异步时钟的设计?
    在这里插入图片描述
    在这里插入图片描述
    如果设计中的所有时钟都是异步的,可以使用以下脚本:
    在这里插入图片描述

    38、上述设计,时钟周期为10 ns。 加法器需要近6个时钟周期。经过六个时钟周期使能触发器。如何不施加多周期约束,会发生什么?
    在这里插入图片描述
    Design Compiler默认所有路径都是单周期路径。不施加多周期约束,工具会尽量让64bit加法器满足10ns约束!

    39、Design Compiler综合过程中,上述命令的用处是?
    在这里插入图片描述

    单时钟设计,因此所有路径都在同一path group中。在I/O上的非常糟糕的约束可能影响设计最后的综合效果。 我们可以自定义path group,使得每个path group的WNS path都能够得到优化,不至于其中一个WNS的path阻碍另一个path group的优化。
    在这里插入图片描述
    在这里插入图片描述
    report_timing也会分别报告每个path group的时序

    40、group path中的 –weight选项有什么实际用处?
    Design Compiler以降低cost function为优化方向,–weight用于给特定path group设置优先级或权重
    例如:path group 1:
    slack =-2ns,weight=5,则cost function = 10
    path group 2:
    slack =-3ns,weight=1,则cost function = 3.Design Compiler优化的方向是降低两个path group的cost function之和

    41、group path中的 –critical选项有什么实际用处?

    在这里插入图片描述
    –critical选项用于优化 critical range范围内的路径,critical range不应超过时钟周期的10%。优化次关键路径可能有助于关键路径。

    默认情况下,所有路径的critical range均为零。

    42、下列关于DesignWare库的描述正确的是?
    a、compile_ultra之前需要额外设置库变量
    b、推断综合各种各样的算术和关系运算符
    c、推断综合各种各样的标准IP,例如 FIFO,移位寄存器,分频器
    d、以上都是

    B. compile_ultra自动设置库变量; 非算术/关系IP不能由DC推断,它们必须在RTL代码中实例化

    43、下列关于optimize_registers的描述正确的是?
    a、拆分/合并寄存器 - 不优化组合逻辑
    b、可以增加pipeline中的寄存器级数
    c、可能会增加违规,以减少寄存器数量
    d、可能生成更快和更小的流水线设计

    D. optimize_registers:不改变寄存器级数; 可能会增加
    寄存器数量; 将利用正slack以减少寄存器数量; 将执行增量编译,以进一步优化组合逻辑

    44、通过增加Design Compiler delay优化的的优先级将不会修复任何逻辑DRC违规 - True or False?

    False Design Compiler将修复逻辑DRC违规,只要不增加负slack

    45、在单时钟设计中,默认情况下,Design Compiler不会自动创建任何path group - True or False?

    False: Design Compiler为时钟创建至少一个path group。 如果有任何不受约束的路径,
    这些路径会被分组为名为default的path group

    46、默认情况下,path group内的优化会停止在关键路径的优化上 - True or False?
    True 当关键路径无法进一步优化时,、默认情况下,次关键路径不会
    优化。 Design Compiler进入下一个path group的优化。

    47、为什么建议优化次关键路径?
    通过优化次关键路径,可能能够改善相关的关键路径,最终会减少违规路径,更容易通过Place&Route物理设计工具来修复

    48、默认情况下被忽略优化的次关键路径如何能够得到优化
    a)将它们放在自己的path group中
    b)将critical range应用于create_clock
    c)将weight应用于其path group
    d)以上所有

    A. critical range适用于path group,而不是时钟约束;
    应用weight没有指示Design Compiler来优化否则被忽略的路径 - 它只是对已经考虑优化的路径施加更多的优化权重

    49、通过将-weight选项应用于path group,它可能会恶化另一条路径上WNS - 对错吗?True or False?

    True,如果Design Compiler可以降低整体的cost function的话

    50、Topographical mode相比WLM模式,通常提供更好的速度/面积结果 - True or False?

    False。 Topographical mode导致与实际布局更好的时序相关性,不一定是更好的速度和/或面积结果。

    51、在Topographical mode中包括物理约束
    a)获得更好的速度/面积优化
    b)生成一个ready for clock tree synthesis的设计
    c)是可选的,但建议用,以提高与实际物理布局更好的时序相关性
    d)以上所有

    C.虽然Topographical mode确实执行了placement引擎,但这仅适用于
    时序计算的目的。只有能够保存网表,用于Place&Route物理设计工具。

    52、综合后,已经完成映射的网表为什么不能够包含assign语句,assign语句可能是由什么引起的?
    布局工具可能无法处理Verilog网表中assign语句
    网表中assign语句可能是由多端口网络和三态网络导致

    53、Design Compiler怎么fix多端口网络导致的网表中含有的assign语句问题?
    在这里插入图片描述

    确保最终网表不包含assign语句,在综合时,分隔多端口网络:
    在这里插入图片描述
    在这里插入图片描述

    54、Design Compiler怎么fix三态网络导致的网表中含有的assign语句问题?

    Design Compiler使用assign语句描述三态网络,我们需要将三态网络声明转换为wire声明
    在这里插入图片描述

    欢迎关注微信公众号 “数字芯片实验室”

    展开全文
  • 在逆向逻辑综合过程中,为了保证综合结果的准确性,需要将输入全集作为待处理数据集合,大大增加了整个处理过程的时空开销.论文深入分析了现有的逻辑综合基本运算,并结合逆向逻辑综合的数据特点,提出了效能更优的...
  • 介绍了约束设置与逻辑综合在SoC设计中的应用,并以一款SoC芯片ZSU32的设计为例,详细讨论了系统芯片的约束设置与逻辑综合策略。
  • Synthesis Summary 逻辑综合总结

    千次阅读 2020-03-19 22:15:06
    20世纪70年代,综合技术发展迅速,但主要致力于较低层次的逻辑综合和版图综合;20世纪80年代中期,专用集成电路的广泛应用,要求芯片设计大规 模、高性能、短周期,大大推动了从算法级设计描述向寄存器传输级设计...
  • 数字集成电路原理与设计:L8 逻辑综合.pdf
  • Synopsys逻辑综合及DesignCompiler的使用

    千次阅读 多人点赞 2020-04-15 18:31:38
    逻辑综合 一. 基础知识 逻辑综合的目的:决定电路门级结构、寻求时序(性能)和面积的平衡、寻求功耗与时序的平衡、增强电路的测试性。 二. 逻辑综合流程 Design Compiler使用 使用DesignCompiler综合过程: ...
  • 基于通信系统编解码芯片的逻辑综合研究.pdf
  • 进而提出了基于全加器以及CRM型PLA网络的逻辑综合,还举例说明了逻辑综合过程.该综合的PLA网络是以或、符合二种运算作为基本运算的,类似于与、异或的电路实现,CRM型对称函数常常可以导致使用较少的门及较少的连线...
  • 数字逻辑综合工具-DC-06 ——综合优化过程 编译的策略:Top-down (做设计有两种策略:top-down 和 bottom-up) 设计一定是一种层次化的结构,一层一层地去例化 Top-down只有一层的约束,针对某些模块,可能会有一些...
  • 高一数学集合与简易逻辑综合练习[精选].doc
  • EPFL逻辑综合库(展示柜) EPFL逻辑综合库是用于逻辑综合应用程序开发的模块化开源C ++库的集合。 所有的库都有很好的文档记录和良好的测试。 这些库仅是标头,可以很容易地用作复杂逻辑综合框架中的核心组件。 这...
  • 从RTL到逻辑门的逻辑综合过程

    千次阅读 2016-12-14 16:12:07
    从RTL到逻辑门的综合过程由逻辑综合工具自动完成,其中包括以下几个步骤: ① RTL描述 设计者在高层次上使用RTL结构描述设计。设计者在功能验证上耗费一定的时间,以确保RTL描述的功能正确无误。功能验证完成后,...
  • 线性最近邻体系结构的量子状态分析和最优逻辑综合
  • 使用VB语言演示数字逻辑综合算法 源代码
  • 逻辑综合(Synthesis)概述

    千次阅读 2020-04-24 16:47:54
    概念: 逻辑综合是IC前端设计的重要步骤,就是将行为级/RTL级的电路转换为门级网表的过程。 目的:决定电路的门级结构。寻求电路时序和面积的平衡, 功耗和时序的平衡,增强电路的测试性。 逻辑综合三阶段:...
  • CMOS忆阻器混合逻辑门设计及其在逻辑综合中的应用,胡智鹏,尤志强,忆阻器可用于逻辑电路设计,以减小逻辑电路的面积。本文在多输入与门、或门、与非门、或非门等基本逻辑门的基础上,进一步设计出
  • DC逻辑综合使用流程

    2010-11-04 13:47:00
    DC逻辑综合使用流程 如果哪天您需要用 欢迎下载
  • Tcl与Design Compiler 八DC的逻辑综合与优化下.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 201,991
精华内容 80,796
关键字:

逻辑综合