DCPTFMICC学习笔记Word文档下载推荐.docx

上传人:b****1 文档编号:1220168 上传时间:2023-04-30 格式:DOCX 页数:52 大小:910.83KB
下载 相关 举报
DCPTFMICC学习笔记Word文档下载推荐.docx_第1页
第1页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第2页
第2页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第3页
第3页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第4页
第4页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第5页
第5页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第6页
第6页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第7页
第7页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第8页
第8页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第9页
第9页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第10页
第10页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第11页
第11页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第12页
第12页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第13页
第13页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第14页
第14页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第15页
第15页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第16页
第16页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第17页
第17页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第18页
第18页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第19页
第19页 / 共52页
DCPTFMICC学习笔记Word文档下载推荐.docx_第20页
第20页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

DCPTFMICC学习笔记Word文档下载推荐.docx

《DCPTFMICC学习笔记Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DCPTFMICC学习笔记Word文档下载推荐.docx(52页珍藏版)》请在冰点文库上搜索。

DCPTFMICC学习笔记Word文档下载推荐.docx

0]SP2IB1;

reg[2:

0]sp;

//加这句说明和不加这句说明综合结果是不一样的,最好是加上这么一句

always@(SPenorIB12SPorreset)

begin

if(reset)

sp=07;

elseif(SPen)

sp=IB12SP;

end

assignSP2IB1=(SP2IB1en?

sp:

'

bz);

endmodule

二、DC综合注意的地方

1.在同一个电路中不能同时含有触发器和锁存器两种电路单元。

2.在电路中不能出现有反馈的组合逻辑。

3.不能出现用一个触发器的输出作为另一个触发器的时钟。

4.异步逻辑和模拟电路要单独处理。

5.使用的单元电路没有映射到工艺库中。

三、DC综合名词解释及脚本

1.名词解释

link_library设置单元或模块的引用。

前面必须包含’*’,表示DC在引用实例化模块时首先搜索已经调进DCmemory的模块。

link_library{“*”slow.db}

target_library为最终要映射的库。

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

路径的划分:

DC综合及优化都是基于路径的,路径的划分为:

路径的起点为输入端或者触发器的时钟端;

路径的终点为输出端或触发器的数据端。

2.环境脚本说明

set_operating_conditions[-minmin_condition][-maxmax-condition][-min_librarymin_lib][-maxmax_lib]指定DC优化时使用的工作坏境,其中工作坏境的指定必须在库中指定,或者在link_library中的其中一个库中指定,如果不指定工作坏境,DC会自动搜索link_library中的第一个库的工作坏境最为优化是所使用的工作坏境。

使用get_attributelibnamedefault_operating_conditions来看工作坏境。

-max的选项用于指定电路最大延迟分析(分析电路是否满足触发器建立时间setuptime的要求)的工作环境

-min的选项用于指定电路最小延迟分析(分析电路是否满足触发器保持时间holdtime的要求)的工作环境,该选项不能单独使用,必须与-max同时使用。

如果不指定用于分析最小延迟的库,则只使用-max中指定的库用于电路的延迟分析。

-min_library的选项指定用于电路最大延迟分析的工艺库。

-max_library的选项指定用于电路最小延迟分析的工艺库。

e.g.set_operating_conditions–maxtypical_1v2c25

set_wire_load_model-namesmic13_wl20

set_wire_load_modetop(这个是设置模块之间的线负载,在编译后可用)

set_drive默认值为0表示驱动能力无限大(表示电阻值)set_drive0{clk,rest}

set_driving_cell用一个具体的电路来模拟输入延时set_driving_cell–lib_cellBUFX2{a,b}

在电路的优化阶段,输入端口的驱动能力用于计算输入端口到门电路的延迟,一般来说,输入端口的驱动能力可以按照以下公式影响延迟:

Time=arrive_time+drive*net_load+connect_delay

set_driving_cell-lib_cellBUFX2-librarytypical_1v2c25[all_inputs]所有的输入端口

(portload=2.5+3*load_of(tech_lib/IV/A)

set_loadport_loadall_outputs())一起用的命令

3.约束脚本说明

set_max_capacitance用于设置输出单元允许的最大电容负载set_max_capacitance2.0test–设置设计test的最大电容负载是2.0

set_max_capacitance2.0a--设置端口a的最大电容负载是2.0

set_max_transition是指电压从10%VDD上升到90%VDD所需要的时间(或下降),这个值长表示电路速度慢。

用法同上。

set_max_fanout语法同上。

(create_clock–period1–nameclk[get_portsclk]–wareform{00.5}周期为1ns的方波。

set_clock_uncertainty0.3[get_clocksclk](时钟的偏移))

set_dont_touch_network{rest,clk,clr}不对其端口综合。

set_dont_touch不进行优化的模块、端口。

可以用set_dont_touch[]false来取消前面的设置。

set_input_delay2.3{ab}(组合电路)set_input_delay2.3–clock[get_clocksclk][all_inputs](时序电路)

set_output_delay语法同上。

set_max_area0

(set_max_delay5-fromaset_min_delay2–froma)用于完全组合电路。

set_dont_use{typical_1v2c25/I*}表示不调用以I开头的cell。

create_clock–nameclk–period2这是设置的虚拟时钟用于组合电路。

dcprocheckrun.tcl检查synopsystcl脚本命令。

set_load[expr[load_ofmy_lib/inv1a0/A]*3][get_portsout1]输出端口out1并列驱动三个inv的A

set_driving_cell-lib_cellBUFX2–pinY[get_portsout1]如果没有说pin则默认为cell的输出pin

report_timing–delaymax|minmax看setup;

min看hold的

4.查看报告命令

report_cell查看用了那些cell。

report_power–net查看每个cell用的功耗

report_net查看cell的fanout、fanin、capacitance、resistance.

setverilogout_show_unconnected_pinstrue设置在.synopsys_dc.setup里面,主要是为了输入编译后的verilog的cell没有用到的pin。

report_port返回所有加在输入输出端口的约束条件。

reset_design删除当前所有属性和约束。

remove_input_delay删除input_delay设定的延时。

remove_design删除当前设计.

report_path_group报告当前设计中个路径组的信息。

group_path–namecombo–from[all_inputs]–to[all_outputs]设定一个关键路径。

set_critical_range2[current_design]这样设置将会使相对于关键路径2ns范围内的路径群都进行优化。

group_path–nameclk1–critical_range0.3对于路径组的关键范围可以使用参数来指定。

set_dont_use{typical/*}表示不用typical这个库。

一些综合经验

set_clock_uncertainy–setup0.5–hold0.25[get_clocksCLK]在布图前和后阶段都指定一定的余量,这样可使芯片少受制造工艺偏差的影响。

set_max_delay5–from[all_inputs]–to[all_outputs]主要用在组合电路上

set_generated_clock–nameckl1–sourceCLK–divide_by2生成源CLK时钟的2分频

只有当通过编译达不到目标时,才使用compile–map_efforthigh。

时钟树的综合除了使用set_dont_touch_networt外还可有先用report_net查看高扇出的线网再使用balance_buffer命令点对点对其进行缓冲,或者用compile-in_place进行原地优化(IPO),并将compile_ok_to_buffer_during_inplace_opt开关设为false.

report_transitive_fanout–clock_tree(-fromreset)检查无意识的时钟门控(复位)

read_sdf*.sdf读入延迟文件

read_parasitics*.pef读入RC文件(spf)

使用disconnect_netcreate_cellconnect_net迫使DC在适当的位置插入cell。

在布图后将不用设置set_wire_load_model和set_wire_load_mode用实际的延迟和电容电阻代替了;

也不用设置set_clock_latancy和set_clock_transition用具体时钟树代替(使用set_propagated_clock[get_clocksCLK])

report_timing–from[all_input]–to[all_registers–data_pins]

如果综合完发现不能使用write命令来写verilog而出现assign报错提示则可以使用:

set_fix_multiple_port_nets–all来解决这个问题。

附录

1.DC的启动脚本

#####################################################

##dcsetupfile##

#####################################################

setsearch_path[list../core./verlog./script]

setlink_library{*typical_1v2c25.db}

settarget_library{typical_1v2c25.db}

setsymbol_library"

your_library.sdb"

setsynthetic_library"

"

read_file-formatverilog./verilog/cnt10.v

current_designcnt10

setverilogout_show_unconnected_pinstrue

aliasrp"

report_power"

aliasrt"

report_timing"

aliasra"

report_area"

aliasrc"

report_constraint-all_violators"

aliash"

history"

2.组合电路优化脚本

link

set_operating_conditionstypical_1v2c25

set_wire_load_model-namesmic13_wl10

set_wire_load_modetop

set_drive_cell-lib_cellBUFX2[all_inputs]

set_max_capacitance2.0test

set_max_capacitance18test

set_max_fanout15test

set_input_delay2.0[all_inputs]

set_output_delay1.5[all_outputs]

set_max_area0

set_max_delay2.0-froma

set_max_delay1.0-froma

set_load1{s,co}

#set_drive0reset

uniquify

compile

rp>

>

./reports/power.rpt

ra>

./reports/area.rpt

rt>

./reports/timing.rpt

rc>

./reports/constraint.rpt

write-formatverilog-hierarchy-output./outputs/adder.v

write-formatddc-hierarchy-o./outputs/adder.ddc

write_sdf./outputs/adder.sdf

write_sdc./outputs/adder.sdc

3.时序电路优化脚本

create_clockclk-period5-waveform{02.5}

set_dont_touch_network[get_clocksclk]

set_fix_hold[get_clocksclk]

set_clock_uncertainly0.2[get_clocksclk]

set_clock_latency-source0[get_clocksclk]

set_clock_latency1[get_clocksclk]

set_input_transition0.3[all_inputs]#ifyouwantdontafixvalue,useset_driving_cell

set_clock_transition0.3[all_clocks]

set_operating_conditions-min_libraryfast_1v32c0-minfast_1v32c0-max_libraryslow_1v08c125-maxslow_1v08c125

set_wire_load_model-namesmic13_wl10-libraryslow

set_wire_load"

reference_area_1000000"

-library"

smic13"

set_drive[drive_of"

slow_1v08c125/BUFX2/Y"

][get_portsclk]

slow_1v08c125/DFFX1/Q"

][remove_from_collection[all_inputs][get_portsclk]]

set_load[load_of"

slow_1v08c125/DFFX1/D"

][all_outputs]

set_input_delay-max1-clockclk[all_inputs]

set_input_delay-min0.2-clockclk[all_inputs]

set_output_delay-max1-clockclk[all_outputs]

set_output_delay-min0.1-clockclk[all_outputs]

#set_drive0{reset,clk}

set_max_fanout2[all_inputs]

set_max_transition0.3[all_inputs]

compile-boundary_optimization

./report/power.rpt

./report/area.rpt

./report/timing.rpt

./report/constraint.rpt

write-formatverilog-hierarchy-output./outputs/.v

write-formatddc-hierarchy-o./outputs/.ddc

write_sdf./outputs/.sdf

write_sdc./outputs/.sdc

PTSTA学习笔记

一、一些注意的地方

report_transitive_fanout–clock_tree报告出的”unknown”的clocknetwork可能计算出错误的延迟,report_reference查看cell的属性也可看使用了多少register。

当出现这样的问题我们可以使用Stamp模型来解决或者使用virtualclock旁通clkbuf

(create_clock–nameVCLK–p2–w{01}find(pin,U49/NQ)

set_clock_latancy0.2–sourceVCLK

set_ideal_netfind(net,VCLK))。

在时序分析中,经常会检查setup/hold、removal/recovery和minpulsewidth。

然而有些会是untested。

这使用report_analysis_coverage–status_details{untested}–sort_byslack–check_type{setup|hold}去查看。

报告结果可能会出现”no_clock”,找到原因。

一般是时钟没有到达,或者case_analysis分析;

上面修复后会有一部分hold也修复了这是因为register的clk没有clock。

然后还有一部分hold是untested可能会是对input/output没有min_delay的约束。

报告结果可能会出现”no_paths”,这意味着endpoints没有约束。

这可能是设置了set_false_path或者set_multicycle_path的原因先使用report_timing查看。

二、常用的脚本

report_analysis_converage查看设计所有的setup.hold等情况的比例

swap_cell<

celllisttobereplaced>

<

newdesign>

用这个命令去用相同的cell去代替,这个代替只是虚拟代替。

如果设计符合要求了,还得手动去修改netlists。

set_disable_timing禁止个别单元的时序弧有用。

有些违例路径共享的共同的叶单元的能力。

这称为瓶颈分析且通过使用命令report_bottleneck来进行查看。

如果一个时钟延迟是3±

0.5则指令为

create_clock-period10[get_portsCLK]

set_clock_latency2.5-source-early[get_clocksCLK]

set_clock_latency3.5-source-late[get_clocksCLK]这个指令只能是sourceclock

set_min_pulse_width-high1.5[all_clocks]

set_min_pulse_width-low1.0[all_clocks]

report_min_pulse_width这个主要是在有时钟门控的时候

set_clock_gating_check-setup0.5-hold0.4[get_clocksCLK]

report_clock_gating_check

set_disable_clock_gating_checktodisablespecificclockgatingchecksinadesign

report_exceptions–ignored

check_timing当设置了时序例外后我们检查是不是有用了用

set_case_analysis0(oredge(rising))[get_portssel]一般用于选择器

report_case_analysisremove_case_analysis[get_portssel]

report_delay_calculation–fromU1/A–toU1/Z用于计算cell或net的时序弧

当使用read_sdf读入延迟文件时报没有某端口时序弧错时使用read_sdf–path和read_sdf–strip_path检查,以及report_annotated_delay–list_not_annotated查看。

drive_clocks检查所有clock的类

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2