(7) set_multicycle_path:设置多路径
(8) set_max_delay和set_min_delay:设置路径的最大最小延迟。
如果电路完全是组合逻辑电路,而没有时钟,可以使用这两条命令直接限制路径的最大最小的延迟。 例如,限制一个 reset 信号:由于 reset 信号跨越了
不同的模块,因此,一般在顶层模块中对该模块做限制: 即指定所有 reset 信号出发的路径的最大延迟都为 5, set_max_delay 5 –from reset
限制一个从 IN输入到 OUT输出的最小路径: set_min_delay 10 –from IN –to OUT 或 限制所以输入到输出的最小路径:
set_min_delay 2 –from [all_inputs] –to [all_outputs] (9) set_max_area current_design top
set_max_area 0 (常用)
将top模块的面积设为0,此时综合后电路肯定不满足要求,但DC会对电路的面积进行优化,达到可能的最小面积,同时使得综合之后的电路没有“弹性”。 或者下面:(不常用)
图像界面:
上图中的max rise和min rise就是inputs或者outputs端口的最大延迟和最小延迟!!!!!选择时候选中same rise and fall选项!!!
以上所有的语句并不是需要全部都设置的,根据自己的设置来判断需要设置的内容即可!!!!!!!!!!
上面设置完成后进行uniquify实例唯一化设置,然后再编译,方法: (不是所有都有这一步的,看情况)
(1) 界面上:hierarchy—uniquify—hierarchy,出现对话框后选择ok,也可选中
下面的instances to be renamed…小框框,是进行强制唯一化的。
(2) 命令:uniquify或者uniquify –force(强制将所有调用模块重新命名)
7:开始编译:
*****编译 compile
report_constraints 或者report_constraint –all_violators //报告没有满足时序的约束条件
此时如果不满足的话可以加大映射的effort,如:compile –map_effort high或其它命令进行优化。
report_timing
change_names -rule verilog –hier set_fix_multiple_ports_net –all
set_fix_hold [all_clocks] 修正holdtime
write -format verilog -hier -output mux.sv //输出网表,自动布局布线需要(注意是.sv格式) write -format ddc -hier -output mux.ddc //输出ddc
write_sdf mux.sdf //输出延时文件,使用PT做静态时序分析时需要
write_sdc mux.sdc //输出约束设置信息,使用Astro或encounter自动布局布线需要
其它命令:
report_clock –skew –attribute 生成时钟报告 report_port –verbose 报告端口信息
report_port –v clk 查看时钟端口所有属性
8:DC的几种输出文件:
write –f ddc –hierarchy –output my_ddc.ddc
write –f verilog –hierarchy –output my_verilog.v
# Write out the constraints-only sdc file :约束信息,布局布线需要 write_sdc my_design.sdc
# Write out the scan chain information :布局布线需要 write_scan_def –out my_design.def
# Write out the physical constraints :输出全部的物理约束,布局布线需要 write_physical_constraints –output PhysConstr.tcl
write_sdf my_design.sdf:输出延时信息,STA分析使用
-format:指定保存的格式,可选的格式有:db, edif, equation, lsi, mentor, pla, st, tdl, verilog, vhdl, xnf,缺省为db
-hierarchy:指令DC保存所有设计层次 -output:指定保存的文件名
电路综合完成之后,可以用report命令将电路的一些信息report出来分析,阅读报告时主要需要注意几个部分: 1)、看看报告中的综合库、线负载模型、工作条件等是不是你所要求的。 2)、看看报告的路径是最大路径还是最小路径,即看报告中的Path type为
max,该路径是为了满足library中FF的setup time的要求。 3)、看路径中是否有很大延迟的单元,或者输入/输出延迟是否很大 4)、看关键路径上是否有slack 5)、这样综合完成之后,对于最差工作环境下的库如果没有问题,对于最好的工作情况,可能会出现Hold time violation. 这时可用set_fix_hold [all_clocks],之后再compile, 来让DC对电路中的hold time violation进行处理。 6)、如果在综合之后发现电路中出现violation,即电路的时序不能满足要求, 当出现的slack比较小时,可以使用一些综合的选项来减小这些slack;
如果slack比较大,通过综合的这些选项无法解决,则需要返回重新写HDL源代码。 一般在综合时violation较小时,可以用compile –inc –map high来减小路
径的延迟。