Programmable IC Authorization Using Identifier-Based Check Codes

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Unauthorized use of programmable integrated circuits (PICs) is a challenge as configuration data can be easily copied and reused, impacting investment returns for developers who invest significant time and effort into designing user-specific logic functions.

Innovation Solution

A system that combines configuration data for a user design with an authorization module and a check code generator, where the PIC loads configuration data from non-volatile memory, implements the authorization module, and generates an activation code based on a unique identifier, enabling authorized use while preventing unauthorized copying by erasing and regenerating the check code.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Duration of action of stationary object

If configuration data is stored in non-volatile memory for PICs, then the user design can be implemented and retained, but unauthorized users can copy the configuration data and reuse it in additional PLDs

Engineering Contradiction:
Improveconfiguration data retentionVSAvoidunauthorized copying
Core Design Contradiction:
Duration of action of stationary objectVSObject-affected harmful factors

Solution Approach 1:

The authorization module performs preliminary verification of the check code before enabling the user design. The check code is generated from a unique identifier associated with the PIC, and this verification happens before the configuration data becomes operational, preventing unauthorized use while allowing legitimate use

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

A check code serves as an intermediary between the configuration data and the authorization mechanism. The check code is derived from a unique identifier and acts as a mediator that must be verified before the configuration data can be executed, adding a security layer without preventing legitimate access

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If an authorization module is implemented to verify check codes, then unauthorized use is prevented, but the device complexity increases

Engineering Contradiction:
Improveauthorization securityVSAvoidauthorization module structure
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The authorization module uses a copied and transformed version of the unique identifier to generate the check code. Instead of implementing complex cryptographic protocols, the system creates a simplified copy/derivation of the identifier that serves as the authorization key, reducing complexity while maintaining security

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The unique identifier serves multiple functions: it identifies the PIC, generates the check code, and enables authorization verification. This multi-functionality reduces the need for separate authorization components, thereby reducing overall device complexity while maintaining security

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Reliability

If the check code generator is always present in the PIC, then authorization can be verified, but the configuration data size and memory requirements increase

Engineering Contradiction:
Improveauthorization verificationVSAvoidconfiguration data volume
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The check code generation functionality is extracted from the main configuration data and implemented as a separate, dedicated module. The unique identifier is stored in a compact form, and the check code generator is implemented as efficient logic that doesn't require large amounts of configuration memory, separating the authorization function from the user design data

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS7683663B1Authorization of an implementation of a user design in a programmable integrated circuit
Publication Date: 2010.03.23 XILINX INC
  • US7683663B1 patent drawing
  • US7683663B1 patent drawing
  • US7683663B1 patent drawing

AI summary

A system implements and authorizes use of a user design. A non-volatile memory stores combined configuration data including first configuration data for implementing a user design and an authorization module, and second configuration data for implementing a generator of a check code. In response to a reset, a programmable integrated circuit loads the first configuration data to implement the user design and the authorization module. The implemented authorization module generates an activation code from an identifier when the check code is available from the non-volatile memory and enables the user design when the check and activation codes match. The programmable integrated circuit loads the second configuration data to implement the generator when the check code is not available from the non-volatile memory. The implemented generator erases the second configuration data from the non-volatile memory, generates the check code from the identifier, and stores the check code in the non-volatile memory.