End User License Agreement for Software related to Hisilicon HiKey960 Board

THIS END USER LICENSE AGREEMENT (“AGREEMENT”) IS A LEGAL AGREEMENT BETWEEN
YOU (EITHER A SINGLE INDIVIDUAL, OR SINGLE LEGAL ENTITY) AND HISILICON
TECHNOLOGIES CO., LTD. (&quot;HISILICON&quot;) FOR THE USE OF THE SOFTWARE ACCOMPANYING
THIS AGREEMENT. HISILICON IS ONLY WILLING TO LICENSE THE SOFTWARE TO YOU ON
CONDITION THAT YOU ACCEPT ALL OF THE TERMS IN THIS AGREEMENT. BY CLICKING “I
AGREE” OR BY INSTALLING OR OTHERWISE USING OR COPYING THE SOFTWARE YOU
INDICATE THAT YOU AGREE TO BE BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF
YOU DO NOT AGREE TO THE TERMS OF THIS AGREEMENT, HISILICON IS UNWILLING
TO LICENSE THE SOFTWARE TO YOU AND YOU MAY NOT INSTALL, USE OR COPY THE
SOFTWARE, AND YOU SHALL PROMPTLY DESTROY, DELETE, OR RETURN THE SOFTWARE TO
YOUR SUPPLIER.

“SOFTWARE” means the software in object code provided under the terms of this Agreement related
to Hisilicon HiKey960 Board.

1. GRANT OF LICENSE
In consideration of your agreement to abide by the following terms, and subject to the terms and conditions of
this Agreement, HISILICON hereby grants YOU, a non-transferable, non-exclusive, royalty-free, revocable,
worldwide copyright license (without the right to sublicense) to use and copy the SOFTWARE solely for the
purpose of designing or developing applications for use in conjunction with Hisilicon HiKey960 Board.
All rights to the SOFTWARE and all intellectual property rights contained therein shall remain the sole and
exclusive property of HISILICON. The SOFTWARE is licensed not sold. Except as expressly licensed in
Clause 1, in no event shall the license granted in this Clause 1 be construed as granting YOU expressly or by
implication, estoppels or otherwise, licenses to any intellectual property rights, including but not limited to
patent rights, copyrights, trademark or trade secret in the SOFTWARE.
No right is granted to YOU under this Agreement to manufacture, have manufactured, or sell, supply or
distribute any products which have taken into use or which embody any of the SOFTWARE or any of the
intellectual property rights embodied therein.

2. RESTRICTIONS
This Agreement does not prevent YOU from using the SOFTWARE for internal benchmarking purposes.
However, YOU shall treat any and all benchmarking data relating to the SOFTWARE, and any other results of
your use or testing of the SOFTWARE which are indicative of its performance, efficacy, reliability or quality,
as confidential information and YOU shall not disclose such information to any third party without the express
written permission of HISILICON.

YOU shall reproduce and not remove or obscure any notice incorporated by HISILICON in the SOFTWARE to
protect HISILICON’s intellectual property rights embodied therein.
YOU shall not decompile, disassemble, or reverse engineer the SOFTWARE.

3. FEEDBACK
YOU may choose to provide suggestions, comments, feedback, ideas, modifications or know-how (whether in
oral or written form) relating to the use of the SOFTWARE (&quot;Feedback&quot;) to HISILICON under the terms of this
Agreement. YOU hereby grants to HISILICON and its affiliates, under all of your and your affiliates’ (as applicable)
intellectual property rights, a perpetual, irrevocable, royalty free, non-exclusive, worldwide license
to (i) use, copy and modify the Feedback; (ii) sell, supply, or otherwise distribute the Feedback; (iii) design,
have designed, manufacture, have manufactured, use, import, sell, and otherwise distribute and dispose of
products that incorporate the Feedback; and (iv) sublicense (together with the rights to further sublicense) the
rights granted in this paragraph to any third party.

4. NO WARRANTY
YOU AGREE THAT THE SOFTWARE IS PROVIDED BY HISILICON ON AN &quot;AS IS&quot; BASIS.
HISILICON MAKES NO WARRANTY, EXPRESSED OR IMPLIED OR STATUTORY, WITH RESPECT
TO ANY OF THE SOFTWARE, INCLUDING WITHOUT LIMITATION, ANY IMPLIED WARRANTIES
OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE OR
NON-INFRINGEMENT.
YOU EXPRESSLY ASSUME ALL LIABILITIES AND RISKS, FOR USE OR OPERATION OF THE
SOFTWARE, INCLUDING WITHOUT LIMITATION, SOFTWARE APPLICATIONS DESIGNED OR
INTENDED FOR MISSION CRITICAL APPLICATIONS, SUCH AS PACEMAKERS, WEAPONRY,
AIRCRAFT NAVIGATION, FACTORY CONTROL SYSTEMS, ETC. SHOULD THE SOFTWARE
PROVE DEFECTIVE, YOU ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

5. NO LIABILITY
PLEASE READ THE INSTRUCTIONS COMPLETELY, AND PLEASE NOTE THAT YOU SHOULD USE
THE SOFTWARE AT YOUR OWN RISK.
IN NO EVENT SHALL HISILICON BE LIABLE FOR ANY DIRECT OR INDIRECT, SPECIAL,
INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE OF OR INABILITY TO USE
THE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT
(INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHER LEGAL THEORY, EVEN IF HISILICON
HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. EVEN IF THE SOFTWARE HAS
ANY MATERIAL, VERIFIABLE, AND REPRODUCIBLE PROGRAM ERRORS, HISILICON SHALL
HAVE NO LIABILITY TO MODIFY SUCH ERRORS.
NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED IN THIS AGREEMENT, THE
MAXIMUM LIABILITY OF HISILICON TO YOU IN AGGREGATE FOR ALL CLAIMS MADE AGAINST
HISILICON IN CONTRACT TORT OR OTHERWISE UNDER OR IN CONNECTION WITH THE
SUBJECT MATTER OF THIS AGREEMENT SHALL NOT EXCEED THE TOTAL OF SUMS
RECEIVED BY HISILICON FROM YOU FOR THIS AGREEMENT. THE EXISTENCE OF MORE
THAN ONE CLAIM WILL NOT ENLARGE OR EXTEND THE LIMIT.

6. CONFIDENTIALITY
YOU acknowledge and agree that the SOFTWARE and any benchmarking data and related information
provided under this Agreement contain trade secrets and confidential material of HISILICON and YOU agree
to maintain all such information in confidence and apply security measures no less stringent than the measures
which YOU apply to protect your own like information, but not less than a reasonable degree of care, to prevent
their unauthorized disclosure and use. The period of confidentiality shall be indefinite. YOU agree not to use
any such information other than in normal use of the SOFTWARE under the license granted in this Agreement.

7. TERM AND TERMINATION
This Agreement shall remain in force until terminated. HISILICON may terminate this Agreement at any time
with or without any cause. Upon termination of this Agreement, YOU shall immediately stop using the
SOFTWARE and confidential information and destroy all copies of the SOFTWARE and confidential
information in your possession, together with all documentation and related materials. The provisions
of clauses 3, 4, 5, 6, 7 and 8 shall survive termination of this Agreement.

8. GENERAL
Any provision of this Agreement which is prohibited or unenforceable in any jurisdiction shall be ineffective to
the extent of such prohibition or unenforceability without affecting, impairing or invalidating the remaining
provisions hereof.
The failure by HISILICON to enforce any of the provisions of this Agreement, unless waived in writing,
shall not constitute a waiver of HISILICON&#39;s rights to enforce such provision or any other provision of
this Agreement in the future.
At HISILICON’s request, YOU agree to check your computers for installations of the SOFTWARE and any
other information requested by HISILICON relating to SOFTWARE installation and to provide this
information to HISILICON. YOU agree that employees or auditors nominated by HISILICON may also
perform such checking and reporting on behalf of HISILICON by prior appointment during your normal
business hours on seven (7) days’ notice. HISILICON shall bear the auditors’ costs for that audit unless it
reveals unlicensed usage in which case YOU shall promptly reimburse HISILICON for all reasonable costs and
expenses, including professional fees, relating to such audit.
The SOFTWARE provided under this Agreement is subject to U.S. export control laws, including the
U.S. Export Administration Act and its associated regulations, and may be subject to export or import
regulations in other countries. YOU agree to comply fully with all laws and regulations of the United
States and other countries (&quot;Export Laws&quot;) to assure that the SOFTWARE, is not (1) exported, directly
or indirectly, in violation of Export Laws, either to any countries that are subject to U.S.A. export
restrictions or to any end user who has been prohibited from participating in the U.S.A. export
transactions by any federal agency of the U.S.A. government; or (2) intended to be used for any
purpose prohibited by Export Laws, including, without limitation, nuclear, chemical, or biological
weapons proliferation.
This Agreement shall be governed by and construed in accordance with the laws of People’s Republic of China,
without reference to the principles of conflicts of laws. Any dispute arising out of or relating to this Agreement
shall be submitted to Shenzhen Longgang District People’s court and parties waive all objections to that
jurisdiction and venue.
