DC综合简单总结

综合分为三个部分:Synthesis= Translate + Mapping + Optimization

1、  Translate是将 HDL转化为GTECH库元件组成的逻辑电路,这步通过read_verilog进行(verilog代码),verilog代码被读入后,将会被自动translateGTECH是独立于工艺库的通用元件库。这个时候可以用write -output ./unmapped/design.db输出unmapped的二进制文件。

2、  Mapping是将GTECH映射到某一指定的工艺库,此网表包含了工艺参数。

3、  Optimization 是将网表按设计者的约束进行优化。

后两步通过加约束后使用compile命令完成。完成optimization之后可以通过

write -format verilog -hierarchy -output./p_syn_sim/design.v

写成verilog格式的网表,这是map后的结果。如果输出的是顶层模块,所有模块的module都会输出到同一个文件中。顶层模块一般在最后。


Sysnopsys提供了一个例子,在下面的位置:

$synopsys/doc/syn/guidelines

首先,可以在.synopsys_dc.setup里面设置库的位置和一些环境变量。里面包括所使用库的位置,DC涉及到几个库文件:

1、  工艺库(target_library):工艺库是综合后电路网表要最终映射到的库,读入的HDL代码首先由synopsys自带的GTECH库转换成Design Compiler内部交换的格式,然后经过映射到工艺库和优化生成门级网表。工艺库他是由Foundary提供的,一般是.db的格式。这种格式是DC认识的一种内部文件格式,不能由文本方式打开。.db格式可以由文本格式的.lib转化过来,他们包含的信息是一致的。

2、  链接库(link_library)link_library设置模块或者单元电路的引用,对于所有DC可能用到的库,我们都需要在link_library中指定,其中也包括要用到的IP。此处还要将search_path加进来,这样才能找到.db文件,否则只会搜索当前目录。

3、  符号库 (symbol_library)symbol_library是定义了单元电路显示的Schematic的库。用户如果想启动design_analyzerdesign_vision来查看、分析电路时需要设置symbol_library。符号库的后缀是.sdb,加入没有设置,DC会用默认的符号库取代。

4、  综合库(synthetic_library):在初始化DC的时候,不需要设置标准的DesignWarestandard.sldb用于实现Verilog描述的运算符,对于扩展的DesignWare,需要在synthetic_library中设置,同时需要在link_library中设置相应的库以使得在链接的时候DC可以搜索到相应运算符的实现。

 

读入设计:

read –format verilog[dbvhdl etc.] file //dcsh的工作模式

read_db file.db //TCL工作模式读取DB格式

read_verilog file.v //TCL工作模式读取verilog格式

read_vhdlfile.vhd //TCL工作模式读取VHDL格式


读取源程序的另外一种方式是配合使用analyze命令和elaborate命令:analyze是分析HDL的源程序并将分析产生的中间文件存于work(用户也可以自己指定)的目录下;elaborate则在产生的中间文件中生成verilog的模块或者VHDL的实体,缺省情况下,elaborate读取的是work目录中的文件。

Link命令:

当读取完所要综合的模块之后,需要使用link命令将读到Design Compiler存储区中的模块或实体连接起来,如果在使用link命令之后,出现unresolved designreference的警告信息,需要重新读取该模块,或者在.synopsys_dc.setup文件中添加link_library,告诉DC到库中去找这些模块,同时还要注意search_path中的路径是否指向该模块或单元电路所在的目录。

 

 

 

约束:

       约束面积set_max_area 100

       单位:定义这个单位有三种可能的标准:一种是将一个二输入与非门的大小作为单位1;第二种是以晶体管的数目规定单位;第三种则是根据实际的面积(平方微米等等)。至于设计者具体用的是哪种单位,可以通过下面的一个小技巧得到——即先综合一个二输入与非门,用report_area看他的面积是多少,如果是1,则是按照第一种标准定义的;如果是4,则是第二种标准;如果是其他的值,则为第三种标准。

       约束时序

       DC可以处理的是同步时序电路。

       模块内部的,寄存器之间的逻辑的约束(X):

       Creat_clock –period 10[get_ports clk]

       Set_dont_touch_network[get_clocks clk]

       第一句话将clk定义为时钟,并定义周期为10ns,因此可以约束寄存器间组合逻辑的critical path不能大于10ns,进行约束。第二句的意义为,不要在综合的时候对时钟树进行优化,因为时钟树有特别的办法进行综合。

set_output_delay -max 3.0 -clockclk [all_outputs] 用于约束输入段的组合逻辑,在第一个寄存器前的部分(N)。

set_input_delay -max 3.0 -clockclk [all_inputs] 用于约束输出的组合逻辑,最后一个寄存器以后的部分(S)。


       约束环境:


       set_load 2[all_outputs] 设置输出的负载(这里的单位也是由Foundry提供,具体的单位,可以通过report_lib命令查看,一般而言是pf。)

       set_driving_cell-lib_cell FD1 [all_inputs]设置输入的负载,此处设置为一个模块来驱动。

       set_operating_conditions–max slow –min fast????????????????设置工作条件。在默认情况下,Design Compiler不会自动指定工作条件,我们可以先通过report_lib命令来列出在当前的工艺库里提供了哪几种工作条件。然后指定需要用到的工作条件,在做建立时间分析的时候需要用到最差情况的条件。

       setauto_wire_load_selection true 设置线负载模型,它是也是由Foundry提供的。Foundry根据其他用这个工艺流片的芯片的连线延时进行统计,从而得到这个值。此处设置的是自动选择。也可以设置成其他,如:set_wire_load_model–name 160KGATES。还可以通过set_wire_load_mode enclosed设置负载模式。

在定义完环境属性之后,我们可以使用下面的几个命令检查约束是否施加成功——

check_timing检查设计是否有路径没有加入约束

check_design检查设计中是否有悬空管脚或者输出短接的情况

write_script将施加的约束和属性写出到一个文件中,可以检查这个文件看看是否正确

 

DesignWare选择DW选择是结构级优化的一个很主要的特点,在这个阶段DC能够根据设计者施加的时序或者面积的约束在DW的不同实现方式中找到它认为最佳的实现方案。比如一个加法运算,DC会根据约束选择最合适的加法器,如lookahead还是选择carry bypass

Characterize命令:

characterize这个命令将约束条件传递到子模块,然后保存这些传递下来的约束条件,再用这样条件对这个子模块再重新编译。

 

报告(report):

report_timing 生成时序报告

 

综合策略:

Top-down 方式的层次化编译策略有这样三个步骤:

1  读入整个设计。

2  处理多次引用的模块;基于设计要求在顶层加约束条件以及定义属性。

3  编译。

Bottom-up有下面七个步骤:

1  独立编译子模块,用估计的驱动和负载。用一个缺省的脚本文件来估计驱动和负载。

2  将整个编译好的设计读入。

3  对一个子模块用characterize命令来获得端口信息。

4  write_script来将这些传递过来的信息保存下来。

5  清除内存,将前面得到传递信息的子模块调入并且用保存下来的脚本文件重新编译。为了这些描述信息能够应用,需要将db格式的文件读入。

6  将这个新编译的子模块和其余的子模块全部再次调入DC

7.          选择另外一个子模块,重复3~7步,直到所有的子模块都重新编译过了。

  • 34
    点赞
  • 299
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
DC综合用户指南是关于使用直流(DC综合系统的详细说明。DC综合系统是一个集成了多个组件的系统,用于直流能源的生成、存储和分配。该用户指南提供了对系统的全面介绍和操作说明。 用户指南的第一部分是关于DC综合系统的概述。它详细解释了该系统所能实现的功能和优势,包括可靠性、高效能源利用和简化的安装过程。此外,该部分还介绍了系统的组件,例如太阳能光伏板、风力发电机和电池存储系统。 接下来的部分涵盖了DC综合系统的安装和配置。用户将了解如何选择并安装适合自己需求的组件。该指南还提供了关于连接方法、电路维护和保护的详细信息。以及对系统设置的调整和优化的说明。 用户指南的下一节是关于DC综合系统的操作。它详细解释了如何启动和关闭系统,以及如何监测和管理系统的性能。此外,该部分还包括故障排除和常见问题解答,以帮助用户解决可能出现的问题。 最后,用户指南提供了关于DC综合系统的维护和保养的建议。用户将学习如何定期检查系统组件的工作状态,以确保其正常运行。此外,用户还将了解如何处理废旧组件和进行系统升级。 总之,DC综合用户指南是一本详细介绍DC综合系统的操作手册。通过阅读和遵循该指南,用户将能够使用和维护他们的DC综合系统,以满足他们的能源需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值