目录

tessent occ

1. operation mode

1.1 function mode

functional mode (test_mode = 0) that enables the fast clock gater to supply a fast clock to the design.

1.2 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.

1.3 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

1.4 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.

1.5 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.

1.6 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:

2. 结构伪代码

 
   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);

3. 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来实现)

4. Child OCC

SSN好像是不支持child OCC

Child 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}