CONFIGURATION CONTROL SYSTEM AND CONFIGURATION CONTROL METHOD
20180101304 ยท 2018-04-12
Assignee
Inventors
Cpc classification
G06F3/0604
PHYSICS
G06F3/0679
PHYSICS
International classification
Abstract
An FPGA can be started up without system failure when a soft error occurs. A configuration control system includes: a first semiconductor chip which is capable of programming a logic circuit inside an LSI; a semiconductor memory which stores a plurality of pieces of circuit information of the first semiconductor chip; and a second semiconductor chip which, when controlling a configuration of the semiconductor chip using the circuit information stored in the semiconductor memory, if the configuration using any one of the plurality of pieces of circuit information fails, performs a re-configuration using another piece of circuit information among the plurality of pieces of circuit information.
Claims
1. A configuration control method for a logic device that is capable of programming a logic circuit inside a large scale integrated circuit (LSI) using first or second circuit information, the method comprising: configuring, by a controller, the logic device using the first circuit information; confirming that the configuring of the logic device completed successfully; confirming that the first circuit information was used in the successful configuration of the logic device.
2. The configuration control method according to claim 1, further comprising notifying, by the controller, that the first circuit information was used to perform the successful configuration of the logic device.
3. The configuration control method according to claim 1, wherein the first and the second circuit information are stored in a same single memory.
4. The configuration control method according to claim 1, wherein the first and the second circuit information are respectively stored in two different memories.
5. The configuration control method according to claim 1, wherein the logic device is a field programmable gate array (FPGA).
6. A configuration control apparatus for a logic device for programming a logic circuit inside a large scale integrated circuit (LSI) using first or second circuit information, the apparatus comprising: a memory configured to store at least the first circuit information; a controller that performs configuring of the logic device using the first circuit information, wherein at least one of the logic device and the controller are configured to confirm that the configuring of the logic device completed successfully; wherein at least one of the logic device and the controller are configured to confirm that the first circuit information was used in the successful configuration of the logic device.
7. The configuration control apparatus according to claim 6, wherein the controller is configured to notify that the first circuit information was used to perform the successful configuration of the logic device.
8. The configuration control apparatus according to claim 6, wherein the memory stores the first circuit information and the second circuit information.
9. The configuration control apparatus according to claim 6, further comprising a second memory, wherein the second memory stores the second circuit information.
10. The configuration control apparatus according to claim 6, wherein the logic device is a field programmable gate array (FPGA).
Description
BRIEF DESCRIPTION OF DRAWINGS
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
[0044]
[0045]
[0046]
[0047]
[0048]
MODES FOR CARRYING OUT THE INVENTION
[0049] Hereinafter, the present invention will be described through exemplary embodiments of the invention, but the following exemplary embodiments do not limit the invention in accordance with the claims, and not all combinations of features described in the exemplary embodiments are necessarily essential to the solution of the invention.
[0050]
[0051] The configuration control system 100 includes a flash memory 101, a flash memory 102, a PLD 103, an FPGA 104, a CPU 105, a personal computer 106, and a joint test action group (JTAG) interface 110.
[0052] The flash memory 101 and the flash memory 102 are semiconductor memories on which erasure and writing of data can be freely performed, and content thereof is not erased even when power supply is off. For example, the flash memory 101 and the flash memory 102 are connected to the PLD 103 via a common flash interface (CFI). Further, two pieces of information including first circuit information A and second circuit information B having design-specific programming data are stored in the flash memory 101 and the flash memory 102. Further, each of the flash memory 101 and the flash memory 102 includes a first storage area C (see
[0053] The PLD 103 is a volatile programmable device, and has a function of reading the circuit information A and the circuit information B stored in the flash memory 101 and the flash memory 102 and controlling a configuration sequence of the FPGA 104. The PLD 103 is connected to the FPGA 104 via an interface Config I/F. The PLD 103 reads the circuit information A and the circuit information B stored in the flash memory 101 and the flash memory 102 and performs a configuration implemented by the circuit information A and the circuit information B on the FPGA 104. Also, the PLD 103 includes a signal line 107 for notifying the FPGA 104 about which circuit information A (B) among the circuit information A and the circuit information B stored in the flash memory 101 and the flash memory 102 is used to perform the configuration. The signal line 107 is a signal line for transferring a 1-bit signal, and provides a level signal from the PLD 103 to the FPGA 104 while the FPGA 104 is performing the configuration. The PLD 103 is an example of the second semiconductor chip in the present invention. The PLD 103 includes a retry sequencer for performing a re-configuration using the other circuit information, i.e., the second circuit information B, when the configuration using the first circuit information A fails.
[0054] The FPGA 104 monitors the circuit information A and the circuit information B received from the PLD 103 and check integrity indicating whether data garbling does not occur in the circuit information A and the circuit information B due to a soft error or the like. The FPGA 104 is an example of the first semiconductor chip in the present invention. The FPGA 104 is connected to the CPU 105 via a cable 108.
[0055] When the CPU 105 updates a circuit of the FPGA 104 in accordance with the upgrade or the like, the circuit information A and the circuit information B are written from the CPU 105 to the flash memory 101 and the flash memory 102 via the FPGA 104 and an interface Original I/F.
[0056] The personal computer 106 is connected to the PLD 103 and the FPGA 104 via the JTAG interface 110 connected to a cable 109, and via cables 111 and 112. Further, the personal computer 106 is connected to the CPU 105 via a cable 113.
[0057]
[0058] If a determination result of step S105 is T (True), the FPGA 104 detects failure of the configuration of the data using the first circuit data A (step S109). Then, the PLD 103 reads the other circuit information, i.e., the second circuit information B, among the two pieces of circuit information A and B stored in the flash memory 101 (step S110). Subsequently, the PLD 103 transmits the read data of the second circuit information B to the FPGA 104 (step S111). Then, the FPGA 104 checks whether or not there is a soft error in the received data of the second circuit information B (step S112). The CPU 105 then determines whether the soft error occurs (step S113). If a determination result in step S113 is F (False), the FPGA 104 performs the configuration using the data of the second circuit information B (step S114). After performing the configuration on all data, the FPGA 104 is then switched to the user mode and starts up through a design of the data of the second circuit information B (step S115). Then, the CPU 105 detects the soft error or performs a normal operation (step S116).
[0059] If a determination result of step S113 is T (True), the FPGA 104 detects failure of the configuration using the data of the second circuit information B (step S117). As a result, the FPGA 104 gets stuck and is not accessible (step S118). Then, the CPU 105 detects hardware failure (step S119). It is to be noted that the configuration control system 100 including the flash memory 101 and the flash memory 102 can perform a routine similar to that described above.
[0060]
[0061]
[0062]
[0063]
[0064]
[0065] In STATE2, when the transition is from STATE1, the PLD 103 reads the startup side information of the flash memory 101 and the flash memory 102. In STATE2, when the transition is from STATE4, the PLD 103 inverts the startup side information held within the PLD 103 to perform a second configuration. It is to be noted that in this case, in STATE2, the PLD 103 enables the configuration start signal to be output to the FPGA 104, and transitions to STATE3 after a specific cycle.
[0066] In STATE3, the FPGA 104 can be subjected to the configuration. That is, STATE3 is a state in which the PLD 103 waits to receive a configuration instruction signal from the FPGA 104. It is to be noted that in this case, in STATE3, the PLD 103 disables the configuration start signal to be output to the FPGA 104, and transitions to STATE4 when the configuration instruction signal is asserted by the FPGA 104.
[0067] In STATE4, the PLD 103 waits for completion of the configuration of the FPGA 104. In STATE4, the PLD 103 transitions to STATE5 when a configuration completion signal is asserted by the FPGA 104. In STATE4, when the configuration instruction signal is deasserted by the FPGA 104 during the configuration, that is, when a state in which the configuration fails, the PLD 103 counts up a configuration failure counter included in the PLD 103. If a counter value=1 (first configuration failure), the PLD 103 transitions to STATE2. In STATE4, if the counter value=2 (second configuration failure), the PLD 103 transitions to STATE7.
[0068] STATE5 is a state in which the configuration of the FPGA 104 has been completed. In STATE5, if there is a user mode switching signal from the FPGA 104, the PLD 103 transitions to STATE6 when the signal is asserted or after a specific cycle.
[0069] STATE6 is a state in which the configuration of the FPGA 104 is completed and the PLD 103 transitions to the user mode. In STATE6, when the PLD 103 receives a re-configuration instruction signal from the CPU 105 via the FPGA 104, the PLD 103 transitions to STATE1. Further, in STATE6, when the configuration instruction signal is deasserted by the FPGA 104 (the FPGA 104 is in an abnormal state), the PLD 103 transitions to STATE1.
[0070] STATE7 is a state in which the configuration of the FPGA 104 has been abnormally ended. In STATE7, when a re-configuration instruction signal is received from the CPU 105 via the FPGA 104, the PLD 103 transitions to STATE1. Further, in STATE7, when the configuration instruction signal is deasserted by the FPGA 104 (FPGA 104 is in an abnormal state), the PLD 103 transitions to STATE1.
[0071]
[0072] In contrast, if the determination result in step S202 is F (False), the CPU 105 assumes that the FPGA is in the evaluation (step S209). Then, the CPU 105 writes the circuit information A and the circuit information B from the JTAG interface 110 to the flash memory 101 via the FPGA 104 and the PLD 103 sequentially (block erase.fwdarw.write) (step S210). Then, the CPU 105 performs verification from the JTAG interface 110 via the FPGA 104 and the PLD 103 sequentially, and confirms whether the written data is correct (step S211). Also, the CPU 105 writes information indicating which of the circuit information A and the circuit information B is used to start up the FPGA 104 from the JTAG interface 110 to the startup side information area E of the flash memory 101 via the FPGA 104 and the PLD 103 sequentially (block erase.fwdarw.write) (step S212). Then, the CPU 105 executes power-on reset (step S213). Then, the CPU 105 starts up the PLD 103 after power supply becomes stable (step S208).
[0073] After step S208, the PLD 103 transmits a configuration start signal to the FPGA 104 (step S214). Then, the PLD 103 reads the startup side information area E of the flash memory 101, and confirms which of the circuit information A and the circuit information B is used to perform the configuration (step S215). Subsequently, the PLD 103 reads address information in which valid configuration data is stored, from the start/end address information area F of the flash memory 101 (step S216). Then, the PLD 103 sequentially reads the valid circuit information from the flash memory 101 in accordance with the start/end address, shapes the valid circuit information, and transmits the valid circuit information to the FPGA 104 (step S217). Then, the FPGA 104 performs CRC check on the received data (step S218). Then, the CPU 105 determines whether a CRC error occurs during the reception (step S219).
[0074] Then, if a determination result in step S219 is T (True), the FPGA 104 receives last data and then transmits the configuration completion signal to the PLD 103 (step S220). Then, the FPGA 104 proceeds to the user mode with the completion of the configuration. Subsequently, the PLD 103 notifies the FPGA 104 of a startup side with which the configuration has been completed via the newly added signal line 107 (step S222). Then, the PLD 103 resets its own configuration failure counter (counter value 0) (step S223). Subsequently, the PLD 103 performs software reset on the FPGA 104 (step S224).
[0075] As a result, the startup of the FPGA 104 is completed (step S225). Then, the FPGA 104 stores the signal obtained in step S222 in its own startup information register (step S226). Subsequently, the CPU 105 read-accesses the startup information register of the FPGA 104 (step S227). Then, the FPGA 104 notifies the CPU 105 of the value of the startup information register in step S226 (step S228). Then, the CPU 105 compares the value obtained in step S206 with the value obtained in step S228 (step S229). Then, the CPU 105 determines whether the value obtained in step S206 is equal to the value obtained in step S228 (step S230).
[0076] If a result of the determination in step S230 is T (True), the FPGA 104 performs startup using the expected circuit information (step S231). In contrast, if the determination result of step S230 is F (False), the FPGA 104 performs startup using unexpected circuit information (step S232). Therefore, the CPU 105 performs a subsequent process that depends on a system specification; for example, performs a process of determining failure due to a soft error and then re-executing a routine from step S207 (step S233).
[0077] In contrast, if the determination result in step S219 is F (False), the FPGA 104 transmits the configuration failure signal to the PLD 103 (step S234). Then, the PLD 103 counts up the configuration failure counter (step S235). Then, the PLD 103 determines whether or not a value of the configuration failure counter is 2 (step S236).
[0078] If the determination result in step S236 is T (True), the PLD 103 determines that the configuration is not necessary. That is, the PLD 103 determines that the configuration has been executed using the circuit information A and the circuit information B (step S237). Then, the PLD 103 resets the configuration failure counter (counter value 0) and ends the operation (step S238). Thus, the CPU 105 determines that the startup of the FPGA 104 fails and thus there is hardware failure (step S239).
[0079] If the determination result of step S236 is F (False), the PLD 103 determines that it is necessary to perform re-configuration using the circuit information of a startup side opposite to a startup side indicated by the startup side information (step S240). Then, the PLD 103 reads address information of the circuit information of the startup side opposite to the startup side indicated by the startup side information from the start/end address information area F of the flash memory 101 (step S241). Then, the routine from step S217 is executed again.
[0080]
[0081] Then, the CPU 105 sends the configuration instruction to the FPGA 104 (step S305). Subsequently, the FPGA 104 sends the configuration instruction to the PLD 103 (step S306). Then, the PLD 103 provides a configuration command to the FPGA 104 (step S307). Further, the PLD 103 read-accesses the address value 0010000 of the flash memory 101 (step S308). Then, the PLD 103 reads the startup side information (step S309). Then, the PLD 103 sets the first circuit information A as the configuration target in accordance with the read 00. Then, the PLD 103 read-accesses the address value 0000000 in the flash memory 101 (step S310). That is, the PLD 103 inquires the start address value of the first circuit information A and reads the start address value 002 of the first circuit information A (step S311). Then, the PLD 103 read-accesses the address value 0000001 (step S312). That is, the PLD 103 inquires the end address value of the first circuit information A and reads the end address value 040 of the first circuit information A (step S313). Then, the PLD 103 read-accesses the address value 0020000 (step S314). Then, the PLD 103 reads first data of the first circuit information A (step S315). In this case, the PLD 103 shapes the read data of the first circuit information A for the Config I/F. Then, the PLD 103 transmits the first data of the first circuit information A to the FPGA 104 (step S316). In this case, since the first data passes the CRC check, the FPGA 104 writes the first data.
[0082] Then, the PLD 103 read-accesses the address value 0020001 (step S317). Then, the PLD 103 reads the second data of the first circuit information A (step S318). In this case, the PLD 103 shapes the read data for the Config I/F. Then, the PLD 103 transmits the second data of the first circuit information A to the FPGA 104 (step S319). In this case, since the second data passes the CRC check, the FPGA 104 writes the second data.
[0083] Subsequently, the PLD 103 read-accesses the address value 0XXXXXX (<0410000) (step S320). Then, the PLD 103 reads data of the address value 0XXXXXX (<0410000). For example, the PLD 103 finally reads the last data of the first circuit information A (step S321). In this case, the PLD 103 shapes the read data of the first circuit information A for the Config I/F. Then, the PLD 103 transmits the read last data of the first circuit data A to the FPGA 104 (step S322). In this case, since the last data passes the CRC check, the FPGA 104 writes the last data. Subsequently, the FPGA 104 notifies the PLD 103 of the completion of the configuration (step S323). In this case, the PLD 103 confirms that the FPGA 104 has started up using the first circuit information A.
[0084] Then, the PLD 103 notifies the FPGA 104 of 00 as a level signal (step S324). In this case, the FPGA 104 recognizes that the FPGA 104 has started up using the first circuit information A from the notified 00. Further, the PLD 103 resets the configuration failure counter value (counter value 0). Then, the PLD 103 performs software reset on the FPGA 104 (step S325). In this case, the FPGA 104 starts up and stores 00 in the startup information register.
[0085] Then, the CPU 105 read-accesses the startup information register of the FPGA 104 (step S326). Then, the FPGA 104 reads 00 and transmits this data to the CPU 105 (step S327). As a result, the CPU 105 confirms that the FPGA 104 has started up using the first circuit information A that is expected.
[0086]
[0087] Then, the PLD 103 read-accesses the address value 0000002 of the flash memory 101 (step S424). In other words, the PLD 103 inquires the start address value of the second circuit information B, and reads the start address value 041 of the second circuit information B (step S425). Then, the PLD 103 read-accesses the address value 0000003 (step S426). That is, the PLD 103 inquires the end address value of the second circuit information B, and reads the end address value of the second circuit information B (step S427). As a result, the PLD 103 reads the end address value 07F of the second circuit information B. Then, the PLD 103 read-accesses the address value 0410000 (step S428). Then, the PLD 103 reads first data of the second circuit information B (step S429). In this case, the PLD 103 shapes the read data of the second circuit information B for the Config I/F. Then, the PLD 103 transmits the first data of the second circuit information B to the FPGA 104 (step S430). In this case, since the first data passes the CRC check, the FPGA 104 writes the first data.
[0088] Then, the PLD 103 read-accesses the address value 0410001 (step S431). Then, the PLD 103 reads the second data of the second circuit information B (step S432). In this case, the PLD 103 shapes the read data for the Config I/F. Then, the PLD 103 transmits the second data of the second circuit information B to the FPGA 104 (step S433). In this case, the FPGA 104 writes the second data since the second data passes the CRC check.
[0089] Then, the PLD 103 read-accesses the address value 0YYYYYY (step S434).
[0090] Then, the PLD 103 reads data of the address value 0YYYYYY 07FFFFF). For example, the PLD 103 finally reads last data of the second circuit information B (step S435). In this case, the PLD 103 shapes the read data of the second circuit information B for the Config I/F. Then, the PLD 103 transmits the read last data of the second circuit information B to the FPGA 104 (step S436). In this case, since the last data passes the CRC check, the FPGA 104 writes the last data. Subsequently, the FPGA 104 notifies the PLD 103 of the completion of the configuration (step S437). In this case, the PLD 103 confirms that the FPGA 104 has started using the second circuit information B.
[0091] Then, the PLD 103 notifies the FPGA 104 of 01 as a level signal (step S438). As a result, the FPGA 104 recognizes that the FPGA 104 starts up using the second circuit information B from the notified 01. Further, the PLD 103 resets the configuration failure counter value (counter value 0). Then, the PLD 103 performs software reset on the FPGA 104 (step S439). As a result, the FPGA 104 starts up and stores 01 in the startup information register.
[0092] Subsequently, the CPU 105 read-accesses the startup information register of the FPGA 104 (step S440). Then, the FPGA 104 reads 01 and transmits 01 to the CPU 105 (step S441). As a result, the CPU 105 confirms that the FPGA 104 has started up using the second circuit information B that is not expected.
[0093]
[0094] Then, the PLD 103 read-accesses the address value 0YYYYYY (step S534).
[0095] Then, the PLD 103 reads data of the address value 0YYYYYY 07FFFFF). Then, the PLD 103 reads M.sup.th data of the second circuit information B (step S535). In this case, the PLD 103 shapes the read data of the second circuit information B for the Config I/F. Then, the PLD 103 transmits the read M.sup.th data of the second circuit information B to the FPGA 104 (step S536). In this case, in the FPGA 104, CRC check of the M.sup.th data does not pass. Subsequently, the FPGA 104 notifies the PLD 103 of failure of the configuration (step S537). In this case, the PLD 103 counts up the configuration failure counter (counter value+1=2). Further, since the configuration fails using both the first circuit information A and the second circuit information B, the CPU 105 determines that further configuration is unnecessary. Then, the PLD 103 resets the configuration failure counter value (counter value 0).
[0096] Then, the FPGA 104 gets stuck. Then, the CPU 105 read-accesses the startup information register of the FPGA 104 (step S538). However, a time-out of the register access to the FPGA 104 occurs (step S539). Accordingly, the CPU 105 determines that there is hardware failure caused by the FPGA 104.
[0097] As described above, since the configuration control system 100 stores the same circuit information as the circuit information A and the circuit information B in the flash memory 101 and the flash memory 102, normal startup can performed using the other piece of data B (A) even when the soft error occurs in one piece of data A (B). Therefore, the configuration control system 100 can operate with the same functions as before the soft error occurs without system failure, and can be effectively applied to, particularly, a system in which a power-on sequence is frequently generated.
[0098] Further, when the same data is stored as the circuit information A and the circuit information B, and the data is to be upgraded during operation using the first circuit information A, the configuration control system 100 overwrites the upgraded data to only the area of the second circuit information B of the flash memory 101 and the flash memory 102, and then performs the configuration using the overwritten data. In this case, if the soft error occurs in the overwritten data and the configuration fails, the data is restored to a previous version and the system can be started up by performing the re-configuration using the existing first circuit information A. Therefore, the configuration control system 100 can perform a configuration request using the data overwritten from the CPU 105 again without system failure. Thus, the configuration control system 100 is also effective when the circuit information is to be upgraded, for example, due to correction of a bug in a design and/or addition of a function to the design of the FPGA 104.
[0099] As described above, in the configuration control system 100, when the configuration using the first circuit information A fails, the PLD 103 performs the configuration using the second circuit information B again. Therefore, the configuration control system 100 can start up the FPGA 104 without system failure when the soft error occurs.
[0100] Further, in the configuration control system 100, since the PLD 103 includes the single signal line 107 for notifying about which of the circuit information A and the circuit information B stored in the flash memory 101 and the flash memory 102 is used to perform the configuration, a circuit configuration is not complicated and can be simplified.
[0101] Also, in the configuration control system 100, the startup side information area E of the flash memory 101 can store the startup side information, and the start/end address information area F of the flash memory 101 and the flash memory 102 can store the start/end address information.
[0102] Further, in the configuration control system 100, since the PLD 103 includes a retry sequencer for performing a re-configuration when the configuration fails, it is possible to improve accuracy of the configuration.
[0103] Further, in the configuration control system 100, since the circuit information A and the circuit information B are stored in the flash memory 101 and the flash memory 102 as the same circuit information, normal startup can be performed using the other piece of data B (A) even when the soft error occurs in one piece of data A (B). Therefore, the configuration control system 100 can operate with the same functions as before the soft error occurs without system failure, and is effective in, particularly, a system in which a power-on sequence is frequently generated.
[0104] In the configuration control method, when the soft error occurs, the PLD 103 can start up the FPGA 104 without system failure.
[0105] It is to be noted that the configuration control system and the configuration control method are not limited to the above-described exemplary embodiments, and appropriate modifications, improvements, or the like can be made.
[0106] Priority is claimed on Japanese Patent Application No. 2013-123473, filed on Jun. 12, 2013, the content of which is incorporated herein by reference.
INDUSTRIAL APPLICABILITY
[0107] The present invention, for example, can be applied to a system including a semiconductor chip, such as an FPGA. In accordance with the present invention, it is possible to start up the FPGA without system failure even when a soft error occurs.
DESCRIPTION OF REFERENCE SIGNS
[0108] 100 Configuration control system [0109] 101 Flash memory [0110] 102 Flash memory [0111] 103 PLD [0112] 104 FPGA [0113] 105 CPU [0114] 106 Personal computer [0115] 107 Signal line [0116] 108 Cable [0117] 109 Cable [0118] 110 JTAG interface [0119] 111 Cable [0120] 112 Cable [0121] 113 Cable [0122] A First circuit information [0123] B Second circuit information [0124] C First storage area [0125] D Second storage area [0126] E Startup side information area [0127] F Start/end address information area