Nonvolatile logic memory for computing module reconfiguration

Information

  • Patent Grant
  • 11914545
  • Patent Number
    11,914,545
  • Date Filed
    Wednesday, December 29, 2021
    2 years ago
  • Date Issued
    Tuesday, February 27, 2024
    9 months ago
Abstract
Configuration states for a computing device and/or associated peripherals (“profiles”) are stored in one or more non-volatile logic (“NVL”) arrays. Using the non-volatile sub-system for the computing device, triggers for reconfiguration of the respective device or peripherals are provided to an NVL array controller, which controls provision of the new profile(s) for the respective device or peripherals over a dedicated bus to a configuration register that stores the active profiles for the device and associated peripherals.
Description
TECHNICAL FIELD

This invention generally relates to processing devices having nonvolatile memory and, in particular, to using nonvolatile logic arrays for configuration of a computing device.


BACKGROUND

Processing devices such as microcontroller units (“MCUs”) typically have a limited number of modules or peripherals to be controlled by the given MCU. For example, one such device may provide 3 direct memory access (“DMA”) channels, 3 enhanced universal serial communication interface (“eUSCI”) instances, 1 analog to digital converter (“ADC”) instance, and the like. If an application requires more than the instances available on the given MCU, the user has to reconfigure the instances manually by using the device's central processing unit (“CPU”) or direct memory access module (“DMAM”), which costs software runtime and therefore increases the energy consumption of the device. Otherwise, the user might not be able to realize the application on the given device, for example, if the application is performance and/or energy sensitive. Additionally, different peripherals or device modules may need different configurations depending on the computing device's state. Providing and updating device and peripheral configurations, however, consumes excess time, energy, computing power, and bus traffic to receive, interpret, and execute reconfiguration of the peripherals.


SUMMARY

Generally speaking, pursuant to these various embodiments, configuration states for a computing device and/or associated peripherals (where such configuration states are also referred to as “profiles”) are stored in one or more non-volatile logic (“NVL”) arrays. Using the non-volatile sub-system for the computing device, triggers for reconfiguration of the respective device or peripherals are provided to an NVL array controller, which controls provision of the new profile(s) for the respective device or peripherals over a dedicated bus to a configuration register that stores the active profiles for the device and associated peripherals.


So configured, the profiles are stored in non-volatile logic arrays so that they are safely stored through power loss events. Moreover, by using a dedicated bus, the transfer of the profiles from the NVL arrays does not congest the system bus. Also, the profile transfer can then be effected using an NVL sub-system clock, which typically operates much faster than the computing device's system clock, thereby effecting transfer of the profiles in a much faster time period. The transfer of the profiles can be triggered by software or without any software interception by hardware triggers. These and other benefits may become clearer upon making a thorough review and study of the following detailed description.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is a block diagram of a computing device as configured in accordance with various embodiments of the invention.



FIG. 2 is a map of one example of data stored in NVL arrays in accordance with various embodiments of the invention.



FIG. 3 is a map of another example of data stored in NVL arrays in accordance with various embodiments of the invention.



FIG. 4 includes two charts showing association of triggers with particular signals and profiles in accordance with various embodiments of the invention.



FIG. 5 is a timing diagram illustrating transfer of profile data using an NVL clock faster than the computing device's clock in accordance with various embodiments of the invention.



FIG. 6 is a flow chart illustrating a method of operation in accordance with various embodiments of the invention.



FIG. 7 is a flow chart illustrating a further method of operation in accordance with various embodiments of the invention.





Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions and/or relative positioning of some of the elements in the figures may be exaggerated relative to other elements to help to improve understanding of various embodiments of the present invention. Also, common but well-understood elements that are useful or necessary in a commercially feasible embodiment are often not depicted in order to facilitate a less obstructed view of these various embodiments. It will further be appreciated that certain actions and/or steps may be described or depicted in a particular order of occurrence while those skilled in the art will understand that such specificity with respect to sequence is not actually required. It will also be understood that the terms and expressions used herein have the ordinary technical meaning as is accorded to such terms and expressions by persons skilled in the technical field as set forth above except where different specific meanings have otherwise been set forth herein.


DETAILED DESCRIPTION

Referring now to the drawings, and in particular to FIG. 1, an illustrative example device that is compatible with many of these teachings will now be presented. A computing device 100 includes configuration registers 105 configured to store configuration profile data for currently active settings of the computing device 100 or peripherals 115 associated with the computing device 100. These currently active settings are available via connection between the configuration registers 105 over a system bus 120. One or more non-volatile logic arrays 130 are configured to store a plurality of configuration profiles 131, 132, 133 for individual settings of the computing device 100 or peripherals 115 associated with the computing device 100. The NVL arrays 130 themselves may be a ferro-magnetic random access memory (“FRAM”) based state retention technology that combines characteristics of FRAM memory with current data retention methods or other technologies with similar features such as spin-torque magnetoresistive random access memory (“MRAM”) or resistive access memory (“RRAM”). Such memory technology is known in the art and requires no further description; see, for example, regarding FRAM U.S. Patent Application Publication No. 2014/0075088, which is incorporated herein by reference in its entirety.


An example data map for NVL array storage of configuration profiles is illustrated in FIG. 2. In the first column 205, profile numbers are stored to identify each profile. The array row is identified in the second column 210. Each row stores the configuration data for a given profile as indicated in the third column 215. In this example, Row 0 of a first NVL array 230 stores trigger information to allow the system to maintain the association of triggers to particular configuration changes. Rows 1, 2, and 3 individually store different configuration settings for the same Module 1 (i.e., a particular peripheral or computing device module). Rows 4 and 5 individually store different configuration settings for a different Module 2 (i.e., a different particular peripheral or computing device module). Configuration settings for further modules are stored in the further rows of the first NVL array 230 and in a second NVL array 232 and potentially other NVL arrays.



FIG. 3 illustrates another example data map for NVL array storage of configuration profiles. In this example, the NVL arrays 130 are also configured to store computing device or peripheral identifier information for individual ones of the plurality of configuration profiles. Here each profile is stored in its own row of the array. Like the example of FIG. 2, the first column 305 includes profile numbers stored to identify each profile. Here each profile is stored in its own row of the array. The array row is identified in the second column 310. Each row stores the configuration data for a given profile as indicated in the third column 315. In this example, rows 1, 2, . . . M individually store the module identifier information and the different configuration settings for the module (i.e., a particular peripheral or computing device module) identified by the module identifier information. Further configuration settings for different or the same modules are stored in the further rows of the first NVL array 330 and in a second NVL array 332 and potentially other NVL arrays.


A non-volatile logic array controller 150 is configured to control the one or more NVL arrays 130 and receive a trigger 160. The computing device 100 is configured to generate the trigger 160 as either or both of a software trigger or a hardware trigger. Example hardware triggers include resets, internal or external interrupts, or any other status or trigger event. Example software triggers include CPU addressable computing device or peripheral register bits with the purpose to initiate a reconfiguration of one or more modules. In response to receiving the trigger, the NVL array controller 150 controls transfer of at least one of the plurality of configuration profiles to associated ones of the configuration registers 105.


In one example implementation, the NVL controller 150 is configured to receive a plurality of different triggers. Individual ones of the plurality of triggers effects transfer of different ones of the plurality of configuration profiles to associated ones of the configuration registers 105. An example of how different triggers are associated with different profiles is illustrated in FIG. 4. Each trigger has an identifier (“ID”) that associates the trigger with a particular signal. Each identifier 410 is then also associated with a profile 420 that can be transferred to the active HW trigger assignment register from the addressed NVL array row 0 as illustrated in FIGS. 2 and 3. In this way particular triggers cause particular configuration changes, all controlled within the NVL subsystem. Several triggers can be assigned to a given profile. In addition, a global enable and disable register bit can be provided to enable or disable all hardware triggers.


A dedicated bus 140 separate from the system bus 120 connects the one or more non-volatile logic arrays 130 and the configuration registers 105. The dedicated bus 140 allows the configuration registers 105 to operate under the control of the NVL subsystem. Therefore, the transfer of profiles from NVL storage into the active configuration register 105 can be done under the NVL subsystem's clock 144. In this approach, the NVL array controller 150 is configured to transfer at least one of the plurality of configuration profiles to associated ones of the configuration registers 105 using a clock 144 for a non-volatile logic sub-system 146 for the one or more non-volatile logic arrays 130. In a typical arrangement, a multiplexer 142 provides connection between individual arrays 130 or rows within an array 130 and the dedicated bus 140 such that all the elements of the NVL sub-system 146 operate under the NVL clock. The NVL clock 144 can operate at a different, faster clock speed than the computing device's clock 148. FIG. 5 illustrates one example of this arrangement. The first waveform 505 illustrates the computing device clock's signal, in this example at 16 MHz. The NVL clock 144 is illustrated by the second waveform 510. The modules ADC12_8, eUSCI_B0, eUSCI_B1, and DMA controller have a first configuration 0 in timeframes 530 and 532. The instruction fetch of a software trigger arrives at 520 and requires passage of a three cycle latency for this example system. A second trigger arrives before 522 as a hardware trigger, which does not cause a latency delay. In the time period 534, the new configurations 1, 3, and 2 for the different modules are loaded within the NVL sub-system according to the NVL clock cycle 510. By the time the next computing device clock cycle instruction is available at 524, the modules ADC12_8, eUSCI_B0, eUSCI_B1, and DMA controller are all fully reconfigured based on the software and hardware triggers. From the point of view of the computing device, a module reconfiguration is done within only one clock cycle for hardware triggers and within four clock cycles for software triggers.


To provide flexibility in implementation, the computing device 100 may be modifiable by a user to customize the plurality of the different triggers and associated transfer of the configuration profiles, thereby allowing users to specify configuration settings to be automatically set by particular triggers within the device 100. Referring again to FIG. 1, an NVL array input multiplexer 170 is disposed to selectively connect via a dedicated bus 180 (which in certain embodiments may be the same as the dedicated bus 140) to individual ones of the peripherals 115 or computing device 100 modules to individual rows of the one or more NVL arrays 130. This allows profile data to be loaded from the currently active register configurations of the peripherals and computing device. Additional profiles can be loaded from the peripherals at different times; for instance, when a given peripheral operates using a different configuration, that configuration can at that time be loaded into the NVL array as an alternative profile for that peripheral. In another approach, profile data can be pre-configured during device production, for example, by scan, or it can be written out of a dedicated buffer during an NVL store sequence. The profile data itself can be masked to further enhance customizability of the device 100. The transfer itself can be automated. For instance, the NVL array controller 150 can be configured to transfer at least one of the plurality of configuration profiles to associated ones of the configuration registers 105 according to the NVL sub-system 146 and hard-coded decoding or multiplexing logic. Optionally, the NVL array controller 150 and the one or more NVL arrays 130 may be dedicated solely to storage and transfer of the configuration profiles.


An example method of operation in accord with these disclosures is illustrated in FIG. 6. The method includes storing 605 in configuration registers of a computing device configuration profile data for currently active settings of the computing device or peripherals associated with the computing device and storing 610 in one or more NVL arrays a plurality of configuration profiles for individual settings of the computing device or peripherals associated with the computing device. This storing may further include storing in the one or more NVL arrays computing device or peripheral identifier information for individual ones of the plurality of configuration profiles.


A trigger is generated 615 as either or both of a software trigger or a hardware trigger. In response to receiving 620 a trigger, the method includes transferring 625 of at least one of the plurality of configuration profiles from the one or more NVL arrays to associated ones of the configuration registers. The transfer occurs over a dedicated bus separate from a system bus and which connects the one or more non-volatile logic arrays and the configuration registers. The transferring 625 may include transferring at least one of the plurality of configuration profiles to associated ones of the configuration registers. In still another aspect, the transferring 625 may include transferring at least one of the plurality of configuration profiles to associated ones of the configuration registers using clock for the one or more NVL arrays, wherein the clock operates at a different clock speed than the computing device's clock.


The trigger reception 620 optionally includes receiving a plurality of different triggers, wherein receiving individual ones of the plurality of triggers effects transfer of different ones of the plurality of configuration profiles to associated ones of the configuration registers. In another optional approach, the plurality of the different triggers and associated transfer of the configuration profiles are customized 630 in response to a user input to the computing device.


A further use case is illustrated in FIG. 7. Here a reset signal 710 coming of a device off or deep sleep state triggers the NVL subsystem to restore the hardware trigger assignments from the NVL array storing the assignments. In the illustrations discussed above, NVL array row 0 stored those assignments. If the reset signal 710 is a trigger signal for restoring a profile from the NVL array, the NVL sub-system restores 720 one or more profiles according to the hardware trigger assignment as discussed above. If the reset signal 710 is not a trigger signal or the hardware trigger was disabled, the active mode for the computing device runs 730 including the user application for the device. During the device's operation another hardware trigger will effect restoration 740 by the NVL sub-system of one or more profiles according to that hardware trigger's assignment. The device's active mode with the user's application continues running 730 in parallel with the NVL operations in support of profile restoration. Similarly, during the device's operation software trigger can effect restoration 745 by the NVL sub-system of one or more profiles according to that software trigger's initialization and assignment. Like with the hardware trigger, the device's active mode with the user's application continues running 730 in parallel with the NVL operations in support of profile restoration. after which device's active mode with the user's application continues running 730. This loop continues until deep sleep more or device power down, whereupon another reset 710 occurs at wake up.


So configured, a computing device can store and implement many more module or peripheral configurations, which in turn increases the variable functionality of a given device. Moreover, the modules can be reconfigured on the fly and in some cases instantaneously from the point of view of the computing device. This speeds operation and responsiveness of the computing device and its peripherals. By using a dedicated bus, the system bus is not blocked during reconfiguration of a module. Moreover, by using hardware triggers, this approach facilitates automatic reconfiguration of devices based on such triggers. Thus, no software operation needs to be loaded to reconfigure a module. Also, multiple profiles can be loaded in one atomic operation for the computing device. Further, because the profile data may be masked, the solution can be highly customizable.


Although method steps may be presented and described herein in a sequential fashion, one or more of the steps shown and described may be omitted, repeated, performed concurrently, and/or performed in a different order than the order shown in the figures and/or described herein. Accordingly, embodiments of the invention should not be considered limited to the specific ordering of steps shown in the figures and/or described herein.


Those skilled in the art will recognize that a wide variety of modifications, alterations, and combinations can be made with respect to the above described embodiments without departing from the scope of the invention, and that such modifications, alterations, and combinations are to be viewed as being within the ambit of the inventive concept.

Claims
  • 1. A method comprising: receiving, by a computing device, a trigger profile associated with a plurality of configuration profiles;storing, by the computing device, the plurality of configuration profiles in one or more non-volatile logic (NVL) arrays on the computing device;receiving, by the computing device, a trigger event; andin response to the trigger event, transferring, by the computing device, one of the plurality of the configuration profiles from the one or more NVL arrays to a computing component.
  • 2. The method of claim 1, further comprising: storing, by the computing device, one of the plurality of configuration profiles in the computing component prior to receiving the trigger event.
  • 3. The method of claim 1, wherein: the trigger profile identifies a plurality of trigger events; andeach of the plurality of trigger events is associated with loading one of the plurality of configuration profiles into the computing component.
  • 4. The method of claim 3, wherein: each of the trigger events is associated with a trigger identifier.
  • 5. The method of claim 1, wherein: the trigger event is associated with an entry in the trigger profile that identifies the one of the plurality of the configuration profiles to transfer to the computing component.
  • 6. The method of claim 1, wherein: each row of the one or more NVL arrays stores one of the plurality of configuration profiles.
  • 7. The method of claim 1, further comprising: receiving, by the computing device, a new configuration profile from the computing component; andstoring, by the computing device, the new configuration profile in the one or more NVL arrays.
  • 8. The method of claim 1, wherein: the plurality of the configuration profiles are masked.
  • 9. The method of claim 1, wherein: each of the plurality of configuration profiles is associated with a respective profile identifier.
  • 10. The method of claim 1, wherein: the trigger event is a first trigger event;in response to the first trigger event, the computing device transfers a first configuration profile from the one or more NVL arrays to the computing component; andin response to a second trigger event, the computing device transfers a second configuration profile from the one or more NVL arrays to the computing component.
  • 11. A system comprising: a computing device including one or more non-volatile logic (NVL) arrays;a computing component coupled to the computing device, the computing component including one or more registers; anda controller configured to: receive a trigger; andcontrol transfer of one or more of a plurality of configuration profiles between the computing device and the computing component based on the trigger and a trigger profile.
  • 12. The system of claim 11, wherein: the computing device is configured to transfer one of the plurality of configuration profiles to the computing component prior to the controller receiving the trigger.
  • 13. The system of claim 11, wherein: the trigger profile identifies a plurality of trigger events; andeach of the plurality of trigger events is associated with loading one of the plurality of configuration profiles into the computing component.
  • 14. The system of claim 13, wherein: each of the trigger events is associated with a trigger identifier.
  • 15. The system of claim 11, wherein: the trigger is associated with an entry in the trigger profile that identifies the one of the plurality of the configuration profiles to transfer to the computing component.
  • 16. The system of claim 11, wherein: each row of the one or more NVL arrays stores one of the plurality of configuration profiles.
  • 17. The system of claim 11, wherein: the computing device is configured to receive a new configuration profile from the computing component and store the new configuration profile in the one or more NVL arrays.
  • 18. The system of claim 11, wherein: the plurality of the configuration profiles are masked.
  • 19. The system of claim 11, wherein: each of the plurality of configuration profiles is associated with a respective profile identifier.
  • 20. The system of claim 11, wherein: the trigger is a first trigger event;in response to the first trigger event, the computing device transfers a first configuration profile from the one or more NVL arrays to the computing component; andin response to a second trigger event, the computing device transfers a second configuration profile from the one or more NVL arrays to the computing component.
CROSS-REFERENCE TO RELATED APPLICATION(S)

This application is a continuation of U.S. patent application Ser. No. 16/658,928 filed Oct. 21, 2019, which is a continuation of U.S. patent application Ser. No. 14/887,885 filed Oct. 20, 2015, now U.S. Pat. No. 10,452,594, each of which is incorporated herein by reference.

US Referenced Citations (96)
Number Name Date Kind
5978921 Ryu Nov 1999 A
6049884 Tsuji Apr 2000 A
6081752 Benson et al. Jun 2000 A
6198651 Lee et al. Mar 2001 B1
6226556 Itkin May 2001 B1
6711692 Maeda Mar 2004 B1
6901298 Govindaraj May 2005 B1
7225353 Wong May 2007 B1
7639056 Gururajarao Dec 2009 B2
7812633 Lee et al. Oct 2010 B1
8056088 Dharmapurikar Nov 2011 B1
8892789 Spry Nov 2014 B2
9092206 Rzehak et al. Jul 2015 B2
9432298 Smith Aug 2016 B1
9698770 Menezes Jul 2017 B1
9831696 Iida Nov 2017 B2
10037071 Dannenberg et al. Jul 2018 B2
10331203 Zwerg et al. Jun 2019 B2
10381787 Bodnaruk Aug 2019 B1
10554140 Khamesra Feb 2020 B1
10651753 Khamesra May 2020 B1
10651754 Murugesan May 2020 B1
10693384 Mondal Jun 2020 B1
10910954 Shah Feb 2021 B1
10924424 Drakulic Feb 2021 B2
20030196540 Ishii Oct 2003 A1
20040073818 Cheok et al. Apr 2004 A1
20040085846 Yokozeki May 2004 A1
20050141260 Suzuki Jun 2005 A1
20050251617 Sinclair et al. Nov 2005 A1
20060015683 Ashmore Jan 2006 A1
20060072369 Madter Apr 2006 A1
20060080515 Spiers Apr 2006 A1
20060242398 Fontijn Oct 2006 A1
20060279977 Shiga Dec 2006 A1
20070067435 Landis et al. Mar 2007 A1
20070083743 Tsang Apr 2007 A1
20070136523 Bonella Jun 2007 A1
20070217404 Kawamata Sep 2007 A1
20080155242 Beelitz Jun 2008 A1
20080235443 Chow et al. Sep 2008 A1
20080235471 Feldman Sep 2008 A1
20080265962 Waldrip Oct 2008 A1
20080320214 Ma et al. Dec 2008 A1
20090144577 Sarker Jun 2009 A1
20090237570 Paunonen Oct 2009 A1
20090267570 Paunonen Oct 2009 A1
20090292937 Bakker Nov 2009 A1
20100008175 Sweere et al. Jan 2010 A1
20100006378 Blasko Oct 2010 A1
20100299295 Leitheiser Nov 2010 A1
20110119506 Tsai May 2011 A1
20110197018 Noh Aug 2011 A1
20110202794 Kim Aug 2011 A1
20110231685 Huang et al. Sep 2011 A1
20120042206 Di Domenico et al. Feb 2012 A1
20120079160 Iyer Mar 2012 A1
20120137075 Voarbach May 2012 A1
20120036346 Bower Dec 2012 A1
20120317343 Fuchikami Dec 2012 A1
20130031388 Sakarda Jan 2013 A1
20130042052 Colgrove et al. Feb 2013 A1
20130060993 Park Mar 2013 A1
20130107632 Van Tran May 2013 A1
20130166866 Yerushalmi et al. Jun 2013 A1
20130326206 Lueck Dec 2013 A1
20140006887 Greene Jan 2014 A1
20140047247 Rzehak et al. Feb 2014 A1
20140075088 Bartling Mar 2014 A1
20140075089 Bartling et al. Mar 2014 A1
20140075174 Bartling Mar 2014 A1
20140075232 Bartling Mar 2014 A1
20140086266 Strait et al. Mar 2014 A1
20140153325 Wang et al. Jun 2014 A1
20140181558 Taha Jun 2014 A1
20140208004 Cohen et al. Jul 2014 A1
20140304542 Rogers Oct 2014 A1
20140337560 Chun et al. Nov 2014 A1
20150106560 Perego Apr 2015 A1
20150189608 Strait et al. Jul 2015 A1
20150323983 Hobson Nov 2015 A1
20150378946 Ali et al. Dec 2015 A1
20160246355 Dannenberg et al. Aug 2016 A1
20160266641 Rogers et al. Sep 2016 A1
20160293231 Shu et al. Oct 2016 A1
20160342354 Govindan et al. Nov 2016 A1
20160344629 Gray Nov 2016 A1
20170109054 Waechter Apr 2017 A1
20170185139 Zwerg Jun 2017 A1
20170344451 Vanderah Nov 2017 A1
20180136843 Lee et al. May 2018 A1
20180136851 Batra et al. May 2018 A1
20190349310 Drakulic Nov 2019 A1
20190354163 Bodnaruk Nov 2019 A1
20200067768 Dome et al. Feb 2020 A1
20220121608 Waechter Apr 2022 A1
Foreign Referenced Citations (7)
Number Date Country
101458668 Jun 2009 CN
102725709 Oct 2012 CN
102789134 Nov 2012 CN
102789431 Nov 2012 CN
102929805 Feb 2013 CN
104681087 Jun 2015 CN
104885034 Sep 2015 CN
Non-Patent Literature Citations (10)
Entry
Non-Final Office Action dated Jul. 25, 2022, U.S. Application No. 17/404,125, filed Dec. 29, 2021, 31 pages.
Wang, Y., et al., “A 3us Wake-up Time Nonvolatile Processor Based on Ferroelectric Flip-Flops,” IEEE 2012 (4 pages).
Masui, S., et al., “Design and Applications of Ferroelectric Nonvolatile SRAM and Slip-Flop with Unlimited Read/Program Cycles and Stable Recall,” IEEE 2003 Custom Integrated Circuits Conference—2003 (4 pages).
Udayakumar, K.R., et al., “Manufacturable High-Density 8 Mbit One Transistor-One Capacitor Embedded Ferroelectric Random Access Memory,” Japanese Journal of Applied Physics, vol. 47, No. 4, 2008 (4 pages).
Moise, T.S., et al., “Electrical Properties of Submicron (>0.13um2) Ir/PZT/Ir Capacitors Formed on W plugs,” IEEE 1999 (3 pages).
Moise, T.S., et al., “Demonstration of a 4Mb, High Density Ferroelectric Memory Embedded with a 130nm, 5LM Cu/FSG Logic Process,” IEEE 2002 (4 pages).
Wang, Y., et al., “A Compression-based Area-efficient Recovery Architecture for Nonvolatile Processsors,” EDAA 2012, dated Mar. 12-16, 2012, Dresden, Germany (6 pages).
Yu, W., et al., “A Non-Volatile Microcontroller with Integrated Floating-Gate Transistors,” IEEE 2011 (6 pages).
TMS9900 Datasheet, programmable system interface; Texas Instruments; retrieved from web at http://www.alldatasheet.com/datasheet-pdf/29082/TI/TMS9900.html; 14 pages.
Final Office Action dated Feb. 1, 2023, U.S. Appl. No. 17/404,125, filed Aug. 17, 2021, 17 pages.
Related Publications (1)
Number Date Country
20220121608 A1 Apr 2022 US
Continuations (2)
Number Date Country
Parent 16658928 Oct 2019 US
Child 17564487 US
Parent 14887885 Oct 2015 US
Child 16658928 US