====== tessent occ ====== {{:edastudy:tessent:pasted:20240221-092547.png?nolink}} ===== - operation mode ===== ==== - function mode ==== functional mode (test_mode = 0) that enables the fast clock gater to supply a fast clock to the design. ==== - shift mode ==== shift mode (scan_en = 1) that uses the slow_clock to load and unload the scan chains, including the condition bits in ShiftReg. ==== - shift only mode ==== Shift-only mode disables the OCC (test_mode = 0) and activates shift (scan_en = 1). It enables the slow clock clock gater to use the slow clock path for shift, and it enables bypass shift. 这个信号默认需要连接到 DFT信号ext_ltest_en ==== - slow capture mode ==== slow capture mode (fast_capture_mode = 0) that uses the slow_clock to capture data into the scan cells and to shift the condition bits in ShiftReg. ==== - fast capture mode ==== fast capture mode (fast_capture_mode = 1) that uses the fast_clock to capture data into the scan cells and to shift the condition bits in ShiftReg. ==== - kill clock mode ==== kill clock mode (kill_clock_en = 1) that enables you to block propagation of fast_clock input to clock_out output. Asserting the kill_clock_en signal is effective in the two operating modes when the OCC is not active: ===== - 结构伪代码 ===== clock_mux21 tessent_persistent_cell_inject_tck_mux ( .A0 ( slow_clock_buf_out ), .A1 ( ijtag_tck ), .S0 ( inject_tck ), .Y ( slow_clock_tck_injected ) ); cgand tessent_persistent_cell_cgc_fast_clock ( .CK ( fast_clock_buf_out ), .FE ( fast_clock_en ), .TE ( fast_clock_en ), .GCK ( fast_clock_gated ) ); cgand tessent_persistent_cell_cgc_slow_clock ( .CK ( slow_clock_tck_injected ), .FE ( slow_clock_en ), .TE ( slow_clock_en ), .GCK ( slow_clock_gated ) ); clock_mux21 tessent_persistent_cell_clock_out_mux ( .A0 ( fast_clock_gated ), .A1 ( slow_clock_gated ), .S0 ( clock_mux_select ), .Y ( clock_out ) ); assign kill_clock_en_gated = kill_clock_en & ~test_mode; assign fast_clock_en = ((ShiftReg_SCAN_OUT & fast_capture_mode & (SCAN_EN_inv_sync || active_upstream_parent_occ)) | (~test_mode)) & (~kill_clock_en_gated); assign slow_clock_en = (((ShiftReg_SCAN_OUT & (~fast_capture_mode)) | scan_en) & test_mode) | inject_tck | (shift_only_mode & scan_en); assign clock_mux_select = ((scan_en | (~fast_capture_mode)) & test_mode) | inject_tck | (shift_only_mode & scan_en); ===== - Parent mode ===== Parent-mode operation is one of the operating modes of the standard OCC. This operating mode bypasses the OCC clock gating logic and performs clock selection only. \\ It requires a downstream child-mode OCC to perform the clock gating and chopping. Parent-mode, 父OCC只做时钟function clk 与shift clk之间进行切换,不做OCC的pluse gateing(这部分由child-OCC来实现) ===== - Child OCC ===== SSN好像是不支持child OCC Child OCC有两种实现: * 普通OCC的child mode * child-only的OCC # 级联OCC会报R27问题, 配置成Parent OCC mode + child OCC mode就不会报这个问题。 add_core_instances -inst [get_inst top_rtl2_tessent_occ_parent_*] \ -parameter {parent_mode on fast_capture_mode on} set_static_dft_signal_values retargeting3_mode 1 //set_drc_handling R27 warning set_core_instance_parameters -instances \ coreb_i1/coreb_rtl2_tessent_occ_clka_inst -parameter_values \ {active_upstream_parent_occ on} set_core_instance_parameters -instances \ coreb_i1/coreb_rtl2_tessent_occ_clkb_inst -parameter_values \ {active_upstream_parent_occ on} set_core_instance_parameters -instances \ coreb_i1/coreb_rtl2_tessent_occ_clkc_inst -parameter_values \ {active_upstream_parent_occ on}