0% found this document useful (0 votes)
143 views2 pages

Concatenating OCC Clock Chains From Multiple DFT Partitions

synopsys dft for occ

Uploaded by

thsim85
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
143 views2 pages

Concatenating OCC Clock Chains From Multiple DFT Partitions

synopsys dft for occ

Uploaded by

thsim85
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

Recent Searches:

mbist vclp message reference -xg


(/s/) Cases (/s/case-list) STARs (/s/star-list) Articles (/s/knowledge) Help (/s/help-info)

Dec 11, 2019 • Knowledge

Title
Concatenating OCC Clock Chains From Multiple DFT Partitions

Description
Question:

I have multiple DFT partitions, with OCC controllers spread across them: I would like to concatenate all of the clock chains into a single chain:

I'm following the instructions provided in SolvNet article 018046, "How Can I Control Scan Stitching of OCC Controller Clock Chains?"
(https://solvnet.synopsys.com/retrieve/018046.html). However, my set_scan_path -class occ specification is being ignored, and the clock chains
are still being split up across partitions.

How can I concatenate all my clock chains together across partitions?

Answer:

The short answer is, you can't—scan cells from different partitions cannot exist in the same chain.

However, you can achieve the desired structure by defining your DFT partitions so that all OCC chains to be concatenated belong to the same DFT
partition (default or user-defined):

Clock chains belong to DFT partitions as follows:

For DFT-inserted OCC controllers, a clock chain belongs to the partition of the enclosing block it will be inserted into.

For user-defined OCC controllers, a clock chain belongs to the partition that its registers belong to.

If all your clock chains are at the top level or in some common level of hierarchy, then putting them all in the same partition is easy. However, if the
clock chains are inside blocks of different partitions, then things get tricky. In this case, you can use one of the following methods.

Note: For clarity, the examples show a dedicated "POCC" partition for the OCC logic. However, you can also use an existing partition. The only
requirement is that all clock chains be in the same partition.

Exclude the Clock Chains From the Partition Definitions


Define your non-OCC partitions to include everything but the clock chain. Then, define a separate partition (or use the default partition) to include
the clock chain but not any scan cells. This is similar to the figure above.
Consider the following original partition definitions:

define_dft_partition -include {sub1} P1 -default true


define_dft_partition -include {sub2} P2

These could be modified to exclude the clock-generation blocks, then include them in a separate partition:

define_dft_partition -include {sub1/blk1 sub1/blk2 sub1/blk3} P1 -default true


define_dft_partition -include {sub2/blk1 sub2/blk2 sub2/blk3} P2
define_dft_partition -include {sub1/clkgen sub2/clkgen} POCC

If you have many subblocks alongside the clock-generation blocks, you can use the remove_from_collection command to obtain them:

define_dft_partition P1 -default true \


-include [remove_from_collection [get_cells {sub1/*}] [get_cells {sub1/clkgen}]
define_dft_partition P2 \
-include [remove_from_collection [get_cells {sub2/*}] [get_cells {sub2/clkgen}]
define_dft_partition -include {sub1/clkgen sub2/clkgen} POCC

Steal the Clock Chains From the Partition Definitions


You can use the (undocumented) precedence behavior that a cell belongs to the first partition that includes it. If the clock sources exist inside
clock-generation blocks that contain no other scan logic, then assign all those clock-generation blocks to a partition first, then define the
remaining partitions. For example,

define_dft_partition -include {sub1/clkgen sub2/clkgen} POCC


define_dft_partition -include {sub1} P1 -default true
define_dft_partition -include {sub2} P2

In this example, the subblocks sub1/clkgen and sub2/clkgen contain the clock sources, and thus the DFT-inserted OCC logic (including clock
chains) are inserted inside these subblocks. By assigning these subblocks to partition POCC first, then assigning the parent blocks and their
remaining logic to P1 and P2, we can assign all clock chains to POCC:

dc_shell> preview_dft -show all


...
Scan chain '1' contains 16 cells (Partition 'POCC')
Active in modes: ScanCompression_mode :

sub1/clkgen/snps_clk_chain_0/clock_chain (s) (o) (l) (sub1/clkgen/UPLL/CLKO, 45.0, rising)


sub2/clkgen/snps_clk_chain_1/clock_chain (s) (o) (m) (sub2/clkgen/UPLL/CLKO, 45.0, rising)

No scan signals

Scan chain '2' contains 73 cells (Partition 'P1')


Active in modes: ScanCompression_mode :
...

Workaround

Product L1 Additional Product(s)


TestMAX DFT (/s/detail/01t1U000003IXzUQAW)

Article Number Last Published Date


000005371 12/11/2019, 9:13 AM

Article Record Type URL Name


How To Concatenating-OCC-Clock-Chains-From-Multiple-DFT-Partitions-
1576002524507

Was this article helpful? 0 0

You might also like