The present disclosure relates generally to updating firmware and, more specifically, to updating chip firmware during concurrent system operation by firmware logic that is put in wait states.
Some computing systems currently receive updated firmware over the air (FOTA). The purpose of firmware updates may be to add or remove features, to apply or remove patches, fix bugs, and/or the like. Some applications may apply such updates during system startup (e.g., boot) or during system shut down (e.g., key off). To reduce overall downtime to the system during the update, some computing systems may be updated without interrupting other system operation. However, updating firmware during concurrent system operation may lead to noticeable latency or low performance. There is a need for more efficient techniques for updating firmware.
In one example, a method includes: updating system on-chip (SoC) firmware, during concurrent system operation, by firmware logic executed by a first processing unit of the SoC, including: initiating a first data write operation to a memory via a memory controller, wherein the first data write operation is configured to write a page of first firmware code to a first bank of the memory; controlling first hardware logic to change the memory controller to a first memory controller setting used by the firmware logic to write to the memory; entering and exiting a wait state under control of second hardware logic; subsequent to exiting the wait state, controlling the first hardware logic to change the memory controller to a second memory controller setting used by a second processing unit to read second firmware code from a second bank of the memory; polling the memory for completion of the first data write operation; and subsequent to the polling, determining that a response to the polling indicates completion of the first data write operation.
In another example, a system-on-chip (SoC) includes: a central processing unit (CPU) coupled to an interconnect; a microcontroller unit (MCU); and a memory controller coupled to the MCU and the interconnect, the memory controller being coupled to memory and being configured to read from and write to the memory; wherein the MCU is configured to access computer-readable code, which when executed by the MCU causes the MCU to update firmware stored on the memory, including: control first hardware logic on the SoC to receive access to a bus, wherein the bus is shared with the CPU and is coupled to the memory controller; enter a wait state, under control of second hardware logic on the SoC, during a time in which the first hardware logic operates to receive access to the bus; and exit the wait state, under control of the second hardware logic, upon access to the bus being received.
In yet another example, a system includes: a central processing unit (CPU) coupled to an interconnect; a microcontroller unit (MCU), including computer-readable code, which when executed by the MCU causes the MCU to update firmware stored on the memory; a memory controller coupled to the MCU and the interconnect, the memory controller being coupled to memory and being configured to read from and write to the memory; and hardware logic in communication with the MCU and configured to: receive a first instruction from firmware logic running on the MCU to access a bus, wherein the bus is shared with the CPU and is coupled to the memory controller; cause the firmware logic running on the MCU to enter a wait state coinciding with a time in which the hardware logic operates to receive access to the bus; and cause the firmware logic running on the MCU to exit the wait state in response to access to the bus having been received.
Having thus described the invention in general terms, reference will now be made to the accompanying drawings, wherein:
The present disclosure is described with reference to the attached figures. The figures are not drawn to scale, and they are provided merely to illustrate the disclosure. Several aspects of the disclosure are described below with reference to example applications for illustration. It should be understood that numerous specific details, relationships, and methods are set forth to provide an understanding of the disclosure. The present disclosure is not limited by the illustrated ordering of acts or events, as some acts may occur in different orders and/or concurrently with other acts or events. Furthermore, not all illustrated acts or events are required to implement a methodology in accordance with the present disclosure.
Corresponding numerals and symbols in the different figures generally refer to corresponding parts, unless otherwise indicated. The figures are not necessarily drawn to scale. In the drawings, like reference numerals refer to like elements throughout, and the various features are not necessarily drawn to scale.
Some automotive and industrial microcontroller systems are moving to an architecture that includes multiple, smaller microcontroller units, other cores, and/or supporting circuitry consolidated into a single integrated circuit such as a system on a chip (SoC). The SoC may be manufactured using advanced processing nodes to support higher processor core speeds. However, attempting to implement embedded flash memory using these process nodes may be costly and difficult in some instances and, thus, some applications minimize the embedded flash memory by utilizing an SoC manufactured using a smaller process node coupled to an external flash memory manufactured using a larger (and cheaper) process node. Some example SoCs may execute code directly from the external flash memory using a process called execute in place (XIP) without necessarily copying the code to a volatile memory within the SoC.
Some such SoCs may receive updated firmware over the air (FOTA) for system updates for storage on the external flash memory. Accordingly, the external flash memory coupled to some such SoCs may have least two memory banks, where one memory bank may store an older copy of the firmware code currently being used for system operation, and the other memory bank may be written to with the newer copy of the firmware. As a result, the FOTA update may be performed during system operation.
Various embodiments may facilitate an FOTA update during system operation by employing a dedicated FOTA processing unit. For instance, the system may be implemented as a system on-chip (SoC) having multiple processor cores and an additional FOTA processing unit, which is separate from the processor cores. The FOTA processing unit may include, e.g., a microcontroller unit (MCU) or other appropriate processing unit that may execute computer-readable code to perform FOTA operations.
In one use case example, the processor cores of a system are currently executing a first copy of the firmware stored in a first bank of external flash memory when a first processor core receives a set of firmware update instructions and a second copy of the firmware. The first processor core may operate in coordination with the FOTA processing unit to store the second copy of the firmware in a second bank of the external flash memory. To do so, the first processor core and/or the FOTA processing unit may reconfigure a memory controller setting that was used by the first processor core s to read the first copy of the firmware from the first bank to be able to write to the second bank.
In some such examples, the FOTA processing unit may provide a data write operation to write a portion of the firmware to the second bank. The hardware logic may then cause the firmware update logic to wait for a timer to elapse before attempting to determine whether the data write operation completed. The timer may be adaptively set to be approximately as long as an amount of time taken to finish the data write operation. Subsequent to the timer elapsing, the FOTA processing unit may configure the memory controller to a setting used to write to the memory, thereby allowing the FOTA processing unit to poll the memory for completion of the first data write operation. After the polling, the FOTA processing unit may then revert the memory controller to the memory controller setting used by the remainder of the system to read from the first memory bank that stores the first (older) copy of the firmware.
According to the example above, the FOTA processing unit waits to poll during a time in which the data write operation was being completed. Time to complete a write operation may vary depending on age of the device, operating temperature, and the like. In other words, write operation duration may be variable rather than fixed. In this example, the duration of the timer is set based on historical data or other relevant data so that it approximately matches an expected duration of the write operation. An advantage of such example is that the FOTA update process may avoid over-polling, which may interrupt the XIP operation, and may avoid under-polling, which may cause the FOTA processing unit to unnecessarily delay initiating a subsequent write operation. In other words, the length of the timer may be intelligently set so as to balance read operations and write operations, thereby increasing efficiency of the system.
After the last portion of the second copy of the firmware has been successfully written to the second bank, and after the memory controller settings have been reconfigured to support read operations, the first processor core may then read the second (updated) copy of the firmware from the second bank.
According to a further example, the FOTA processing unit of the SoC includes hardware logic that operates with FOTA firmware update instructions to enter and exit wait states appropriately. For instance, the FOTA firmware update instructions may control hardware logic to cause an action to occur, and hardware logic may put the FOTA processing unit in a wait state during a time in which the action is being carried out. The hardware logic may have access to buses that carry signals, those signals indicating when an action has been completed. Therefore, the hardware logic may cause the FOTA processing unit to exit the wait state upon receipt of an appropriate hardware-level signal. As a result, the FOTA processing unit does not poll for completion of some actions (e.g., memory controller configuration setting changes, bus access changes, and the like). By contrast, implementing FOTA update instructions in software running on a CPU may instead result in polling for completion of actions, where that polling may be expected to cause XIP operation downtime. In other words, the embodiment using the FOTA processing unit and FOTA firmware wait state logic may reduce an amount of polling and thereby reduce an amount of XIP operation downtime. Decreased XIP operation downtime may lead to reduced latency during system operation.
In the example of
Additionally, in some embodiments, the external memory 160 may include Read While Write (RWW) functionality to allow reads and writes to be executed simultaneously within external memory 160. In one example of RWW functionality, memory controller 120 may send read data before write completion and later polling is done to check for write data completion within external memory 160. RWW may be facilitated using memory partitioning inside, e.g. one partition for reads and another for writes within external memory 160. The selection of memory bank may be based on memory address.
SoC 101 may be fabricated on a semiconductor die and may be included within a semiconductor package in some implementations. Further, the external memory 160 may be part of a separate semiconductor die or semiconductor package. However, the scope of implementations is not limited to any particular physical architecture for chip and package structures.
In addition to executing firmware instructions directly from the external memory 160, the processing cores 102-103 may execute software code from internal memory 104, which may include copying the instructions from the external memory 106 to the internal memory 104. The instructions stored in internal memory 104 may include parts of one or more software programs. Software programs may be developed, encoded, and compiled in a variety of computing languages for a variety of software platforms and/or operating systems and subsequently loaded and executed by processing cores 102-103. In some embodiments, the compiling process of the software program may transform program code written in a programming language to another computer language such that the processing cores 102-103 are able to execute the programming code. For example, the compiling process of the software program may generate an executable program that provides encoded instructions (e.g., machine code instructions) for processing cores 102-103 to accomplish specific, non-generic, particular computing functions. The encoded instructions may be loaded as computer-executable instructions from internal memory 104.
The SoC 101 may also include an execute-in-place (XIP) module 140 to execute instructions stored in the external memory 106 without necessarily storing them in the internal memory 104 first. Generally, the XIP module 140 is a functional block that acts as a proxy for requests from the processing cores 102-103 to regions of memory, such as external memory 160 or the like. XIP module 140 may facilitate read operations on behalf of the cores 102-103 during runtime, thereby allowing the cores 102-103 to execute code that is stored to the external memory 160. As described in more detail below, the read operations attributable to XIP module 140 may compete for memory controller resources with the FOTA hardware 110. For instance, when the FOTA hardware 110 performs a read operation or changes a configuration setting of the memory controller 120, that may cause the XIP read operations to be paused.
The processor cores 102-103 are communicatively coupled to various other components via the interconnects 105. In some examples, the interconnects 105 may be separate for configuration signals and for data signals, though in other embodiments, the interconnects may be common for data and configuration signals. Interconnects 105 may include a multitude of buses or other signal-conducting components to allow the various components to communicate with each other. For instance, the processor cores 102-103 may be communicatively coupled to internal memory 104, FOTA hardware 110, XIP module 140, memory controller 120, and peripherals (e.g., external memory 106) via interconnects 105.
In this example, FOTA hardware 110 is physically separate from the processor cores 102-103. For instance, FOTA hardware 110 may be dedicated FOTA update hardware, separate and apart from processor cores 102-103, which may be more general in their operation.
Memory controller 120 (e.g., a Flash controller) may include hardware logic that is coupled with external memory 160 to provide lower-level hardware control over external memory 160. For instance, memory controller 120 may receive instructions from FOTA hardware 110 or XIP module 140 to read or write to the external memory 160. In one example, processor cores 102-103 may perform read and write operations to the external memory 160 via XIP module 140. Memory controller 120 may operate according to any appropriate protocol, such as Quad serial peripheral interface (SPI), Octal SPI, XSPI, parallel interface, or the like.
FOTA hardware 110 may be implemented on SoC 101 as hardware logic. For instance, FOTA hardware 110 may include a microcontroller unit (MCU), a CPU, or other appropriate processing hardware. In the example of
FOTA hardware 110 includes multiple different hardware logic components 111-114, which may or may not be distinctly physically separate. FOTA processing unit 111 may include hardware logic configured to execute FOTA-specific firmware and, thus, to perform the actions of
Wait state hardware logic 112 may put the FOTA processing unit 111 in a wait state during certain times. Examples of such times may include hardware actions requested by the FOTA firmware. Putting the FOTA processing unit 111 into a wait state may include exchanging signals between the wait state hardware logic 112 and the FOTA processing unit 111 to cause the FOTA processing unit 111 to pause executing update instructions. Bus access hardware logic 113 may arbitrate for bus access on behalf of the FOTA processing unit, and bus initiator circuitry 114 may change settings of the memory controller 120 on behalf of the FOTA processing unit for reads and writes to and from the external memory 160. Functionality of the hardware logic components 112-114 is discussed in more detail with respect to
Data and configuration bus initiator hardware logic 114 sends signals on behalf of the FOTA processing unit 111 to the memory controller 120. For instance, the bus initiator hardware logic 114 may include configuration initiator circuitry 114a that provides configuration changes, under control of FOTA processing unit 111, transmitting signals on configuration bus 213. Similarly, the bus initiator hardware logic 114 may include data initiator circuitry 114b that reads or writes data via bus 212. In one example, the processor cores 102-103 (
In another example, the FOTA processing unit 111 may perform a FOTA write to update firmware in bank 0 162 of the external memory 160. The FOTA write operations may be performed during runtime of an older copy of the firmware on bank 1 163 via XIP, as explained in more detail with respect to
In the present example, the memory controller 120 includes one or more memory mapped registers 221. However, the scope of implementations may include any appropriate architecture and operation for memory controller 120.
Wait state logic 112 may determine when the FOTA instructions, running on a FOTA circuitry 111, have caused a hardware action (e.g., requested bus access, changed a configuration setting of memory controller 120, or the like) or has initiated a write operation to external memory 160. Wait state logic may be configured to put FOTA circuitry 111 in a wait state while hardware actions are being performed in order to avoid polling, which would otherwise increase XIP downtime. For instance, wait state logic 112 may communicate with FOTA processing unit 111, bus initiator circuitry 114, and/or bus access hardware logic 113. Wait state logic 112 may also send and receive hardware-level signals on one or more buses (not shown) to determine when a hardware action has been completed or a write status check has been completed.
Also, as explained in more detail below, FOTA processing unit 111 may also execute code to provide an adaptive wait state. An example may include a predictive model or another algorithm to determine an approximate time for completion of a write operation.
Action 302 may include providing at least a portion of a new firmware to FOTA hardware 110 for writing in external memory 160. In some examples, this includes writing the portion of the new firmware to an FOTA write buffer included in FOTA hardware 110 or in another appropriate location. In any event, action 302 may include the processor core(s) 102-103 dividing a FOTA package, that includes the new firmware, into a plurality of pages. For instance, some example pages are 256 bytes, and a FOTA package may be multiple kilobytes or even multiple megabytes in size, and action 302 may include creating multiple pages from a single FOTA package. The scope of implementations is not limited to any sized page, as 256 bytes is an example, and other implementations may be adapted for different sized pages as appropriate. The data that is written in action 302 may include one of those pages of data.
Action 304 includes the processor core(s) 102-103 communicating to the FOTA hardware 110 to write the portion of the new firmware to the external memory 160. In the example of method 300, action 304 includes the processor core(s) 102-103 instructing the FOTA hardware 110 which addresses to write (write addr) and a size of a page (bytecnt). Action 304 may also include a handshake (fota_ctrl go) with the FOTA hardware 110.
In response to action 304, the FOTA hardware 110 performs the actions of method 400 (
Method 300 may be performed during runtime and, more specifically, as one or more of the processor cores 102-103 are executing SoC firmware via XIP operation. In that regard, the processor cores 102-103 may utilize an older version of the firmware on a first bank (e.g., bank 163) of the external memory 160 to perform the writing of the new firmware to a second bank (e.g., bank 162) and/or to execute other instructions during the firmware update. Using
Action 402 may include receiving information from the software process of
Action 404 may include the FOTA processing unit 111 controlling the bus access hardware logic 113 to request the bus access. For instance, the FOTA processing unit 111 may signal to the bus access hardware logic 113 to acquire access to the configuration bus 213 and the data bus 212 (
The actions by the bus access hardware logic 113 may include requesting bus access and acquiring bus access in accordance with sending and receiving hardware-level signals. In one example, the bus access hardware logic 113 may send and receive hardware-level signals with hardware that implements the multiplexor functionality of
Action 406 may include the FOTA processing unit 111 requesting access to the data and configuration buses (e.g., 212 and 213) by, e.g., setting values in a special function register (SFR) or other appropriate technique to identify the buses. In response, the bus access hardware logic 113 may then grant access to the specific buses.
Action 408 may include the FOTA processing unit 111 writing to configuration registers in the memory controller (e.g., 120). Action 408 may include the FOTA processing unit 111 writing to a SFR or other appropriate technique to trigger configuration bus initiator logic 114a to change settings of the memory controller to cause the memory controller to change from read settings to write settings. The configuration bus initiator logic 114a may change settings of the memory controller 120 via, e.g., bus 213.
Action 410 includes the wait state logic 112 pausing the FOTA processing unit 111 during action 408. Once the configuration bus initiator logic 114a determines that the settings have been changed, the configuration bus initiator logic 114a may communicate with wait state logic 112 to indicate completion of the setting changes. In response, the wait state logic 112 may signal to the FOTA circuitry 111 to restart the FOTA update firmware.
Action 412 may include the FOTA processing unit 111 triggering the data bus initiator logic 114b to move the page of data to the memory controller 120 via, e.g., bus 212. Action 412 is accompanied by action 414, in which the wait state logic 112 signals to the FOTA processing unit 111 to pause execution of the FOTA update firmware. Once the data has been moved to the memory controller 120, the data bus initiator logic 114b may signal to the wait state logic 112 that the write operation is complete. In response, the wait state logic 112 may then signal to the FOTA processing unit 111 to restart execution of the FOTA update firmware.
Actions 416 and 418 may include the FOTA processing unit 111 communicating with the configuration bus logic 114a to revert the memory controller settings to read settings from write settings and to communicate with the bus access hardware logic 113 to release access to the data and configuration buses 212, 213.
Although not shown in
For instance, the FOTA update firmware (executed by the FOTA processing unit 111) may be programmed to poll the memory controller 120 to determine when the data has been written to the flash memory cells of external memory 160. In one example, the FOTA processing unit 111 may not wait for that entire 2 ms for the data to be written. Rather, the FOTA processing unit 111 may determine whether controller data lines have become idle, so that XIP read operations from bank 1 163 may be resumed. Further in this example, write operations to flash bank 0 162 may still occur in the background by virtue of RWW flash, which may perform read from a bank while write is happening to another bank.
The polling discussed above may preclude XIP read operations during duration of the polling. In other words, over-polling may decrease XIP throughput unnecessarily. Under-polling may allow XIP read throughput at the expense of FOTA update write throughput.
The embodiment of
In one example, the FOTA update firmware may generate the estimate of write completion time from a Kalman filter that receives as input historical data for recent write completion times and device age. The Kalman filter may then generate the estimate of write completion time based on that input. In another example, the FOTA update firmware may use a trained artificial intelligence (AI) or machine learning (ML) algorithm (e.g., deep learning) to determine estimated write completion time from historical write completion times and/or current operating parameters such as device age and operating temperature. The scope of implementations is not limited to any particular technique to generate the estimate of write completion time. Rather, the scope of implementations may be adapted to use any estimate of write completion time that may be generated adaptively and based on system operating characteristics. Examples of system operating characteristics may include device age, detected system operating temperature, detected write completion time of previous write operations, and the like.
Thus, various embodiments may implement a variable polling timer at action 420, where the variable polling timer is based on an estimate of write completion time. As a result, method 400 may reduce an amount of over-polling and under-polling to balance XIP read throughput and FOTA update write throughput, thereby increasing an efficiency of operation of the system 100 (
Once the polling timer has elapsed at action 422, then the FOTA processing unit 111 may begin a polling action. The polling action may start by bus access arbitration, gaining access to the configuration and data buses, and writing memory controller configuration registers at actions 424-428. Actions 424-428 are the same as or similar to actions 404-408. For instance, during bus access arbitration at actions 404, 424, the wait state logic 112 causes the FOTA processing unit 111 to pause execution of the FOTA update firmware. The wait state logic 112 then causes the FOTA processing unit 111 to restart execution of the FOTA update firmware only after the wait state logic 112 determines that the requested hardware event has been completed. The wait state logic 112, perhaps in coordination with the other hardware components 113 and 114, may monitor buses for hardware-level signals to determine completion of hardware events.
In other words, the FOTA processing unit 111 pauses and restarts associated with actions 404, 424 may be controlled by hardware logic and may be based on hardware-level signals from bus hardware, the memory controller, or from any other appropriate component. The same is true for pauses and restarts associated with actions 410, 414, 430, 434 as well. Thus, the FOTA processing unit 111 may omit polling for completion of hardware events (e.g., bus access arbitration, configuration changes at memory controller, moving data to the memory controller, issuing status read commands, and the like).
The FOTA processing unit 111 uses a write operation to change configuration settings of the memory controller 120 from read settings to write settings at action 428. The wait state logic 112 pauses the FOTA processing unit 111 until it determines that the memory controller has completed configuration setting changes at action 430.
Actions 432, 434 issue a status read command the external memory 160. The FOTA processing unit 111 first configures registers in the memory controller 120, which in turn causes the memory controller 120 to send out a command sequence to memory 160 to read the flash status register (432). This flash status register determines whether the flash page program has been completed or not. At action 434, the FOTA processing unit 111 polls whether this status read command has been sent out from the memory controller to the external memory 160. I
Actions 436 and 438 are the same as or similar to actions 416, 418. However, action 436 includes the FOTA processing unit 111 updating the prediction model that was used at action 420. Action 440 includes the FOTA processing unit 111 parsing a returned signal indicating a result of the status request. In some examples, the result of the status request may indicate completion or lack of completion of the data write to the memory cells of the external memory 160. If the page of data has not yet been written to the cells of the external memory 160, then method 400 may return to action 422. If the page of data has been written to the cells of the external memory 160, then the FOTA processing unit may communicate with the software process of method 300 to indicate that the page of data has been written to the external memory 160.
As noted above, there may be further pages to write to the external memory 160. The software process of method 300 may then restart method 400 by a handshake (action 402) and a further page of data or may end the FOTA update process if no further pages are to be written.
Action 502 includes initiating a first data write operation. For instance, action 502 may include communicating with another process, such as a software process, to begin writing a page of data as part of a firmware update operation. In some examples, action 502 may include requesting bus access arbitration from a supporting hardware logic, such as at action 404 of
Action 504 includes controlling first hardware logic to change a memory controller to a first memory controller setting. In one example, FOTA update firmware may control configuration bus logic to write configuration settings to a memory controller. For instance, the configuration settings may change read operation settings to write operation settings at the memory controller. An example is discussed above with respect to action 408 of
Action 506 includes entering and exiting a wait state under control of second hardware logic. For instance, FOTA update firmware may be run on a processor core, such as FOTA processing unit 111, and supporting hardware logic, such as wait state logic 112, may coordinate with FOTA processing unit 111 to cause FOTA processing unit 111 to pause and restart execution of FOTA update firmware. Wait state logic 112 may control a timing of the pause and restart based on observing hardware-level signals that indicate a request for writing to memory controller configuration registers and a completion of the writing. An example is discussed above with respect to action 410 of
Action 508 includes controlling the first hardware logic to configure the memory controller to a second memory controller setting. For instance, action 508 may include reverting the memory controller settings from write operation settings to read operation settings. An example is discussed above with respect to actions 416 and 418 of
Although not explicitly shown in
Action 510 includes polling the memory for completion of the first data write operation. The polling may be based on a polling timer. An example of a polling timer is discussed above with respect to actions 420, 422 of
Action 512 includes controlling the first hardware logic to configure the memory controller settings after polling. For instance, the polling operation of action 510 may include a write operation from FOTA processing unit 111 to a memory controller, so action 512 may include changing configuration settings of the memory controller from write operation settings to read operation settings. An example is discussed above with respect to action 436 of
Action 514 includes determining that a response to the polling indicates completion of the first write operation. For instance, the memory controller may answer a status request by issuing a signal, writing to a register, or other appropriate technique to indicate whether the data has been written to memory cells. The FOTA processing unit 111 may parse the indication to determine whether the data has been written to the memory cells or whether writing to the memory cells is in-process. An example is discussed above with respect to action 440 of
Action 516 includes reporting completion of the first operation to software. For instance, the FOTA processing unit may report completion of a page write operation to the software process of
At completion of method 500, a FOTA update package has been written to a bank of memory, such as bank 0 162 of the external memory 160 of
The scope of implementations is not limited to the sequence of actions of method 500. Rather, some embodiments may add, omit, rearrange, or modify various actions. For instance, an SoC, which includes other processors to execute SoC firmware may reboot and then begin executing the updated firmware. For instance, if the updated firmware was written to bank 0 162 of the external memory 160, then after rebooting, the various CPUs of the SoC may then execute the firmware from bank 0 162 of the external memory 160.
Furthermore, it is noted that the actions discussed above with respect to
Additionally, while the examples herein refer to FOTA updates, the principles may be adapted to update any kind of firmware or software updates, whether over the air or over a wired connection or otherwise. Put another way, the scope of implementations is not limited to FOTA updates, as other applications may update firmware over a wired connection, by direct memory access from another memory, or otherwise. Also, the scope of implementations may include updating higher-level application software or firmware in addition to or instead of SoC-level firmware.
While various examples of the present disclosure have been described above, it should be understood that they have been presented by way of example only and not limitation. Numerous changes to the disclosed examples can be made in accordance with the disclosure herein without departing from the spirit or scope of the disclosure. Modifications are possible in the described embodiments, and other embodiments are possible, within the scope of the claims. Thus, the breadth and scope of the present invention should not be limited by any of the examples described above. Rather, the scope of the disclosure should be defined in accordance with the following claims and their equivalents.
The term “semiconductor die” is used herein. A semiconductor device can be a discrete semiconductor device such as a bipolar transistor, a few discrete devices such as a pair of power FET switches fabricated together on a single semiconductor die, or a semiconductor die can be an integrated circuit with multiple semiconductor devices such as the multiple capacitors in an analog-to-digital (A/D) converter. The semiconductor device may include passive devices such as resistors, inductors, filters, sensors, or active devices such as transistors. The semiconductor device may be an integrated circuit with hundreds or thousands of transistors coupled to form a functional circuit, for example a microprocessor or memory device. The semiconductor device may also be referred to herein as a semiconductor device or an integrated circuit (IC) die.
The term “semiconductor package” is used herein. A semiconductor package has at least one semiconductor die electrically coupled to terminals and has a package body that protects and covers the semiconductor die. In some arrangements, multiple semiconductor dies may be packaged together. For example, a power metal oxide semiconductor (MOS) field effect transistor (FET) semiconductor device and a second semiconductor device (such as a gate driver die, or a controller die) may be packaged together to from a single packaged electronic device. Additional components such as passive components, such as capacitors, resistors, and inductors or coils, may be included in the packaged electronic device. The semiconductor die is mounted with a package substrate that provides conductive leads. A portion of the conductive leads form the terminals for the packaged device. In wire bonded integrated circuit packages, bond wires couple conductive leads of a package substrate to bond pads on the semiconductor die. The semiconductor die may be mounted to the package substrate with a device side surface facing away from the substrate and a backside surface facing and mounted to a die pad of the package substrate. The semiconductor package may have a package body formed by a thermoset epoxy resin mold compound in a molding process, or by the use of epoxy, plastics, or resins that are liquid at room temperature and are subsequently cured. The package body may provide a hermetic package for the packaged device. The package body may be formed in a mold using an encapsulation process, however, a portion of the leads of the package substrate are not covered during encapsulation, these exposed lead portions form the terminals for the semiconductor package. The semiconductor package may also be referred to as a “integrated circuit package,” a “microelectronic device package,” or a “semiconductor device package.”
The present application claims the benefit of United States Provisional Patent Application 63/547,181, filed Nov. 3, 2023, the disclosure of which is hereby incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
63547181 | Nov 2023 | US |