This application claims priority to foreign European patent application No. EP 23306382.5, filed on Aug. 16, 2023, the disclosure of which is incorporated by reference in its entirety.
The present invention relates to logic devices such as field programmable gate array devices, ASICs, and other such devices.
FPGAs are a type of Programmable Logic Device. They are generally based on a standard programmable Logic Block, a large number of which are arranged together to implement various functions.
As shown in
The elements shown in
As shown in
WO2012/123243 A1, U.S. Pat. Nos. 7,463,056 B1, 6,021,513 A, 5,432,441 A, 8,091,001 B2, 5,675,589 A, and 5,027,355 A describe certain aspects of the foregoing.
The article entitled “Bridging the Gap between Soft and Hard eFPGA Design”, by Victor Olubunmi Aken'Ova chapter 3.22 available from https://www.ece.ubc.ca/˜lemieux/publications/akenova-masc2005.pdf provides further background information.
The structure thus defined is highly flexible, and can be reprogrammed and revised at various levels, e.g. hardware and software (configuration values), at different times, so that it can become difficult to determine unambiguously which configuration version a particular device implements.
FPGAs as described above, as well as other digital logic devices may be defined from the design stage in terms of a digital representation, referred to as an “Intellectual Property” (IP), which is used as the basis of the automated manufacturing process of physical devices implementing the design. Difficulties may arise in distinguishing one device from another insofar as they are based on a similar IP, for example in the case of different iterations of a given design.
It is desirable to provide a convenient integrated mechanism for distinguishing such devices.
In accordance with the present invention in a first aspect there is provided a computer implemented method of defining a device capable of implementing a logic function, the device comprising a memory bus having a corresponding address space, and a plurality of programme memory cells, each programme memory cell being accessible for reading and/or writing via the memory bus with a respective address in the address space, wherein the device further comprises a plurality of auxiliary memory cells, each auxiliary memory cell being accessible for reading via the programme memory bus with a respective address in the address space, the select lines and/or outputs of each lookup table being programmably interconnected with the select lines or outputs of another lookup table independently of the respective values of the plurality of auxiliary memories, the method comprising obtaining a checksum value for the digital definition of logic function, finding a digital value of a predefined length which, when applied to a package checksum value comprising the checksum value for the digital definition of core functions, in accordance with a predefined operation, produces a result complying with a predefined rule, and defining an augmented digital definition of the device thereof comprising the digital definition of the logic functions and a definition of the one or more auxiliary memory cells reflecting the checksum value.
In a development of the first aspect the step of finding a digital value of a predefined length comprises testing successive random digital values of a predefined length against the predefined rule until a digital value of a predefined length which, when applied to a package checksum value comprising the checksum value for the digital definition of core functions, in accordance with a predefined operation, produces a result complying with a predefined rule is found.
In a development of the first aspect the method comprises the further step incorporating a historical checksum from a preceding iteration of the method of the first aspect to the package checksum by a predetermined operation before the step of finding a digital value of a predefined length.
In a development of the first aspect the method comprises the further step of encrypting the augmented digital definition of the Field Programmable Gate Array.
In a development of the first aspect the method comprises the further step of defining a bitstream with regard to the address space such that when the bitstream is loaded into the programme memories the Field Programmable Gate Array implement a defined logic function.
In a development of the first aspect the method comprises the further step loading the bitstream into the programme memories so as to program the Field Programmable Gate Array to implement the defined logic function.
In accordance with the present invention in a second aspect there is provided a method of interrogating a Field Programmable Gate Array defined in accordance with the first aspect, the method of interrogating comprising the step of reading the contents of the auxiliary memory cells in a sequence defined as a function of the memory space.
In a development of the second aspect some or all of the programme memory cells are configured to output their values to one or more shift registers, and wherein the step of step of reading the contents of the auxiliary memory cells comprises clocking the one or more shift registers in a predefined sequence to read out their contents, wherein the step of reading the contents of the auxiliary memory cells in a sequence defined as a function of the memory space comprises interleaving the contents of the auxiliary memory cells with the contents read from the shift registers to achieve a predefined output structure.
In accordance with the present invention in a third aspect there is provided a device defined in accordance with the method of the first aspect.
In accordance with the present invention in a fourth aspect there is provided a computer program comprising instructions which, when the program is executed by a computer, cause the computer to carry out the method of the first aspect.
In accordance with the present invention in a fifth aspect there is provided a computer-readable medium storing data defining a defined in accordance with the method of the first aspect.
In accordance with the present invention in a sixth aspect there is provided Field Programmable Gate Array capable of implementing a logic function, the Field Programmable Gate Array comprising a plurality of hardware lookup tables each comprising a plurality of select lines and/or outputs, a programme memory bus having a corresponding address space, and a plurality of programme memory cells, each programme memory cell being accessible for reading and/or writing via the programme memory bus with a respective address in the address space, the select lines and/or outputs of each lookup table being programmably interconnected with the select lines or outputs of another lookup table dependent on the respective values of the plurality of programme memories,
wherein the Field Programmable Gate Array further comprises a plurality of auxiliary memory cells, each auxiliary memory cell being accessible for reading via the programme memory bus with a respective address in the address space, the select lines and/or outputs of each lookup table being programmably interconnected with the select lines or outputs of another lookup table independently of the respective values of the plurality of auxiliary memories.
In a development of the sixth aspect, one or more auxiliary memory cells returns a fixed value defined in hardware.
In a development of the sixth aspect, the address space is defined by values in two dimensions, and wherein the addresses in the address space via which the one or more auxiliary memory cells are accessible belong to a continuous region including the minimum value in each dimension of the address space and/or a continuous region including the maximum value in each dimension of the address space.
In a development of the sixth aspect, one or more auxiliary memory cells stores a watermark value, and unique identifier or a version reference.
The above and other advantages of the present invention will now be described with reference to the accompanying drawings, in which:
By way of example, certain embodiments of the invention will be presented below in the context of FPGA architectures. It should be borne in mind that unless explicitly limited to the FPGA context, these embodiments apply equally to other types of logic device, as will become apparent in the following discussion.
As described with reference to
In a development of such approaches, a method starts at step3 before proceeding to a step 302 of obtaining a checksum value for the digital definition of core functions. A suitable checksum may be obtained by any suitable algorithm as will readily occur to the skilled person, such as Parity byte or parity word, Sum complement, cyclic redundancy checks, or indeed hash algorithms such as MD5 or SHA256 hashes.
The method then proceeds to step 303 of finding a digital value of a predefined length which, when applied to the checksum value obtained at step 302 produces a result complying with a predefined rule. This number may be obtained by successively generating random numbers until one satisfying the specified conditions is found. For example the predefined length may be a convenient number of bits, which as will become clear from the following discussion may be equal to, or less than, the number of auxiliary memory cells provided by the logic device. A rule may be any rule that may be applied to a digital value, such as, for example: “The number must be an odd number”, “The number must be an even number”, “the number must be a prime number”, “the number must be a multiple of some other predefined number”, “the number digits at odd locations must be all odd” “the number digits at odd locations must be all odd even”, “part of the number may compare true to a predefined string”, etc. A rule may comprise a combination of such requirements.
In certain embodiments, the checksum value obtained at step 303 may be augmented with additional data. For example, a historical checksum for example from a preceding iteration of the method of
The step of finding a digital value of a predefined length may optionally be implemented by testing successive random digital values of a predefined length against the predefined rule until a digital value of a predefined length which, when applied to a package checksum value comprising the checksum value for the digital definition of core functions, in accordance with a predefined operation, produces a result complying with the predefined rule is found.th.
While embodiments may relate to the definition of any logic device, certain embodiments may be particularly convenient as applied to programmable devices such as FPGAs as discussed above, where the logical function is not defined (exclusively) by the device architecture, but primarily by a bitstream that may be loaded into the device after manufacture. Embodiments may relate to the definition of such a bitstream.
As shown in
As shown, the Field Programmable Gate Array 400 comprises a plurality of hardware lookup tables 21, 21 each comprising a plurality of select lines and/or outputs 2501, 2502, 2503, a programme memory bus 1 having a corresponding address space, and a plurality of programme memory cells 2a, 2b, 2c, 2d, 2e, 2f, 2g, 2h, 2i, 2j, 2k, 2l, 2m, 2n, 2o, 2p, 2q, 2r, 2y, each programme memory cell being accessible for reading and/or writing via the programme memory bus 1a, 1b, with a respective address in the address space. The select lines and/or outputs 2501, 2502, 2503 of each lookup table are programmably interconnectable with the select lines or outputs 2501, 2502, 2503 of other lookup tables dependent on the respective values of the plurality of programme memories, e.g. through the memory controlled operation of switch 26.
In accordance with the innovative structure of
As such,
More particularly, there is provided a Field Programmable Gate Array capable of implementing a logic function, the Field Programmable Gate Array comprising a plurality of hardware lookup tables each comprising a plurality of select lines and/or outputs, a programme memory bus having a corresponding address space, and a plurality of programme memory cells, each programme memory cell being accessible for reading and/or writing via the programme memory bus with a respective address in the address space, the select lines and/or outputs of each lookup table being programmably interconnected with the select lines or outputs of another lookup table dependent on the respective values of the plurality of programme memories,
wherein the Field Programmable Gate Array further comprises a plurality of auxiliary memory cells, each auxiliary memory cell being accessible for reading via the programme memory bus with a respective address in the address space, the select lines and/or outputs of each lookup table being programmable interconnected with the select lines or outputs of another lookup table independently of the respective values of the plurality of auxiliary memories.
In the case where the logic device is a programmable device such as presented with respect to
The method may then proceed to step 307 at which the bitstream obtained at step 306 may then be loaded into the programme memories of the Logic device so as to program the Logic device to implement the defined logic function, and to store the digital value of a predefined length in the auxiliary memory cells of the logic device.
It will be appreciated that while
In other types of Logic device, other mechanisms for reading the contents of the auxiliary memory addresses may be provided.
It will be appreciated that the approaches of
As shown in
When the address space is defined by values in two dimensions, the addresses in the address space via which the one or more auxiliary memory cells is accessible may be conveniently defined as belonging to one or more continuous regions including the minimum value in each dimension of the address space and/or a continuous region including the maximum value in each dimension of the address space. In other words, the Auxiliary memories may be conveniently defined at the edges and further still at the corners of the address space matrix. Typical FPGA bitstreams typically avoid these address combinations, so that these addresses may be set aside for the use as auxiliary memory cells with a minimal impact on the structure of the program bitstream for a given FPGA structure and logic function.
It will be appreciated that steps 306 and 307 are dependent on a correct representation of the address space of the logic device, to ensure not only that the logic device is in fact correctly configured to implement the desired logic function, but also to load the required data into the auxiliary memory cells, in the desired sequence. This may be straightforward in cases where a predefined logic device structure such as discussed with reference to
On this basis, the method implements an step 304 at which an augmented digital definition of the Field Programmable Gate Array is defined, comprising the digital definition of core functions and a definition of the one or more auxiliary memory cells reflecting the digital value of a predefined length. Optionally, the augmented digital definition of the Field Programmable Gate Array obtained at step 304 may be encrypted. Encryption may protect the VHDL code making its duplication much trickier while the watermarking can prove the copy in case of violation is not genuine. A further step 305 of fabricating a logic device in accordance with the augmented digital definition may then be performed. As shown, these steps may be performed before steps 306 and 307 so that the logic device structure and underlying address space are formally defined so as to support the definition and loading of the bitstream. It will nevertheless be appreciated that as an alternative step 306 may be performed after or in parallel with step 304, in which case a particular memory space may be assumed for the generation of the bitstream, and then effectively integrated in the final structure, and that step 305 may be performed after or in parallel with step 306.
The method then terminates at step 310.
As such, there is provided a computer implemented method of defining a device capable of implementing a logic function, the device comprising a memory bus having a corresponding address space, and a plurality of programme memory cells, each programme memory cell being accessible for reading and/or writing via the memory bus with a respective address in the address space, wherein the device further comprises a plurality of auxiliary memory cells, each auxiliary memory cell being accessible for reading via the programme memory bus with a respective address in the address space, the select lines and/or outputs of each lookup table being programmably interconnected with the select lines or outputs of another lookup table independently of the respective values of the plurality of auxiliary memories, the method comprising obtaining a checksum value for the digital definition of the logic function, finding a digital value of a predefined length which, when applied to a package checksum value comprising the checksum value for the digital definition of core functions, in accordance with a predefined operation, produces a result complying with a predefined rule, and defining an augmented digital definition of the device thereof comprising the digital definition of the logic functions and a definition of the one or more auxiliary memory cells reflecting the checksum value.
A logic device so defined provides additional information that may be retrieved from the auxiliary memory cells. As such, there may be defined a computer implemented method of interrogating a logic device comprising the step of reading the contents of the auxiliary memory cells in a sequence defined as a function of the memory space.
It will be appreciated that while the method of
Accordingly, there is provided a method of defining a logic device is provided in which the definition incorporates the definition of special auxiliary memory cells reserved for the presentation of a special code, incorporating a signature of the definition as a whole so as to constitute a watermark securing the design as a whole, and possibly other information. In certain embodiments, the special code may incorporate recursively signatures from preceding versions of the same devices to as to constitute a watermark blockchain. A LUT based FPGA architecture is proposed with special addressable memory cells reserved for this purpose, in which case a programming bitstream may constitute a definition in accordance with the inventive method.
Where the Logic device comprises an output shift register as described for example with reference to
The disclosed implementations can take form of an entirely hardware embodiment (e.g. FPGA or logic device, for example as described above or obtained as a result of the method of
A computer-usable or computer-readable can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium.
In some embodiments, the methods and processes described herein may be implemented in whole or part by a user device. These methods and processes may be implemented by computer-application programs or services, an application-programming interface (API), a library, and/or other computer-program product, or any combination of such entities.
The user device may be a mobile device such as a smart phone or tablet, a computer or any other device with processing capability, such as a robot or other connected device.
A shown in
Logic device 601 includes one or more physical devices configured to execute instructions. For example, the logic device 601 may be configured to execute instructions that are part of one or more applications, services, programs, routines, libraries, objects, components, data structures, or other logical constructs. Such instructions may be implemented to perform a task, implement a data type, transform the state of one or more components, achieve a technical effect, or otherwise arrive at a desired result.
The logic device 601 may include one or more processors configured to execute software instructions. Additionally or alternatively, the logic device may include one or more hardware or firmware logic devices configured to execute hardware or firmware instructions. Processors of the logic device may be single-core or multi-core, and the instructions executed thereon may be configured for sequential, parallel, and/or distributed processing. Individual components of the logic device 601 optionally may be distributed among two or more separate devices, which may be remotely located and/or configured for coordinated processing. Aspects of the logic device 601 may be virtualized and executed by remotely accessible, networked computing devices configured in a cloud-computing configuration.
Storage device 602 includes one or more physical devices configured to hold instructions executable by the logic device to implement the methods and processes described herein. When such methods and processes are implemented, the state of storage 602 device may be transformed—e.g., to hold different data.
Storage device 602 may include removable and/or built-in devices. Storage device 602 may comprise one or more types of storage device including optical memory (e.g., CD, DVD, HD-DVD, Blu-Ray Disc, etc.), semiconductor memory (e.g., RAM, EPROM, EEPROM, etc.), and/or magnetic memory (e.g., hard-disk drive, floppy-disk drive, tape drive, MRAM, etc.), among others. Storage device may include volatile, non-volatile, dynamic, static, read/write, read-only, random-access, sequential-access, location-addressable, file-addressable, and/or content-addressable devices.
In certain arrangements, the system may comprise an interface 603 adapted to support communications between the Logic device 601 and further system components. For example, additional system components may comprise removable and/or built-in extended storage devices. Extended storage devices may comprise one or more types of storage device including optical memory 632 (e.g., CD, DVD, HD-DVD, Blu-Ray Disc, etc.), semiconductor memory 433 (e.g., RAM, EPROM, EEPROM, FLASH etc.), and/or magnetic memory 631 (e.g., hard-disk drive, floppy-disk drive, tape drive, MRAM, etc.), among others. Such extended storage device may include volatile, non-volatile, dynamic, static, read/write, read-only, random-access, sequential-access, location-addressable, file-addressable, and/or content-addressable devices.
It will be appreciated that storage device includes one or more physical devices, and excludes propagating signals per se. However, aspects of the instructions described herein alternatively may be propagated by a communication medium (e.g., an electromagnetic signal, an optical signal, etc.), as opposed to being stored on a storage device.
Aspects of logic device 601 and storage device 402 may be integrated together into one or more hardware-logic components. Such hardware-logic components may include field-programmable gate arrays (FPGAs), program- and application-specific integrated circuits (PASIC/ASICs), program- and application-specific standard products (PSSP/ASSPs), system-on-a-chip (SOC), and complex programmable logic devices (CPLDs), for example.
The term “program” may be used to describe an aspect of computing system implemented to perform a particular function. In some cases, a program may be instantiated via logic device executing machine-readable instructions held by storage device. It will be understood that different modules may be instantiated from the same application, service, code block, object, library, routine, API, function, etc. Likewise, the same program may be instantiated by different applications, services, code blocks, objects, routines, APIs, functions, etc. The term “program” may encompass individual or groups of executable files, data files, libraries, drivers, scripts, database records, etc.
In particular, the system of
For example a program implementing the steps described with respect to
Accordingly the invention may be embodied in the form of a computer program.
It will be appreciated that a “service”, as used herein, is an application program executable across multiple user sessions. A service may be available to one or more system components, programs, and/or other services. In some implementations, a service may run on one or more server-computing devices.
When included, input subsystem may comprise or interface with one or more user-input devices such as a keyboard 612, mouse 611, touch screen 611, or game controller, button, footswitch, etc. (not shown). In some embodiments, the input subsystem may comprise or interface with selected natural user input (NUI) componentry. Such componentry may be integrated or peripheral, and the transduction and/or processing of input actions may be handled on- or off-board. Example NUI componentry may include a microphone for speech and/or voice recognition; an infrared, colour, stereoscopic, and/or depth camera for machine vision and/or gesture recognition; a head tracker, eye tracker 660, accelerometer, and/or gyroscope for motion detection and/or intent recognition; as well as electric-field sensing componentry for assessing brain activity.
When included, communication subsystem 620 may be configured to communicatively couple computing system with one or more other computing devices. For example, communication module of may communicatively couple computing device to remote service hosted for example on a remote server 676 via a network of any size including for example a personal area network, local area network, wide area network, or the internet. Communication subsystem may include wired and/or wireless communication devices compatible with one or more different communication protocols. As non-limiting examples, the communication subsystem may be configured for communication via a wireless telephone network 674, or a wired or wireless local- or wide-area network. In some embodiments, the communication subsystem may allow computing system to send and/or receive messages to and/or from other devices via a network such as the Internet 675. The communications subsystem may additionally support short range inductive communications 621 with passive devices (NFC, RFID etc.).
The system of
It will be understood that the configurations and/or approaches described herein are exemplary in nature, and that these specific embodiments or examples are not to be considered in a limiting sense, because numerous variations are possible. The specific routines or methods described herein may represent one or more of any number of processing strategies. As such, various acts illustrated and/or described may be performed in the sequence illustrated and/or described, in other sequences, in parallel, or omitted. Likewise, the order of the above-described processes may be changed.
The subject matter of the present disclosure includes all novel and non-obvious combinations and sub-combinations of the various processes, systems and configurations, and other features, functions, acts, and/or properties disclosed herein, as well as any and all equivalents thereof.
Number | Date | Country | Kind |
---|---|---|---|
23306382.5 | Aug 2023 | EP | regional |