USPatent applicationPatented

Arbitration circuitry for asynchronous memory accesses

Granted 2 Dec 2014 · no office action yet

Current assignee: LSI (Broadcom) · originally Broadcom

Law firm: Law firm · Log in to unlock

Attorney: Attorney · Log in to unlock

Inventors: Srinivasa Rao Kothamasu, Deepak Ashok Naik, Sathappan Palaniappan · Examiner: Tanh Nguyen · AU 2118 · TC 2100

Life of the application

9 dated events
⤢ drag to zoom20122014201620182020202220242026202820302032ProsecutionOwnershipTerm & fees
ProsecutionOwnershipTerm & feeshover for detail · click to open

Abstract

A data processing system comprises a processor operating according to a first clock signal and a memory operating according to a second clock signal. The data processing system causes the processor to read data from the memory at least in part in response to a signal from first synchronizing circuitry and a signal from second synchronizing circuitry. The first synchronizing circuitry comprises a first storage element that samples a signal synchronized to the second clock signal in combination with a second storage element that samples an output of the first storage element. The first and second storage elements are triggered by inverse transitions in the first clock signal. The second synchronizing circuitry comprises third and fourth storage elements configured in a similar manner, except that they sample a signal synchronized to the first clock signal and are triggered by inverse transitions in the second clock signal.

Description

7 parts
›BACKGROUND

In many modern integrated circuits such as system-on-chips (SOCs), multiple clocks have become the norm. As a result, arbitration circuitry for handling clock domain crossings (CDCs) has become an integral part of many designs. Such arbitration circuitry may, for example, allow two processors operating in asynchronous clock domains to access a common single-ported memory. However, because the arbitration circuitry ultimately affects memory access latencies of both masters, its switching speed tends to be a critical design parameter.

›SUMMARY

Embodiments of the invention provide apparatus and methods related to systems wherein a processor operating in one clock domain is operative to access a memory operating in a different clock domain. To accomplish this, embodiments of the invention utilize unique arbitration circuit designs. These arbitration circuit designs mitigate race conditions and signal metastability issues associated with multiple clock domains, while, at the same time, providing superior memory access latency characteristics, among other benefits.

In accordance with an embodiment of the invention, a data processing system comprises a processor operating in a first clock domain with a first clock signal, a memory operating in a second clock domain with a second clock signal, a storage device, first synchronization circuitry, and second synchronization circuitry. The first synchronization circuitry comprises a first storage element and a second storage element. The first storage element samples a signal emanating from the second clock domain, and the second storage element samples an output of the first storage element. In doing so, the first and second storage elements are triggered by inverse transitions in the first clock signal. The second synchronization circuitry, in turn, comprises a third storage element and a fourth storage element, with the third storage element sampling a signal emanating from the first clock domain and the fourth storage element sampling an output of the third storage element. Here, the third and fourth storage elements are triggered by inverse transitions in the second clock signal. Configured in this manner, the data processing system is operative to cause the processor to transfer a memory address to the storage device, to cause the memory address to be transferred from the storage device to the memory at least in part in response to a signal from the second synchronization circuitry, and to cause data associated with the memory address in the memory to be transferred to the processor at least in part in response to a signal from the first synchronization circuitry.

In accordance with another embodiment of the invention, arbitration circuitry adapted for use with a data processing system including a processor operating in a first clock domain with a first clock signal and a memory operating in a second clock domain with a second clock signal comprises a storage device, first synchronization circuitry, and second synchronization circuitry. The first synchronization circuitry comprises a first storage element and a second storage element. The first storage element samples a signal emanating from the second clock domain, and the second storage element samples an output of the first storage element. In doing so, the first and second storage elements are triggered by inverse transitions in the first clock signal. The second synchronization circuitry, in turn, comprises a third storage element and a fourth storage element, with the third storage element sampling a signal emanating from the first clock domain and the fourth storage element sampling an output of the third storage element. Here, the third and fourth storage elements are triggered by inverse transitions in the second clock signal. Configured in this manner, the data processing system is operative to cause the processor to transfer a memory address to the storage device, to cause the memory address to be transferred from the storage device to the memory at least in part in response to a signal from the second synchronization circuitry, and to cause data associated with the memory address in the memory to be transferred to the processor at least in part in response to a signal from the first synchronization circuitry.

In accordance with yet another embodiment of the invention, a method allowing a processor operating in a first clock domain with a first clock signal to read data stored in a memory operating in a second clock domain with a second clock signal comprises causing the processor to transfer a memory address to the storage device, causing the memory address to be transferred from the storage device to the memory at least in part in response to a signal from second synchronization circuitry, and causing data associated with the memory address in the memory to be transferred to the processor at least in part in response to a signal from first synchronization circuitry. The first synchronization circuitry comprises a first storage element and a second storage element, the first storage element sampling a signal emanating from the second clock domain, and the second storage element sampling an output of the first storage element. The first and second storage elements are triggered by inverse transitions in the first clock signal. The second synchronization circuitry, in turn, comprises a third storage element and a fourth storage element, the third storage element sampling a signal emanating from the first clock domain, and the fourth storage element sampling an output of the third storage element. Here, the third and fourth storage elements are triggered by inverse transitions in the second clock signal.

Embodiments of the present invention will become apparent from the following description of embodiments thereof, which are to be read in connection with the accompanying drawings.

›BRIEF DESCRIPTION OF THE DRAWINGS

The following drawings are presented by way of example only and without limitation, wherein like reference numerals (when used) indicate corresponding elements throughout the several views, and wherein:

FIG. 1 shows a block diagram of at least a portion of an exemplary data processing system, in accordance with an illustrative embodiment of the invention;

FIG. 2 shows a schematic diagram of at least a portion of the FIG. 1 data processing system, in accordance with an illustrative embodiment of the invention; and

FIG. 3 shows a timing diagram for read accesses within the FIG. 1 data processing system, in accordance with an illustrative embodiment of the invention.

It is to be appreciated that elements in the figures are illustrated for simplicity and clarity. Common but well-understood elements that may be useful or necessary in a commercially feasible embodiment may not be shown in order to facilitate a less hindered view of the illustrated embodiments.

›DETAILED DESCRIPTION OF EMBODIMENTS · 1 of 4

Embodiments of the invention will be described herein in the context of illustrative data processing systems. It should be understood, however, that embodiments falling within the scope of the appended claims are not limited to these or any other particular circuit arrangements. It will become apparent to those skilled in the art, given the teachings herein, that numerous modifications can be made to the embodiments shown that are within the scope of the claimed invention. That is, no limitations with respect to the specific embodiments described herein are intended or should be inferred.

FIG. 1 shows a block diagram of at least a portion of an exemplary data processing system 100 in accordance with an illustrative embodiment of the invention. As indicated in the figure, the exemplary data processing system 100 comprises a first processor, a second processor, a memory, arbitration circuitry 110 , a first multiplexer (MUX 1 ), a second multiplexer (MUX 2 ), a register, a memory latch, as well as several data buses and control signal lines. The first processor resides within a first clock domain (A Clock Domain). The second processor, the memory, the first multiplexer, the second multiplexer, the register, and the memory latch reside within a second clock domain (B Clock Domain). The respective clocks of the two clock domains may have different characteristics from each other, for example, frequency, phase, synchronicity, etc.

In the illustrative embodiment shown in FIG. 1 , the first processor and the second processor are each capable of performing logic, storage, and/or control functions in association with the memory, as might be the case in an SoC integrated circuit. The memory comprises a single-ported memory such as, but not limited to, a single-ported static random access memory (SPSRAM).

Although running in different clock domains, both the first processor and the second processor are operative to access the memory. Arbitration is thereby required to avoid race conditions. As is known by those skilled in the art, a race condition (or race hazard) is a flaw in an electronic system or process which occurs when an output or result of the system or process is unexpectedly dependent on a sequence or timing of other events. Still referring to FIG. 1 , memory access data A_OUT emanating from the first processor is routed to the arbitration circuitry 110 . The memory access data A_OUT comprises, for example, one or more of memory address data (A_ADDR), write data (A_DATAOUT), a first processor enablement signal (A_EN), and the like, depending on whether the first processor is performing a read access or a write access. The arbitration circuitry 110 , in turn, acts to pass the memory access data A_OUT from the A clock domain to the B clock domain.

Once synchronized to the B clock domain, the memory access data A_OUT is passed to the first multiplexer, where a control signal, sel_src, directs the first multiplexer to pass the memory access data A_OUT to the memory. The control signal sel_src is generated by the arbitration circuitry 110 . If the first processor is performing a read access, read data A_DATAIN from the memory is then routed to the first processor through the memory latch. The memory latch is enabled by a control signal, latch_en, also generated in the arbitration circuitry 110 .

In the embodiment illustrated in FIG. 1 , the second processor, in contrast to the first processor, is already within the same clock domain as the memory and its memory accesses need not cross a clock domain boundary. Memory access data B_OUT emanating from the second processor is split into two paths: one running directly to a first input of the second multiplexer, and the other running to the register and then to a second input of the second multiplexer. The output of the second multiplexer terminates in the first multiplexer and is selected by the control signal latch_en. By temporarily storing the memory access data B_OUT, the register allows the memory access data B_OUT to be maintained at a first input of the first multiplexer during those periods when the first processor is actively performing memory accesses. Ultimately, the control signal sel_src is operative to cause the first multiplexer to transmit the memory access data B_OUT to the memory. If the second processor is performing a read access, read data B_DATAIN is returned directly to the second processor.

During the above-described functions and, again, to avoid race conditions, two control signals, namely, a control signal a_wait and a control signal b_wait, act to coordinate memory accesses by the first processor and the second processor, respectively. When asserted (e.g., logic high or “1” level), the control signal a_wait acts to inhibit the first processor from performing memory accesses. Likewise, when asserted (e.g., logic high or “1” level), the control signal b_wait acts to halt the second processor from attempting to access the memory. Both control signals a_wait and b_wait are also generated in the arbitration circuitry 110 .

With reference now to FIG. 2 , a schematic diagram of at least a portion of the data processing system 100 is shown, in accordance with an illustrative embodiment of the invention. In this schematic diagram, at least some elements of the arbitration circuitry 110 are shown in greater detail. Starting at the left of the arbitration circuitry 110 and within the A clock domain, one finds an AND gate A 0 with a control signal wr_push_A and a control signal wr_rdy_A serving as inputs. The control signal wr_rdy_A also passes through an inverter I 0 , which generates the control signal a_wait. The output of the AND gate A 0 forms a control signal wr_en, which is passed to a transaction buffer (labeled as “TB” in the figures), and is also supplied to a first input of an exclusive-OR (XOR) gate A 1 .

The output of the XOR gate A 1 is sampled by a flip-flop AR 0 . The flip-flop AR 0 is of a “D-type,” also sometimes called a “data” or “delay” flip-flop. A D-type flip-flop stores the state of its data input (D) on each rising or falling edge of a clock signal supplied thereto. The flip-flop's stored state and its digital complement, in turn, are made available at the flip-flop's Q and Q-bar outputs, respectively. In this particular case, the flip-flop AR 0 is triggered by each rising edge of a first clock signal, ACLK, for the A clock domain. Clock signal ACLK is supplied externally to the arbitration circuitry 110 , as shown. In an alternative embodiment, ACLK may be generated within the arbitration circuitry 110 (e.g., by a clock generator, not explicitly shown). The output (Q) of the flip-flop AR 0 generates a control signal wr_addr.

›DETAILED DESCRIPTION OF EMBODIMENTS · 2 of 4

The control signal wr_addr is fed back to a second input of the XOR gate A 1 and is also distributed to the transaction buffer, to a first input of an exclusive-NOR (XNOR) gate A 2 , and to the data input (D) of a D-type flip-flop BS 0 . In being transmitted to the flip-flop BS 0 , the control signal wr_addr is passed into (i.e., crosses) the B clock domain. The flip-flop BS 0 is operative to sample the control signal wr_addr on each rising edge of a second clock signal, BCLK, for the B clock domain. The clock signal BCLK is supplied externally to the arbitration circuitry 110 , as shown. In an alternative embodiment, BCLK may be generated within the arbitration circuitry 110 (e.g., by a clock generator, not explicitly shown). At the same time, another D-type flip-flop, BS 1 , samples the output of the flip-flop BS 0 on each falling edge of the clock signal BCLK. The flip-flops BS 0 and BS 1 are thereby triggered by inverse transitions in the clock signal BCLK and collectively form a positive-negative edge-triggered two-stage scan synchronizer. Configured in this manner, the flip-flops BS 0 and BS 1 act to sample an asynchronous control signal (i.e., the control signal wr_addr) and output a version of that control signal that has transitions synchronized to their local domain clock signal (i.e., the clock signal BCLK). The output (Q) of the flip-flop BS 1 is supplied to a first input of an XOR gate B 0 . The output of the XOR gate B 0 generates a control signal rd_rdy_B. The control signal rd_rdy_B also propagates as the control signal sel_src that controls the first multiplexer, as well as the control signal b_wait.

The control signal rd_rdy_B is supplied to a first input of an XOR gate B 1 as well as to a data input (D) of a D-type flip-flop BR 1 . The flip-flop BR 1 samples the control signal rd_rdy_B on each rising edge of the clock signal BCLK. The output (Q) of the flip-flop BR 1 generates the control signal latch_en that acts to enable the memory latch and to control the output of the second multiplexer. The output of the XOR gate B 1 , in contrast, is presented to another D-type flip-flop BR 0 . The flip-flop BR 0 is triggered on each rising edge of the clock signal BCLK. The output (Q) of the flip-flop BR 0 forms a control signal rd_addr, which is fed back to a second input of the XOR gate B 1 , and is also supplied to a second input of the XOR gate B 0 . The control signal rd_addr is also supplied to the transaction buffer and to the data input (D) of a D-type flip-flop AS 0 in the A clock domain.

The flip-flop AS 0 samples the control signal rd_addr on each rising edge of the clock signal ACLK. Another D-type flip-flop AS 1 , in turn, samples the output (Q) of the flip-flop AS 0 on each falling edge of the clock signal ACLK. The flip-flops AS 0 and AS 1 are therefore triggered by inverse clock transitions and collectively act to synchronize transitions of the control signal rd_addr to the clock signal ACLK, thereby effectively forming a positive-negative edge-triggered two-stage scan synchronizer. The output (Q) of the flip-flop AS 1 is fed to a second input of the XNOR gate A 2 , which acts to generate the control signal wr_rdy_A.

In the particular non-limiting illustrative embodiment shown in FIG. 2 , the transaction buffer is operative as a storage device with two addressable locations, a first addressable location and a second addressable location. The transaction buffer may comprise, for example, a first-in-first-out (FIFO) register. Each of the addressable locations within the transaction buffer has a width sufficient to store the memory access data A_OUT. Writing to the transaction buffer via an input (d) is enabled by assertion of the control signal wr_en (e.g., high logic level). When the control signal wr_en is low (i.e., de-asserted), data stored in the transaction buffer is made available at its output (q). The addressable location to which data is written within the transaction buffer is selected by the control signal wr_addr, which may be a write address. The addressable location from which data is made available is determined by the control signal rd_addr, which may be a read address. The control signals wr_addr and rd_addr thereby act as address pointers for writing to and reading from, respectively, the transaction buffer. Because there are only two addressable locations within the transaction buffer in this embodiment, the control signals wr_addr and rd_addr each need only consist of a single respective bit of data. For the selection of more than two addressable locations in the transaction buffer, the control signals wr_addr and rd_addr would comprise a plurality of bits.

The memory latch in the present illustrative embodiment is a latch of sufficient width to allow read data A_DATAIN to be stored when the memory latch is enabled. Here, the memory latch is enabled when the control signal latch_en is asserted high (i.e., the latch is a “+VE” latch). With the memory latch enabled, the memory latch becomes largely transparent to the first processor because the memory latch's output (LATCH_Q) matches its input. Accordingly, with the memory latch enabled, the first processor is operative to read the read data A_DATAIN from the memory.

Once so configured, the data processing system 100 allows the first processor and the second processor to access the memory with minimal access latency even if the A clock domain and the B clock domain are operated at highly varied frequencies that are asynchronous with respect to one another. By way of example only and without loss of generality, FIG. 3 shows a timing diagram for read accesses by the first processor, in accordance with an illustrative embodiment of the invention. In this particular non-limiting embodiment, the clock signal ACLK operates at a higher frequency than the clock signal BCLK. Initially, at clock cycle CY 1 (where, for this description, “CYx” corresponds to a cycle number, x, of the clock signal ACLK, where x is an integer), the control signal wr_rdy_A is high to accept a new transaction from the first processor, and the remainder of the control signals are low. In clock cycle CY 2 , a read access is initiated by the first processor. The first processor generates the appropriate memory access data A_OUT, and the control signal wr_push_A is asserted high to indicate a transaction is available from the first processor.

›DETAILED DESCRIPTION OF EMBODIMENTS · 3 of 4

The combination of the control signal wr_push_A and the control signal wr_rdy_A both being high causes the control signal wr_en to also transition high. The assertion of the control signal wr_en causes the memory access data A_OUT to be transferred (i.e., pushed) into the transaction buffer. Because the control signal wr_addr is low when the push occurs, the memory access data A_OUT is written into the first addressable location in the transaction buffer. At the beginning of the next clock cycle CY 3 , the control signals wr_push_A, wr_rdy_A, and wr_en transition low, and the control signal wr_addr and a_wait transition high to indicate a transaction from the first processor is being processed. With the control signal wr_en low and the control signal rd_addr low (pointing to the first addressable location in the transaction buffer), the access data A_OUT is made available at the transaction buffer's output (q). This output (q) does not cause any metastability issues in the B clock domain because the control signal sel_src defaults to having the first multiplexer output the access data B_OUT (i.e., the control signal sel_src is low at this stage in the process). As a result, the memory does not see the output (q) from the transaction buffer until a later time.

The transition in the control signal wr_addr is passed to the B clock domain through the flip-flops BS 0 and BS 1 , which act to synchronize it to the clock signal BCLK. On the next rising edge in the clock signal BCLK, which occurs near clock cycle CY 6 , the change in the control signal wr_addr is sampled by the flip-flop BS 0 . On the next falling edge of the clock signal BCLK, which occurs about half way through clock cycle CY 8 , the change in the control signal wr_addr is sampled by the flip-flop BS 1 . In response, the control signals sel_src and rd_rdy_B transition high. The control signals sel_src and rd_rdy_B are thereby generated at least in part in response to the control signal wr_addr, but are synchronized to the clock signal BCLK. The rise in the control signal sel_src configures the first multiplexer to output the data available from the transaction buffer. In this manner, the memory access data A_OUT is transferred into the memory in clock cycles CY 8 -CY 10 .

The control signals sel_src and rd_rdy_B remain high until the next rising edge in the clock signal BCLK near clock cycle CY 11 , at which point they transition low and the control signals latch_en and rd_addr transition high. The high control signal latch_en causes the memory latch to become enabled and this condition is maintained for one full cycle of the clock signal BCLK to allow the memory latch to capture the output of the memory. The memory latch thereby becomes transparent to the first processor. Concurrently, the transition in the control signal rd_addr is passed to the A clock domain in a manner similar to the way the transition in the control signal wr_addr was passed to the B clock domain. More particularly, the transition in the control signal rd_addr is sampled by the flip-flop AS 0 on the next rising edge of the clock signal ACLK at the beginning of clock cycle CY 12 . On the next falling edge of the clock signal ACLK, half way through the clock cycle CY 12 , the change in rd_addr is sampled by the flip-flop AS 1 . The transition in the output of the flip-flop AS 1 causes the control signals wr_rdy_A to transition high and signal a_wait to transition low for half of a cycle of the clock signal ACLK. Accordingly, the control signals wr_rdy_A and a_wait are generated in response to the control signal rd_addr, but are synchronized to the clock signal ACLK. The first processor is thereby signaled to read the read data A_DATAOUT from the memory through the memory latch. Moreover, if wr_push_A remains asserted high when the control signal wr_rdy_A transitions high (as is the case in FIG. 3 ), the control signal wr_en also transitions high in the second half of the clock cycle CY 12 , allowing the first processor to initiate another memory access and the access sequence to repeat. However, in the next access sequence, the memory access data is stored in and read from the second addressable location in the transaction buffer rather than from the first addressable location, causing subsequent transactions to be stored in an alternating fashion between the first and second addressable locations.

In this manner, the first processor is operative to perform a read access in about one cycle of the clock signal ACLK and about two cycles of the clock signal BCLK. Such memory access times are very short when compared to other known designs that include a processor in one clock domain accessing a memory in a different clock domain. For comparison, other designs may require two cycles of the clock signal ACLK and four cycles of the clock signal BCLK to perform a read access. Moreover, memory accesses by the second processor in the present embodiment may be completed in only one cycle of the clock signal BCLK while the control signal b_wait is low. Accordingly, embodiments in accordance with aspects of the present invention are capable of providing higher processor bandwidth.

While read memory accesses by the first processor were described above with reference to FIG. 3 , write memory accesses are performed in a similar manner. In the case of a write memory access, of course, no stored data in the memory is transmitted back to the first processor.

As discussed above, embodiments of the invention may be implemented in an integrated circuit. Once understood from the teachings herein, many, if not all, of the digital elements described in FIGS. 1 and 2 may, for example, be implemented utilizing elements from standard cell libraries. In forming integrated circuits, identical die are typically fabricated in a repeated pattern on a surface of a semiconductor wafer. Each die includes a device described herein, and may include other structures and/or circuits. The individual die are cut or diced from the wafer, then packaged as an integrated circuit. One skilled in the art would know how to dice wafers and package die to produce integrated circuits.

›DETAILED DESCRIPTION OF EMBODIMENTS · 4 of 4

An integrated circuit in accordance with embodiments of the invention can be employed in essentially any application and/or electronic system in which a memory device (e.g., standalone or embedded) is accessed by respective processors residing in different clock domains. Suitable systems for implementing techniques of the invention may include, but are not limited, to clock distribution and recovery systems, personal computers, communication systems, electronic instruments (e.g., automated test equipment (ATE)), interface networks, high-speed memory interfaces (e.g., DDR3, DDR4), etc. Systems incorporating such integrated circuits are also considered part of the claimed invention.

It should again be emphasized that the above-described embodiments of the invention are intended to be illustrative only. Other embodiments may use different types and arrangements of elements for implementing the described functionality. In another embodiment, a skilled artisan will recognize that many of the logic gates described with reference to FIGS. 1 and 2 may be replaced by one or more different respective logic gates without affecting the overall functionality of the data processing system. More specifically, a skilled artisan will recognize that an AND functionality may be implemented by one or more NAND gates, NOR gates, and/or XOR gates, or any suitable combination thereof. In yet another embodiment, a person of ordinary skill in the electronic arts will recognize that, where a particular element in the above-described embodiments is triggered by a rising edge of a clock signal or enabled by a high-level control signal, an equally suitable alternative embodiment might have the same element triggered by a falling edge of the clock signal or enabled by a low-level control signal with only minor design changes thereto (e.g., by adding an inversion in a given signal path). In even another embodiment, one skilled in the art will recognize that embodiments of the invention may be implemented with a transaction buffer comprising only a single storage location (instead of two addressable locations as described above). In yet another example, an application having more than two clock domains might have a processor operating in one of the clock domains that is operative to access memories in more than one of the other clock domains. More generally, in the application having more than two clock domains, a processor operating in any one of the clock domains can be operative to access a memory in any of the other clock domains. These numerous alternative embodiments within the scope of the appended claims will be apparent to one skilled in the art given the teachings herein.

Moreover, the features disclosed herein may be replaced by alternative features serving the same, equivalent, or similar purposes, unless expressly stated otherwise. Thus, unless expressly stated otherwise, each feature disclosed is one example only of a generic series of equivalent or similar features.

Claims as granted

20 claims

Log in to read the claims of this application.

Log in to unlock

Classifications

5 codes
IPC · International Patent Classification
Section G — Physics
  • G06F13/42
  • G06F1/12
Section H — Electricity
  • H04L7/00
USPC · US Patent Classification
713/400713/401

Claim changes

Soon
Coming soonHow the claims changed between publication and grant

See which claims were amended, added or cancelled during examination, with every added and removed word marked.

AmendedAddedCancelledUnchanged

The published claims of this application are not paired with the granted ones in what we hold.

File wrapper

⤢ drag to zoomJan 2012Jul 2012Jan 2013Jul 2013Jan 2014Jul 2014Jan 2015USPTOApplicantNotice of allowance
USPTOApplicanthover for detail · click to open
Pendency
2.9 y
1,076 days filing → grant
Office actions
0
none on record
Examiner
Tanh Nguyen
art unit 2118 · TC 2100
Citations: 13 back · 1 forward

See the full prosecution history — every USPTO and applicant action on this file, in order.

Log in to unlock

Documents

Log in to open the documents of this file: the application as filed, every office action and response, the notice of allowance.

Log in to unlock

Chain of title

⤢ drag to zoom20122014201620182020202220242026202820302032Owner 1Owner 2liens, releases & corrections
TitleLienReleasehover for detail · click to open

See the full assignment history — every owner this patent has passed through, with recordation dates and reel/frame numbers.

Log in to unlock