throbber
(12) United States Patent
`Craven et al.
`
`111111
`
`1111111111111111111111111111111111111111111111111111111111111
`US006237127Bl
`US 6,237,127 Bl
`May 22,2001
`
`(10) Patent No.:
`(45) Date of Patent:
`
`(54) STATIC TIMING ANALYSIS OF DIGITAL
`ELECTRONIC CIRCUITS USING NON(cid:173)
`DEFAULT CONSTRAINTS KNOWN AS
`EXCEPTIONS
`
`Primary Examiner-Matthew Smith
`Assistant Examiner-Jibreel Speight
`(74) Attorney, Agent, or Firm-Brown Raysman Millstein
`Felder & Steiner LLP; Jonathan T. Kaplan
`
`(75)
`
`Inventors: Ted L. Craven, Santa Clara; Denis M.
`Baylor, San Jose; Yael Rindenau,
`Cupertino, all of CA (US)
`
`(73) Assignee: Synopsys, Inc., Mountain View, CA
`(US)
`
`( *) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 0 days.
`
`(21) Appl. No.: 09/093,817
`
`(22) Filed:
`
`Jun. 8, 1998
`
`(51)
`
`Int. Cl? .............................. G06F 17/50; G06F 1!04;
`G06F 1/06; G06F 1/08
`(52) U.S. Cl. ..................................... 716/6; 703/2; 703/15;
`703/19; 716/1; 716/3; 716/5; 716/7; 716/2;
`713/500
`(58) Field of Search ................................. 703/2; 716/2, 1,
`716/3, 5, 6, 7; 713/500
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`4,698,760 * 10/1987 Lembach eta!. ........................ 716/6
`5,210,700 * 5/1993 Tom ......................................... 716/6
`5,282,147 * 1!1994 Goetz eta!. ............................. 716/2
`5,339,253 * 8/1994 Carrig et a!. ............................. 716/6
`
`(List continued on next page.)
`
`01HER PUBLICATIONS
`
`Krishna P. Belkhale et al., "Timing Analysis with Known
`False Sub Graphs", 1995 IEEE pp. 736-740.*
`
`(57)
`
`ABSTRACT
`
`Exceptions allow a circuit designer, working with a circuit
`synthesis system, to specify certain paths through the circuit
`to be synthesized as being subject to non-default timing
`constraints. The additional information provided by the
`exceptions can allow the synthesis system to produce a more
`optimal circuit. A tag-based timing analysis tool is
`presented, which implements exceptions, and can be used in
`a synthesis system. A circuit is analyzed in "sections," which
`comprise a set of "launch" flip flops, non-cyclic combina(cid:173)
`tional circuitry and a set of "capture" flip flops. The tag(cid:173)
`based static timing analysis of the present invention is
`performed in four main steps: preprocessing, pin-labeling,
`RF timing table propagation and relative constraint analysis.
`Preprocessing converts the exceptions written by the circuit
`designer into a certain standard form in which paths through
`the circuit to be synthesized are expressed in terms of circuit
`"pins." Pin-labeling causes the particular circuit pins, which
`are the subject of exceptions, to be marked. During RF
`timing table propagation, "RF timing tables" with rise and
`fall times are propagated onto all pins of the circuit section.
`Rise and fall times in the RF timing tables are based on
`"timing arcs" describing the delay characteristics of each of
`the state (flip flop) and combinational (logic gate) devices.
`Each RF timing table has a tag which indicates: i) a launch
`flip flop clock, and ii) the exception pins through which the
`RF timing table has propagated. During relative constraint
`analysis, each RF timing table at the input to a capture flip
`flop is analyzed for meeting certain relative constraints.
`These relative constraints may be either defaults, or the
`defaults may be modified according to an exception satisfied
`by the contents of the RF timing table's tag.
`
`(List continued on next page.)
`
`13 Claims, 22 Drawing Sheets
`
`I
`I
`10~
`
`L _______ _j
`
`Exhibit 1001 - Page 1 of 40
`
`

`

`US 6,237,127 Bl
`Page 2
`
`U.S. PATENT DOCUMENTS
`5,508,937 * 4/1996 Abato et a!. ............................. 716/6
`5,535,145 * 7/1996 Hathaway ................................ 703/2
`5,602,754 * 2/1997 Beatty eta!. ............................ 716/6
`5,615,127 * 3/1997 Beatty et a!.
`............................ 716/7
`5,636,372 * 6/1997 Hathaway et a!. ................... 713/500
`5,648,913 * 7/1997 Bennett eta!. .......................... 716/6
`5,696,694 * 12/1997 Khouja et a!. ........................... 716/5
`5,740,067 * 4/1998 Hathaway ................................ 716/6
`5,864,487 * 1!1999 Merryman et a!. ...................... 716/6
`5,910,897 * 6/1999 Dangelo et a!.
`......................... 716/1
`5,956,256 * 9/1999 Rezek et a!. ............................. 716/6
`6,014,510 * 1!2000 Burks eta!. ............................. 716/3
`
`6,023,567 * 2/2000 Osler et a!. .............................. 716/6
`
`OTHER PUBLICATIONS
`
`IBM Corporation, "Using Special Path Exclusions and
`Adjusts", Web pages of edition of Eins Timer: User's Guide
`and Reference, 4th ed., Nov. 26, 1997, 10 pages.*
`Krishna P. Belkhale et al., "Timing Analysis with Known
`False Sub Graphs", 1995 IEEE, pp. 736-740.
`IBM Corporation, "Using Special Path Exclusions and
`Adjusts", Web pages of edition of Eins Timer: User's Guide
`and Reference, Fourth Edition, Nov. 26, 1997, 10 pages.
`
`* cited by examiner
`
`Exhibit 1001 - Page 2 of 40
`
`

`

`U.S. Patent
`
`May 22,2001
`
`Sheet 1 of 22
`
`US 6,237,127 Bl
`
`100
`
`HIGH-LEVEL
`HDL
`DESIGN
`
`I
`I
`10~
`
`HDL
`COMPILER
`
`107
`
`108
`
`DESIGN
`COMPILER
`
`FINAL
`CIRCUIT
`
`USER
`ANALYSIS
`
`L - -
`
`_j
`
`FIG. 1
`
`Exhibit 1001 - Page 3 of 40
`
`

`

`U.S. Patent
`
`May 22,2001
`
`Sheet 2 of 22
`
`US 6,237,127 Bl
`
`202
`
`201
`
`200
`
`204
`
`FIG. 2A
`
`TIMING ARC 202
`
`a
`OUTPUT
`
`t
`I D1
`
`CLOCK INPUT
`204
`
`!
`
`NOT
`APPLICABLE
`
`NOT
`APPLICABLE
`
`02
`
`FIG. 28
`
`Exhibit 1001 - Page 4 of 40
`
`

`

`1--"
`~
`""-l
`N
`1--"
`"'""-l
`~
`'N
`0'1
`rJ'l
`
`e
`
`N
`N
`0 ......,
`~
`
`~ .....
`'JJ. =-
`
`~
`
`N
`~N
`N
`'-<
`~
`~
`
`'"""'
`c c
`
`~ = ......
`~ ......
`~
`•
`\Jl
`d •
`
`FIG. 3C
`
`FIG. 38
`
`DB
`
`I
`
`07
`
`I
`
`! I 06
`t I
`
`05
`
`OUTPUTC
`
`04
`
`APPLICABLE
`
`NOT
`
`APPLICABLE
`
`! NOT
`t 03
`
`OUTPUTC
`
`t INPUTA !
`
`XOR ""'
`IF GATE 300 IS
`TIMING ARC 302
`
`t INPUTA !
`
`AND OR OR ...
`IF GATE 300 IS
`TIMING ARC 302
`
`301
`
`FIG. 3A
`
`B~ _/ I
`
`c
`A~ ~~
`
`Exhibit 1001 - Page 5 of 40
`
`

`

`U.S. Patent
`
`May 22, 2001
`
`Sheet 4 of 22
`
`US 6,237,127 Bl
`
`I CLK 1}-408
`
`-+-....406
`
`402
`
`FIG. 4A
`
`CLK1
`
`~409
`
`CLK2
`
`t CLK INPUT ~
`NOT
`APPL.
`
`01
`
`02
`
`NOT
`APPL.
`
`FIG. 4B
`
`TIMING
`ARC
`403
`
`l
`Q
`OUTPUT
`~
`
`t CLK INPUT ~
`
`03
`
`04
`
`NOT
`APPL.
`
`NOT
`APPL.
`
`FIG. 4C
`
`TIMING
`ARC
`402
`
`Q
`OUTPUT
`
`l
`~
`
`Exhibit 1001 - Page 6 of 40
`
`

`

`1-"
`~
`""-l
`N
`1-"
`-..""-l
`~
`N
`-..a-..
`rJ'l
`e
`
`N
`N
`0 ......,
`Ul
`~ .....
`'JJ. =-~
`
`'"""'
`N c c
`
`~N
`N
`'-<
`~
`~
`
`~ = ......
`~ ......
`~
`•
`\Jl
`d •
`
`I 08
`
`APPLICABLE
`
`I NOT
`501
`ARC ~ INPUT B +
`TIMING
`I
`
`514
`· r!
`t APPLICABLE
`I I NOT
`t I 07
`t
`
`OUTPUT C
`
`06
`
`APPLICABLE
`
`NOT
`
`..... _1 04+08
`MINFTI 04+08
`MAXRTI 03+07 I
`MINRTI 03+07 I
`
`I
`
`U£1-UOJ
`
`I
`
`Ull\1/n'J_._n~
`
`UII\ICT
`
`MAXH I MMtUHUo,
`
`01+07
`
`MINFT
`MAXRT
`MINRT~ MINRT~
`
`I
`
`04
`03
`
`MINFT
`MAXRT
`
`02
`01
`
`1 t APPLICABLE
`

`
`NOT
`
`I
`OUTPUT C
`
`MAxFTI o2 1 !AI ~ 1
`MINFT
`MAXRT
`MINRTEE--1
`
`1 ~ (
`500
`502
`
`503
`
`-.
`01
`
`INPUT A +
`1
`
`05
`
`t
`
`513\.... t
`
`502
`ARC
`TIMING
`
`Exhibit 1001 - Page 7 of 40
`
`

`

`U.S. Patent
`
`May 22, 2001
`
`Sheet 6 of 22
`
`US 6,237,127 Bl
`
`600
`
`601
`602
`
`CPU
`
`MEMORY
`
`603
`
`~604
`
`606
`
`~
`
`605
`
`FIG. 6
`
`Exhibit 1001 - Page 8 of 40
`
`

`

`U.S. Patent
`
`May 22,2001
`
`Sheet 7 of 22
`
`US 6,237,127 Bl
`
`FIGURE 7
`
`for (k = 1; k <= i; ++k) {I* LOOP1 *I
`for (q = 1; q <= tk; ++q) {I* LOOP2 *I
`
`RF_tab/ek,q' is given same tag as RF_tablek,q;
`
`01 = timing_arcJrising,rising);
`D2 = timing_arcJfalling,rising);
`
`RF_tab/ek,q'· minRT= minimum(
`01 + RF _tab/ek,q· minRT,
`D2 + RF _tablek,q· minFT);
`
`RF_tablek,q'· maxRT= maximum(
`D1 + RF_tablek,q· maxRT,
`02 + RF_tab/ek,q· maxFT);
`
`03 = timing_arck(rising,falling);
`D4 = timing_arcJfalling,falling);
`
`RF_tab/ek,q'· minFT= minimum(
`D3 + RF_tablek,q· minRT,
`D4 + RF_tablek,q· minFT);
`
`RF_tab/ek,q'· maxFT= maximum(
`D3 + RF_tab/ek,q· maxRT,
`D4 + RF _tablek,q· maxFT);
`
`} I* end LOOP2 *I
`} /* end LOOP1 *I
`
`Exhibit 1001 - Page 9 of 40
`
`

`

`U.S. Patent
`
`May 22,2001
`
`Sheet 8 of 22
`
`US 6,237,127 Bl
`
`RF _ TABLE1, 1
`
`RF-TABLE1 ,2 RF-TABLE1 ,t1
`TIMING_ARC1
`
`INPUT2 -----1------
`
`INPUT3 -~---___ _;
`
`RF _ TABLEi,2
`
`TIMING_ARCi
`
`RF _ TABLEi,ti
`
`FIG. 8
`
`Exhibit 1001 - Page 10 of 40
`
`

`

`U.S. Patent
`
`May 22,2001
`
`Sheet 9 of 22
`
`US 6,237,127 Bl
`
`FIGURE9A
`
`Identify groups of intermediate preprocessed exception statements which have
`the same timing alteration;
`
`For each such group of exception statements, produce a sum-of-products
`expression, in terms of the pin names in the path specifications, and put these
`sum-of-products expressions (along with the type of timing alteration) as items
`on a list called LIST;
`
`I* LOOP10 *I for (each ITEM on LIST)
`{
`
`SUM_ OF _PRODUCTS= get_SOP _portion(ITEM)
`TIMING_ALTERATION = get_timing_alteration(ITEM);
`factor("1", SUM_ OF _PRODUCTS, TIMING_ALTERATION);
`
`}
`
`I* Each top-level, non-recursive, call to "factor" by LOOP10 produces an
`exception statement or statements which implement REMAINDER with a timing
`alteration of type TIMING_ALTERATION *I
`void factor(PROD_2_DATE, REMAINDER, TIMING_ALTERATION)
`{
`
`Divide REMAINDER into groups of a Type 1 and put these groups on a
`list called LIST1 (Type 1 means that each product term of the group
`begins with same pin name);
`
`{Group the groups on LIST1 to produce a list called LIST2; The groups
`on LIST2 are of Type 2; A Type 2 group is one in which all of its groups of
`Type 1 have the same remainder; Taking the "remainder'' of a group of
`Type1 means removing the first pin name from each of its product terms;}
`
`I* LOOP11 *I for (each group GROUP _SR on LIST2)
`{
`
`COM_REMAINDER =the remainder common to all the groups of
`Type 1 in GROUP _SR;
`
`OR_ TERM = the sum of the pin names beginning each group of
`Type 1 in GROUP_ SR;
`
`if (COM_REMAINDER = null set then) {
`create an exception statement whose path specification
`implements the following product-of-sums:
`and(PROD_2_DATE, OR_ TERM);
`
`Exhibit 1001 - Page 11 of 40
`
`

`

`U.S. Patent
`
`May 22,2001
`
`Sheet 10 of 22
`
`US 6,237,127 Bl
`
`FIGURE 98
`
`In creating the exception statement, each "sums" term, of
`the product-of-sums, must become the argument of with the
`appropriate type of path specifier;
`
`In creating the exception statement, its timing alteration will
`be of type TIMING_ALTERATION;
`}
`
`I* else recursively call "factor" *I
`else factor( and(PROD_2_DATE, OR_ TERM),
`COM_REMAINDER, TIMING_AL TERATION);
`
`} I* end LOOP11 *I
`
`} I* end "factor"*/
`
`Exhibit 1001 - Page 12 of 40
`
`

`

`U.S. Patent
`
`May 22,2001
`
`Sheet 11 of 22
`
`US 6,237,127 Bl
`
`FIGURE 9C
`
`Input exceptions statements from circuit designer:
`set_ false _path -from { Z Q} -through { A T } -to { B G }
`set_ false _path -through {0 E} -through H
`set_mufticycfe_path -through {T G} -through F
`
`Intermediate preprocessed exception statements:
`set_false_path -from Z -through A -to B
`set_ false _path -from Z -through A -to G
`set_false_path -from Z -through T -to B
`set_ false _path -from Z -through T -to G
`set_ false _path -from Q -through A -to B
`set_ false _path -from Q -through A -to G
`set_false_path -from Q -through T -to B
`set_false_path -from Q -through T -toG
`set_false_path -through 0 -through H
`set_false _path -through E -through H
`set_multicycle_path -through T -through F
`set_multicycle_path -through G -through F
`
`Identify groups of intermediate preprocessed exception statements with same
`timing alteration:
`group1:
`set_false_path -from Z -through A -to B
`set_false_path -from Z -through A -toG
`set_false_path -from Z -through T -to B
`set_false_path -from Z -through T -toG
`set_ false _path -from Q -through A -to B
`set_ false _path -from Q -through A -to G
`set_false_path -from Q -through T -to B
`set_false_path -from Q -through T -toG
`set_ false _path -through 0 -through H
`set_false_path -through E -through H
`
`group2:
`set_multicycle_path -through T -through F
`set_multicycle_path -through G -through F
`
`Produce sum-of-products expressions:
`LIST= { "set_false_path", {ZAB +ZAG+ ZTB + ZTG + QAB + QAG + QTB +
`QTG + OH + EH} }, { "set_multicycle_path", {TF + GF} }
`
`Exhibit 1001 - Page 13 of 40
`
`

`

`U.S. Patent
`
`May 22,2001
`
`Sheet 12 of 22
`
`US 6,237,127 Bl
`
`FIGURE SO
`
`LOOP10. iteration 1:
`ITEM = { "set_false_path", {ZAB +ZAG + ZTB + ZTG + QAB + QAG + QTB +
`QTG + DH + EH}}
`
`SUM_ OF _PRODUCTS= ZAB +ZAG+ ZTB + ZTG + QAB + QAG + QTB + QTG
`+ DH + EH
`
`TIMING_ALTERATION = "set_false_path"
`
`"factor" is called with the following arguments:
`REMAINDER = ZAB + ZAG + ZTB + ZTG + QAB + QAG + QTB + QTG +
`DH+EH
`
`PROD 2 DATE= 1
`
`TIMING ALTERATION= "set_false_path"
`
`LIST1 contains four groups of Type 1:
`LIST1 = { {ZAB + ZAG + ZTB + ZTG} + {QAB + QAG + QTB + QTG} +
`{DH} + {EH} }
`
`LIST2 contains two groups of Type 2:
`LIST2 = {
`
`{ {ZAB + ZAG + ZTB + ZTG} + {QAB + QAG + QTB + QTG}}
`+
`{ {DH} + {EH} }
`
`}
`
`LOOP11. iteration 1 :
`GROUP _SR = { {ZAB +ZAG+ ZTB + ZTG} + {QAB + QAG + QTB + QTG}}
`
`COM_REMAINDER = {AB + AG + TB + TG}
`
`OR_ TERM = (Z + Q)
`
`Exhibit 1001 - Page 14 of 40
`
`

`

`U.S. Patent
`
`May 22,2001
`
`Sheet 13 of 22
`
`US 6,237,127 Bl
`
`FIGURE9E
`
`"factor" is called recursively with the following arguments:
`REMAINDER = {A8 + AG + T8 + TG}
`
`PROD_2_DATE = 1 * (Z + Q)
`
`TIMING_ALTERATION = "set_false_path"
`
`LIST1 contains two groups of Type 1:
`LIST1 = { {A8 + AG} + {T8 + TG} }
`
`LIST2 contains one group of Type 2:
`LIST2 = { { {A8 + AG} + {T8 + TG} } }
`
`LOOP11 (of 1st recursion). iteration 1:
`GROUP _SR = { {AB + AG} + {T8 + TG}}
`
`COM_REMAINDER = {8 + G}
`
`OR_ TERM= (A+ T)
`
`"factor" is called recursively, for 2nd time. with the following arguments:
`REMAINDER = {8 + G}
`
`PROD_2_DATE = 1 * (Z + Q) *(A+ T)
`
`TIMING_ALTERATION = "set_false_path"
`
`LIST1 contains two groups of Type 1:
`LIST1 = { {8} + {G} }
`
`LIST2 contains one group of Type 2 (share null set as common remainder):
`LIST2 = { {{B} + {G}} }
`
`Exhibit 1001 - Page 15 of 40
`
`

`

`U.S. Patent
`
`May 22,2001
`
`Sheet 14 of 22
`
`US 6,237,127 Bl
`
`FIGURE 9F
`
`LOOP11 (of 2nd recursion), iteration 1:
`GROUP_ SR = {{8} + {G}}
`
`COM_REMAINDER = { }
`
`OR_TERM = (8 +G)
`
`create an exception statement, with a "set_false_path" timing alteration, whose
`path specification implements the following product of sums:
`1 * (Z + Q) * (A + T) * (8 + G)
`
`LOOP11 (of 2nd recursion) ends and 2nd recursion of "factor" returns to 1st
`recursion of "factor"
`
`LOOP11 (of 1st recursion) ends and 1st recursion of "factor" returns to "factor"
`
`LOOP11, iteration 2:
`GROUP_ SR = { {DH} + {EH} }
`
`COM_REMAINDER = {H}
`OR_ TERM = (0 + E)
`
`"factor" is called recursively for 3rd time with the following arguments:
`REMAINDER = {H}
`
`PROD_2_DATE = 1 * (D +E)
`
`TIMING_AL TERATION = "set_false_path"
`
`LIST1 contains one group of Type 1:
`LIST1 = { {H} }
`
`LIST2 contains one group of Type 2:
`LIST2 = { { {H}} }
`
`Exhibit 1001 - Page 16 of 40
`
`

`

`U.S. Patent
`
`May 22,2001
`
`Sheet 15 of 22
`
`US 6,237,127 Bl
`
`FIGURE 9G
`
`LOOP11 (of 3rd recursion). iteration 1:
`GROUP _SR = { {H}}
`COM_REMAINDER = {}
`
`OR TERM=H
`
`create an exception statement, with a "set_false_path" timing alteration, whose
`path specification implements the following product of sums:
`1 * (D +E)* H
`
`LOOP11 (of 3rd recursion) ends and 3rd recursive call of "factor" returns to
`"factor"
`
`LOOP11 ends and call of "factor" returns
`
`LOOP10. iteration 2:
`ITEM= { "set_multicycle_path", {TF + GF} }
`
`TIMING _ALTERATION = "set_multicycle _path"
`
`SUM OF PRODUCTS = TF + GF
`
`"factor" is called with the following arguments:
`REMAINDER = TF + GF
`
`PROD 2 DATE= 1
`TIMING_ALTERATION = "set_multicycle_path"
`
`In a like manner to that described above, "factor" proceeds to find the
`product-of-sums "1 * (T + G) * F ,"and creates an exception statement,
`with a "set_multicycle_path 2" timing alteration, whose path specification
`implements "1 * (T +G)* F."
`
`Exhibit 1001 - Page 17 of 40
`
`

`

`U.S. Patent
`
`May 22,2001
`
`Sheet 16 of 22
`
`US 6,237,127 Bl
`
`FIGURE 10
`
`Identify groups of intermediate preprocessed exception statements which have
`the same timing alteration;
`
`For each such group of exception statements, produce a sum-of-products
`expression, in terms of the pin names in the path specifications, and put these
`sum-of-products expressions on a list called LIST;
`
`I* LOOP12 *I for (each SUM_ OF _PRODUCTS on LIST)
`{
`
`TIMING_ALTERATION = get_timing_alteration(SUM_OF _PRODUCTS);
`factor_order_indep(SUM_OF _PRODUCTS, TIMING_ALTERATION);
`
`}
`
`I* Each top-level call to "factor_order_indep" by LOOP12 produces an exception
`statement or statements which implement SUM_ OF _PRODUCTS with a timing
`alteration of type TIMING_ALTERATION */
`void factor_order_indep(SUM_OF _PRODUCTS, TIMING_ALTERATION)
`{
`
`Use standard multi-level logic boolean equation manipulation algorithms
`to convert SUM_OF _PRODUCTS into a LIST of"possible solutions,"
`where a "possible solution" is a logically equivalent form of
`SUM_OF _PRODUCTS which is in the form of a sum of a product-of-sums
`(such boolean equation manipulation algorithms include those resulting
`from the multi-level logic optimization system of the late 1980's entitled
`"MIS," from the University of California, Berkeley, Department of Electrical
`Engineering and Computer Science, by R. Brayton, et al.);
`
`For each possible solution count the total number of "sums" amongst all of
`its product-of-sums and call this value, for each possible solution, its
`"metric;"
`
`Choose as the "solution" the possible solution with the smallest metric
`since a smaller metric means that exception pins will be indicated with a
`smaller number of different labels;
`
`For each product-of-sums in the chosen solution, create an exception
`statement, with a timing alteration of type TIMING_ALTERATION, and
`being sure that each "sums" in a product-of-sums becomes the argument
`of the appropriate path specifier;
`
`} I* end "factor_order_indep" */
`
`Exhibit 1001 - Page 18 of 40
`
`

`

`1--"
`~
`""-l
`N
`1--"
`-..""-l
`~
`N
`-..a-..
`rJ'l
`e
`
`N
`N
`0 ......,
`'"""'
`-..J
`~ .....
`'JJ. =(cid:173)~
`
`'"""'
`N c c
`
`~N
`N
`'-<
`~
`~
`
`~ = ......
`~ ......
`~
`•
`\Jl
`d •
`
`I x2 I I X~, I
`
`x1 1
`
`11tiCLK1I112alclK11
`
`1116
`
`L2
`
`CLK1
`
`1101 -
`
`CLK1
`
`I
`
`1100
`
`~
`x1,
`
`x2
`
`x1
`
`I CLK1 I I CLK1 II CLK1 II CLK111 CLK1
`
`1125~ 1127~ 1136~ 1137, 1138~139,
`
`x2
`
`~
`x1 ,
`CLK1
`
`' ... '
`'
`
`Exhibit 1001 - Page 19 of 40
`
`

`

`1--"
`~
`""-l
`N
`1--"
`"'""-l
`~
`'N
`0'1
`rJ'l
`
`e
`
`N
`N
`0 ......,
`'"""' 00
`~ .....
`'JJ. =-~
`
`'"""'
`N c c
`
`~N
`N
`'-<
`~
`~
`
`~ = ......
`~ ......
`~
`•
`\Jl
`d •
`
`1224
`
`1223
`
`FIG. 12
`
`~103
`
`' CLK3
`
`.-------.
`
`L...---1
`
`llU~/
`
`...____..
`-~ 1
`
`t----1
`
`x6
`
`1201
`\
`
`x5
`
`'1200
`
`I L.A.J -11 02
`
`V
`
`I I \XJ
`
`I I \X~.
`
`I
`
`II yJu~"
`
`1206 ICLK1
`
`\.....
`
`,--I
`
`X4
`
`-~-~~"7 I
`I
`
`,
`)
`
`L2
`
`CLK1
`1101'IAI
`
`1100' 4-J Ll
`
`CLK1
`
`1219
`
`1212
`
`1204
`
`Exhibit 1001 - Page 20 of 40
`
`

`

`U.S. Patent
`
`May 22, 2001
`
`Sheet 19 of 22
`
`US 6,237,127 Bl
`
`L2
`
`CLK1
`
`---/---
`
`;
`
`CLK3
`
`'
`,
`'
`C2[ 1] -:!--' ---.---......;.,...' -
`C2[2]
`,
`! ...
`
`\
`
`I
`
`:
`
`-1307
`
`1314
`
`~
`1318
`.--C:-:-L-:-~-:-K 1__, • • • t---=-=~
`L1 [1]
`
`1319
`
`1321
`
`FIG.13
`
`Exhibit 1001 - Page 21 of 40
`
`

`

`U.S. Patent
`
`May 22, 2001
`
`Sheet 20 of 22
`
`US 6,237,127 Bl
`
`'-;
`L1
`
`32
`
`CLK1
`
`L2
`
`CLK2 1303
`
`FIG.14
`
`Exhibit 1001 - Page 22 of 40
`
`

`

`U.S. Patent
`
`May 22,2001
`
`Sheet 21 of 22
`
`US 6,237,127 Bl
`
`FIGURE 15
`
`Input exceptions statements from circuit designer:
`set_ false _path -from { Z Q} -through { A * {B + C} } -to Y
`
`Convert "-through" to sum-of-products:
`set_ false _path -from { Z Q} -through { A *B + A *C} -to Y
`
`Determine cross product:
`set_ false _path -from Z -through {A *B} -to Y
`set_false_path -from Z -through {A*C} -toY
`set_false_path -from Q -through {A*B} -toY
`set_false_path -from Q -through {A*C} -toY
`
`Substitute single-pin "-through"s for products to produce intermediate
`preprocessed exception statements:
`set_false_path -from Z -through A -through B -toY
`set_false_path -from Z -through A -through C -toY
`set_false_path -from Q -through A -through B -toY
`set_false_path -from Q -through A -through C -toY
`
`Exhibit 1001 - Page 23 of 40
`
`

`

`U.S. Patent
`
`May 22,2001
`
`Sheet 22 of 22
`
`US 6,237,127 Bl
`
`FIGURE 16
`
`Preprocessed exception statements resulting from second-way preprocessing:
`set_false_path -through {Q + Z} -through {A+ 1} -through {8 + G}
`set_false_path -through {N + M} -through {B + G}
`
`Pattern-matching higher-level exception statements:
`set_false_path -through { {Q + Z}*{A + 1} + {N + M}} -through {8 + G}
`
`Exhibit 1001 - Page 24 of 40
`
`

`

`US 6,237,127 Bl
`
`1
`STATIC TIMING ANALYSIS OF DIGITAL
`ELECTRONIC CIRCUITS USING NON(cid:173)
`DEFAULT CONSTRAINTS KNOWN AS
`EXCEPTIONS
`
`FIELD OF THE INVENTION
`
`5
`
`The present invention relates generally to the static timing
`analysis of digital electronic circuits. More specifically, the
`present invention relates to analyzing certain paths of a
`circuit under non-default timing constraints known as excep- 10
`tions.
`
`2
`The static tlmmg analysis of the present invention is
`performed upon units of the circuit, referred to as "sections",
`which comprise a set of "launch" flip flops, non-cyclic
`combinational circuitry and a set of "capture" flip flops.
`The section to be analyzed is represented by a netlist of
`flip flops and combinational logic connected together, at
`their pins, by wire objects.
`The tag -based static timing analysis of the present
`invention, implementing exceptions statements, is per(cid:173)
`formed in four main steps: preprocessing, pin-labeling, RF
`timing table propagation and relative constraint analysis.
`Each of these four steps can be accomplished in one of two
`main ways, depending upon how exception statements are to
`be implemented.
`For a first-way of implementing exception statements,
`these four steps are referred to as: first-way preprocessing,
`first-way pin-labeling, first-way modified RF timing table
`propagation and first-way modified relative constraint analy-
`SIS.
`For a second-way of implementing exception statements,
`these four steps are referred to as: second-way
`preprocessing, second-way pin-labeling, second-way modi(cid:173)
`fied RF timing table propagation and second-way modified
`relative constraint analysis.
`Preprocessing accepts the exception statements written by
`the circuit designer and converts them into a set of prepro(cid:173)
`cessed exceptions statements which has their path specifi(cid:173)
`cations expressed in a certain standard form. Both first-way
`and second-way preprocessing convert the path specification
`of an exception statement into a form expressed literally in
`terms of pins of the circuit description netlist. For the
`first-way of implementing exception statements, each pin is
`specified independently in the path specifications by being
`its own path specifier argument. For the second-way of
`implementing exception statements, a group of pins may be
`specified as being logically equivalent, in terms of their
`ability to satisfy a path specification, by their being grouped
`into an OR-type path specifier argument.
`In pin-labeling, the pins of the circuit network, specifi(cid:173)
`cally referred to by the preprocessed exception statements,
`are marked to indicate their being the subject of an exception
`statement or statements.
`In first-way pin labeling, each pin, referred to by a
`preprocessed exception statement, is marked with an
`"exception flag."
`In second-way pin labeling, each pin, referred to by a
`preprocessed exception statement, is given an "argument
`container" which can contain a collection of "labels." A label
`in an argument container is a copy of the "form" in which
`a preprocessed exception statement has referred to the
`circuit pin to which the argument container is attached. The
`purpose of a label is to provide a data item which can be
`matched against the argument of a path specifier in a
`preprocessed exception statement. Any form of label, which
`allows this matching to be accomplished, is suitable. For
`those path specifier arguments which refer only to a single
`pin, a label which can match that single-pin reference is put
`in the argument container. For those path specifier argu(cid:173)
`ments which refer to an OR-expression of several pins, a
`label which can represents, and can therefore match, the
`entire OR-expression is put in the argument container.
`RF timing table propagation is accomplished as follows.
`Delays between the inputs and outputs of either state or
`combinational devices are represented by "timing arcs." For
`the purposes of the set of launch flip flops, we are interested
`
`15
`
`20
`
`25
`
`BACKGROUND OF THE INVENTION
`To tackle the increasing complexity of digital electronic
`circuits, designers need faster and more accurate methods
`for statically analyzing the timing of such circuits, particu(cid:173)
`larly in light of ever-shrinking product development times.
`The complexity of designing such circuits is often
`handled by expressing the design in a high-level hardware
`description language (HLHDL).
`HLHDLs allow the designer to save design time by
`permitting him or her to express the desired functionality at
`the register transfer level (RTL) of abstraction or higher. The
`high-level HDL description is then converted into an actual
`circuit through a process, well known to those of ordinary
`skill in the art as "synthesis," involving translation and
`optimization.
`HLHDLs describe, directly or indirectly, the two main
`kinds of circuit entities of an RTL circuit description: i) state 30
`devices or sequential logic which store data upon application
`of a clock signal, and ii) combinational logic. The state
`devices typically act as either: i) an interface between
`conceptually distinct circuit systems, or ii) storage for the
`results of functional evaluation performed by the combina- 35
`tional logic.
`In the process of digital circuit design, static timing
`analysis is often useful in order to verify that the design
`produced, in addition to being functionally correct, will
`perform correctly at the target clock speeds. For similar 40
`reasons, it would be useful to apply, as efficiently as
`possible, static timing analysis to the synthesis process.
`
`SUMMARY OF THE INVENTION
`The present invention may be used in the hardware 45
`synthesis environment known as the "Design Compiler
`shell" produced by Synopsys, Inc., of Mountain View, Calif.
`Exceptions can be a very powerful tool for guiding the
`Design Compiler portion of the Design Compiler shell
`towards the synthesis of a more efficient final circuit netlist. 50
`This is because exceptions allow the designer, for example,
`to inform Design Compiler that despite default timing
`constraints, certain paths through the circuit are subject to
`less demanding performance requirements in the context of
`the design's actual application. Exceptions are also useful 55
`for further analysis, by the designer, of the final circuit netlist
`produced by Design Compiler.
`Exceptions are specified by the circuit designer as indi(cid:173)
`vidual syntactic units called "exception statements" which
`are comprised of a "timing alteration" and a "path specifi- 60
`cation." The timing alteration instructs the timing analyzer
`how to alter the default timing constraints for paths through
`the circuit to be analyzed which satisfy the path specifica(cid:173)
`tion. The path specification consists of one or more "path
`specifiers," with each path specifier taking an" argument." In 65
`order for a path specification to be satisfied, each argument
`of each of its path specifiers must be satisfied.
`
`Exhibit 1001 - Page 25 of 40
`
`

`

`US 6,237,127 Bl
`
`3
`in the delay between a clock edge being applied to the flip
`flop and a subsequent change, if in fact such a change is
`caused to occur, at the flip flop's outputs. For the purposes
`of combinational logic, we are interested in the delay
`between a change being applied to an input of the logic and s
`a subsequent change, if in fact such a change is caused to
`occur, at the output.
`The RF timing tables propagated are comprised of the
`following four values: minimum rise time (minRT), maxi(cid:173)
`mum rise time (maxRT), minimum fall time (minFT) and 10
`maximum fall time (maxFT). RF timing tables each have
`their own "tag" which, in accordance with the present
`invention, has two parts: i) a first part which is loaded with
`a unique identifier for the clock of a launch flip flop, and ii)
`a second part which can contain a variety of "labels" 15
`(described below).
`The RF timing tables, for a section of circuitry to be
`analyzed, are initially created as follows. An RF timing table
`is created for every output of every launch flip flop. The
`values for minRT, maxRT, minFT and maxFT of each RF
`timing table are determined from the timing arc from the flip
`flop's clock to the output of the flip flop for which the RF
`timing table is being created. A first part of the tag created
`for each RF timing table is loaded with an identifier indi(cid:173)
`eating the particular clock driving the clock input of the flip
`flop for which the RF timing table is being created.
`At this point, first-way modified RF timing table propa(cid:173)
`gation checks to see if any of the output pins of the launch
`flip flops have an exception flag. For each output pin with an
`exception flag, a label, representing that pin as the only
`argument of a path specifier, is added to the second part of
`the tag for the RF timing table for that output pin.
`At this same point, second-way modified RF timing table
`propagation checks to see if any of the output pins of the 35
`launch flip flops have argument containers. For each output
`pin with an argument container, all of the labels in that
`container are added to the second part of the tag for the RF
`timing table for that output pin.
`Propagation of the tagged RF timing tables, through the
`combinational units of a circuitry section, is accomplished
`as follows. Each RF timing table, at each input of a com(cid:173)
`binational unit, is modified, according to the timing arc
`associated with that input, to produce a temporary RF timing
`table pointed to by the combinational unit's output pin. Each
`temporary RF timing table is initially given the same tag as
`the RF timing table, at the combinational unit's input, it is
`based upon.
`Once all temporary RF timing tables have been computed
`at the combinational unit's output, those having tags of the
`same "type" are combined to produce a final RF timing
`table.
`At this point, after the creation of each final RF timing
`table, first-way modified RF timing table propagation checks
`to see if the output pin of the combinational unit has an
`exception flag. If the exception flag exists, then a label,
`representing that output pin as the only argument of a path
`specifier, is added to the second part of the tag for the final
`RF timing table for that output pin if that label, by itself or
`in conjunction with any selection of labels already on the
`tag, satisfies, or can possibly satisfy, a path specification of
`at least one of the preprocessed exception statements.
`At this same point, after the creation of each final RF
`timing table, second-way modified RF timing table propa(cid:173)
`gation checks to see if the output pin of the combinational 65
`unit has an argument container. If the argument container
`exists, then each label in it is considered for possible
`
`4
`addition to the second part of the tag for the final RF timing
`table of the output pin. A label is added to the second part
`of the tag for the final RF timing table for that output pin if
`that label, by itself or in conjunction with any selection of
`labels already on the tag, satisfies, or can possibly satisfy, a
`path specification of at least one of the preprocessed excep-
`tion statements. For second-way modified RF timing table
`propagation, the label may be either: i) a representation of
`that output pin as the only argument of a path specifier, or
`ii) a representation of an OR-expression of several pins, of
`which the output pin is one, as the argument of a path
`specifier.
`Propagation of an RF timing table across a wire, to the
`input pin of a combinational unit or capture flip flop, is
`accomplished as follows. The RF timing table, which we
`shall refer to as "RFTT_input_pin," created at the input pin
`of a combinational unit or capture flip flop has its rise and
`fall time values delayed by the wire across which it has

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket