The present disclosure relates to post-silicon validation of a microcontroller with one or more Central Processing Units (CPUs), and on-chip bus connectivity between different Intellectual Property (IP) cores.
Post-silicon validation is a critical step in order to deliver high quality microcontrollers. However, this validation is becoming more costly and time consuming due to an increased number of IP cores on a semiconductor chip. Some IP cores are developed in-house, whereas others are purchased. These diverse IP cores are then combined to create a microcontroller on a semiconductor chip. Due to limited control of IP core interconnects, more complex test cases and costlier setups are needed in order to create various error and functional scenarios to validate chip functionality. It is becoming more complex to create corner case scenarios, error conditions, and events for microcontroller silicon validation. Further, automotive microcontrollers and software need to undergo additional safety testing, which requires the creation of error scenarios and complex events in silicon. Without intrusive changes in the IP cores, currently this is not feasible.
Prior solutions rely on internal design mechanisms to create directed error scenarios. There is limited coverage as this is an intrusive and time consuming process to implement in Register-Transistor Logic (RTL). Also, this may not always be feasible, especially when IP cores are reused from different sources.
The present disclosure is directed to a modular, customizable signal forcing circuit, which is either integrated into a semiconductor chip after a design is complete, known as late binding, or alternatively, integrated into an IP core of the semiconductor chip during the design stage. The signal forcing circuit enables selective forcing of override signals in silicon based on complex trigger conditions, continuous monitoring of different signals, and determining when to force an override signal with a particular value. The signal forcing circuit also supports forcing of multi-bit on-chip buses.
The signal forcing circuits, which are shown in the figure as black rectangles, can be integrated with existing IP cores (IP1-IP15 in the figure) by placing the circuits to transfer an interface signal between IP cores. A signal forcing circuit can be integrated into the silicon after synthesis of Register-Transistor Logic (RTL) by placing the circuit at a boundary of an IP core and routing its interface signals to the signal forcing circuit. The signal forcing circuits can therefore be bound late in the development of the semiconductor chip 100, providing flexibility in terms of selecting signals to be forced and placement of signal forcing circuits. Configuration registers of the signal forcing circuits can be routed on a separate register configuration bus, which can be either dedicated for signal forcing circuits across the semiconductor chip 100 or shared with other configuration buses.
Examples of IP cores (IP1-IP15) include, but are not limited to, Direct Memory Access (DMA), Radar Interface (RIF), Signal Processing Unit (SPU), Generic Timer Module (GTM), Controller Area Network (CAN), Inter-Integrated Circuit (I2C), Analog-to-Digital Converter (ADC), and Hardware Security Module (HSM).
Alternatively or in addition to late binding at the boundary of the IP core, the signal forcing circuits may be located within any of the IP cores, such as shown In
By default, the signal forcing circuit is bypassed and an input signal of the signal forcing circuits is driven to the output. When the particular override signal of the signal forcing circuit is enabled and triggered, then an override signal is forced as the output signal for a duration as discussed in detail below.
The signal forcing circuit 200 comprises an override circuit 210 and a trigger circuit 220.
The override circuit 210 comprises a Multi-Bit Override (MBO) circuit and a plurality of Single-Bit Override (SBO) circuits, though the disclosure is not limited in this respect. There may be any number of MBO and SBO circuits as suitable for the intended purpose. The SBO and MBO circuits will be described in more detail below with respect to
The override circuit 210 is configured to either be bypassed by transmitting an input signal Din of the signal forcing circuit 200 as an output signal Dout, or in response to a trigger condition, or force an override signal as the output signal Dout. Hardware registers (not shown) within the override circuit 210 to enable/disable signal forcing, and select one or more triggers from a plurality of triggers.
The override circuit 210 may be optimized based on signal width, SBO and MBO, or a override bus implementation. A MBO implementation, to be discussed below with respect to
The trigger circuit 220 comprises trigger subcircuits (Trigger0 . . . Trigger3). In this example, there are four trigger subcircuits, but of course the disclosure is not limited in this respect. The trigger circuit 200 may have any number of trigger subcircuits as suitable for a particular design. The example shown in the figure may have single-bit override signals forced independently, and with an option to select a trigger signal T0 . . . T3 from the four available trigger subcircuits (Trigger0 . . . Trigger3). Having a plurality of trigger subcircuits enables greater flexibility in forcing each signal based on a different condition. The plurality of trigger subcircuits may also be cascaded to create more complex triggers.
Each of the plurality of trigger subcircuits (Trigger0 . . . Trigger3) may be coupled to a trigger bus, along with configuration registers, though the disclosure is not limited in this respect. Also, the trigger subcircuits (Trigger0 . . . Trigger3) may receive signals that are internal to the IP core, and/or external to the IP core via the trigger bus. The trigger subcircuits (Trigger0 . . . Trigger3) are configured to output a trigger signal (T0 . . . T3, respectively) to be output to the override circuit 210 when a respective trigger condition, defined by the respective trigger subcircuit (Trigger0 . . . Trigger3), is met.
The SBO circuit 300 comprises a first multiplexer 310, a trigger selector 320, a configuration register 330, an AND gate 340, and a second multiplexer 350.
The first multiplexer 310 is configured to select, based on a select signal received from AND gate 340, whether to pass the input signal Din as the output signal Dout, or force an override signal as the output signal Dout. The input signal Din, the output signal Dout, and the override signal of the SBO circuit 300 are each a signal of a single bit.
The second multiplexer 350 is configured to select, based on a select signal received from the configuration register 330, the override signal. The override signal may be, for example, a logic 0, a logic 1, an inverted version of the input signal Din, or the input signal Din. Of course the disclosure is not limited to these particular override signal values, but may be any value as suitable.
The configuration register 330 has outputs coupled to the AND gate 340, the trigger selector 320, and the second multiplexer 350. the configuration register 330 is configured by a user to store in registers values indicating when to enable the override signal via the AND gate 340, which trigger signal (T0-T3) to select via the trigger selector 320, and the override signal value to be output by the second multiplexer 350.
The trigger selector 320 is configured to select one or more trigger signals T0 . . . T3 from a plurality of trigger signals based on a select signal received from the configuration register 330. These trigger signals T0 . . . T3 are received from a trigger subcircuit 500, to be described below with respect to
The AND gate 340 is configured to transmit the select signal to the first multiplexer 310 when it receives both the enable signal from the configuration register 330 and a trigger signal T0 . . . T3 from the trigger selector 320. The trigger selector 320 is configured to regularly output to the AND gate 340 its trigger signals T0 . . . T3. The enable signal is output by the configuration register 330 based on when the user decides to force the override signal as the output signal Dout, during one or more selected trigger conditions, as opposed to the input signal Din being the output signal Dout.
The MBO circuit 400 comprises a multiplexer 410, a trigger selector 420, a configuration register 430, an AND gate 440, an override signal register 450, and an override mask 460.
The multiplexer 410, the trigger selector 420, the configuration register 430, and the AND gate 440 function similarly to the first multiplexer 310, the trigger selector 320, the configuration register 330, and the AND gate 340, respectively, of
The override signal register 450 is configured to store override signals a user wants to be forced during particular trigger conditions. These stored override signals are user defined.
The override mask 460 is configured to mask out particular portions of an override signal that a user may not want to force a change in the input signal Din during an override. These portions of the input signal Din may represent, for example, a transaction identification, a source identification, a destination identification, etc. In such a case the user may cause only the data portion of the input signal Din to be forced to be overridden by the override signal. The override mask 460 is thus configured to output an override signal as a multi-bit override signal based on an override signal received from the override signal register 450. The input signal Din is shown in this example as being 32 bits, but of course this is merely exemplary.
The trigger subcircuit 500 comprises a multiplexer 510, a mask & match circuit 520, a trigger status register 530, a counter 540, a latch 550, and a configuration register 560.
The trigger subcircuit 500 is configured to monitor one or more internal signals to detect a trigger condition. When a trigger condition is detected, the trigger subcircuit 500 outputs a trigger signal T0 . . . T3 to cause the override circuit 210 to force the output signal Dout of the signal forcing circuit 200 to be a user-defined override signal. Again, the default situation, that is, when there is no trigger condition, is for the override circuit 210 to pass the input signal Din through as the output signal Dout.
The multiplexer 510 is configured to select, based on a select signal received from the configuration register 560 which stores trigger conditions, between a plurality of internal signals, the input signal Din, and a cascaded trigger signal. The cascaded trigger signal is received from another trigger subcircuit 500, and is used to cascade a plurality of trigger subcircuits 500 to create complex trigger scenarios.
The mask & match circuit 520, which receives the output of the multiplexer 510, is configured to mask the input signal Din and determine when there is a match between the masked input signal and a reference signal as a trigger condition to start forcing the override signal.
The counter 540 is configured to create timer based triggers. For single cycle forcing, the counter 540 can be set with a value of 1. The counter 540 should be configured with a maximum value on which it will be triggered. Also, the counter 540 may be configured to start counting on a particular input signal transition. Alternatively, the counter 540 can be started by application software transmitting to the counter 540 a start bit. It is noted that the mask & match counter 520 and the counter may be used independently or together based on user requirement.
The trigger status register 530 is configured to store a value indicating the status of a trigger. The status may be whether a trigger occurred, whether the trigger is idle, the trigger is active, etc.
The configuration register 560 is configured to store user-defined start and stop trigger conditions for forcing and unforcing the override signal. When a trigger signal output is 1, the output signal Dout is the override signal, otherwise the output signal Dout is the input signal Din. Of course this is assuming that the override circuit is enabled, as discussed above with respect to
The latch 550 is configured to latch a trigger signal T0 . . . T3 until a stop event occurs. This allows the trigger subcircuit 500 to reuse the mask & match circuit 520 and the counter 540 after the trigger signal starts to detect a stop point of the trigger signal T0 . . . T3, that is, the override signal. There may be independent configuration registers 560 to define the start and stop trigger conditions.
In Step 610, a signal forcing circuit 200 located within an IP core (IP1 . . . IP15), or located at a boundary of the IP core (IP1 . . . IP15) coupling the IP core (IP1 . . . IP15) with another IP core (IP1 . . . IP15), transmits an input signal received by the IP core (IP1 . . . IP15) as an output signal Dout.
Then, in Step 620, in response to a trigger condition, the signal forcing circuit 200 forces, an override signal as the output signal Dout.
The output signal Dout may be forced with an override signal under any number of trigger conditions. The override signal forcing may be based on a predefined event, for example, after a reset of an IP core or any other signal transition as desired, based on expiration of counter value to achieve a fixed delay, or a combination of these conditions. Further, the override signal forcing may be based on cascaded trigger conditions or after a plurality of trigger conditions are met. Even further, the override signal forcing may be immediate based on software control.
The duration of the override signal forcing may be fixed based on a counter value, based on an event or signal transition, or a combination of these conditions. Alternatively, the duration may be permanent, last a single cycle, or any number of clock cycles as desired.
A signal forcing circuit may have any number of override signals forced. Also, the number of trigger subcircuits is not limited, and may be any number as suitable for a given design. The signal forcing circuit RTL is flexible to configure for any number of instances and generate a corresponding netlist. The signal forcing circuits thus may be easily customized for each IP core/interface and save die area.
The signal forcing circuit described herein is advantageous over prior circuits in many respects. This circuit is an easy way to create complex error scenarios by actively forcing error signals, or forcing signals in silicon to create error scenarios. The circuit also reduces test content complexity by providing silicon support to create complex micro-architectural scenarios. It is an easier way to debug and design workarounds. There is reduced complexity of setups to create error scenarios. The signal forcing circuit also facilitates easier testing of safety standards and compliance by injecting errors in silicon. There is testing of application software by creating a corner case scenario. The circuit provides a less expensive way to implement a workaround by using either continuous signal forcing (to alter a signal state) or by actively forcing signals based on trigger conditions. There is also a faster time to market by reducing the number of silicon stepping as bug workarounds can be implemented without design change.
For the purposes of this discussion, the term “circuit” shall be understood to be circuit(s), processor(s), logic, or a combination thereof. For example, a circuit can include an analog circuit, a digital circuit, state machine logic, other structural electronic hardware, or a combination thereof.
While the foregoing has been described in conjunction with exemplary aspects, it is understood that the term “aspect” is merely meant as an example, rather than the best or optimal. Accordingly, the disclosure is intended to cover alternatives, modifications and equivalents, which may be included within the scope of the disclosure.
Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that a variety of alternate and/or equivalent implementations may be substituted for the specific embodiments shown and described without departing from the scope of the present disclosure. This disclosure is intended to cover any adaptations or variations of the specific embodiments discussed herein.