====== atpg ====== ===== - Transition AC ===== DC的时候scan_en为0时,只有一拍时钟, scan_en下降沿与这一拍时钟的距离可以足够远,这个时钟也可以是高速或低速时钟。 AC的时候scan_en为0时,有两拍高速时钟(这里也可以配置为低速时钟,shift_as_capture mode) AC有两种样本方式,LOC(比较常用)和LOS。 ==== - LOC ==== https://www.cnblogs.com/6y4z/p/16588760.html **Broadside (Launch‑Off‑Capture)** 一般都是使用的这种结构,使用标准OCC即可生成期望时序。 {{:edastudy:tessent:pasted:20240530-164536.png?nolink}} ==== - LOS ==== **pseudo-Launch-Off-Shift (LOS)** {{:edastudy:tessent:pasted:20240530-164724.png?nolink}} {{:edastudy:tessent:pasted:20240530-164750.png?nolink}} {{:edastudy:tessent:pasted:20240530-165612.png?nolink}} {{:edastudy:tessent:pasted:20240530-165623.png?nolink}}一直为1,开启se pipeline enable se_pipeline_en一直为1,开启se pipeline enable 这里的launch & capture都是高速时钟,可以理解为跟LOC一样,是OCC生成的,OCC在这看和LOC是一样的行为,只是lauch值的区别。 ===== - pattern debug ===== {{:edastudy:tessent:pasted:20230906-103118.png}} ===== - Pre-Existing Scan Chains ===== >add_scan_group grp1 chain_trace.testproc >add_scan_chains -internal my_chain0 grp1 \ corea_gate1_tessent_edt_c1_inst/edt_scan_in[0] \ corea_gate1_tessent_edt_c1_inst/edt_scan_out[0] >add_scan_chains -internal my_chain1 grp1 \ corea_gate1_tessent_edt_c1_inst/edt_scan_in[1] \ corea_gate1_tessent_edt_c1_inst/edt_scan_out[1] 这种会有一个问题, 如果int_edt_mode和ext_edt_mode的chain有走部分公共路径,最后通过int/ext mode来区别chain如何分岔, 这种不知道在drc trace scan chain时怎么处理。 ===== - PR网表层次保持 ===== PR后网表对OCC的hier层次需要固定不要动,不然在推ATPG时会找不到相应path报错。 具体发现以下在TCD文件里面描述的OCC以下PATH保持不变即可。 ClockOut() ShiftRegisterClockEn() ====== gen atpg pattern ====== 需要读取icl pdl, tcd, netlist文件,这样就可以跑出atpg pattern // command: read_design gps_baseband -design_id gate -verbose // sub-command: set_tool_options -reapply_settings_after_reelaboration On // sub-command: set_read_design_tag gps_baseband // sub-command: read_verilog ../tsdb_outdir/dft_inserted_designs/gps_baseband_gate.dft_inserted_design/gps_baseband.vg -no_duplicate_modules_warnings // sub-command: set_read_design_tag "" // sub-command: set_tool_options -reapply_settings_after_reelaboration Off // sub-command: read_icl ../tsdb_outdir/dft_inserted_designs/gps_baseband_gate.dft_inserted_design/gps_baseband.icl -skip_child_blocks -no_notes // sub-command: source ../tsdb_outdir/dft_inserted_designs/gps_baseband_gate.dft_inserted_design/gps_baseband.pdl // sub-command: read_core_descriptions ../tsdb_outdir/dft_inserted_designs/gps_baseband_gate.dft_inserted_design/gps_baseband.tcd ===== - set_atpg_limits ===== 设置atpg process limits, 比如可以设置只出几条pattern,这样可以快速得到一个简单的atpg pattern,可以快速用于后续flow set_atpg_limits ‑cpu_sec 500 ‑test_coverage 99.5 ‑pattern_count 2 report_environment ===== - low power shift & capture ===== {{:edastudy:tessent:pasted:20241031-192735.png?nolink}} **capture low power** 用单独的几个scan cell(scan_en为0时保持cell值不变),控制在capture阶段register的时钟enable\\ 这样可以分段控制部分register在capture阶段数据不变,实现low power效果 {{:edastudy:tessent:pasted:20241031-193335.png?nolink}} 这个图如果控制时钟不产生的话,就和上图效果差不多了。 **shift low power** 主要是在shift阶段Q到function组合逻辑之间的通路加一个and/or门\\ 让逻辑结合部分在shift阶段状态不变化,在capture阶段再变化。