PSoC® Creator™ Component Datasheet Voltage Fault Detector (VFD) 1.0 Features monitor up to 32 voltage inputs user-defined over and under voltage limits simply outputs a good/bad status result General Description The Voltage Fault Detector component provides a simple way to monitor up to 32 voltage inputs against user-defined over and under voltage limits without using the ADC and without having to write any firmware. The component simply outputs a good/bad status result (“power good” or pg[x]) for each voltage being monitored. The component operates entirely in hardware without any intervention from PSoC’s CPU core resulting in known, fixed fault detection latency. Note: This component does not support PSoC5 device. When to Use a VFD The Voltage Fault Detector component is capable of interfacing to up to 32 voltage inputs and is responsible for determining the health of those voltages by comparing them to either a userdefined under-voltage (UV) threshold or over-voltage (OV) threshold or both. Input/Output Connections This section describes the various input and output connections for the Voltage Fault Detector. Clock – Input Clock used to set the time base for the componentshould be set to 16x the desired multiplexing frequency. When internal OV and UV thresholds are generated by VDACs, the multiplexing frequency is largely determined by the VDAC update rate. When the VDACs are configured for 0-1V range, the multiplexing frequency cannot exceed 500 kHz (clock = 8 MHz) factoring in the VDAC update rate plus DMA time to adjust DACs and analog settling time. When the VDACs are configured for 0-4V range, the multiplexing frequency cannot exceed 200 kHz (clock = 3.2 MHz). CypressSemiconductorCorporation•198 Champion Court•SanJose,CA95134-1709•408-943-2600 Document Number: 001-80924 Rev. *A Revised July 29, 2015 Voltage Fault Detector PSoC® Creator™ Component Datasheet When external references are selected, the user can set the timebase to a frequency that meets the system requirements. In that case, the VDAC settling time does not need to be factored in, because the VDACs are not present. In this usage case, the OV and/or UV thresholds will be common across the entire voltage set to be monitored, so the frequency is limited only by the analog voltage settling time and the maximum frequency of operation of the component’s state machine. A practical limit might be 12 MHz. In either case, since DMA is involved and needs to run to completion within the time window dictated by the multiplexing frequency selected, this component inherently dictates a minimum BUS_CLK frequency. The component minimum BUS_CLK:clock ratio for this component is 2:1. Enable – Input This synchronous active high signal gates the clock input to the state machine controller. One purpose of this input is to support VDAC calibration. Over Voltage Reference – Analog Input This analog input is exposed only when the “ExternalRef” parameter is true. In this case, the user provides an over voltage threshold that replaces the internal OV VDAC. This can come from a PSoC pin or through a separate instantiation of a VDAC, for example. Under Voltage Reference – Analog Input This analog input is exposed only when the “ExternalRef” parameter is true. In this case, the user provides an under voltage threshold that replaces the internal UV VDAC. This can come from a PSoC pin or through a separate instantiation of a VDAC, for example. Voltages – Analog Input These analog inputs are the voltages that this component needs to monitor. The number of terminals displayed depends on the number of voltages selected by the user up to a maximum of 32. Power Good – Output Global: Active high signal indicating all voltages are within range Individual:Active high signal indicating v[x] is within range End of Cycle – Output This terminal pulses active high after every voltage input has been compared to its reference threshold(s). It indicates the end of one complete comparison cycle. For example, this signal could be used to capture the reference voltage VDACs for calibration purposes. Page 2 of 20 Document Number: 001-80924 Rev. *A PSoC® Creator™ Component Datasheet Voltage Fault Detector Over Voltage VDAC – Analog Output This analog output is exposed when the “ExternalRef” parameter is true. The purpose of this is to enable calibration of the OV VDAC. To properly support the calibration activity, the component needs to be disabled through an API call or by de-asserting the en terminal. Under Voltage VDAC – Analog Output This analog output is exposed when the “ExternalRef” parameter is true. The purpose of this is to enable calibration of the UV VDAC. To properly support the calibration activity, the component needs to be disabled through an API call or by de-asserting the en terminal. Schematic Macro Information This section contains pertinent information for the schematic macro in the Voltage Fault Detector. Figure 1. Voltage Fault Detector Schematic Macro Document Number: 001-80924 Rev. *A Page 3 of 20 Voltage Fault Detector PSoC® Creator™ Component Datasheet Figure 2. 8+1 Voltage Fault Detector Schematic Macro Figure 3. 12+1 Voltage Fault Detector Schematic Macro The symbol dynamically resizes depending on the number of voltages selected for fault detection in the component customizer. Page 4 of 20 Document Number: 001-80924 Rev. *A PSoC® Creator™ Component Datasheet Voltage Fault Detector Component Parameters Drag a VFD onto your design desktop and double-click it to open the Configure dialog. Figure 4 shows the Configure dialog. Figure 4.Configure VFD Dialog – General Tab Figure 5. Configure VDF Dialog – Voltages Tab Document Number: 001-80924 Rev. *A Page 5 of 20 Voltage Fault Detector PSoC® Creator™ Component Datasheet The VFD provides the following parameters. GeneralOptions NumVoltages Number of voltages to be monitored. Range=1-32 (default 8). CompareType Pull-down list to select comparator type(default = OV/UV) Options = OV/UV, OV only, UV only. GFLength Glitch filter length. Absolute units depend on the reference clock input(default = 8) Options = 1..255. ExternalRef Checkbox (default unchecked) DACRange Pull-down list to select internal VDAC range(default = 1V) Options = 1V, 4V This pull-down list is grayed out if ExternalRef is checked. PhysicalPlacement Pull-down list to select placement options. Some options will be grayed out depending on the CompareType parameter setting. DAC selection will be tied to the CMP selection. That is DAC0 goes with CMP0 etc.(default = Comp1+3) Options = Comp0, Comp1, Comp2, Comp3, Comp0+2, Comp1+3. AnalogBus Pull-down list to select routing options. Some options will be grayed out depending on the PhysicalPlacement parameter setting. This parameter will place an analog routing constraint on the analog net in the schematic that feeds the input to the comparator(default = AMUXBUSR) Options = AMXUBUSR, AMXUBUSL, Unconstrained. VoltagesOptions Label[x] Text field, 16 characters. For annotation purposes only. By default this field is empty and no value is required. Page 6 of 20 Document Number: 001-80924 Rev. *A PSoC® Creator™ Component Datasheet Voltage Fault Detector VNom[x] Nominal voltage. For annotation purposes only. Range=0.01–65.54 UVFault[x] Under voltage fault threshold. Range=0.01–65.54 This is initially blank. OVFault[x] Over voltage fault threshold. Range=0.01–65.54 This is initially blank. Scale[x] Input voltage scaling factor. Indicates the amount of attenuation applied to the converter output voltage before connecting to PSoC. Range=0.001-1.000 (default 1.000). Placement The choice of routing byAMUXBUSx, ABUSx[] or AGx[] is by default set to AMUXBUSR, but the user can override this to maximize routing efficiency. Application Programming Interface Application Programming Interface (API) routines allow you to configure the component using software. The following table lists and describes the interface to each function. The subsequent sections cover each function in more detail. By default, PSoC Creator assigns the instance name " VFD_1" to the first instance of a component in a given design. You can rename it to any unique value that follows the syntactic rules for identifiers. The instance name becomes the prefix of every global function name, variable, and constant symbol. For readability, the instance name used in the following table is "VFD" Functions Function Description VFD_Start() Enables the component VFD_Stop () Disables the component VFD_Init() Initializes the component VFD_Enable() Enables hardware blocks VFD_GetOVFaultStatus() Returns over voltagefault status of each voltage input VFD_GetUVFaultStatus() Returns under voltagefault status of each voltage input Document Number: 001-80924 Rev. *A Page 7 of 20 PSoC® Creator™ Component Datasheet Voltage Fault Detector VFD_SetUVFaultThreshold() Sets the under voltage fault threshold for the specified voltage input VFD_GetUVFaultThreshold() Returns the under voltage fault threshold for the specified voltage input VFD_SetOVFaultThreshold() Sets the over voltage fault threshold for the specified voltage input VFD_GetOVFaultThreshold() Returns the under voltage fault threshold for the specified voltage input VFD_SetUVGlitchFilterLength() Sets the UV filterLength value VFD_GetUVGlitchFilterLength() Returns the UV filterLength value VFD_SetOVGlitchFilterLength() Sets the OV filterLength value VFD_GetOVGlitchFilterLength() Returns the OV filterLength value VFD_SetUVDac() Sets UV DAC value of each channel VFD_GetUVDac () Gets UV DAC value for the specified voltage input VFD_ VFD_SetOVDac () Sets OV DAC value of each channel VFD_GetOVDac() Gets OV DAC value for the specified voltage input VFD_Pause() Disables the clock to the comparator controller state machine VFD_Resume() Enables the clock to the comparator controller state machine VFD_SetUVDacDirect() Allows manual control of the UV VDAC value VFD_GetUVDacDirect() Returns current UV VDAC VFD_SetOVDacDirect() Allows manual control of the OV VDAC VFD_GetOVDacDirect() Returns current OV VDAC VFD_ComparatorCal() Runs a calibration routine Global Variables Function VFD_NUMBER_OF_VOLTAGES Page 8 of 20 Description Number of voltages to be monitored. Range=1-32 Document Number: 001-80924 Rev. *A PSoC® Creator™ Component Datasheet Voltage Fault Detector voidVFD_Start(void) Description: Enables the component. Calls the Init() API if the component has not been initialized before. Calls Enable() API. Parameters: None Return Value: None Side Effects: None voidVFD_Stop(void) Description: Disables the component. Parameters: None Return Value: None Side Effects: pgood and pg[x] outputs are de-asserted voidVFD_Init(void) Description: Disables the component. Parameters: None Return Value: None Side Effects: None voidVFD_Enable(void) Description: Enables hardware blocks within the component and starts the state machine. Parameters: None Return Value: None Side Effects: None uint32 VFD_GetOVFaultStatus(void) Description: Returns over voltagefault status of each voltage input. Parameters: None Return Value: uint32 ovFaultStatus Bit Field OV Fault Status 0 1=OV fault condition on Voltage Input 1 Document Number: 001-80924 Rev. *A Page 9 of 20 PSoC® Creator™ Component Datasheet Voltage Fault Detector Side Effects: 1 1=OV fault condition on Voltage Input 2 … … 31 1=OV fault condition on Voltage Input 32 Calling this API clears the fault condition source sticky bits. If the condition still persists then the bit will be set again after the next scan uint32VFD_GetUVFaultStatus(void) Description: Returns under voltagefault status of each voltage input. Parameters: None Return Value: Side Effects: uint32 uvFaultStatus Bit Field UV Fault Status 0 1=UV fault condition on Voltage Input 1 1 1=UV fault condition on Voltage Input 2 … … 31 1=UV fault condition on Voltage Input 32 Calling this API clears the fault condition source sticky bits. If the condition still persists then the bit will be set again after the next scan. voidVFD_SetUVFaultThreshold(uint8 voltageNum, uint16 uvFaultThreshold) Description: Parameters: Sets the under voltage fault threshold for the specified voltage input. The uvFaultThreshold parameter should be stored as is in SRAM for retrieval by the GetUVFaultThreshold() API. The calculated VDAC value gets written to an SRAM buffer for use by the DMA controller that drives the UV DAC. This API does not apply when ExternalRef=true. uint8 voltageNum Specifies the voltage input number Valid range: 1..32 uint16 uvFaultThreshold Specifies the under voltage fault threshold in mV Valid range: 1..65,535 Return Value: Page 10 of 20 None Document Number: 001-80924 Rev. *A PSoC® Creator™ Component Datasheet Voltage Fault Detector The under voltage fault threshold in mV Valid range: 1..65,535 Document Number: 001-80924 Rev. *A Page 11 of 20 Voltage Fault Detector Side Effects: PSoC® Creator™ Component Datasheet uvFaultThreshold value is rounded to fit the VDAC data register format. As a result, the actual threshold value may be different from uvFaultThreshold. voidVFD_SetOVFaultThreshold(uint8 voltageNum, uint16 ovFaultThreshold) Description: Parameters: Sets the over voltage fault threshold for the specified voltage input. The ovFaultThreshold parameter should be stored as is in SRAM for retrieval by the GetOVFaultThreshold() API. The calculated VDAC value gets written to an SRAM buffer for use by the DMA controller that drives the OV DAC. This API does not apply when ExternalRef=true. uint8 voltageNum Specifies the voltage input number Valid range: 1..32 uint16 ovFaultThreshold Specifies the over voltage fault threshold in mV Valid range: 1..65,535 Return Value: None Side Effects: ovFaultThreshold value is rounded to fit the VDAC data register format. As a result, the actual threshold value may be different from uvFaultThreshold. uint16 VFD_GetOVFaultThreshold(uint8 voltageNum) Description: Returns the under voltage fault threshold for the specified voltage input that was stored in SRAM by the SetOVFaultThreshold() API. This API does not apply when ExternalRef=true. Parameters: uint8 voltageNum Specifies the voltage input number Valid range: 1..32 Return Value: uint16 ovFaultThreshold The over voltage fault threshold in mV Valid range: 1..65,535 Side Effects: None voidVFD_SetUVGlitchFilterLength(uint8 filterLength) Description: Parameters: The filterLengthvalue updates the UV Glitch Filter. uint8 filterLength Absolute time units depend on the input clock frequency Valid range: 1..255 Return Value: None Side Effects: None uint16 VFD_GetUVFaultThreshold(uint8 voltageNum) Page 12 of 20 Document Number: 001-80924 Rev. *A PSoC® Creator™ Component Datasheet Voltage Fault Detector Description: Returns the under voltage fault threshold for the specified voltage input that was stored in SRAM by the SetUVFaultThreshold() API. This API does not apply when ExternalRef=true. Parameters: uint8 voltageNum Specifies the voltage input number Valid range: 1..32 Return Value: uint16 uvFaultThreshold The under voltage fault threshold in mV Valid range: 1..65,535 Side Effects: None uint8 VFD_GetUVGlitchFilterLength(void) Description: Returns the filterLength value currently being used by the UV Glitch Filter. Parameters: None Return Value: uint8 filterLength Absolute time units depend on the input clock frequency Valid range: 1..255 Side Effects: None voidVFD_SetOVGlitchFilterLength(uint8 filterLength) Description: Parameters: The filterLengthvalue updates to the OV Glitch Filter. uint8 filterLength Absolute time units depend on the input clock frequency Valid range: 1..255 Return Value: None Side Effects: None uint8 VFD_GetOVGlitchFilterLength(void) Description: Returns the filterLength value currently being used by the OV Glitch Filter. Parameters: None Return Value: uint8 filterLength Absolute time units depend on the input clock frequency Valid range: 1..255 Side Effects: None voidVFD_SetUVDac(uint8 voltageNum, uint8 dacValue) Document Number: 001-80924 Rev. *A Page 13 of 20 Voltage Fault Detector Description: Parameters: PSoC® Creator™ Component Datasheet The dacValue gets written to an SRAM buffer for use by the DMA controller that drives the UV DAC for the specified voltage input. This API does not apply when ExternalRef=true. uint8 voltageNum Specifies the voltage input number Valid range: 1..32 uint8 dacValue Specifies the value to be written to the UV VDAC Valid range: 1..255 Return Value: None Side Effects: None uint8 VFD_GetUVDac(uint8 voltageNum) Description: Returns the dacValue currently being used by the DMA controller that drives the UV DAC for the specified voltage input. This API does not apply when ExternalRef=true. Parameters: uint8 voltageNum Specifies the voltage input number Valid range: 1..32 Return Value: uint8 dacValue Side Effects: None voidVFD_SetOVDac(uint8 voltageNum, uint8 dacValue) Description: Parameters: The dacValue gets written to an SRAM buffer for use by the DMA controller that drives the OV DAC for the specified voltage input. This API does not apply when ExternalRef=true. uint8 voltageNum Specifies the voltage input number Valid range: 1..32 uint8 dacValue Specifies the value to be written to the OV VDAC Valid range: 1..255 Return Value: None Side Effects: None uint8 VFD_GetOVDac(uint8 voltageNum) Description: Returns the dacValue currently being used by the DMA controller that drives the OV DAC for the specified voltage input. This API does not apply when ExternalRef=true. Parameters: uint8 voltageNum Specifies the voltage input number Valid range: 1..32 Page 14 of 20 Document Number: 001-80924 Rev. *A PSoC® Creator™ Component Datasheet Voltage Fault Detector Return Value: uint8 dacValue Side Effects: None voidVFD_Pause(void) Description: Disables the clock to the comparator controller state machine. Note that calling this API does not stop the DMA controller if it is in the process of executing transactions. DMA takes around 20 BUS_CLK cycles to complete assuming that no other resource is using the DMA controller at the same time. Therefore, if the purpose of calling this API is specifically to change VDAC settings (for calibration purposes for example), sufficient time should be allowed to let the DMA controller run to completion before attempting to access the VDACs directly. Parameters: None Return Value: None Side Effects: Stops the fault detection state machine. Does not stop the DMA controller immediately voidVFD_Resume(void) Description: Enables the clock to the comparator controller state machine. Parameters: None Return Value: None Side Effects: Restarts the fault detection logic voidVFD_SetUVDacDirect(uint8 dacValue) Description: Parameters: Allows manual control of the UV VDAC value. The dacValue is written directly to the VDAC component. Useful for UV VDAC calibration. This API does not apply when ExternalRef=true. uint8 dacValue Valid range: 1..255 Return Value: None Side Effects: Calling this API may cause the comparator to trigger a fault condition. To prevent this, call the VFD_Pause() API prior to calling this API uint8 VFD_GetUVDacDirect(void) Description: Returns current UV VDAC. The returned dacValue is read directly from the VDAC component. Useful for UV VDAC calibration. Note: if this API is called while the component is running, it isn’t possible to know which voltage input the UV VDAC value is associated with. This API does not apply when ExternalRef=true. Parameters: None Return Value: uint8 dacValue Side Effects: None Document Number: 001-80924 Rev. *A Page 15 of 20 Voltage Fault Detector PSoC® Creator™ Component Datasheet voidVFD_SetOVDacDirect(uint8 dacValue) Description: Parameters: Allows manual control of the OV VDAC. The dacValue is written directly to the VDAC component. Useful for OV VDAC calibration. This API does not apply when ExternalRef=true. uint8 dacValue Valid range: 1..255 Return Value: None Side Effects: Calling this API may cause the comparator to trigger a fault condition. To prevent this, call the VFD_Pause() API prior to calling this API uint8 VFD_GetOVDacDirect(void) Description: Returns current OV VDAC. The returned dacValue is read directly from the VDAC component. This is useful for OV VDAC calibration. Note: If this API is called while the component is running, it is impossible to know which voltage input the OV VDAC value is associated with. This API does not apply when ExternalRef=true. Parameters: None Return Value: uint8 dacValue Side Effects: None voidVFD_ComparatorCal(enumcompType) Description: Parameters: Runs a calibration routine that measures the selected comparator’s offset voltage by shorting its inputs together and corrects for it by writing to the CMP block’s trim register enumcompType Valid values: OV, UV Return Value: None Side Effects: Calling this API may cause the comparator to trigger a fault condition. To prevent this, call the VFD_Pause() API prior to calling this API Sample Firmware Source Code PSoC Creator provides numerous example projects that include schematics and example code in the Find Example Project dialog. For component-specific examples, open the dialog from the Component Catalog or an instance of the component in a schematic. For general examples, open the dialog from the Start Page or File menu. As needed, use the Filter Options in the dialog to narrow the list of projects available to select. Refer to the "Find Example Project" topic in the PSoC Creator Help for more information. Page 16 of 20 Document Number: 001-80924 Rev. *A PSoC® Creator™ Component Datasheet Voltage Fault Detector Functional Description The diagram below shows the schematic representation of the Voltage Fault Detector. Figure 6. Schematic Representation of Voltage Fault Detector 1. The “VS[4:0]” signals are responsible for connecting the voltage to be tested to the analog multiplexer. They are derived from a down counter block, so the voltages are muxedin to the fault detection scheme in reverse order. The signals have a deadtime between them ensuring a break-before-make connection 2. The first event is to latch the most recent comparator output into the Glitch Filter. 3. The vdac_wr control signal is generated next and is used to DMA the OV and UV thresholds for the next voltage into the VDACs when they are enabled. 4. The res_rd control signal is generated last and is used to switch the context of the Glitch Filter in and out of SRAM. The DMA controllers with the “_RD” suffix read the Glitch Filter count for the current voltage and write it to SRAM. The DMA controllers with the “_WR” suffix write the glitch filter result from the last measurement of the next voltage back from SRAM back to the Glitch Filter The “Glitch Filter” component is a counter that gets reset anytime the associated comparator “power good” output is good. This causes the Glitch Filter “power fail” output to report good on the next clock cycle. If the comparator output is bad, the counter inside the Glitch Filter starts to increment. Once it hits the programmed count value (Glitch Filter delay), the Glitch Filter output Document Number: 001-80924 Rev. *A Page 17 of 20 PSoC® Creator™ Component Datasheet Voltage Fault Detector goes bad. Thus the Glitch Filter propagates good values immediately, but filters bad values only once the programmed glitch filter count value expires. The Glitch Filter outputs feed back into the bVoltageFaultDetector component where they are latched into status registers for the CPU to access and are also used to generate the “power good” outputs for the component “PG[x]”. When internal VDACs are used to set the OV/UV thresholds, the user can select between the 01V range and the 0-4V range. The advantage of the 0-1V range is that the VDAC update rate is higher (1 MHz) compared to the 250 kHz of the 0-4V range. This translates to a faster fault detection time, critical in many applications. In either case, all voltages to be monitored need to be scaled such that they fall within the selected VDAC range in the extreme case. That is, the OV threshold for any given voltage must fall within the VDAC max limits. The general guideline is that all voltages should be scaled such that the nominal voltage is within 85% of the selected VDAC upper limit. This is assuming that the OV threshold is no more than 10% above nominal. The customizer and the component datasheet need to provide recommendations for scaling and enforce checks to make sure that the user’s settings match hardware capabilities. Resources The Voltage Fault Detector component is placed throughout the UDB array. The component utilizes the following resources (for the Compare Type set to OV/UV). Configuration (number of voltages ) 8 16 24 32 Resource Type Datapath Cells 1 1 1 1 Macrocells Status Cells Control Cells 88 92 109 127 2 4 6 8 3 3 3 3 DMA Channels 6 6 6 6 Interrupts – – – – API Memory Usage The component memory usage varies significantly, depending on the compiler, device, number of APIs used and component configuration. The following table provides the memory usage for all APIs available in the given component configuration. The measurements have been done with the associated compiler configured in Release mode with optimization set for Size. For a specific design, the map file generated by the compiler can be analyzed to determine the memory usage. Configuration (number of voltages ) 8 16 Page 18 of 20 PSoC 3 (Keil_PK51) Flash SRAM Bytes Bytes 3002 85 3031 149 Document Number: 001-80924 Rev. *A PSoC® Creator™ Component Datasheet 24 32 3186 3253 Voltage Fault Detector 213 277 DC and AC Electrical Characteristics The following values indicate expected performance and are based on initial characterization data. VFD DC Specifications Component’s DC characteristics are related to VDAC and Comparator components DC characteristics. Please refer to the appropriate datasheet for more information. VFD AC Specifications Parameter CLKFreq Description Operating frequency TFaultDet Voltage fault detection time (Per rail) CMPTResp Conditions Min Typ Max Units Internal DAC, 1V range - - 8 MHz Internal DAC, 4V range - - 3.2 MHz External reference - - 12 MHz 1V DAC range 1.8 2 2.2 μs 4V DAC range 4.5 5 5.5 μs 30 75 110 ns Comparator response time Component Changes This section lists the major changes in the component from the previous version. Version Description of Changes 1.0.a Minor datasheet edit. 1.0 First release Document Number: 001-80924 Rev. *A Reason for Changes / Impact Page 19 of 20 Voltage Fault Detector PSoC® Creator™ Component Datasheet © Cypress Semiconductor Corporation, 2012-2015. The information contained herein is subject to change without notice. Cypress Semiconductor Corporation assumes no responsibility for the use of any circuitry other than circuitry embodied in a Cypress product. Nor does it convey or imply any license under patent or other rights. Cypress products are not warranted nor intended to be used for medical, life support, life saving, critical control, or safety applications, unless pursuant to an express written agreement with Cypress. Furthermore, Cypress does not authorize its products for use as critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress products in life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges. PSoC® is a registered trademark, and PSoC Creator™ and Programmable System-on-Chip™ are trademarks of Cypress Semiconductor Corp. All other trademarks or registered trademarks referenced herein are property of the respective corporations. Any Source Code (software and/or firmware) is owned by Cypress Semiconductor Corporation (Cypress) and is protected by and subject to worldwide patent protection (United States and foreign), United States copyright laws and international treaty provisions. Cypress hereby grants to licensee a personal, non-exclusive, non-transferable license to copy, use, modify, create derivative works of, and compile the Cypress Source Code and derivative works for the sole purpose of creating custom software and or firmware in support of licensee product to be used only in conjunction with a Cypress integrated circuit as specified in the applicable agreement. Any reproduction, modification, translation, compilation, or representation of this Source Code except as specified above is prohibited without the express written permission of Cypress. Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress reserves the right to make changes without further notice to the materials described herein. Cypress does not assume any liability arising out of the application or use of any product or circuit described herein. Cypress does not authorize its products for use as critical components in lifesupport systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress’ product in a life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges. Use may be limited by and subject to the applicable Cypress software license agreement. Page 20 of 20 Document Number: 001-80924 Rev. *A