====== 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阶段再变化。