1、Backend Study NotesDC综合学习笔记- 1 -一、verilog 编写- 1 -二、DC综合注意地方- 2 -1.在同一种电路中不能同步具有触发器和锁存器两种电路单元。- 2 -2.在电路中不能出既有反馈组合逻辑。- 2 -3.不能浮现用一种触发器输出作为另一种触发器时钟。- 2 -4.异步逻辑和模仿电路要单独解决。- 2 -5.使用单元电路没有映射到工艺库中。- 2 -三、DC综合名词解释及脚本- 2 -1.名词解释- 2 -2.环境脚本阐明- 2 -3.约束脚本阐明- 2 -4.查看报告命令- 3 -某些综合经验- 4 -附录- 4 -1.DC启动脚本- 4 -2.组合电
2、路优化脚本- 5 -3.时序电路优化脚本- 5 -PT STA学习笔记- 6 -一、某些注意地方- 6 -二、惯用脚本- 7 -附录- 8 -时序分析范例- 8 -分析脚本(worst)- 8 -分析脚本(best)- 9 -Formality学习笔记- 9 -脚本范例- 9 -Encounter学习比较- 10 -一、理论- 10 -1、布图- 10 -1.1、I/O单元- 10 -1.2、层次化设计- 10 -2、布局- 10 -2.1、电源规划- 10 -2.2、原则单元和模块放置- 12 -3、CTS- 12 -4、布线- 12 -二、脚本运用- 13 -三、需要抽取和保存文献- 14
3、 -ICC学习笔记- 15 -一、ICC基本流程- 15 -二、文献准备- 15 -三、脚本运用- 16 -附录:脚本范例- 16 -启动脚本范例- 16 -Floorplan脚本范例- 17 -无PAD脚本- 17 -有PAD脚本- 17 -Placement脚本范例- 18 -CTS脚本范例- 18 -Route脚本范例- 19 -文献导出范例- 19 -ECO脚本范例- 19 -VCS学习笔记- 21 -DFT学习笔记- 21 -Tcl语言学习笔记- 21 -4Perl语言学习笔记- 22 -时序学习笔记- 22 -1、基本概念- 22 -2、ON-Chip Variations(OCV
4、)- 29 -3、时间借用(Time Borrowing or cycle stealing)- 30 -4、Data to Data Check- 31 -其她学习笔记- 33 -一、低功耗学习笔记- 33 -1.Clock Gate- 33 -二、信号完整性分析- 33 -名词解释- 34 -后端工程师具备能力- 35 -附录- 35 -DC综合学习笔记一、verilog 编写 在使用if语句时候,一定得把条件写全,否则会综合出锁存器。一种if语句只能跟一种表达式。如果一种电路中浮现两种时序电路构造(锁存器和触发器),会增长电路测试难度。If语句相应是选取器。If语句隐含这优先级别,这和c
5、ase语句不同。Case和If语句同样,都是用于选取输出,但是case 语句隐含是平行电路构造。当case语句条件没有完全译码时,会引起具备优先级电路构造。在使用always语句描述组合电路时,在该语句中读入所有变量都需要出当前事件列表中,否则也许会得不到盼望成果。(/synopsys full_case parallel_case,如果case语句不写全可以加这个key word)在使用always语句描述时序电路时候,都会引用触发器,使用” ./reports/power.rptra ./reports/area.rptrt ./reports/timing.rptrc ./reports
6、/constraint.rpt write -format verilog -hierarchy -output ./outputs/adder.vwrite -format ddc -hierarchy -o ./outputs/adder.ddcwrite_sdf ./outputs/adder.sdfwrite_sdc ./outputs/adder.sdc3.时序电路优化脚本linkcreate_clock clk -period 5 -waveform 0 2.5set_dont_touch_network get_clocks clkset_fix_hold get_clocks
7、clkset_clock_uncertainly 0.2 get_clocks clkset_clock_latency -source 0 get_clocks clkset_clock_latency 1 get_clocks clkset_input_transition 0.3 all_inputs #if you want dont a fix value,use set_driving_cell set_clock_transition 0.3 all_clocksset_operating_conditions -min_library fast_1v32c0 -min fast
8、_1v32c0 -max_library slow_1v08c125 -max slow_1v08c125set_wire_load_model -name smic13_wl10 -library slowset_wire_load_mode topset_wire_load reference_area_1000000-library smic13set_drive drive_of slow_1v08c125/BUFX2/Y get_ports clkset_drive drive_of slow_1v08c125/DFFX1/Q remove_from_collection all_i
9、nputs get_ports clkset_load load_of slow_1v08c125/DFFX1/D all_outputsset_input_delay -max 1 -clock clk all_inputsset_input_delay -min 0.2 -clock clk all_inputsset_output_delay -max 1 -clock clk all_outputsset_output_delay -min 0.1 -clock clk all_outputs#set_drive 0 reset,clk set_max_area 0set_max_fa
10、nout 2 all_inputsset_max_transition 0.3 all_inputsuniquifycompile -boundary_optimizationrp ./report/power.rptra ./report/area.rptrt ./report/timing.rptrc ./report/constraint.rpt write -format verilog -hierarchy -output ./outputs/.vwrite -format ddc -hierarchy -o ./outputs/.ddcwrite_sdf ./outputs/.sd
11、fwrite_sdc ./outputs/.sdcPT STA学习笔记一、某些注意地方report_transitive_fanout clock_tree 报告出”unknown”clock network也许计算出错误延迟,report_reference 查看cell属性也可看使用了多少register。当浮现这样问题咱们可以使用Stamp模型来解决或者使用virtual clock旁通clkbuf(create_clock name VCLK p 2 w 0 1 find(pin,U49/NQ)set_clock_latancy 0.2 source VCLKset_ideal_net
12、 find(net,VCLK)。在时序分析中,经常会检查setup/hold、removal/recovery和min pulse width。然而有些会是untested。这使用report_analysis_coverage status_details untested sort_by slack check_type setup|hold去查看。报告成果也许会浮现”no_clock”,找到因素。普通是时钟没有到达,或者case_analysis分析;上面修复后会有一某些hold也修复了这是由于registerclk没有clock。然后尚有一某些hold是untested也许会是对inp
13、ut/output没有min_delay约束。报告成果也许会浮现”no_paths”,这意味着endpoints没有约束。这也许是设立了set_false_path或者set_multicycle_path因素先使用report_timing查看。二、惯用脚本report_analysis_converage 查看设计所有setup.hold等状况比例swap_cell 用这个命令去用相似cell去代替,这个代替只是虚拟代替。如果设计符合规定了,还得手动去修改netlists。set_disable_timing 禁止个别单元时序弧有用。有些违例途径共享共同叶单元能力。这称为瓶颈分析且通过使用
14、命令report_bottleneck来进行查看。如果一种时钟延迟是30.5则指令为create_clock -period 10 get_ports CLKset_clock_latency 2.5 -source -early get_clocks CLKset_clock_latency 3.5 -source -late get_clocks CLK 这个指令只能是source clockset_min_pulse_width -high 1.5 all_clocksset_min_pulse_width -low 1.0 all_clocksreport_min_pulse_widt
15、h 这个重要是在有时钟门控时候set_clock_gating_check -setup 0.5 -hold 0.4 get_clocks CLKreport_clock_gating_checkset_disable_clock_gating_check to disable specific clock gating checks in a designreport_exceptions ignoredcheck_timing当设立了时序例外后咱们检查是不是有用了用set_case_analysis 0(or edge(rising) get_ports sel 普通用于选取器report
16、_case_analysis remove_case_analysis get_ports selreport_delay_calculation from U1/A to U1/Z 用于计算cell或net时序弧当使用read_sdf 读入延迟文献时报没有某端口时序弧错时使用read_sdf path 和 read_sdf strip_path检查,以及report_annotated_delay list_not_annotated查看。drive_clocks 检查所有clock类型,像gated clock、internal generated clock和muxed clocks。然
17、后用report_clock。附录时序分析范例pt_shell report_timing -path full_clockPoint Incr Path - clock clk (rise edge) 0.00 0.00 clock source latency 0.00 0.00 clk(in) 0.00 0.00 S_2/Z (BUF2) 0.40 * 0.40 f A_reg1/CP (FD1) 0.02 * 0.42 A_reg1/Q (FD1) 0.12 * 0.54 fresult_reg0/D (FD1) 0.00 1.96 rdata arrival time 1.96clo
18、ck clk (rise edge) 4.00 4.00clk (in) 0.00 0.00 rS_1/Z (BUF1) 1.06 * 5.06 rresult_reg0/CP (FD1) 0.01 * 5.07 rlibrary setup time -0.80 * 4.27data required time 4.27从红色标记看出clock skew(uncertainy) 是 1.07-0.42分析脚本(worst)read_verilog ./verilog/pr_cnt10.vcurrent_design cnt10.vset_operating_conditions slow_1
19、v08c125 read_timing ./input_file/cnt10.sdf read_parasitic ./input_file/cnt10_w.spefcreate_clock clk -period 2 -waveform 0 1set_dont_touch_network get_clocks clkset_dont_touch_network get_ports resetset_propagated_clock get_clocks clk#if you want dont a fix value,use set_driving_cell set_drive drive_
20、of slow_1v08c125/INVX1/Y get_ports clkset_drive drive_of slow_1v08c125/INVX1/Y remove_from_collection all_inputs get_ports clkset_load load_of slow_1v08c125/INVX2/Y all_outputsset_input_transition 0.2 all_inputs set_input_delay -max 1.0 -clock clk all_inputsset_input_delay -min 0.2 -clock clk all_in
21、putsset_output_delay -max 1.0 -clock clk all_outputsset_output_delay -min 0.1 -clock clk all_outputsset_drive 0 reset,clk set_max_area 0set_max_fanout 5 all_inputsset_max_transition 2 all_inputsreport_constraint -all_violators分析脚本(best)read_verilog ./verilog/pr_cnt10.vcurrent_design cnt10.vset_opera
22、ting_conditions fast_1v32c0 read_timing ./input_file/cnt10.sdfread_parasitic ./input_file/cnt10_b.spef create_clock clk -period 2 -waveform 0 1set_dont_touch_network get_clocks clkset_dont_touch_network get_ports resetset_propagated_clock get_clocks clk#if you want dont a fix value,use set_driving_c
23、ell set_drive drive_of slow_1v08c125/INVX1/Y get_ports clkset_drive drive_of slow_1v08c125/INVX1/Y remove_from_collection all_inputs get_ports clkset_load load_of slow_1v08c125/INVX2/Y all_outputsset_input_transition 0.2 all_inputs set_input_delay -max 1.0 -clock clk all_inputsset_input_delay -min 0
24、.2 -clock clk all_inputsset_output_delay -max 1.0 -clock clk all_outputsset_output_delay -min 0.1 -clock clk all_outputsset_drive 0 reset,clk set_max_area 0set_max_fanout 5 all_inputsset_max_transition 2 all_inputsreport_constraint -all_violatorsFormality学习笔记脚本范例set search_path ./core ./rtl ./netlis
25、tset_svf default.svfread_verilog -r cnt10.vset_top cnt10read_db -i fast_1v32c0.dbread_verilog -i pr_cnt10.vset_top cnt10matchverifyEncounter学习比较一、理论1、布图1.1、I/O单元I/O单元重要是保证信号从芯片内部传递到外部时其途径最短,同步规定从I/O单元核心引线到封装点时,避免信号交叉,以便封装基板制作,减少基板上走线层数。当芯片输入输出单元较多而内部逻辑单元较少且普通为I/O单元限制型设计时,则普通选用狭窄I/O单元;当芯片输入输出单元较少而内部逻辑单元较大时,则普通选用宽I/O单元。但设计子模块时,I/O单元形式为接点(pin)而不是接口(pad)。I/O单元分为信号接口和电源两种类型,信号I/O单元核心是选取驱动大小,而电源
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100