throbber
UNITED STATES PATENT AND TRADEMARKOFFICE
`
`
`
`BEFORE THE PATENT TRIAL AND APPEAL BOARD
`
`LG ELECTRONICS, INC.,
`Petitioner
`
`¥.
`
`ATI TECHNOLOGIES ULC,
`Patent Owner
`
`
`
`Case IPR2015-00325
`Patent 7,742,053
`
`
`
`DECLARATION OF INVENTOR LAURENT LEFEBVRE
`REGARDING THE INVENTION DATE OF U.S. PATENT NO.7,742,053
`
`Mail Step “Patent Board”
`Patent Trial and Appeal Board
`U.S. Patent and Trademark Office
`P.O, Box 1450
`Alexandna, VA 22313-1450
`
`ATI 2006
`
`LG v. ATI
`
`IPR2015-00325
`
`AMD1044_0256603
`
`ATI Ex. 2103
`IPR2023-00922
`Page 1 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 1 of 61
`
`

`

`Table of Contents
`
`BACKGROUND00. cece ccte ce ecne ce teccsaeeetaeeescseeeestaesenenteseniaees
`
`beeteteees I
`
`CONCEPTION ooo ccccccceccccec cece ceseeseesteeeeceseeecsscstssniscrteieenesasisensessees
`
`vevenseees 3
`
`A.
`
`B
`
`C.—
`
`D
`
`R400 Architecture Proposal... cece cc cteeseeneeeeeeees
`
`betetee 4
`
`R400 Top Level Speetfieattonn.cece eeeere eee
`
`beeceeeee 4
`
`R400 Shader Processor... cece cece cece vtec eeeneeesneseee
`
`beseeetees 6
`
`R400 Sequencer Specification oo... ccc cette eee
`
`becseeeee 6
`
`I,
`
`2.
`
`R400 Sequencer Specification (Version 0.4): August
`24, QOD cece eeeree tere rte tee eesensecetiesnitessteeereaeenes
`
`veteeeeees 7
`
`R400 Sequencer Specification (Version 2.0): April 19,
`QOD? oie cee cece cee c eee ceneeeeeeeeeeeeeeeeeeeeceeceeceeeteeseeentenees
`
`ne 17
`
`il.
`
`DILIGENCE ooo. cece cee eee cceee ene ceneeeeseeetecseeseesereeseesneeseseeneessees
`
`bees 19
`
`A.—| Periodically Updated the R400 Sequencer Specification.........
`veces 20
`
`B.
`
`MyColleagues and I Continuously Developed and
`Debugged Emulation Code and RTL Code for the R400...........
`
`veseees 21
`
`TESTING SHOWED THAT THE RTL IMPLEMENTATION
`WORKEDFOR ITS INTENDED PURPOSE |... cceeeeereeteeee
`
`Leveeees 26
`
`DILIGENCE CALENDAR ooo. cceceeceecc ete cece ce te cnet eeueeeeeeeseenaeeneees
`
`levees 31
`
`VI.
`
`EXHIBITS ooo cece ceceeeceeeeeeeeeereeeeeeneeneeeeneenesecseectsetseeneetnuseeetsnreneess
`
`Levees 37
`
`-il-
`
`AMD1044_0256604
`
`ATI Ex. 2103
`IPR2023-00922
`Page 2 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 2 of 61
`
`

`

`I, Laurent Lefebvre, declare as follows:
`
`I.
`
`BACKGROUND
`
`l.
`
`I am a computer-graphics hardware architect at AMD Inc. | have been
`
`designing computer-graphics processors for the past fifteen years. | specialize in
`
`sequencers, shaders, 3D-computer graphics, and integrated-circuit design.
`
`2.
`
`From September 2000 to November2006, | worked as an engineer
`
`and hardware architect for ATI Technologies Inc. (“ATI”). It is my understanding
`
`that ATT hired me to develop technologies for the R400, whichis a graphics
`
`processor.
`
`3.
`
`Unhke conventional graphics processors at the time, the R400 used a
`
`unified shader for both pixel commands and vertex commands—two types of
`
`commands required to produce an image. Conventional graphics processors had
`
`separate shaders for pixel commands and vertex commands. But a unifted shader,
`
`like the R400°s unified shader, enhances functionality and effictency by allowing
`
`the same shader complex to be used for both pixel commands and vertex
`
`commands.
`
`4,
`
`The R400 includes manydifferent functional blocks (e.g., the
`
`sequencer, shader pipe, prumitive assembly, texture cache, texture pipe, raster
`
`engine, display, etc.). See, e.g., Ex. 2053, p. 6. The PowerPoint slide titled Block
`
`-|-
`
`AMD1044_0256605
`
`ATI Ex. 2103
`IPR2023-00922
`Page 3 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 3 of 61
`
`

`

`Responsibility (reproduced below) shows the ATI office responsible for designing
`
`each block.
`
`Block Responsibility
`
`fa.
`
`5,
`
`For the R400 project, | was responsible for the sequencerblock,
`
`which 1s the block that manages the execution of pixel commands and vertex
`
`commands for the untfied shader. In particular, | drafted the high-level
`
`specification that describes the sequencer block's functionality, and | wrote
`
`emulator code for the sequencer block. In addition, | was also co-responsible for
`
`emulating the shader pipe block and the export block.
`
`ae
`
`AMD10440255606
`
`ATI Ex. 2103
`IPR2023-00922
`Page 4 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 4 of 61
`
`

`

`6.
`
`I am one of the named inventors of U.S. Patent No. 7,742,053 (“the
`
`°053 patent”). The other named mventors are Steve Morein and Andy Gruber. We
`
`collectively conceived of the graphics-processing system claimed in the °033
`
`patent no later than August 24, 2001, while working on the R400. See infra Part IE.
`
`A team of my colleagues and I, which totaled about one hundred engineers,
`
`worked on the R400 nearly every business day from at least August 24, 2001 to
`
`September 29, 2003. See infra Parts HI, V. No later than the third quarter of 2002,
`
`we made a GPU in register-transfer-language (“RTL”) code that worked to process
`
`a first triangle. See infra Part IV.
`
`H. CONCEPTION
`
`7.
`
`No later than August 24, 2001, Steve Morein, Andy Gruber, and I
`
`collectively conceived of the graphtcs-processing system imthe °053 patent. We
`
`each contributed different aspects to this system, Steve Morein came up with the
`
`idea for a unified shader. This is shown, for example, in documents titled “R400
`
`Architecture Proposal” and “R400 Top Level Specification.” Ex. 2040, p. 1; Ex.
`
`2041, p. 1. Andy Gruber was the lead for the shader processor. This is shown, for
`
`example, in a documenttitled “Shader Processor.” Ex. 2042, p. 1. And I was the
`
`lead for the sequencer block. This is shown, for example, in a documenttitled
`
`“R400 Sequencer Specification.” /:.g., Ex. 2007, p.
`
`|. | explain each of these
`
`documents in turn below.
`
`AMD1044_0256607
`
`ATI Ex. 2103
`IPR2023-00922
`Page 5 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 5 of 61
`
`

`

`A. R400 Architecture Proposal
`
`8.
`
`Steve Morein authored the “R400 Architecture Proposal.” Ex. 2040,
`
`p. 1. In this proposai, the R400 includes a unified shader that performs both pixel
`
`operations and vertex operations. See id. at 9. The R400 also includes a unified
`
`processing pipe (1.¢., a single programmable pipeline for 2D video, 3D vertex, and
`
`3D pixel operations). See id. at 6 (“The most ambitious feature in this design is the
`
`“truly unified pipe’: a single programmablepipeline.”). With a single pipeline for
`
`both pixel commands and vertex commands, the graphics processor had higher
`
`color precision and the ability to support more registers, compared with a
`
`conventional graphics pipeline. See ic.
`
`B. R400 Top Level Specification
`
`9.
`
`Steve Morein also authored the “R400 Top Level Specification,”
`
`which sets forth the high-level architecture for the R400. Ex. 2041, p. I. As shown
`
`in this document, the R400 Top Level Specification includes a sequencer. Seee.g,
`
`id. at 27-28, 30. The sequencer managesthe instructions for the unified shader. See
`
`id. at 11 (‘Before starting the processing .. . the rasterizer (which includes the
`
`sequencer for the shader prpeline) checks to make sure that there are enoughfree
`
`registers in the pipeline for the pixel shader program.”), 27 (“The raster engine...
`
`contains the sequencer for the shader pipe.”’).
`
`AMD1044_0256608
`
`ATI Ex. 2103
`IPR2023-00922
`Page 6 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 6 of 61
`
`

`

`10,
`
`The R400 Top Level Specification includes a block diagram ofthe
`
`sequencer’s control flow(reproduced below for reference).
`
`
`
`fa. at 30,
`
`AMD10440256609
`
`ATI Ex. 2103
`IPR2023-00922
`Page 7 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 7 of 61
`
`

`

`11.
`
`This block diagram includes three arbitrators': (1) a “vertex/pixel
`
`vector arbitrator” at the top of the diagram; (2) a “texture arbitrator” onthe left side
`
`of the diagram; and (3) a “texture arbitrator” on the right side of the diagram. See
`
`id. The “texture arbitrator” on the left side is mislabeled. This arbitrator should be
`
`labeled “ALUarbitrator” to correspond to the ALU reservationstations. I describe
`
`the control flowfor this block diagram in Part 11.D.1 of this declaration.
`
`C. R400 Shader Processor
`
`12.
`
`Andy Gruber authored the “Shader Processor,” which describes the
`
`shader archttecture, interfaces, partitioning, and timing of the shader. Ex, 2042, p.
`
`1. The shader processor, also called a pipeline, has sixteen pipes. See fd. at 5
`
`(“There will be four sets of four shader pipes.”). This pipeline processes a
`
`sequence of instructions in both texture clauses and ALU clauses. /d. at 8
`
`D. R400 Sequencer Specification
`
`13.
`
`1 authored the “R400 Sequencer Specificatton,” which1s the
`
`architectural specification for the R400 sequencer block. Ex. 2007, p. 1. There are
`
`
`
`' The term “arbitrator” is interchangeable with the term “arbiter.” See, ¢.¢.,
`
`Ex, 2023, p, 10 (identifying the control flow diagram as: “Figure 2; Reservation
`
`stations and arbiters’).
`
`AMD1044_0256610
`
`ATI Ex. 2103
`IPR2023-00922
`Page8 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 8 of 61
`
`

`

`at least thirty three revisions of this specification. See Ex. 2039, pp. 4-5; Exs. 2007-
`
`38. Each revision updates the specification.
`
`14.
`
`I developed two versions of the sequencer’s control flow. See Ex.
`
`2010; Ex, 2028. When I filed the patent application that led to the ’053 patent, |
`
`intended this patent application to cover both versions of the sequencer’s control
`
`flow.
`
`15.
`
`The first version, described in Version 0.4 of the R400 Sequencer
`
`Specification, was designed for sixteen vertex clauses and sixteen pixel clauses.
`
`See Ex. 2010, pp. 5, 14-15. ATI presented this version to Microsoft to see whether
`
`the R400 was compatible with the applicatton-programming interface (“API’) that
`
`Microsoft was developing, called DX 10. Microsoft rejected this version because
`
`Microsoft’s API required a sequencerthat could process an unlimited numberof
`
`clauses. To be compatible with this requirement, | developed a second version of
`
`the sequencer control flow. This second version is described in Version 2.0 of the
`
`R400 Sequencer Specification. See Ex. 2028. I explain these versions in turn
`
`below.
`
`1, R400 Sequencer Specification (Version 0.4); August 24, 200]
`
`16.
`
`Version 0.4 of the R400 Sequencer Specification ts dated August 24,
`
`2001. See Ex. 2010, p. 3; see aéso Ex. 2043 (for the log entry on August 24, 2001).
`
`AMD1044_0256611
`
`ATI Ex. 2103
`IPR2023-00922
`Page 9 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 9 of 61
`
`

`

`This version includes the same sequencer-block diagram as the sequencer-block
`
`diagram in the R400 Top Level Specification (reproduced again below for
`
`convenience). Compare Ex. 2010, p. 5 with Ex. 2041, p. 30. Version 0.4 also
`
`includes an example of the flow of pixels and vertices through the system. See Ex.
`
`U dwn i
`m2 Em
`
`LU rie 0
`
`2010, pp. 3, 17-19.
`
`Ex. 2010, p. 5.
`
`AMD104402565612
`
`ATI Ex. 2103
`IPR2023-00922
`Page 10 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 10 of 61
`
`

`

`17,
`
`The sequencer has two sets of reservation stations, one for pixels and
`
`one for vertices. /d. at 4, 5. A representation of the two sets of reservation stations
`
`is shown below. Each set has eight ALU reservation stations and eight texture
`
`reservation stations, /d. Each reservation station stores clauses. /d. These clauses
`
`contain a sequence of instructions./a! at 4 (“[the sequencer] .
`
`.
`
`. executes all of the
`
`instructions in a clause”); see a/se Ex, 2042, p. 8 (“instructions in a clause will be
`
`executed sequentially”).
`
`Pixel Reservation Stations
`
`Vertex Reservation Stations
`
`18.
`
`Clauses flow downeach set of reservation stations. See Ex. 2010, pp.
`
`4, 5. Pixel clauses flow down the set of pixel reservation stations, and vertex
`
`clauses flow down the vertex reservation stations. See ia. Reservation stations
`
`touch the arbiter, so the ALU arbiters and the texture arbiters can select clauses
`
`traveling down the reservation stations. See id at 17 (“the control packet continues
`
`Sie
`
`AMDI104402560613
`
`ATI Ex. 2103
`IPR2023-00922
`Page 11 of 614
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 11 of 61
`
`

`

`to travel down the path of reservation stations until all clauses have been
`
`executed’).
`
`19.
`
`The arbiter/arbitration logic has two levels of arbitration, collectively
`
`shown in red on the figure below.
`
`Vertex Clauses
`
`Pixel Clauses
`
`}
`festsaoe
`|
`ome hasta
`=e he
`ee me _a ——
`hirime | J [PPT le:
`7 ——|
`at =
`oo. ae =r
`retomen|
`["
`—“|
`eS. st
`fautae oeie|
`- — |
`Leesee ==fermenje
`Pe} 2} +
`ae
`a pe
`ne= a
`fit
`=) = ie==
`toe can —
`mn|
`—|e rele
`
`
` ———4—}-— — ===|
`m_>|
`=
`
`—
`
`“SEQ arbitrates between the Pixel FIFO and the Vertex FIFO”
`
`20.
`
`Thefirst level of arbitration is between ALU clauses and texture
`
`clauses for both the vertex set of reservation stations and the pixel set of
`
`reservation stations. This first level of arbitration is represented by the ALU
`
`arbitrators and texture arbitrators labeled in the figure above. ALU arbitration logic
`
`«10+
`
`AMDI0440256614
`
`ATI Ex. 2103
`IPR2023-00922
`Page 12 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 12 of 61
`
`

`

`chooses one of the eight potentially pending ALU clauses stored within the ALU
`
`reservation stations. See fd. at 14-15. Texture arbitration logic chooses one of the
`
`eight potentially pending texture clauses stored within the texture reservation
`
`stations. See fel at 14.
`
`21.
`
`For the second level of arbitration, the arbitration logic selects
`
`between the pixel and the vertex. See id. at 17 (2) (SEQ arbitrates between the
`
`Pixel FIFO and the Vertex FIFO”), 18 (4) (SEQ arbitrates between Pixel FIFO
`
`and Vertex FIFO”). So, not only does the arbiter select which clauses to execute,
`
`the arbiter also selects which order to execute pixels and vertices. Sve id. at 4 (“a
`
`pixel can pass a vertex and a vertex can pass a pixel”).
`
`Ko be
`
`The ALU arbitration and the texture arbitration give priority to
`
`reservation stations/clauses closer to the bottom of the pipeline. See ia. at 4. After
`
`this arbitration selects winning pixei and vertex clauses, the pixel/vertex arbitration
`
`logic selects between the pixel and the vertex. /d at 17 (2}, 18 (4). Vertices
`
`generally have priority. /d. at 17 (2). When a vertex is not pending or the register
`
`files do not have open space for a vertex, the arbiter selects a pixel. /d. at 18 (4).
`
`23.
`
`Once arbitration logic selects the pixel/vertex clauses, the sequencer’ s
`
`arbitration logic provides the clauses to a registerfile m the shader pipe. Seeid. at
`
`pp. 17 (5) (SEQ constructs a control packet for the vector and sends it to the first
`
`-lli-
`
`AMD1044_0256615
`
`ATI Ex. 2103
`IPR2023-00922
`Page 13 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 13 of 61
`
`

`

`reservation station (the FIFO in front of texture state machine 0, or TSMO FIFO)
`
`the control packet contains the state pomter, the tag to the position cache and a
`
`register file base pomter.”), 17 (9) (“ASMOaccepts the control packet (after being
`
`selected by the ASM arbiter) and gets the instructions for ALU clause 0 from the
`
`global instruction store”).
`
`24.
`
`The shader pipe, as of Version 0.4 of the R400 Sequencer
`
`Specification (reproduced belowfor reference), has four physical register file
`
`memories per shaderpipeline. /d. at 10.
`
`AMD1044_0256616
`
`ATI Ex. 2103
`IPR2023-00922
`Page 14 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 14 of 61
`
`

`

`
`
`fed.
`
`25.
`
`Each register file is coupled to a bank of ALUs. See iaat 11. The
`
`gray area of the Figure reproduced belowshowsthe logical viewof the four
`
`register files within the shader pipe as software would see it. /@. The Figure also
`
`- |a-
`
`AMODI0440256617
`
`ATI Ex. 2103
`IPR2023-00922
`Page 15 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 15 of 61
`
`

`

`shows an ALUbank, a texture unit, an instruction store/cache, and a constant store.
`
`See il
`
`fed.
`
`26.
`
`In the Figure reproduced above, the sequencer block comprises the
`
`instruction store and the constant store, In a different representation, reproduced
`
`below, the instruction store and the constant store are within the sequencer block.
`
`«4.
`
`AMD10440256618
`
`ATI Ex. 2103
`IPR2023-00922
`Page 16 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 16 of 61
`
`

`

`Clause®= Ray
`
`cst
`
`Weeder
`
`fa at 12.
`
`27.
`
`Later versions of the R400 Sequencer Specification showthe
`
`sequencer and the shader pipe within the R400 architecture. Sec, e.g, Ex. 2012, pp.
`
`3, 5. The architecture in Version 0.6 of the R400 Sequencer Specificationis
`
`reproduced below.
`
`~ 15 ~
`
`AMD104402560619
`
`ATI Ex. 2103
`IPR2023-00922
`Page 17 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 17 of 61
`
`

`

`
`
`id. at 3.
`
`28.
`
`Following Version 0.6, the R400 architecture was kept in the R400
`
`Sequencer Specification. See, e.2., Ex, 2039, p. 7. A version of the R400
`
`Sequencer Specification dated May |, 2003 includes the R400 architecture
`
`reproduced below. The general role of the sequencer within this architecture did
`
`not change. And most inputs‘outputs to/from the sequencer stay consistent.
`
`- 16-
`
`AMDI0440256620
`
`ATI Ex. 2103
`IPR2023-00922
`Page 18 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 18 of 61
`
`

`

`
`
`a]
`
`FETCH STATE
`
`i
`
`:
`
`ALU BANK 1
`
`mal
`
`Tet6g]——____* +
`c
` ==|
`
`
`|
`
`13
`
`Tar e
`
`ie
`
`ld.
`
`2. R400 Sequencer Specification (Version 2.0): April 19, 2002
`
`29,
`
`The sequencer’s control flow changed in Version 2.0 of the R400
`
`Sequencer Specification, See Ex. 2028, pp. 5, 6, 10. Version 2.0 is dated April 19,
`
`2002, See Ex, 2028, p. 5; see also Ex. 2044 (for the log entry on April 19, 2002).
`
`30, Again, the reason for the change was to meet the requirements of
`
`Microsoft's API, called DX10. In particular, Microsoft wanted the sequencerto be
`
`able to run shaders with an unlimited number of clauses/instructions. The first
`
`AMDI10440256621
`
`ATI Ex. 2103
`IPR2023-00922
`Page 19 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 19 of 61
`
`

`

`version selected from sixteen vertex clauses and sixteen pixel clauses. See Ex,
`
`2010, pp. 3, 14-15. To meet Microsoft's specifications, | changed the sequencer’s
`
`control flow. The new control flow is shown below.
`
` (ripags Aa tote
`
`Ex. 2028, p. 10.
`
`31.
`
`In this version, there are two reservation stations, one reservation
`
`station for vertices (VTX RS) and one reservation station for pixels (PIX RS). See
`
`id, The texture threads and the ALUthreads are not separated. See ie. at 23
`
`(“Without separate ‘texture clauses’ and “ALU clauses’ we need to know which
`
`instructions to dispatch to the Texture Unit and which to the ALU unit.”); see alse
`
`id. at 6 (using the term thread), Each reservation station stores threads at specified
`
`-18-
`
`AMD10440250622
`
`ATI Ex. 2103
`IPR2023-00922
`Page 20 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 20 of 61
`
`

`

`locations with status bits indicating which engine 1s needed for execution. Sveid. at
`
`25 (“A thread lives in a given location in the buffer during its entire life.”’), 26
`
`(“Status Bits’ needed include: .. . [a] Texture/ALU engine [identifier]”).
`
`32.
`
` Anarbiter, labeled as “ExecArbiter,” selects threads for an ALU
`
`engine and a texture engine. See id. at 25. The arbiter selects a thread based on
`
`FIFO. See id. at pp. 6 (The arbitrator will give priority to older threads.”), 25
`
`(“T]he buffer has FIFO qualities in that the threads leave in the order that they
`
`enter.”), The thread is then read out of a reservation station. See id. at 26. Once the
`
`texture engine or the ALU engine executes the thread, the respective engine returns
`
`the thread to the location from which the thread originated. See id. (“[The thread]
`
`is returned to the buffer (at the same place) withits status updated onceall possible
`
`sequential instructions have been executed.”).
`
`33.
`
`This version is present in later revisions of the Sequencer
`
`Specification. Sve, ¢.g., Ex. 2039, p. 9.
`
`Ht. DILIGENCE
`
`34.
`
`After conceiving of the destgn for the R400, my colleagues and I
`
`worked to implement it. This work is shownby at least two things: (1) I
`
`periodically updated the R400 Sequencer Specification: and (2) my colleagues and
`
`I continuously developed, tested, and debugged emulation code and RTL code tor
`
`-19-
`
`AMD1044_0256623
`
`ATI Ex. 2103
`IPR2023-00922
`Page 21 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 21 of 61
`
`

`

`the R400, including the other components that supported and interacted with the
`
`sequencer.
`
`A. I Periodically Updated the R400 SequencerSpecification
`
`35.
`
`During development, the architectural leads for each block wrote
`
`specifications to describe the structure and function ofthe blocks. See Ex. 2042, p.
`
`| (showing that specifications were used by destgners). I was the architectural lead
`
`for the sequencer block, so I developed the R400 Sequencer Specification.
`
`36.
`
` lupdated the R400 Sequencer Specification approximately every two
`
`to three weeks, See Ex. 2039, pp. 4-5 (outlining edits to the document). There are
`
`at least thirty three revisions of this document. See id; see also Exs, 2007-38. The
`
`revisions span from at least May 25, 2001 to August 29, 2003. See Ex. 2043, p. 2
`
`(first log entry May 25, 2001), Ex. 2044, p.
`
`| (last log entry August 29, 2003); Ex.
`
`2039, pp. 4-5 (showing 33 versions from May7, 2001 to May 1, 2003).
`
`37.
`
`Having multiple revisions during development is typical. Each
`
`revision showed progress during the previous week(s). During interim periods, the
`
`project team worked on outstanding tssues. See e.g, Ex. 2018, p. 35 (ending the
`
`document with a section labeled “Open Issues”).
`
`-?0-
`
`AMD1044_0256624
`
`ATI Ex. 2103
`IPR2023-00922
`Page 22 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 22 of 61
`
`

`

`B. MyColleagues and [ Continuously Developed and Debugged Emulation
`Code and RTL Code for the R400
`
`38.
`
`Inthe beginning of development, only a handful of engineers were
`
`assigned to the R400 project. But by late 2001 or early 2002, ATI assigned over
`
`one hundred project managers/designers to implement and test the R400. During
`
`these two years, many project managers/designers transitioned from other projects
`
`and were assigned to solely work on the R400 project. These project
`
`managers/designers, including me, diligently worked on the R400. In particular,
`
`we used the specifications to write emulation code and RTL code for the R400’s
`
`functional blocks. We then tested the R400’s functional blocks.
`
`39.
`
`Everyone assigned to the R400 project saved their work in a revision-
`
`control system, called Perforce. I understand that Perforce maintains metadata(1.e.,
`
`document logs and folder htstories), This metadata includes mnformation such as
`
`the date each file was revised and the user that made each revision.
`
`40.
`
`| understand that this metadata identifies the following users as the
`
`users that worked on the R400 destyn. These users worked from three of ATI's
`
`offices: (1) Marlboro, Massachusetts, USA; (2) Orlando, Florida, USA; and (3)
`
`Toronto, Ontario, Canada. See Ex. 2053, p. 6. T recall that periodic meetings
`
`occurred to coordinate efforts between the three offices.
`
`-?|-
`
`AMD1044_0256625
`
`ATI Ex. 2103
`IPR2023-00922
`Page 23 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 23 of 61
`
`

`

`a A
`
`2050, 2051, 2052
`Se fehodrat
`i
`2050, 2051
`:
`
`brianf
`
`=
`
`delifton
`
`2048, 2049, 2050,
`
`=
`
`MODI10440256626
`
`ATI Ex. 2103
`IPR2023-00922
`Page 24 of 61
`
`=e
`
`aashkar | aR
`
`oT
`
`2049, 2050, 2052
`
`2048, 2049, 2030,
`2051, 2052, 2107
`
`2030, 2051
`
`2049, 2050, 2052
`
`2050, 2052
`
`ze
`
`2049, 2050, 2052
`
`2050, 2031
`
`2050
`
`frivas
`
`2050, 2032
`
`2050, 2052
`
`2050
`
`2048, 2052
`
`2050
`ee
`
`2050, 2052
`
`2048, 2050, 2031,
`2052
`tt—
`
`2049, 2052
`
`pregs
`
`hartogs
`
`2050
`
`2050, 2052
`
`2048, 2049, 2050
`
`2050, 2052
`
`2048, 2049, 2050,
`2051, 2032
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 24 of 61
`
`

`

`Address Prefix
`Address Prefix|Exhibits
`
`lchen
`
`2050
`
`llefebwr
`
`Iseiler
`
`markf
`
`marklee
`
`2048, 2050, 2051,
`2052
`
`2050
`
`2048, 2049, 2030,
`2051, 2032
`
`2048, 2030, 2051,
`2052
`
`2049, 2050, 2052
`
`2050
`
`2050, 2051, 2052
`
`2048, 2049, 2050,
`2052
`
`2048,2050,2052.
`
`
`
`moev
`
`2049, 2050
`
`mpersaud
`
`2050
`
`2050
`
`2050,2052
`
`mmantor
`
`2048, 2049, 2050,
`2052
`
`2048, 2049, 2050,
`2052
`
`mpersaud
`
`2050
`
`= 239 ~
`
`AMDI0440250627
`
`ATI Ex. 2103
`IPR2023-00922
`Page 25 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 25 of 61
`
`

`

`Address Prefix
`Address Prefix|Exhibits
`
`_
`
`scamlin[eae
`
`semara
`
`2050
`
`
`
`2050
`
`=sae
`pale fata 2051, 2052 a|2050, 2051
`2049,2050,2052
`
`pmitchel
`
`2049, 2050, 2051,
`2052, 2107
`
`2050
`
`2050, 2051
`
`rbeaudin
`
`2048, 2050, 2051,
`2052
`
`2050, 2052
`
`tien
`
`2049, 2050, 2052
`
`tmartinape
`
`tshah
`
`vbhatia
`
`2050
`
`2048, 2050
`
`| 2049, 2050, 2052
`
`2052
`
`whui
`
`2050
`
`wlawless
`
`2050, 2051
`
`sallen
`
`2048, 2049, 2050,
`2051, 2052
`
`——
`
`yelang
`
`yvalcour
`
`2048, 2049, 2050,
`2052
`
`aches
`
`AMDI0440255628
`
`ATI Ex. 2103
`IPR2023-00922
`Page 26 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 26 of 61
`
`

`

`41.
`
`In Part V, I analyze thts metadata. Myanalysis shows that at least one
`
`person on the R400 project team worked on the R400 design every non-holiday
`
`business day from August 24, 2001 (when we conceived ofthe invention) until
`
`September 29, 2003 (the effective filing date of the °053 patent). See infra Part V.
`
`42.
`
`This metadata is not exhaustive of all sequencer/shader-pipefiles that
`
`were edited during this timeframe. But this metadata shows work that was
`
`necessaryfor implementing the R400 design. Specifically, this metadata shows the
`
`design, development, and testing of the R400 sequencer and graphics blocks. Sez
`
`Exs. 2048, 2049. This metadata also shows work on the design and development of
`
`the R400 generally. See Exs. 2050, 2051, 2052, 2107. The design and development
`
`of the R400 was necessary to make progress on the sequencer block and the shader
`
`pipe block: we could not work on or test the sequencer block or the shader pipe
`
`block in tsolatton.
`
`43.
`
`This analysis is also consistent with my memoryof the work that we
`
`did on the R400. For me and many of the other project managers/designers, the
`
`R400 was the only project that most of us were assigned to—it was our full-time
`
`responsibility. That means, any time that we did work for AT] betweenlate 2001
`
`and the end of 2003, that work would have been on the R400.
`
`-245-
`
`AMD1044_0256629
`
`ATI Ex. 2103
`IPR2023-00922
`Page 27 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 27 of 61
`
`

`

`IV.
`
`TESTING SHOWED THAT THE RTL IMPLEMENTATION
`WORKED FOR ITS ENTENDED PURPOSE
`
`44, Weran many tests on the R400 durmg its development. Onetest in
`
`particular, the first triangle, showed that a snapshot of the emulation code and the
`
`RTL code worked for its intended purpose—t.e., performing conventional graphics
`
`processing using a unified shader.
`
`45.
`
`For the R400 project, block-level specifications, block-level diagrams,
`
`and interface descriptions provided overarching development concepts. Project
`
`managers/designers on the R400 team used these documents to develop C++ code
`
`(emulation code} and RTL code for the various blocks of the R400. This code was
`
`tested extensively during the development process. Tests could be run on both the
`
`emulation code and the RTL code, and these tests could be run on individual
`
`blocks or the entire graphics core.
`
`46.
`
`Circuit designers extensively use circuit simulation to test the GPU
`
`design. After the design has passed extensive testing, the chip design can be
`
`cleared for fabrication. Before sending out the design for fabrication, the RTL code
`
`is converted to a tape-out file, and that tape-outfile is sent to a fabrication facility
`
`for fabrication.
`
`47.
`
`A product such as the R400 must pass hundreds oftests before it is
`
`taped out. Many tests were directed to specific commercial specifications. Other
`
`-76-
`
`AMD1044_0256630
`
`ATI Ex. 2103
`IPR2023-00922
`Page 28 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 28 of 61
`
`

`

`tests were more generic, such as tests for validation and proofof concept. One
`
`generic test was the first tnangle.
`
`48.
`
`The first tnangle tested whether the RTL implementation of the GPU
`
`could process a Gouraud shaded tnangle. At this stage of development, this test
`
`involved manydifferent blocks—including the sequencer, the shader pipe, the
`
`shader export, the texture cache, and the texture pipe blocks.
`
`49.
`
`| recall the first triangle test being successful approximately mid-way
`
`through the R400 project. Consistent with my memory, the PowerPointslide
`
`reproduced below showsthatthe first triangle was reported during a meeting on
`
`August 30, 2002.
`
`ema meaty)
`
`aT
`
`AMOD10440256631
`
`ATI Ex. 2103
`IPR2023-00922
`Page 29 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 29 of 61
`
`

`

`Ex, 2066, p. 2. According to this presentation, the first tnangle was completed on
`
`July 1, 2002. id., p. 6.
`
`50.
`
`For asuccessful first triangle, the sequencer block and the shader pipe
`
`block must work together to process both vertex commands and pixel commands.
`
`This 1s shown, for example, in the RTL code that arbitrates between vertices and
`
`pixels. An example of this arbitration as implemented in the RTL code is
`
`reproduced below.
`
`19
`
`20
`
`21
`
`22
`
`23
`
`case (tta_currentstate)
`
`TTAO:
`
`begin
`
`‘= ack ts connected to TB State Mem read enable, so have to
`
`‘) watt until the correct phase to ack
`
`aR a
`
`AMD104402560632
`
`ATI Ex. 2103
`IPR2023-00922
`Page 30 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 30 of 61
`
`

`

`if( state_read_phase = arbtype_strap }
`
`if( vtx_winner_vid_q)
`
`! simply give verts the priority
`
`begin
`
`wix_winner_ack = HI;
`
`tta_next_state = TTAI;
`
`end
`
`else if( pix_winner_vid_q)
`
`begin
`
`pix_winner_ack = HI;
`
`tta_nextstate = TTA2:
`
`end
`
`2
`
`3 4
`
`5
`
`6
`
`7
`
`&
`
`o
`
`10
`
`11
`
`12
`
`13
`
`14
`
`Ex, 2074, 20:19-21:14,
`
`31.
`
`In this example code, the arbitration is implemented as a simple “if-
`
`else” statement in which vertices have prionty. According to this “if-else”
`
`statement, “if” a vertex is ready for execution, the sequencer selects the vertex;
`
`“else” (1.¢., otherwise) the sequencer selects the pixel. That is it. The first triangle
`
`touched both paths because the vertex processing worked for the “if” path and the
`
`pixel processing worked for the “else” path. Other levels of arbitration in the RTL
`
`- 79 -
`
`AMD104402560633
`
`ATI Ex. 2103
`IPR2023-00922
`Page 31 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 31 of 61
`
`

`

`code worked like this example, and these other levels of arbitration would have
`
`been touched by thefirst triangle. So, following thefirst triangle, we knewthe
`
`RTL code worked.
`
`52.
`
`Passing thefirst triangle test did not signal the end of the R400
`
`project; the R400 still had to pass manyother tests to be commerctalizable. After
`
`processing a first triangle, however, we knewthat we had an implementation of the
`
`R400 in RTL code that worked for its intended purpose—1.e., performing graphics
`
`processing using a unified shader.
`
`AMD1044_0256634
`
`ATI Ex. 2103
`IPR2023-00922
`Page 32 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 32 of 61
`
`

`

`1007snsny
`
`moneayaSs
`
`87
`
`AOQNASTTIG
`
`anew|ows[aeons[ren
`
`
`
`
`(LOTTMQIyNy“AL0pstyyJoppogsingaigsapeysOOFH)SeddS
`
`
`
`
`
`
`(SPOTMQIYX|‘ALOISIPYJappo410je;nWyJa.uaNbagHOFYy)“Wy
`
`
`
`
`
`
`
`(OSOTHQIYXYSALOpsIPYJappogAesgqryjusuNs0q]QOFY)“NT
`
`
`
`
`
`
`(GOTMQIYX|‘ALO}SIPYJoppoysyiegs93.uanbegyppy)seg
`
`
`
`
`
`(1S07MQIgXy‘ALOysIPYAappoyaanaanpasyOOFY)“Ya1V
`
`
`
`
`
`(ZSOTMQIYX|‘ALOYSIPYAOPlOySuysayYDOOM)159
`FrewyrerAT
`_Svpsomt|Sepuony|epung
`YVONATVO
`
`PrWy
`
`OLSIS9L
`
`AMODI1044 0256635
`
`ATI Ex. 2103
`IPR2023-00922
`Page 33 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 33 of 61
`
`

`

`
`
`LOOTFeqmaidag
`
`crYayL
`
`eer“qr
`
`crYSy
`
`FI
`
`eth“QT
`
`€l
`
`OLSIS],
`
`
`
`cerarype-eer“ard
`
`Ep“yyeb“yy
`
`ceri]
`
`ce-cterNT60519]
`60‘ISAep“yay
`
`Iz
`
`OZ61
`
`8!LI
`
`8Z|“SHEdd§
`
`GOS19],
`
`LZ
`
`cryy
`Cr-crYury
`
`9¢
`
`scFc
`
`Teeat
`TE-LEPAT
`cerAT
`
`ZepaTceb“ary
`
`[poyry
`ChlUy
`cry
`
`cPyyTr“Yory
`
`TsueddS|
`
`AMD1044 02560636
`
`ATI Ex. 2103
`IPR2023-00922
`Page 34 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 34 of 61
`
`
`
`
`
`

`

`LOOTA9q01
`
`le-Oer
`
`Ler
`
`lP-Ob“Yuy
`
`IpGuy
`
`6c-8zba1
`
`
`
`ogee“Yay
`
`606‘W891
`
`zl
`
`6thNT
`
`6fWuy
`
`60S189
`
`01
`
`6cr“UT6
`
`bE“Yuy
`
`ot“NTS
`
`Lipar
`S7-LTbONT
`SchaN]
`
`STFaT
`
`Sir“NT
`
`Le“yaay
`
`Le“yay
`
`Le“yay
`SE-LE“Ys
`ge“Yoiy
`
`61
`
`gl
`
`LI
`
`91
`
`sl
`
`97-STFANT
`
`reary
`
`60-805S21
`
`97
`
`Se-PeWy
`ge-Seyy
`
`9g~
`“yoy
`
`9oFAN]
`
`Lo-9cr“AT
`Lir“ary
`
`FZ
`
`tc
`
`GOS9.
`
`qz
`
`Sir4!
`
`a.resry
`
`i¢
`
`606153],
`
`o¢
`
`SOSWA]
`
`re“Yary6
`
`AMD1044 0250637
`
`ATI Ex. 2103
`IPR2023-00922
`Page 35 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 35 of 61
`
`
`
`
`

`

`F9qaAoN)
`
`91
`
`sl
`
`SO-PCP
`
`Scr
`
`ee“Yay
`
`Pe“Wy
`
`ig“yay
`ce-1e“uy
`ce“yy
`
`PoPOT9.
`per“QV5
`
`806“S23
`€ZrQl
`Po-EThWTf301591|
`L007
`PoUW|9Z-S7“YY
`PorNTL
`ze“you
`ce-Te“yy
`
`oz“ar
`[g-07F“OT
`
`co"lér‘ary|
`fl.806‘IS2].
`ctraT
`CC-TZ“NT
`
`il
`
`87“yaty
`
`6C-8E“YU
`O&-6c“Uy
`Of“You
`
`Le-oe“Yyauy
`
`Iz|‘SHEgdS
`
`6lr“ary
`
`élF4]
`
`6lr“ard
`
`0z
`
`ROSWSO],
`
`él
`
`LoveYay
`LcYuy
`8i-LzWy
`
`Cl-Fle“ar
`clraT
`
`clrart
`L1i-Sir“41
`6l-L1P“aN
`
`rzWy
`
`97“UN
`
`of
`
`62
`
`gz|“SHEdd§
`
`Lt
`
`97
`
`AMODI044 0256638
`
`ATI Ex. 2103
`IPR2023-00922
`Page 36of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 36 of 61
`
`

`

`Olr“4
`
`Poyy
`
`a
`
`Ec“UDW
`
`LOOT49qWod9¢]
`senses|supa|sepsinus|semsoupam|cepson
`
`dCETayBOS‘TSA.
`LI-ObP“qtyec“quy
`TieUT)Elzire“aT49
`
`o0F“QUT90b“ONT
`sor"arT)Soh“aT
`
`plwyLit“407
`pLwypL“wy
`87Le
`rl|cl
`PC-ET“YYreyoy
`80-LOPQT| 60-80F“417
`pewybe“wy
`giwgLieaTTlI
`61si|
`9%st
`eleWT9¢|weF
`Sevan|Sepung
`01-60%“IT
`
`Fl-Elrat]
`
`|“Suedd§
`
`FoWy
`
`cI-Lit4"Ol
`
`
`
`90°S0F“407
`
`icor“Ar
`
`lf
`
`Li
`
`Fe
`
`AMD1044 0256639
`
`ATI Ex. 2103
`IPR2023-00922
`Page 37 of 61
`
`ATI Ex. 2103
`
`IPR2023-00922
`Page 37 of 61
`
`

`

`FL-EL
`
`£OrONT
`
`S0¢1S9
`
`T

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