精华内容
下载资源
问答
  • 逻辑综合工具designCompiler使用教程
  • 逻辑综合工具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 #标准延时文件
    

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

    展开全文
  • 数字逻辑综合工具-DC-06 ——综合优化过程 编译的策略:Top-down (做设计有两种策略:top-down 和 bottom-up) 设计一定是一种层次化的结构,一层一层地去例化 Top-down只有一层的约束,针对某些模块,可能会有一些...

    数字逻辑综合工具-DC-06

    ——综合优化过程

    编译的策略:Top-down
    (做设计有两种策略:top-down 和 bottom-up)
    设计一定是一种层次化的结构,一层一层地去例化

    Top-down只有一层的约束,针对某些模块,可能会有一些特殊的约束
    在一个soc系统里面,会有一些真正的工作模块,和一些管理模块,这些工作模块跟clk、rst不会放到一起去做综合,clk、reset这些模块一般会做一些特殊的约束,比如clock gating,会放在额外的脚本里面做
    如果采用bottom-up的综合顺序,当出现了glue logic(胶合逻辑),即如果在顶层模块里,并不是只有模块与模块的连接,而是由一个与门连接而成。如果采用bottom-up的顺序,下层模块保持don’t touch,那么还需要针对top层写一个额外的约束(要把glue logic也放进去编译)。
    如果这样做的话,一个Soc项目里的顶层会有四五十个模块,针对每一个模块都写一个约束,这个工作量会非常大,而且效果不一定好,所以一般采用top-down的方式。

    【compile_ultra】
    用在时序约束紧张的时候。相当于打开了很多的开关。
    这个命令在compile命令上做了更强的一些优化功能,会把整个模块给打散。
    在这里插入图片描述
    全部打散会有些问题,对于后仿而言,最后只能看到一个顶层,如果后仿有问题,没法确定是哪个模块产生的!
    针对一些关键路径会优化,尝试做多次,直到所有的方法都没法满足约束。

    这个命令做的一些优化:
    1、 结构级优化:比如做了一个加法器(行波进位加法器、超前加法器等等)(比较大的优化)
    2、 逻辑级优化
    3、 门级优化:局部上的一些优化
    DC会尝试着在满足时序约束的同时,将面积达到最小。

    如果不满足要求,DC会找出critiical path,对其进行resynthesis

    【DesignWare Library】
    这是一个soft IP库:加减乘大于等于小于
    FIFO、shiftreg、div_seq、ram……
    (自己写的没有人家写的可靠)

    在设计都进来的时候,link check保存为unmapped .ddc,这个格式里面主要是一些DW开头的器件。

    【一些常见的算术优化方法:】
    在这里插入图片描述
    1、 折叠
    2、 公共表达式——资源分享
    3、 少用乘法
    4、 乘以某个常数——把这个常数拆成2的多少次放,做移位相加,替代乘法器

    【逻辑复制】
    在这里插入图片描述
    单元的延迟跟两个因素有关:输入的转换时间和扇出负载。
    上图有一个关键路径,它的组合逻辑延时比较长,为了减小这个时间,把输入门的负载减小:将逻辑一分为二,对于关键路径,不让它驱动过多的单元,对于约束比较松的路径,可以安排large fanout(以面积换速度)。

    【库分析】
    在这里插入图片描述
    等效表达式:DC会针对同一个表达式做不同的表达方式。预先建立好逻辑。
    说实话不是很懂。

    【边界优化】
    在这里插入图片描述
    有的时候会借助一些常数,可以被优化掉,比如用DFF的QB端,优化过后的信号会出现_BAR的后缀。
    问题:做形式验证(把网表跟rtl代码作数学表达式上的等价校验)的时候,需要把DC产生的default.svf文件(一般在工作目录下)交给formality工具,告诉formality这些结构发生了一些改变。否则Formality会不认识这些优化的地方。

    【Auto-ungrouping】
    这是compile ultra默认的,如果不希望打散,加上命令set_ungroup <references_or_cells> false 命令
    在这里插入图片描述

    例子:
    在这里插入图片描述

    【扫描链-scan】(DFT)哪些地方短路了,哪些地方开路了给扫描出来。一般用这种带选择的触发器来代替一般的触发器,作为扫描链。扫描链的插入必然会带来更大的面积和更长的组合路径。
    在综合的时候一般要加入-scan选项,让DC把里面普通的触发器替代成这种带MUX的触发器,看看能不能完成。
    在这里插入图片描述

    在没有做DFT的时候,-scan选项只是插入一个MUX,并没有形成一个链!
    在这里插入图片描述

    【timing_high_effort_script选项】
    对时序做最好的优化。
    会把时序的优先级提升到超过DRC(Design Rule Check)的优先级!
    DRC是工艺厂商的要求,不满足DRC可能会出错。
    在这里插入图片描述

    【-timing】
    在这里插入图片描述

    【-retime】
    在这里插入图片描述
    上图:前面的不满足,后面的有点余量
    下图:把前面的一部分组合逻辑挪到后面去,这样前一级就得到了很大的改善。后面一点点的violation可以通过把时钟稍微往后挪一点来改善掉。
    Retiming的基本思想:这几个在功能和时序上是等效的
    在这里插入图片描述

    如果不希望这种retiming发生在一些特定的寄存器或者design中,可以通过命令设置
    在这里插入图片描述
    retiming的结果也需要放在.svf文件里告诉Formality

    【路径分组】
    在一个设计里面可能会有很多的clock,DC会把这些路径根据时钟进行分组
    在这里插入图片描述

    【亚关键路径被忽略的问题】
    在这里插入图片描述
    在这里插入图片描述
    如果最长路径不能满足是需要求,那么DC会放弃对其它逻辑的一些优化。
    (假设COMBO不满足时序要求,中间那个reg-to-reg路径就不优化了。)
    ——重新分组:这个组的最差的一个挂了,那这个组么得救了,其他组的还能抢救一下。
    在这里插入图片描述

    比如这里,分成Inputs Outputs Reg-to-Reg和COMBO四个组
    命令:(既然是路径,就要指定从哪来到哪去(from to))
    在这里插入图片描述

    【critical range】
    在这里插入图片描述
    这个组里,最差的已经提高不了了,现在设置一个范围,在这个范围里面的,都尽量去做一些优化。

    【给分定的组指定一个权重】
    在这里插入图片描述
    发现某些组是特别重要的,就把权重提高一点。

    三个建议的值:1 2 5 默认的是1。5的重要程度最高。
    weight的另外一个例子:
    在这里插入图片描述
    这里换了一种实现DFF的方式,Tsetup变长了,但Tc2q变短了,即提高了CLK路径的优先级,牺牲了别的路径,改善了该路径。

    【【操作部分】】

    在这里插入图片描述
    在这里插入图片描述
    (官方建议critical_range不超过时钟周期的百分之十)

    这些值设好了之后要查看一下,report_path_group
    在这里插入图片描述

    license没有compile_ultra,用-map_effort high(发现综合结果不满足要求,回过头来做优化,注意,这种不会做结构级的优化) -area_effort high来代替
    在这里插入图片描述
    把综合之后的网表保存为ddc格式

    脚本运行完了之后看时序
    report_timing -delay_type max(看最差的那条)
    在这里插入图片描述
    在这里插入图片描述
    (这是在脚本里把路径分组注释掉之后的结果)
    注意,现在只报告了一个路径。而且这个路径属于clk_i路径组。

    通过report_path_group来查看分组的情况
    在这里插入图片描述
    (此时没有任何分组)

    ungroup之前的电路图:

    (此时的设计是分级的)
    在这里插入图片描述
    敲入命令:ungroup -flatten -all之后,只能看到一个顶层了
    在这里插入图片描述

    compile没加-scan选项时的ddc网表:
    (在mapped里面,top.ddc)
    在这里插入图片描述
    这是一个普通的D触发器

    敲入命令:compile -map_effort high -area_effort high -scan
    在这里插入图片描述
    ==>综合出来这样的DFF
    这些DFF并没有连成一个链,需要用DFT Compiler去做。(不是所有的芯片都一定要做DFT的)。

    【设置了路径组之后的综合】
    report_path_group
    在这里插入图片描述

    再执行report_timing -delay_type max
    在这里插入图片描述
    在这里插入图片描述
    (这边不存在COMBO的路径,所以没有报)

    展开全文
  • 数字逻辑综合工具实践-DC-07 ——综合优化(二)和RTL coding 和DFT 主要内容: 1、 Pipeline优化 2、 RTL设计时的一些注意事项 3、 DFT简介 (DFT是后端里很重要的一步) 【流水线寄存器】 组合路径过长,timing不...

    数字逻辑综合工具实践-DC-07

    ——综合优化(二)和RTL coding 和DFT

    主要内容:
    1、 Pipeline优化
    2、 RTL设计时的一些注意事项
    3、 DFT简介
    (DFT是后端里很重要的一步)

    【流水线寄存器】
    在这里插入图片描述
    组合路径过长,timing不满足,可根据经验插入寄存器。

    在这里插入图片描述
    (三级流水线)
    并不是拆的越散越好。
    代价:DFF的面积和初始化的延迟。
    【set_optimize_registers true】
    在这里插入图片描述
    专门对流水线寄存器做优化的选项(必须要用Compile_Ultra)
    (跟Retime很像)
    在这里插入图片描述
    把前一级的violation很后面的slack匀一下

    set_optimize_registers 和 -retime 可以同时设置,set_optimize_registers 对流水线寄存器更专一。
    !](https://img-blog.csdnimg.cn/20191023164954233.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzY1NjQ3,size_16,color_FFFFFF,t_70)
    【pipeline怎么写?】**
    在这里插入图片描述
    左:组合逻辑堆一起,输出再堆一坨寄存器
    右:输入堆一坨寄存器,组合逻辑堆一起
    (比较省事儿的做法,也可以人为地插进去。)
    (这种结构要用set_optimize_registers去调整,如果忘了加那个命令就完了(有可能写代码的人和做综合的人不是同一个))

    另外:针对这些纯粹的Pipeline结构,只要控制信号做的好,reset端可以不要。

    在这里插入图片描述
    1、 插进去,做最小时序的优化
    2、 做最小面积的优化
    3、 逻辑优化(时序均衡)

    v在这里插入图片描述
    可以针对某一个设计去指定流水线寄存器的优化。

    在这里插入图片描述
    调整了之后,寄存器会重新命名,S#表示是流水线的第多少级
    这些调整信息都会放入default.svf文件,交给后端的Formality,做形式验证。
    【set_dont_retime】
    在这里插入图片描述
    希望保持寄存器输出,timing budget会比较好算。
    如果是组合逻辑输出,会引入毛刺。
    要指定:哪一个寄存器不允许做retime的变动。

    【多核】
    在这里插入图片描述
    服务器上可能由很多的核,为了做并行的工作,减少运行的时间,可以使用命令set_host_options -max_cores # 申请多核工作。
    (只是申请,不一定能给到。)
    report_host_options可以查看主机的核的个数。

    更多的核需要更多的license,也就是说要付更多的钱……
    在这里插入图片描述
    多核工作也可以取消掉,设为1即可。

    !](https://img-blog.csdnimg.cn/20191023165042776.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzY1NjQ3,size_16,color_FFFFFF,t_70)
    【综合后报告】
    在这里插入图片描述
    违规要关注几点:
    1、 Timing违规:如果是后端的hold time violation,不是什么大问题,很容易被优化掉。如果是setup violation,如果优化不掉,需要人为手动地去解决。
    2、 DRC的违规一定不能有
    3、 面积违规的问题不大。

    【report_timing】
    在这里插入图片描述

    【增量综合】
    在这里插入图片描述
    1、第一次做综合:不要边界优化、不要打散模块、加入扫描链寄存器……
    2、综合之后,查看一下timing有没有问题,查看一下violation是不是很大。
    3、把最差的那条路经拿出来,权重设高一点。
    4、-incremental做增量编译(在逻辑优化和gate level之间做循环优化,不会做结构级优化)。

    【如果还是有violation怎么办】

    在这里插入图片描述

    【Coding Style】

    在这里插入图片描述
    DC能做的其实没有多少,要想做好的电路,需要好的RTL设计。

    【资源共享】
    在这里插入图片描述
    节省面积。
    但是DC不一定能帮你做这些优化。

    比如SEL前面接了一堆逻辑,DC分析出来SEL的时序很差,从SEL到SUM是一条关键路径,这个时候DC不会把左边变到右边。

    在这里插入图片描述
    这么写,compile DC不会做优化,但是compile_ultra会!
    在这里插入图片描述
    (强制资源共享:先做选择、再做加法)
    写代码的时候很容易想不起来…
    在这里插入图片描述

    顺序重排,路径差的安排得离输出端口近一些。

    在这里插入图片描述
    通过加一些括号,compile不会帮你做调整了。
    但是compile_ultra还是会……(可牛逼了(插腰))

    【for循环】
    在这里插入图片描述
    (8个加法器和一个选择器)
    在这里插入图片描述
    (8个选择器和一个加法器)

    【Design for Test】

    芯片是交给代工厂去生产的,但是不能保证完全没有灰尘。有灰尘就坏掉了,如何检测出来故障(短路开路)?
    (一定是由机器去做的。)
    在这里插入图片描述
    在同样的激励条件下,结果不一样——有问题。
    这样的测试设备叫ATE(自动测试设备)。
    生成输入激励和检测信号的设备叫ATPG(这个设备只负责生成模拟,不负责物理上的测试)。

    【Stuck-at fault(SAF)】
    在这里插入图片描述
    比如这是一个反相器,假如在生产的过程中,掉入了一个灰尘,把输入端和地短路了——停滞在某一个状态。
    在这里插入图片描述
    不管B怎么变化,U1的输出都是0。
    如何检测出这样的错误?
    A接1,C、D接0,那么在正常情况下Z=~B
    如果出现了图中的故障,B输入0,那么Z=0。

    加上这个激励的目的是——让这个故障的影响能够传递到输出端口去!

    discrepancy算法(差异算法)。

    在这里插入图片描述
    如果有一堆寄存器在里面,想办法把寄存器串成一个链,做成移位寄存器!组合路径中的错误就能测出来了。
    =>用mux做成扫描链
    (在做综合的时候要考虑做DFT插入扫描链会不会有问题——-scan选项的用处)
    要真正形成一个链,需要用DFT Compiler工具去做。
    参考大规模芯片测试。

    展开全文
  • 数字逻辑综合工具-DC-04 ——怎样增加时序约束(Timing Constraints) 逻辑综合的过程为:转化 优化 映射 另外还有环境约束和面积约束 时序有三个大的方面 input logic paths internal paths output paths 一个项目...

    数字逻辑综合工具-DC-04

    ——怎样增加时序约束(Timing Constraints)

    逻辑综合的过程为:转化 优化 映射

    另外还有环境约束和面积约束

    时序有三个大的方面
    input logic paths
    internal paths
    output paths

    一个项目需要有一个spec即设计说明书
    里面有项目的一些要求【文字性的描述】
    (功能要求 性能要求)
    逻辑综合需要添加满足这些要求的约束

    在写rtl代码的时候最好是单个时钟,单沿触发,不然会生成一些很奇怪的FF

    默认情况下,不告诉dc,默认为同步时钟
    异步时钟需要手动设置

    做时序分析需要路径
    何为路径:
    起点->终点
    起点:Input port
    Clock pin of FF or register
    终点:Output port
    input pin of a sequential device, except clock pin

    【dc_shell 的一些Tcl命令】
    create_clock -period 2 [get_ports clk]
    【创建时钟】【2ns】
    【默认单位是ns】
    【从工艺库里通过 report_lib 命令查看】

    Tmax=Tc2q+Tcomb+Tsu

    创建时钟的时候可以指定占空比 -waveform(注意,单位是时间),也可以指定一个名字-name

    dc认为时钟是ideal的,dc不会处理时钟网络,因为直接放置clk会有大扇出,dc算的不准!这部分的工作是后端去做的!!后端的CTS(时钟树综合)

    实际的时钟会有sker和jitter,可以用一个参数对这些特性进行模仿:
    set_clock_uncertainty -setup Tu [get_clocks clk]
    一般来讲,对setup建立一个模型
    比如

    会在原来setup time的基础上增加不确定度

    设置时钟的上升时间、下降时间(即斜坡)
    set_clock_transition Tt [gets_clocks clk]

    这些值是猜测出来的,版图画好了之后,就不需要这些猜测的值了(CTS之后的STA)

    在路径涉及到外部端口的时候,如输入端,需要人为地告诉DC,之前的延时是多少


    上一条:输入延迟,(要指定clock,(-clock CLK))输入端口要去除掉CLK,提取出端口进行约束
    下一条:输出延迟(clock不是输出端口,不需要remove_from_collection)
    【注意:一定要指定 clock】


    如果设置了多次,后面的会把前面的覆盖掉
    这很有用,比如如果跟着input ports一起设置了CLK的input_delay, 可以通过remove_input_delay排除掉

    【从input到output的组合路径】

    它处在两个寄存器的中间
    1、 创建一个时钟
    2、 clock uncertainty
    3、 input_delay output_delay

    【纯组合电路】

    从输入直接到输出,没有时钟,那么就需要创建一个虚拟时钟(没有跟任何端口相连接)
    这里的时钟是一个纯虚拟的,因为要跟其它电路相对于同一个参考源
    create_clock -name VCLK -period 2

    注释:
    1、 设置虚拟时钟
    2、 设置clock_uncertainty
    3、 设置input_delay, output_delay
    4、 根据纯组合设计约束

    估算:不知道怎么设置input_delay 和output_delay的时候,采用组合电路40%+40%,剩下的20%留给clock_to_q和setup

    【寄存器输出】

    所有的组合路径都集中在D触发器的输入端口
    只要告诉dc clock2q的时间是多少就可以了
    【注意output_delay 的写法 [expr 10-$clk_to_q_min]】(contamination delay)

    【实操环节】
    list_designs
    【查看当前dc读了的文件】

    remove_design -hierarchy

    analyze -format verilog [list top.v conter.v fsm_moore.v]
    elaborate -architecture verilog top
    【这两个指令会实现link,elaborate会自动指定top,也可以手动敲link】
    但是用current_design 命令更好读

    设计读进来了,需要检查一下语法命令
    比如在例化的时候有没有出现递归
    check_design
    如果返回0,就有问题

    【在top脚本里,一般要做一些查错,如果有错,直接退出】

    比如link_library没有设,或者library找不到
    然后check_design,如果发生了module之间的嵌套,这里会查出来

    在添加约束之前,建议执行reset_design
    把以前的约束全部抹掉

    【一部分在dc_shell下的实例操作:】

    【创建时钟】

    注意,如果设计里面涉及到了DDR器件,必须要指定占空比,不然差别很大

    【input_delay】
    外面留60%


    (需要把clk剔除掉)

    【检查时序问题check_timing】
    检查有没有没有约束到的

    【compile】
    compile -map_effort high -area_effort high -boundary_optimization
    (尽最大努力做优化)
    DC到这里会去做综合

    【做完综合之后,看看有没有约束违规的】
    report_constraint -all_violators
    工作环境,线负载模型、设计规则都没有约束,输入的驱动单元没有约束,输出的负载没有约束
    还有一些别的命令:
    report_timing -delay_type max【把最差的路径报出来】(后面会讲)

    /*******************************
    如何写一个DC的约束脚本
    ********************************/



    【第一步】:把设计读进来,做一个link(也就是elaborate)
    设置current_design
    检查link和check_design,如果做失败了,就直接exit退出,因为综合是没有意义的


    【第二步】:把以前的约束给撤销掉


    【第三步】:暂不解释


    【第四(一)步】
    【时钟约束】
    1、 指定一些常用的名字,设置一些常用的变量
    时钟的名字、周期、skew、transition time、latency、source latency
    2、 创建时钟,指定周期和端口名
    3、 set_ideal_network 这句话其实不用加,但是可以帮助理解
    4、 don’t touch也是一句废话,对于ideal network,dc是不会管它的
    5、 set_drive 0表示:驱动该端口的驱动能力无穷大
    6、 set_clock_uncertainty模仿时钟树的skew
    7、 set_clock_transition模仿时钟的transition
    8、 source latency 模仿pcb板上的晶振到芯片引脚上的latency
    9、 network latency 芯片的引脚到ff的clk端口的latency


    【第四(二)步】
    【复位约束】
    1、 指定复位的名字
    2、 指定为理想网络
    3、 指定为don’t touch
    4、 驱动能力无穷大


    【第五步】
    【input_delay】
    1、 set_input_delay 指定时长,指定clk,指定除了clk以外的其它输入端口
    2、 指定驱动cell


    【第六步】
    【outputdelay】
    具体过程与大概同上


    【第七步】
    【组合逻辑最大延时】
    ………………………………………………

    //这里很重要!!
    【脚本写好了,怎么去检查语法错误?】
    在dc_shell下运行命令:
    dc_shell> dcprocheck <脚本名>

    【写完之后,确认脚本没有错误,在dc_shell下启动脚本】
    dc_shell> source …/script/top.tcl
    (在top里面放了一个重定向的命令,把约束文件读进来)

    展开全文
  • 数字逻辑综合工具-DC-08 时序分析 综合结束之后,如何确定这个网表能不能用。 【Timing Reports】 report_timing Incremental 信息包含了Net 和 Cell一起的delay (这两个延迟也可以分别报告) 【report_timing...
  • 1小时玩转数字电路.rar AHB-SRAMC和FIFO的设计与验证.rar clock skew.rar IC攻城狮求职宝典.rar linux basic.rar Linux EDA虚拟机 - 个人学习IC设计.rar Perl语言在芯片设计中的应用.rar SoC芯片设计技能专题.rar ...
  • 逻辑综合工具DC及操作流程

    千次阅读 2020-03-22 23:52:57
    1、逻辑综合(Logic Synthesis) 将寄存器传输级(RTL,Register Transfer Level)的hdl代码转换为与工艺相关的门级网表(Gate Level Netlist)的过程 DC中的八种设计实体 设计(Design):一种能完成一定逻辑...
  • 对于reset 和clock这种大扇出的信号来说,必须要人为设置为ideal network,不要让DC动它,因为线负载模型对于这些大扇出的情况估算不准。 如果不添加don’t ...全是ideal network的信号经过一些逻辑还是ideal的...
  • 逻辑综合

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

    千次阅读 2016-12-14 16:12:07
    从RTL到逻辑门的综合过程由逻辑综合工具自动完成,其中包括以下几个步骤: ① RTL描述 设计者在高层次上使用RTL结构描述设计。设计者在功能验证上耗费一定的时间,以确保RTL描述的功能正确无误。功能验证完成后,...
  • DesignCompiler学习(1)- 逻辑综合简介

    千次阅读 2020-10-18 16:33:05
    据最新Dataquest的统计,Synopsys的逻辑综合工具占据91%的市场份额。DC是十多年来工业界标准的逻辑综合工具,也是Synopsys最核心的产品。它使IC设计者在最短的时间内最佳的利用硅片完成设计。它根据设计描述和约束...
  • SynplifyPro 针对复杂可编程逻辑设计的功能强大的 FPGA 综合工具 Synplify Pro 是 Synplicity 公司的FPGA 综合软件
  • 逻辑综合重点解析(Design Compiler篇)

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

    千次阅读 2019-05-27 15:28:54
    1.1 逻辑综合 1.2 RTL综合 1.3 高级综合 2、组合逻辑的综合 2.1 优先级结构的综合 2.2 利用逻辑无关紧要条件 2.3 ASIC单元与资源共享 3.带锁存器的时序逻辑综合 3.1 锁存器的无意综合 3.2 锁存器的有意综合...
  • Synthesis Summary 逻辑综合总结

    千次阅读 2020-03-19 22:15:06
    20世纪70年代,综合技术发展迅速,但主要致力于较低层次的逻辑综合和版图综合;20世纪80年代中期,专用集成电路的广泛应用,要求芯片设计大规 模、高性能、短周期,大大推动了从算法级设计描述向寄存器传输级设计...
  • 使用Verilog HDL进行数字逻辑设计、综合、仿真的步骤及工具软件使用简要说明 大量verilog实例,含源码及其测试文件testbench,通过验证。对初学者有极大帮助.
  • 介绍了约束设置与逻辑综合在SoC设计中的应用,并以一款SoC芯片ZSU32的设计为例,详细讨论了系统芯片的约束设置与逻辑综合策略。
  • DC逻辑综合使用流程

    2010-11-04 13:47:00
    DC逻辑综合使用流程 如果哪天您需要用 欢迎下载
  • 设计时要求FPGA和PCB设计人员保留一定数量FPGA引脚作为测试引脚,编写FPGA代码时需要将观察的节点信号作为模块的输出信号,在综合实现时再把这些输出信号锁定到测试引脚上。然后连接逻辑分析仪的探头到这些测试脚,...
  • 心中有电路,在你使用RTL语言设计电路的时候,才能设计出综合工具能够推断出的具体硬件电路与之对应,否则可能语法过了,但是综合工具无法推断你的设计。
  • Synopsys逻辑综合及DesignCompiler的使用

    千次阅读 多人点赞 2020-04-15 18:31:38
    逻辑综合 一. 基础知识 逻辑综合的目的:决定电路门级结构、寻求时序(性能)和面积的平衡、寻求功耗与时序的平衡、增强电路的测试性。 二. 逻辑综合流程 Design Compiler使用 使用DesignCompiler综合过程: ...
  • LogicLock逻辑锁定工具使用技巧

    千次阅读 2009-08-06 23:15:00
    逻辑锁定方法学(LogicLock Methodology)内容就是在设计时采用逻辑锁定的基于模块设计流程(LogicLock block-based design flow),来达到固定单模块优化的目的。这种设计方法学中第一次引入了高效团队合作方法:它...
  • 逻辑综合更加详细的定义:逻辑综合是指使用综合工具,根据芯片制造商提供的 基本电路单元库 ,将硬件描述语言描述的 RTL级电路转换为电路级网表的过程 。根据系统逻辑功能与性能的要求,在包含众多结构、功能和性能...
  • 理论部分以逻辑综合为主,不涉及物理库信息。在实战部分,我们将在DC的拓扑模式下进行。(本文主要参考虞希清的《专用集成电路设计实用教程》来写的总结整理与实验拓展)主要内容有:  ·DC的逻...
  • 学习VHDL入门很好的资源。...秀的逻辑电路有直接的帮助,哪些语法要素跟逻辑综合相关,哪些无关,从而变得无 所适从。本书侧重于介绍面向逻辑综合的VHDL 程序的编写方法,全面介绍了可综 合的VHDL 语法条款。
  • 逻辑模型的工具-数据流图DFD

    千次阅读 2010-04-08 11:03:00
    逻辑模型的工具——只反映信息在系统中流动和处理情况的图称为数据流图,它是描述系统逻辑模型的工具之一。数据流图(Data Flow Diagram,简称DFD)是便于用户理解系统数据流程的图形表示。它能精确地在逻辑上描述系统...
  • (一) 按照给定的数据通路、数据格式和指令系统,使用EDA工具设计一台用硬连线逻辑控制的简易计算机; (二) 要求灵活运用各方面知识,使得所设计的计算机具有较佳的性能; (三) 对所设计计算机的性能指标进行分析,...
  • 密码学综合工具,飘云大牛的综合了各种密码学的加密算法,研究密码学必备工具 更新说明: 1.代码由VB转为Delphi,全部重写; 2.去除上个版本的诸多BUG; 3.增加了一些常用的密码学算法; 4.加入文件MD5...
  • 并行逻辑与串行逻辑

    2021-01-19 23:09:52
    逻辑设计中经常会遇到并行和串行逻辑的概念,并行逻辑通常需要大量的逻辑块输入,如图1所示。采用并行逻辑后,可以减少逻辑的级数,从而改善设计的性能,提高器件工作速度。...在综合工具中,对于这两种逻辑结构的

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 96,828
精华内容 38,731
关键字:

逻辑综合工具