Occ Complete
Occ Complete
Occ Complete
In modern designs, on-chip clock control (OCC) circuits are commonly used to manage clocks
during test. Such clock controllers can generate slow-speed or at-speed clock sequences under
the control of ATPG process. Tessent OCC is an implementation of a clock controller created
by Tessent Shell that has been designed to meet the requirements of scan test for ATPG, Logic
BIST, EDT, and Low Pin Count Test.
Tessent OCC Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
Primary OCC Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
On-Chip Clock Controller Design Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
The Standard OCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
Standard OCC With IJTAG Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
The Parent OCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
The Child OCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
Tessent OCC Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
Inserting the OCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
occ.dft_spec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
post_dft_insertion_procedure.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
OCC Insertion When Using an Existing Clock as the test_clk DFT Signal. . . . . . . . . . . . 626
Core OCC Recommendation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
Primary OCC Functions
merged to simultaneously test multiple cores without conflicts in how clocks are
controlled within each core.
You can use the Tessent OCC with the following:
Note
The Tessent on-chip clock control methodology is intended for use on designs where all
clock domains are internal. If you also have external clocks then you must divide your
transition ATPG into two separate sessions: one session for the external clocks and one session
for the internal clocks.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
Primary OCC Functions
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
On-Chip Clock Controller Design Description
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
The Standard OCC
The standard OCC is the recommended OCC for use in hierarchical cores. For more
information, see “Core OCC Recommendation”.
Design Placement
The OCC should be inserted such that the fast clock input of the OCC is driven by the functional
clock source, typically a PLL. Ideally, the OCC is placed near the clock source (PLL) but
should be placed inside cores to allow for local clock control as needed for pattern retargeting
flows. The OCC uses a top-level slow clock for shift and slow capture as well as a test mode
signal that determines if a test or functional clock is supplied to the design.
Figure 17-3 shows an example of OCC placement.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
The Standard OCC
Depending on your design style, you may need to guide the Clock Tree Synthesis (CTS) not to
balance the flops and latches in the OCC with the clock tree it drives.
There is no reason for you to add a clock mux after the OCC for functional mode because the
fast_clock propagates through when the test mode signal is de-asserted. Additionally, having a
common path for the fast clock in functional mode and test mode simplifies clock tree synthesis
and timing closure.
The clock control design is used to supply the clock when in functional and test modes. In
functional mode, the fast clock is passed to the design. In test mode, the fast clock is used for at-
speed capture while a top-level slow clock will be used for shift and slow capture. The reference
clock supplied to the PLL is a free-running clock, typically pulse-always.
It is recommended not to flatten the clock control blocks during layout in order to ease
automation of defining the clock gating logic and its operation.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
The Standard OCC
Table 17-1 describes the functionality of the clock controller I/O signals.
Table 17-1. Clock Controller I/O Signals
Name Direction Description
scan_en Input Scan enable driven by top-level
pin
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
The Standard OCC
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
The Standard OCC
Additionally, a flop is used on the input side of the synchronization cell and clocked by the
trailing edge of slow clock. Since scan enable normally fans out to the entire circuit and may
arrive after fast clock, the flop on slow clock ensures that scan enable is not synchronized by the
fast clock until slow clock is pulsed, thus reducing the risk of a race condition.
In order to ensure proper DRC analysis and simulation, the output of the clock gater cell driven
by the synchronization logic is defined as a pulse-in-capture internal clock. When using the
TCD flow for pattern generation, the tool automatically defines the internal clock as a pulse-in-
capture clock. This ensures correct simulation of the logic during load_unload and avoids
unnecessary DRC violations.
The synchronization cell (sync_cell) shown in Figure 17-4 has an asynchronous reset port that
is driven by scan_en if it is active high. If the reset port of the synchronous cell is active low it is
driven by ~scan_en.
In the RTL description, the synchronization cell is described as a separate module so that it can
be replaced with a technology specific synchronization cell from the appropriate library.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
The Standard OCC
clock at the beginning of capture is defined in the external_capture procedure used for fast
capture:
The tool does not simulate clock pulses defined in external_capture procedures when it
calculates the expect values in the patterns. The clock pulses defined in this procedure are added
to the created patterns after ATPG to ensure correct operation in fast capture mode. Since the
output of the clock gating logic is defined as a pulse-in-capture internal clock, the tool does not
need to simulate the clock pulse on the register that first captures scan enable. However, if slow
clock controls any other sequential elements, it can result in simulation mismatches.
Adding external_capture cycles with no slow_clock pulses before the cycle that pulses
slow_clock, delays the fast clock pulses to give scan enable sufficient time to transition to 0.
Empty cycles after the pulse on slow_clock, delay the load/unload operation to give scan enable
sufficient time to transition to 1.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
The Standard OCC
Note
The scan enable synchronization operation described in this section is not used for slow
capture mode which uses slow clock for shift and capture.
set_output_masks on
add_input_constraints -all -hold
set_clock_restriction domain_clock -any_interaction \
-compatible_clocks_between_loads on
The preceding three commands are not needed when using NCPs because the capture clock
sequence and time for forcing PIs and measuring POs are explicitly defined by the user in
NCPs.
set_external_capture_options ...
Figure 17-5 shows the OCC schematic with the clock gater at the lower left.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
The Standard OCC
This version of the OCC can also be used with a tester provided slow clock (that is not free
running). In this case, the new clock gater simply lets the controlled slow clock pass through
during shift and capture.
For LBIST and LPCT applications, an OCC that uses a free-running slow clock is required. This
free running clock is connected to either the shift_clock of the LBIST controller or the LPCT
input clock.
Functional Mode
When operating in functional mode (test_mode = 0), the fast clock gater is enabled to supply
fast clock to the design. The slow clock and internal clock gaters are disabled to reduce power.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
The Standard OCC
Shift Mode
In shift mode (scan_en = 1), slow_clock is used to load/unload scan chains which include the
condition bits in ShiftReg.
Shift-Only Mode
In shift-only mode, the OCC is disabled (test_mode = 0) but shift is enabled (scan_en = 1). In
this mode, the slow_clock clock gater is enabled to ensure slow clock path is always used for
shift. Additionally, bypass shift is enabled.
Figure 17-8 shows that both inactive (test_mode = 0) and active OCCs use slow_clock for shift.
By default, Standard and Parent OCCs will enable the shift clock path anytime scan_en is 1,
even if the OCC is inactive; this ensures consistent shift timing in internal and external modes.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
The Standard OCC
To change the default and use the functional clock instead of the test clock, set the
shift_only_mode OCC wrapper property to off.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
The Standard OCC
Timing Diagrams
The timing diagram for slow speed capture (fast_capture_mode = 0) is shown in the following
figure:
Figure 17-11. Slow Speed Capture Timing Diagram
For this example, capture_cycle_width is set to “10” resulting in a maximum sequential depth
of 3. In this mode, slow clock is used for shift as well as capture. Based on condition bits loaded
into the shift register, the clock_out port will generate the appropriate number of slow clock
pulses.
In fast capture mode (fast_capture_mode = 1) the waveforms in Figure 17-12 are generated.
Similar to the previous example, capture_cycle_width is set to “10” here resulting in a
maximum sequential depth of 3. In this mode, the slow_clock is still used for shift but the fast
capture pulses on clock_out are based on fast_clock.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
Standard OCC With IJTAG Interface
As shown, the scan enable signal which has been synchronized to the fast clock (sync_cell/q) is
used to trigger the fast clock pulses on ShiftReg/clk. The ShiftReg/clk signal is the clock source
for the shift register containing the condition bits. Based on the condition bits loaded during
shift, the correct number of fast clock pulses will appear on clock_out.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
Standard OCC With IJTAG Interface
Figure 17-14 highlights the functionality of the mux added to the slow_clock input of the OCC.
When inject_tck is 1, the mux selects ijtag_tck which drives clock_out through the slow clock
gater and the output mux.
Figure 17-14. OCC With IJTAG Interface: ijtag_tck injected for slow clock
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
The Parent OCC
In parent mode, the OCC is used for clock selection only. The parent OCC typically feeds the
clock input of a child OCC. Figure 17-16 shows a parent OCC in parent mode. An example use
for this mode is pattern retargeting in Intest mode.
Figure 17-17 shows the parent on-chip controller logic. In parent mode, the OCC injects the
shift clock at the base of the clock in shift mode. When scan _en is low, it lets a programmable
constant set of clock pulses go through.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
The Parent OCC
The parent OCC usually feeds the clock input of a child OCC which, in turn, enables the scan-
based test pattern generation tool to control which clock pulses go through or not.
Table 17-2 describes the functionality of the clock controller I/O signals.
Table 17-2. Parent OCC I/O Signals
Name Direction Description
parent_mode Input Defines whether the OCC is
used in parent mode. When
the default (0) is used, the
OCC functions in standard
mode, selecting and gating
clocks for top-level testing.
When in parent mode (1), the
OCC is used for clock
selection only.
For a description of remaining I/O signals, see Table 17-1 in the Standard OCC Schematic
section.
The schematics shown represent an OCC that is generated without an IJTAG interface. To learn
how an OCC with an IJTAG interface differs, see “Standard OCC With IJTAG Interface.”
The standard OCC is the recommended OCC for use in hierarchical cores. For more
information, see “Core OCC Recommendation”.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
The Child OCC
Figure 17-18. Child OCC Gates and Creates Clocks (with Parent OCC)
Figure 17-19 shows a detailed example schematic of the child on-chip controller with a clock
gater.
In some cases, it is not practical to use a child OCC with an internal clock gater. Optionally, the
child OCC can be created without the internal clock gater. The created signal enables layout
tools to replicate and control the design’s clock gaters for implementations such as a clock
mesh. The handling of user provided clock gating cells is transparent to the user. This is shown
in Figure 17-20.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
The Child OCC
Figure 17-20. Child OCC Creates Enable for Clock Gaters (with Parent OCC)
Figure 17-21 shows the child on-chip controller logic without the clock gater.
To properly operate the clock gaters during capture, a sensitized path must exist between the
OCC clock enable port and the clock gaters. If there is no sensitized path from the OCC to the
clock gaters, but a structural connection exists, the tool verifies that the clock gaters are disabled
during capture.
The schematics shown represent an OCC that is generated without an IJTAG interface. To learn
how an OCC with an IJTAG interface differs, see “Standard OCC With IJTAG Interface.”
The standard OCC is the recommended OCC for use in hierarchical cores. For more
information, see “Core OCC Recommendation”.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
Tessent OCC Insertion
To achieve the best configuration for compressed ATPG, you will need to stitch the OCC sub-
chains into the scan chains. For more information, refer to “OCC Sub-Chain Stitching” in the
Tessent TestKompress User’s Manual.
The basic procedure for inserting Tessent OCCs is described below. For more detailed
examples of inserting OCCs in a flow and using them for pattern generation, refer to “Tessent
Shell Flow for Flat Designs” and “Tessent Shell Flow for Hierarchical Designs” in the Tessent
Shell User’s Manual.
4. Read cell library to allow creation of some instances such as muxes. For example:
SETUP> read_cell_library adk.tcelllib
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
occ.dft_spec
6. Read the configuration file to specify OCC insertion parameters. For example:
SETUP> read_config_data occ.dft_spec
7. Optionally define the port list and procedure to insert on-chip control for clocks and to
connect condition bits of OCC into new scan chain after DFT spec is processed. See
post_dft_insertion_procedure.tcl for an example.
8. Validate and process the content defined in the DftSpecification wrapper.
SETUP> process_dft_specification
This step only applies when inserting the OCC RTL into a gate-level netlist. When
inserting into an RTL design, the OCC is synthesized along with the rest of the design.
The run_synthesis command also writes the updated netlist to the TSDB directory.
10. If needed, optionally write out the updated netlist. For example:
SETUP> set_current_design
SETUP> write_design
-output_file cpu_core_post_occ_insertion.vg.gz -replace
occ.dft_spec
The following example shows a basic OCC DftSpecification:
DftSpecification(cpu, occ_core) {
reuse_modules_when_possible: on;
OCC {
Controller(CLK1_OCC) {
// DEFINE ROOT OF CLOCK DOMAIN WHERE OCC SHOULD BE INSERTED
clock_intercept_node: /BUF_OCC_1/Y;
}
Controller(CLK2_OCC) {
// DEFINE ROOT OF CLOCK DOMAIN WHERE OCC SHOULD BE INSERTED
clock_intercept_node: /BUF_OCC_2/Y;
}
Controller(CLK3_OCC) {
// DEFINE ROOT OF CLOCK DOMAIN WHERE OCC SHOULD BE INSERTED
clock_intercept_node: /BUF_OCC_3/Y;
}
}
}
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
post_dft_insertion_procedure.tcl
post_dft_insertion_procedure.tcl
Tcl procedure for post-DFT insertion.
This OCC insertion example contains the process_dft_specification.post_insertion procedure.
The procedure name is a keyword that instructs the process_dft_specification command to
execute the content of the procedure immediately after inserting the specified DFT logic.
The post-insertion script creates a scan chain that concatenates the shift registers of all inserted
OCCs into one uncompressed scan chain. Additionally, a dofile is created for adding the clock
control scan chain in subsequent steps. Typically, the OCC sub-chains will be stitched to the
design's scan chains during scan insertion. In this post-scan insertion example, the
post_dft_insertion example is used to demonstrate the capability of making design edits after
insertion
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.
Tessent On-Chip Clock Controller
OCC Insertion When Using an Existing Clock as the test_clk DFT Signal
Figure 17-22 shows a clock, created using the command “add_clocks clk -pulse_always”,
driving sequential elements.
You want to use the clk pin as the DFT test_clock, so you use the command, “add_dft_signals
test_clock -source_nodes clk”. You also create the DFT signals edt_clock and
shift_capture_clock from the test_clock DFT signal using the command “add_dft_signals
{edt_clock shift_capture_clock} -create_from_other_signals”.
Figure 17-23 shows the design with the clock gating cells that are added by the tool for
edt_clock and shift_capture_clock. It also shows the OCC inserted in a location where it
intercepts the clock signal “clk”. This OCC placement interferes with your goal of a direct,
free-running clock to the clock gating cells.
Note - Viewing PDF files within a web browser causes some links not to function. Use HTML for full navigation.