throbber
(12) United States Patent
`Curd et al.
`
`USOO6907595 B2
`US 6,907,595 B2
`Jun. 14, 2005
`
`(10) Patent No.:
`(45) Date of Patent:
`
`(54) PARTIAL RECONFIGURATION OFA
`PROGRAMMABLE LOGIC DEVICE USING
`AN ON-CHIP PROCESSOR
`
`(75) Inventors: Derek R. Curd, Woodside, CA (US);
`Punit S. Kalra, Superior, CO (US);
`Richard J. LeBlanc, Longmont, CO
`(US); Vincent P. Eck, Loveland, CO
`(US); Stephen W. Trynosky, Boulder,
`CO (US); Jeffrey V. Lindholm,
`Longmont, CO (US); Trevor J. Bauer,
`Boulder, CO (US)
`Assignee: Xilinx, Inc., San Jose, CA (US)
`Notice:
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 12 days.
`
`(73)
`(*)
`
`(21)
`(22)
`(65)
`
`(51)
`(52)
`
`(58)
`
`(56)
`
`Appl. No.:
`10/319,051
`Dec. 13, 2002
`Filed:
`Prior Publication Data
`
`US 2004/0113655 A1 Jun. 17, 2004
`Int. Cl................................................. G06F 17/50
`U.S. Cl. ............................. 716/16; 716/17; 716/18;
`326/39; 326/41
`Field of Search ................................. 716/1-2, 7–8,
`71.6/12, 16–18, 20; 326/40, 41, 38
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`Baxter ........................... 71.6/3
`Hartmann
`Agrawal et al. .............. 716/17
`Nishihara
`... 326/41
`Schultz et al. ................ 326/41
`Young et al.
`... 716/16
`Young et al. ...
`Turner et al. ................. 716/17
`
`:
`
`:
`
`:
`
`:
`
`:
`
`6,078,735 A *
`6/2000
`6,096,091 A
`8/2000
`6,128,770 A
`10/2000
`6,304,101 B1
`10/2001
`6,429,682 B1
`8/2002
`6,493,862 B1
`12/2002
`6,526,557 B1 * 2/2003
`6,629,311 B1 * 9/2003
`OTHER PUBLICATIONS
`Virtex-II Pro, Platform FPGA Handbook, Oct. 14, 2002, pp.
`1-589, (v2.0), Xilinx, Inc., 2100 Logic Drive, San Jose, CA
`95124.
`
`“Advance Product Specification,” Virtex-II ProTM Platform
`FPGA Documentation, (Mar. 2002 Release), pp. 1-342,
`Xilinx, Inc., 2100 Logic Drive, San Jose, CA 95124.
`“PPC 405 User Manual,” Virtex-II ProTM Platform FPGA
`Documentation, (Mar. 2002 Release), pp. 343-870, Xilinx,
`Inc., 2100 Logic Drive, San Jose, CA 95124.
`“PPC 405 Processor Block Manual Virtex-II ProTM Plat
`form FPGA Documentation, (Mar. 2002 Release), pp.
`871-1058, Xilnix, Inc., 2100 Logic Drive, San Jose, CA
`95124.
`
`Rocket I/O Transceiver User Guide Virtex-II ProTM Plat
`form FPGA Documentation, (Mar. 2002 Release), pp.
`1059-1150, Xilinx, Inc., 2100 Logic Drive, San Jose, CA
`95124.
`
`* cited by examiner
`
`Primary Examiner Vuthe Siek
`ASSistant Examiner Binh Tat
`(74) Attorney, Agent, or Firm-E. Eric Hoffman; B.
`Hoffman
`ABSTRACT
`(57)
`A programmable logic device, Such as a field programmable
`gate array, is partially reconfigured using a read-modify
`write Scheme that is controlled by a processor. The partial
`reconfiguration includes (1) loading a base set of configu
`ration data values into a configuration memory array of the
`programmable logic device, thereby configuring the pro
`grammable logic device; (2) reading a first frame of con
`figuration data values from the configuration memory array;
`(3) modifying a Subset of the configuration data values in the
`first frame of configuration data values, thereby creating a
`first modified frame of configuration data values, and (4)
`overwriting the first frame of configuration data values in the
`configuration memory array with the first modified frame of
`configuration data values, thereby partially reconfiguring the
`programmable logic device. The Steps of reading, modifying
`and overwriting are performed under the control of a pro
`CCSSO.
`
`19 Claims, 5 Drawing Sheets
`
`200
`
`-Y----------------------------------------
`:
`T :
`:
`SOCW
`MAENGINE
`ICAP
`::
`20
`'
`as
`104.
`|
`|
`-
`- - - - - - - - - - - - - r T 121
`
`
`
`N
`: Y CLBS
`
`8
`2
`s
`
`9
`8
`s
`
`211
`
`t
`WGT
`11 -
`
`22
`N. : t
`NGT
`12 - 4.
`
`213
`
`24
`
`-> --
`
`MGT
`113 -
`MST
`114 - - -
`
`r
`
`--> .
`
`:
`:
`
`PowerPC405
`103
`! -
`... "...
`|
`s:
`PORTD
`:
`202
`:
`
`DCR
`2.
`
`.
`
`.
`
`.
`
`. - - - - - - - - - - -
`
`SOCM
`
`r
`122,123
`
`Ex. 1006
`CISCO SYSTEMS, INC. / Page 1 of 13
`
`

`

`U.S. Patent
`
`Jun. 14, 2005
`
`Sheet 1 of 5
`
`US 6,907,595 B2
`
`1 OO
`
`
`
`CONFIG.
`INTERFACE
`
`o
`oclescle
`
`i
`
`o CLE
`CLB
`o CLE & cle
`
`-
`
`POWerPC405
`O3
`
`o CLB On
`
`CLB
`
`CC
`
`oCLBs S
`o CLB 5CLB
`o
`
`FIG. 1
`(PRIOR ART)
`
`Ex. 1006
`CISCO SYSTEMS, INC. / Page 2 of 13
`
`

`

`U.S. Patent
`
`Jun. 14, 2005
`
`Sheet 2 of 5
`
`US 6,907,595 B2
`
`
`
`CONFIGURATION LOGIC 1 O1
`
`~ - - --- – ~- - - --- – ~- - - ~- - - - - --
`
`- ? = - - - - ~-
`
`CITLHOd
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Ex. 1006
`CISCO SYSTEMS, INC. / Page 3 of 13
`
`

`

`U.S. Patent
`
`Jun. 14, 2005
`
`Sheet 3 of 5
`
`US 6,907,595 B2
`
`42O
`
`POWER-UP &
`STANDARD
`CONFIGURAON END
`
`402
`PROCESSOR 1 O3
`READS INTERNAL/
`EXTERNAL SIMULUS
`(E.G., PORT D)
`
`PROCESSOR O3
`NATES MG T PARTAL
`RECONFIGURATION
`
`
`
`PROCESSOR 1 O3
`WRITES OUTPUT
`RESULTS AND FLAGS
`(E.G., CONFIG DONE)
`
`
`
`FPGA ENTERS
`NORMALOPERATION
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`401 (a
`
`412
`
`43
`
`
`
`
`
`MOD FY READ-BACK
`BTSTREAM HEADER WITH
`FRAME LOCATION
`I
`WRITE READ-BACK
`BSTREAM HEADER FROM
`MEMORY TO CAP
`
`READ-BACK MG
`CONFIGURATION FRAME
`FROM CAP TO MEMORY
`
`414 PROCESSOR 103 MOD FES
`MGTATTRIBUTE BITS IN
`MEMORY IN RESPONSE TO
`CONFIGURATION CONTROL
`STIMULUS (E.G., PORT ID)
`
`415
`
`WRITE WRITE BISTREAM
`HEADER FROMMEMORY TO
`ICAP
`
`WRITE MGT CONFIGURATION
`FRAMES FROMMEMORY TO
`CAP
`
`WRITE WRITE BITSTREAM
`TRALER COMMANDS FROM
`MEMORY TO CAP -/
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`FIG. 4
`
`Ex. 1006
`CISCO SYSTEMS, INC. / Page 4 of 13
`
`

`

`U.S. Patent
`
`Jun. 14, 2005
`
`Sheet 4 of 5
`
`US 6,907,595 B2
`
`| 99
`
`289
`
`
`
`WW/HOE
`
`??T
`
`ZZ
`
`———
`
`WVHCS |ß-
`TlBLO | LI
`
`|ZG! 19
`
`1858 lä
`
`WOOSO
`
`WOOS|
`
`HOC]
`
`PROCESSOR
`
`Ex. 1006
`CISCO SYSTEMS, INC. / Page 5 of 13
`
`

`

`U.S. Patent
`U.S. Patent
`
`Jun. 14, 2005
`
`Sheet 5 of 5
`
`US 6,907,595 B2
`US 6,907,595 B2
`
`
`
`¢09s/l‘SIANOO
`
`CONFIG. LOGIC 601
`
`
`
`le} te} le]
`
`le! [2] Le]
`
`Or
`
`
`LSI
`
`O
`
`S2
`kK
`is -
`
`©=
`
`‘QIGNOO
`
`
`
`
`
`
` ogIlo
`olflial]|lal
`go|qoaoScf
`aoagogosa<O19|jai}|g719}|8ad
`g10}Im!|a10
`
`OrisGOvOdiEmod©ZzZgq10
`errot
`JOVANI
`izOo-qo
`
`6> 7
`J[2
`[|
`[2
`[2|
`fe]
`[2] [2
`OOk
`
`BRAM 122
`
`BRAM 121
`
`a1
`
`aa O
`
`co
`
`— O
`
`oo
`
`
`
`
`
`
`
`
`
`
`
`5 =|}
`Sx
`
`[BRAM 123
`q19
`819
`
`Ex. 1006
`CISCO SYSTEMS, INC./ Page 6 of 13
`
`Ex. 1006
`CISCO SYSTEMS, INC. / Page 6 of 13
`
`
`
`
`
`
`
`
`

`

`US 6,907,595 B2
`
`1
`PARTIAL RECONFIGURATION OFA
`PROGRAMMABLE LOGIC DEVICE USING
`AN ON-CHIP PROCESSOR
`
`2
`two separate external memories, especially if the configu
`ration data values Stored by these separate memories are
`practically identical (the only differences being in the con
`figuration data bits required to incrementally change the
`function of FPGA 100). In addition, there must be logic for
`selecting which of the two external memories will be used
`to configure or reconfigure FPGA 100. Moreover, the two
`Separate external memories only provide for one partial
`reconfiguration option, thereby limiting the flexibility of the
`partial reconfiguration process. This Scheme is also unde
`Sirably time consuming, because an entirely new full Set of
`configuration data values must be loaded into FPGA 100 in
`order to reconfigure a small portion of the FPGA.
`In another scheme, FPGA 100 is configured by loading a
`full Set of configuration data values into the configuration
`memory array from an external memory. These configura
`tion data values include one or more frames of reconfigu
`ration data, which is loaded into one or more of block RAMs
`121-125. For example, a first block RAM can be pro
`grammed to Store a first frame of reconfiguration data, and
`a Second block RAM can be programmed to Store a Second
`frame of reconfiguration data. The configuration data values
`also cause a plurality of configurable logic blocks to be
`configured to implement partial reconfiguration control
`logic. To implement partial reconfiguration, the partial
`reconfiguration control logic causes the desired frame or
`frames of reconfiguration data to be retrieved from the
`asSociated block RAM, and provided to internal configura
`tion access port 104. In response, internal configuration
`acceSS port 104 transmits each frame of reconfiguration data
`to configuration logic 101. In response, configuration logic
`101 loads each frame of reconfiguration data into the con
`figuration memory array, thereby overwriting previously
`loaded configuration data values. The interface between
`internal configuration access port 104 and configuration
`logic 101 is described in more detail in the Xilinx Libraries
`Guide available from Xilinx, Inc. at 2100 Logic Drive, San
`Jose, Calif. 95124.
`The above-described scheme undesirably consumes
`excessive resources on FPGA 100. For example, storing
`frames of reconfiguration data in the block RAM undesir
`ably consumes the block RAM resources of FPGA 100. In
`Some cases, it may not be possible to Store all of the desired
`frames of reconfiguration data in the available block RAM.
`Moreover, it is inefficient to store entire frames of recon
`figuration data in the block RAM, because it is likely that
`each frame of reconfiguration data is Substantially identical
`to the frame of configuration data being overwritten. That is,
`only a Small number of bits in each frame of reconfiguration
`data are different than the bits in each frame of configuration
`data values being overwritten.
`Accordingly, it would be desirable to have an improved
`Scheme for implementing the partial reconfiguration of
`FPGA 100, which overcomes the above-described deficien
`cies.
`
`SUMMARY
`Accordingly, the present invention provides a method of
`partially reconfiguring a programmable logic device that
`includes the steps of (1) loading a base set of configuration
`data values into a configuration memory array of the pro
`grammable logic device, thereby configuring the program
`mable logic device; (2) reading a first frame of configuration
`data values from the configuration memory array; (3) modi
`fying a Subset of the configuration data values in the first
`frame of configuration data values, thereby creating a first
`
`15
`
`FIELD OF THE INVENTION
`The present invention relates to partial reconfiguration of
`a programmable logic device, Such as a field programmable
`gate array (FPGA). More specifically, the present invention
`relates to the partial reconfiguration of a programmable logic
`device using an on-chip processor to perform a read-modify
`write flow to the configuration data.
`RELATED ART
`FIG. 1 is a block diagram of a conventional FPGA 100,
`which includes input/output (I/O) blocks (each labeled IO)
`located around the perimeter of the FPGA, multi-gigabit
`transceivers (MGT) 111-114 interspersed with the I/O
`blocks, configurable logic blocks (each labeled CLB)
`arranged in an array, block random access memory (BRAM)
`121-125 interspersed with the CLBs, configuration logic
`101, configuration interface 102, on-chip processor 103 and
`internal configuration access port (ICAP) 104. Although
`FIG. 1 shows a relatively small number of I/O blocks, CLBs
`and block RAMs for illustration purposes. It is understood
`25
`that an FPGA typically includes many more of these ele
`ments. On-chip processor 103 is an IBM PowerPC 405
`processor. FPGA 100 can include more than one of these
`processors (typically up to four of these processors). FPGA
`100 also includes other elements, Such as a programmable
`interconnect Structure and a configuration memory array,
`which are not illustrated in FIG. 1. FPGA 100 is described
`in more detail in “Virtex-IITM Pro, Platform FPGA
`Handbook”, (Oct. 14, 2002) which includes “Virtex-II ProTM
`Platform FPGA Documentation” (March 2002) “Advance
`Product Specification,” “Rocket I/O Transceiver User
`Guide”, “PPC 405 User Manual” and “PPC 405 Processor
`Block Manual” available from Xilinx, Inc., 2100 Logic
`Drive, San Jose, Calif. 95124.
`In general, FPGA 100 is configured in response to a set of
`configuration data values, which are loaded into a configu
`ration memory array of FPGA 100 (not shown), via con
`figuration interface 102 and configuration logic 101. Con
`figuration interface 102 can be, for example, a Select map
`interface, a JTAG interface, or a master Serial interface. The
`configuration data values are loaded into the configuration
`memory array one frame at a time. Typically, Several frames
`are required to configure a single column of the configura
`tion memory array. Each frame can include anywhere from
`about 2,000 to 20,000 configuration data values, depending
`on the size of FPGA 100.
`In certain cases, it is desirable to reconfigure Select
`portions of FPGA 100. That is, it is desirable to partially
`reconfigure FPGA 100. In the past, partial reconfiguration
`has been accomplished using the following methods.
`In one method, FPGA 100 is configured by loading a first
`full set of configuration data values from a first memory,
`such as a programmable read only memory (PROM). To
`reconfigure FPGA 100, a second full set of configuration
`data values are subsequently loaded into FPGA from a
`Second memory. The Second full Set of configuration data
`values is substantially identical to the first full set of con
`figuration data values, with the exception of the configura
`tion data values required to modify the behavior of the
`targeted portion of FPGA 100.
`The above-described Scheme has Several shortcomings.
`First, it is inefficient to Store the configuration data values in
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`Ex. 1006
`CISCO SYSTEMS, INC. / Page 7 of 13
`
`

`

`3
`modified frame of configuration data values, and (4) over
`Writing the first frame of configuration data values in the
`configuration memory array with the first modified frame of
`configuration data values, thereby partially reconfiguring the
`programmable logic device. The Steps of reading, modifying
`and overwriting are performed under the control of a pro
`ceSSor located on the programmable logic device.
`In one embodiment, the modified Subset of configuration
`data values in the first modified frame are used to control the
`configuration of multi-gigabit transceivers of the program
`mable logic device. For example, the first modified frame of
`configuration data values can be used to adjust the pre
`emphasis and/or differential Voltage characteristics of the
`multi-gigabit transceivers.
`The subset of the configuration data values in the first
`frame can be modified in response to a control Signal
`generated external to the programmable logic device. For
`example, the control Signal may identify the location of the
`programmable logic device on a Serial back plane.
`Alternately, the control Signal may be provided by a user
`performing diagnostic tests on the multi-gigabit transceiv
`CS.
`In a particular embodiment, the processor can Store a
`plurality of different Subsets of configuration data values,
`wherein each of the Subsets represents a different partial
`reconfiguration of the programmable logic device.
`Advantageously, only the configuration data values being
`modified need to be stored.
`In accordance with another embodiment, a programmable
`logic device includes a configuration memory array having
`a plurality of frames for Storing configuration data values,
`and a processor configured to implement a partial recon
`figuration of the programmable logic device by reading a
`frame from the configuration memory array, modifying only
`a Select Subset of the frame, thereby creating a modified
`frame, and writing the modified frame back to the configu
`ration memory array. In one embodiment, the processor
`controls an internal configuration acceSS port coupled
`between the processor and the configuration memory array,
`wherein the internal configuration access port retrieves the
`frame from the configuration memory array under control of
`the processor. One or more block RAMs can be used as a
`data-Side on-chip memory, which Stores the frame and
`modified frame. CLB resources of the programmable logic
`device can be used to implement a direct memory acceSS
`(DMA) engine coupled between the data-Side on-chip
`memory and the internal configuration access port. CLB
`resources can also be used to implement a device control
`register coupled to the DMA engine and the processor,
`wherein the processor controls the DMA engine via the
`register.
`In yet another embodiment, the programmable logic
`device can be configured to implement a processor local bus
`coupled to the processor, and control logic coupled between
`the processor local bus and the internal configuration acceSS
`port. The block RAM can also be coupled to the processor
`local bus. A communications interface coupled to the pro
`ceSSor local bus can receive internal or external configura
`tion control Stimulus.
`The present invention will be more full understood in
`View of the following description and drawings.
`BRIEF DESCRIPTION OF THE DRAWINGS
`FIG. 1 is a block diagram of a conventional FPGA.
`FIG. 2 is a block diagram of an internal configuration
`access port control module in accordance with one embodi
`ment of the present invention.
`
`1O
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`US 6,907,595 B2
`
`4
`FIG. 3 is a block diagram of a device control register used
`in the internal configuration acceSS port control module of
`FIG. 2, in accordance with one embodiment of the present
`invention.
`FIG. 4 is a flow diagram that defines the operation of an
`internal configuration access port control module, in accor
`dance with one embodiment of the present invention.
`FIG. 5 is a block diagram of an FPGA, which is config
`ured to implement partial reconfiguration in accordance with
`another embodiment of the present invention.
`FIG. 6 is a block diagram illustrating an embodiment in
`which the FPGA of FIG. 2 or 5 is used to implement partial
`reconfiguration of another FPGA.
`DETAILED DESCRIPTION
`In accordance with the described embodiments of the
`present invention, a programmable logic device having an
`on-chip processor is configured to implement an efficient
`partial reconfiguration Scheme. In the described
`embodiments, a conventional Virtex-IITM Pro FPGA, avail
`able from Xilinx, Inc., is used to implement the partial
`reconfiguration Scheme. Thus, the present invention is
`described in connection with the use of FPGA 100 (FIG. 1).
`Although the present invention is described in connection
`with the partial reconfiguration of FPGAs, it is understood
`that the partial reconfiguration Scheme of the present inven
`tion may also be implemented using other programmable
`logic devices.
`The partial reconfiguration Scheme is described in con
`nection with the partial reconfiguration of the multi-gigabit
`transceivers (MGTs) 111-114 of FPGA 100. However, it is
`understood that other elements of FPGA 100 can be partially
`reconfigured in accordance with the principles described
`below.
`In the described embodiment, MGTS 111-114 are recon
`figured in order to optimize the operation of these transceiv
`ers. In general, MGTS 111-114 transmit differential signals
`to another chip at rates up to 3.125 Gigabits per Second
`(Gbps). The length of the traces used to transmit these
`differential Signals can vary, depending on the physical
`locations of the FPGA and the receiving chip. For example,
`FPGA 100 may be located on a printed circuit board that is
`plugged into a slot of a Serial back plane. In this case, the
`length of the traces between FPGA 100 and the receiving
`chip is determined by the particular slot into which the
`FPGA has been inserted.
`MGTS 111-114 can be configured to provide different
`levels of pre-emphasis to the transmitted differential Signals.
`In the present embodiment, two configuration memory cells
`in each MGT are used to select one of four levels of signal
`pre-emphasis. More Specifically, two “pre-emphasis' con
`figuration memory cells in each MGT can be set to have a
`value of “00” in order to provide 10 percent pre-emphasis to
`the differential transmit Signals. Similarly, these two pre
`emphasis configuration memory cells can be set to have
`values of “01”, “10” or “11” to provide 20 percent, 25
`percent or 33 percent pre-emphasis, respectively, to the
`differential transmit signals.
`MGTS 111-114 can also be configured to provide different
`differential output Voltages. In the present embodiment,
`three configuration memory cells in each MGT are used to
`select one of five differential output voltages. More
`Specifically, three "differential output voltage' configuration
`memory cells in each MGT can be set to have a value of
`“001” in order to provide an output signal having a differ
`ential voltage of 400 mV. Similarly, these three differential
`
`Ex. 1006
`CISCO SYSTEMS, INC. / Page 8 of 13
`
`

`

`S
`output Voltage configuration memory cells can be set to have
`values of “010”, “011”, “100” or “101” to provide output
`signals having differential voltages of 500 mV, 600 mV, 700
`mV or 800 mV, respectively.
`In the described embodiments, the pre-emphasis and
`differential output Voltage configuration memory cells for
`each MGT are located in the same frame of the configuration
`memory array. Thus, the pre-emphasis and differential out
`put voltage configuration memory cells for MGTS 111, 112,
`113 and 114 are located in four corresponding frames
`Frame 1, Frame 2, Frame 3 and Frame 4 of the con
`figuration memory array.
`In general, the present invention operates as follows.
`FPGA 100 is initially configured in response to a base set of
`configuration data values, which are provided by an external
`15
`memory. In addition to configuring the rest of FPGA 100,
`this base Set of configuration data values configures MGTS
`111-114 in a predetermined base configuration. For
`example, in the base configuration, the pre-emphasis con
`figuration memory cells may be loaded with a value of “00”,
`and the differential output voltage configuration memory
`cells may be loaded with a value of “001'.
`A port identification signal (PORT ID), which is a static
`4-bit code provided on pins of FPGA 100, identifies the
`location of the FPGA in the serial back plane. Thus, the port
`identification signal is representative of the length of the
`transmission channel between the FPGA and a receiving
`chip. The port identification Signal is provided to processor
`103 on FPGA 100. Processor 103 is programmed to store
`different Sets of pre-emphasis and differential output voltage
`configuration data values, wherein each Set corresponds with
`a different port identification signal. Upon receiving the port
`identification signal, processor 103 accesses a corresponding
`Set of pre-emphasis and differential output Voltage configu
`ration data values. Processor 103 also causes a frame of
`configuration data values, which includes the pre-emphasis
`and differential output Voltage configuration data values for
`one of MGTS 111-114, to be read from the configuration
`memory array. Processor 103 then modifies the retrieved
`frame of configuration data values by overwriting the origi
`nal pre-emphasis and differential output Voltage configura
`tion data values with the Set of pre-emphasis and differential
`Voltage configuration data values associated with the port
`identification signal. Processor 103 then causes the modified
`frame of configuration data values to be written back to the
`configuration memory array, thereby modifying the proper
`ties of the associated MGT. The above-described read
`modify-write process is then repeated for the other MGTS on
`FPGA 100.
`Although the present embodiment describes the modifi
`cation of the MGTs in response to the port identification
`number, it is understood that the MGTS can also be tuned for
`other reasons, including characterization, changing System
`environments and diagnostics.
`The manner in which FPGA 100 is used to implement the
`read-modify-write process for partially reconfiguring the
`MGTS will now be described in more detail.
`FIG. 2 is a block diagram of an internal configuration
`access port (ICAP) control module 200 in accordance with
`one embodiment of the present invention. ICAP control
`module 200 enables MGTS 111-114 to be reconfigured using
`a read-modify-write scheme. Each of MGTS 111-114
`includes a corresponding Set of 5 configuration memory
`cells 211-214, which control the pre-emphasis and differ
`ential output voltage settings of the MGT.
`ICAP control module 200 is configured using various
`elements of FPGA 100 (FIG. 1). Thus, ICAP control module
`
`65
`
`45
`
`50
`
`55
`
`60
`
`US 6,907,595 B2
`
`25
`
`35
`
`40
`
`6
`200 includes processor 103 and internal configuration access
`port 104. Internal configuration access port 104, which is a
`hardwired module found in every Virtex-IITM and Virtex
`IITM Pro FPGA, has an interface similar to communications
`interface 102 (FIG. 1). Configuration logic 101 is coupled
`between ICAP 104 and the configuration memory cells
`211-214 of the configuration memory array. The ports of
`internal configuration access port 104 are accessible to the
`user logic of FPGA 100 via the general interconnect. ICAP
`control module 200 also includes a data side on-chip
`memory (DSOCM) 201, which is formed by a block RAM
`121, and an instruction side on-chip memory (ISOCM) 202,
`which is formed by two block RAMs 122-123. As described
`in more detail below, data-side OCM 201 is used to store
`program data, configuration frame data, and bit stream
`commands for read-back and write operations. Instruction
`side OCM 202 stores instruction code necessary to operate
`processor 103.
`ICAP control module 200 also includes a direct memory
`access (DMA) engine 203 and a device control register
`(DCR) 204. These elements 203-204 are formed by CLBs,
`which are configured in response to the base Set of configu
`ration data values. AS described in more detail below,
`commands are issued to DMA engine 203 through device
`control register 204. DMA engine 203 and device control
`register 204 use 2 percent or less of the programmable logic
`of FPGA 100.
`Because only three block RAMs are used to implement
`ICAP control module 200, this module does not consume
`excessive block RAM resources of FPGA 100. Moreover,
`the only CLB resources consumed by ICAP control module
`200 include those necessary to create DMA engine 203 and
`device control register 204. Thus, ICAP control module 200
`consumes minimal programmable logic resources on FPGA
`100.
`FIG. 3 is a block diagram of device control register 204.
`Device control register 204 is a 32-bit register that stores a
`4-bit port identification entry (PORT ID), a 1-bit write
`enable entry (WR), a 1-bit read-back enable entry (RB), a
`1-bit instruction done flag (DONE), a 1-bit reconfiguration
`done flag ((CONFIG DONE)), an 11-bit start address
`(START ADDR), an 11-bit end address (END ADDR),
`and two unused bits (not shown).
`FIG. 4 is a flow diagram that defines the operation of
`ICAP control module 200, in accordance with one embodi
`ment of the present invention. AS will become apparent in
`view of the following disclosure (FIG. 5), this flow diagram
`is equally applicable to other embodiments of present inven
`tion. Initially, FPGA 100 is powered-up, and standard con
`figuration is performed by loading a base Set of configura
`tion data values in a manner that is known in the art (Step
`401). An internal or external stimulus, such as the port
`identification value (PORT ID) provided on the pins of
`FPGA 100, is loaded into the PORT ID field of device
`control register 204. Processor 103 reads the PORT ID
`from device control register 204 (Step 402). In response to
`the PORT ID value read from device control register 204,
`processor 103 initiates the partial reconfiguration of MGTS
`111-114 (Step 403). This partial reconfiguration is accom
`plished as follows.
`First, processor 103 modifies a read-back bitstream
`header in data-side OCM 201 to identify an address of a
`frame (e.g., Frame 1) of the configuration memory array
`that includes the configuration data values for a Subset of the
`MGTs (e.g., MGT111) (Step 411). Then, processor 103 sets
`the write enable entry (WR) of device control register 204 to
`
`Ex. 1006
`CISCO SYSTEMS, INC. / Page 9 of 13
`
`

`

`US 6,907,595 B2
`
`15
`
`25
`
`7
`a logic “1” value, clears the done flag (DONE) and the
`reconfiguration done flag (CONFIG DONE) in device con
`trol register 204, and Sets the Start and end addresses
`(START ADDR and END ADDR) in device control reg
`ister 204. The start address (START ADDR)) is set to
`identify the address in data-side OCM201 where the read
`back bitstream header begins, and the end address (END
`ADDR) is set to identify the address in data-side OCM 201
`where the read-back bitstream header ends. Upon detecting
`the logic “1” write enable entry (WR) in device control
`register 204, DMA engine 203 routes the read-back bit
`stream header stored in data-side OCM 201 to internal
`configuration access port 104 (Step 412). DMA engine 203
`then sets the DONE flag to a logic “1” state.
`Internal configuration access port 104 initiates a configu
`ration frame read-back operation in response to the received
`read-back bitstream header commands. As a result, a frame
`that includes the configuration data values 211 is retrieved
`from the configuration memory array, and provided to
`internal configuration access port 104.
`In response to the logic “1” DONE flag, processor 103
`resets the write enable entry (WR) to a logic low value, sets
`the read-back entry (RB) to a logic “1” value, resets the
`instruction done flag (DONE) to a logic “0” value, and sets
`the start and end addresses (START ADDR and END
`ADDR) in device control register 204. The start address and
`the end address (START ADDR and END ADDR) iden
`tify a block in data-side OCM201 where the retrieved frame
`is to be written. Upon detecting the logic “1” read-back entry
`(RB) in device control register 204, DMA engine 203 routes
`the retrieved frame from internal configuration access port
`104 to the location in data-side OCM 201 defined by
`START ADDR and END ADDR (Step 413). DMA
`engine 203 then sets the DONE flag to a logic “1” value.
`35
`Upon detecting the logic “1” DONE flag, processor 103
`modifies Select configuration bits (e.g., configuration bit set
`211) stored in data-side OCM 201, by overwriting these
`configuration bits with new configuration bits. These new
`configuration bits are Selected by processor 103 in response
`to the PORT ID value retrieved from device control reg
`ister 204 (Step 414). As described in more detail below,
`these new configuration bits can be Selected in response to
`other internal or external configuration control Stimulus in
`other embodiments. These new configuration bits define the
`new attributes of the associated MGT (e.g., MGT 111).
`Processor 103 then resets the DONE flag to a logic “0”
`value, resets the read-back entry (RB) to a logic “0” value,
`and sets the write enable entry (WR) to a logic “1” value in
`device control register 204. Processor 103 also sets the start
`and end addresses (START ADDR and END ADDR) in
`device control register 204. The start address (START
`ADDR) is set to identify the address in data-side OCM 201
`where the write bitstream header begins, and the end address
`(END ADDR) is set to identify the address in data-side
`OCM 201 where the write bitstream header ends. Upon
`detecting the logic “1” write enable entry (WR) in device
`control register 204, DMA engine 203 routes the write
`bitstream header stored in data-side OCM 201 to internal
`configuration access port 104, thereby initiating a write
`60
`access to the configuration memory array (Step 415). DMA
`engine 203 then sets the DONE flag to a logic “1” state.
`Upon detecting the logic “1” DONE flag, processor 103
`resets the DONE flag to a logic “0” state, sets the write
`enable signal (WR) to a logic “1” value, and sets the start
`and end addresses (START ADDR and END ADDR) in
`device control register 204. The start address (START
`
`8
`ADDR) is set to identify the address in data-side OCM 201
`where the modified frame begins, and the end address
`(END ADDR) is set to identify the address in data-side
`OCM 201 where the modified frame ends. Upon detecting
`the logic “1” write enable entry (WR) in device control
`register 204, DMA engine 203 routes the modified frame
`stored in data-side OCM201 to internal configuration access
`port 104. In response, internal configuration acceSS port 104
`writes the modified frame of configuration data values back
`to the configuration memory array, Such that this modified
`frame of configuration data values overwrites the previously
`retrieved frame of configuration data values (S

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