The method, executed by at least one processor of a computer, of an encrypting or a decrypting method for an ic layout is proposed. The encrypting method comprises getting a record of an ic layout object from a database. Data of the ic layout object is appended into a byte array. The byte array is encrypted into a second byte array. Each byte of the second byte array is defined as an encryption value to create multiple encryption values. Finally, an encryption object with multiple encryption values is created on a specified layer.
|
1. A method, executed by at least one processor of a computer, of an encrypting method for an ic layout, comprising:
getting a record of an ic layout object from a database;
appending data of said ic layout object into a byte array;
encrypting said byte array into an encrypted second byte array with multiple encryption values, wherein each byte of said encrypted second byte array corresponds to an encryption value of said multiple encryption values, wherein said encryption value is represented by a delta value of a first coordinate and an offset value of a second coordinate; and
creating an encrypted path object by said multiple encryption values to record said encrypted second byte array on a specified layer.
14. A method, executed by at least one processor of a computer, of a decrypting method for an ic layout, comprising:
getting an encrypted path object on a specific layer from a database, wherein said encrypted path object is created by multiple encryption values, wherein each byte of an encrypted byte array corresponds to an encryption value of said multiple encryption values, wherein said encryption value is represented by a delta value of a first coordinate and an offset value of a second coordinate;
appending said encrypted path object into a byte array;
identifying a checking code and said encrypted byte array;
decrypting said byte array into a second byte array, and followed by verifying with said checking code;
identifying layer and coordinates of ic layout object; and
reconstructing original said ic layout object.
2. The method as set forth in
3. The method as set forth in
5. The method as set forth in
6. The method as set forth in
7. The method as set forth in
8. The method as set forth in
9. The method as set forth in
10. The method as set forth in
11. The method as set forth in
12. The method as set forth in
13. The method as set forth in
15. The method as set forth in
16. The method as set forth in
17. The method as set forth in
18. The method as set forth in
19. The method as set forth in
20. The method as set forth in
|
Technical Field
The present invention relates to an integrated circuit (IC) layout, and more particularly, to a method for protecting an integrated circuit (IC) layout.
Description of Related Art
In general, the electronic circuit of an integrated circuit (IC) can be considered to be a graph of connected components such as transistors and resistors. Such an entity is commonly referred it as a netlist. Each component is mapped to one or more layout objects that are geometrical 2-dimensional objects such as, but not limited to, rectangles, polygons, and paths. In turn, these layout objects are used to define regions within the semiconductor die, which will receive different processing steps such as dopant, implants to produce N-type or P-type regions during the integrated circuit fabrication process.
Every layout object must satisfy manufacturing rules that specify geometrical requirements for each object as well as the relationship of an object to other objects. The manufacturing rules increase the probability that the final IC products will meet product specifications. Examples of such requirements include, but are not limited to, such items as minimum layout object width and minimum spacing from one layout object to that of another.
A circuit designer typically creates an IC design in the form of a netlist referencing circuit devices to be included in the IC and indicating which conductive net is to be connected to each device terminal. Design engineers typically use electronic design automation (EDA) applications to create IC layouts. These applications provide sets of computer-based tools for creating, editing, and analyzing IC design layouts. A digital IC designer usually processes a netlist description of an IC using a placement and routing (P&R) tool that automatically generates an IC layout indicating the position and orientation of each device within the IC and indicating how conductors forming nets interconnecting device terminals are to be routed within the IC. When generating a layout for a digital IC, the P&R tool treats each device as a separate cell having a predetermined internal layout. The tool iteratively repositions cells and reroutes nets until it arrives at a layout solution satisfying constraints on the size and aspect ratio of the available layout area, on signal path delays, on net widths and spacing, and on power density and other constraints.
EDA applications create layouts from an IC netlist by various operations. Some of the physical design (PD) operations need to transform a netlist to a layout include: (1) placement which specifies the location of the IC components; (2) routing which generates the layout objects used to connect the IC components; (3) addition operations to complete the layout such as adding substrate/well contacts and power/ground routing. The result of the physical design process is an IC layout.
Advanced and emerging IC processes cannot reliably print arbitrary geometric patterns because of complex interactions between neighboring features during the patterning processes.
The development flow for the intellectual property (IP) block can be as wide and varied as the end system in which it might be used. There are different types of models provided to customers for integration purposes. These vary from high-level code, to library models, to layout that must be integrated and tested in the target system. This leads to a protection problem. In order to use an IP block effectively, you must be able to implement and verify that the behavior is what you expected it to be. For example, a design team inserts a core and then verifies that it works correctly.
IP that is needed for verification can be protected in a relatively straight forward manner. The EDA tool reads the IP and then verifies the design. This approach can be used by the various physical and logic verification tools that are typically found in a design process. Tools like Verilog or Spice simulators currently support this capability today. An IP provider can deliver a model that is protected and can be used by the design team.
When merging in hard IP, often times there can be mismatched layer information, physical incompatibilities at the edges resulting in DRC errors and performance degradation once the IP is in context and routes are made over the top. The need and selection of IP is important. It is believed that integration costs for external IP can be 2× or 3× the cost of IP, without taking the risk of failure into account. Still, companies are compelled to license and use external IP and successfully protect it in the flow so that it does not lose its value. However, no one solution will fit the many ways that IP can be protected, developed, delivered, and designed in.
The invention has been described some embodiments. It should be noted that from the following discussion, alternative embodiments of the structures and methods disclosed herein will be readily recognized as viable alternatives that may be employed without departing from the principles discussed herein.
The present invention proposes a method, executed by at least one processor of a computer, of an encrypting method for an IC layout, comprising: getting a record of an IC layout object from a database; appending data of the IC layout object into a byte array; encrypting the byte array into a second byte array; defining each byte of the second byte array as an encryption value to create multiple encryption values; and creating an encryption object with multiple encryption values on a specified layer.
According to another aspect of the invention, the format of the IC layout object is generated by a specified pattern encoding program. The format of the IC layout object is binary format. The byte array is byte string in binary format.
According to one aspect of the invention, data of the IC layout object includes information of layer number and multiple two dimensional coordinates.
According to one aspect of the invention, the second byte array includes checking code for verification and encrypted byte string. The checking code is a debugging code, cyclic redundancy check (CRC) code or checksum code.
According to one aspect of the invention, the encryption value represents geometric data or layer of a memory. The encryption values include multiple values in first coordinate or in second coordinate. Each of the encryption values has and a value in first coordinate and a fixed offset in second coordinate. Each of the encryption values has and a value in second coordinate and a fixed offset in first coordinate.
According to one aspect of the invention, the encryption object is a path object. The encryption object has irregular shapes, regular shapes, texts with encoded string, properties with encoded string, or the combination thereof.
The present invention also proposes a method, executed by at least one processor of a computer, of a decrypting method for an IC layout, comprising: getting an encryption object on a specific layer from a database; appending the encryption object into a byte array; identifying a checking code and an encrypted byte array; decrypting the byte array into a second byte array, and followed by verifying with the checking code; identifying layer and coordinates of IC layout object; and reconstructing the original IC layout object.
The components, characteristics and advantages of the present invention may be understood by the detailed descriptions of the preferred embodiments outlined in the specification and the drawings attached:
Some preferred embodiments of the present invention will now be described in greater detail. However, it should be recognized that the preferred embodiments of the present invention are provided for illustration rather than limiting the present invention. In addition, the present invention can be practiced in a wide range of other embodiments besides those explicitly described, and the scope of the present invention is not expressly limited except as specified in the accompanying claims.
In the present invention, the encryption stage generates abstract cell with encrypted real layout embedded which can perform optional operations, e.g., flattening the hierarchy, removing properties, etc., and the decryption stage replaces the contents of abstract cell with decrypted data.
Referring to
Each line of the OASIS representation contains (from the left) a record number and a record type followed by a set of values that define that record type. For instance, the first rectangle record below defines the following type of rectangle shape, its size and its absolute location: layer, datatype, width, height, lower-left x-coordinate and lower-left y-coordinate. An OASIS file is a sequence of bytes divided into records. The length of a record is discernible from its structure and is not explicit (in contrast to GDS-II Stream, where all record lengths are explicit). An OASIS file may represent a complete layout hierarchy, or multiple layout hierarchies.
Next, in step 110, the data of the IC layout object is appended into a byte array. For example, a layout shape 102 of the real IC layout is shown in
Subsequently, in step 120, the byte array is encrypted into an encrypted byte array. In one embodiment, the encrypted byte array includes checking code for verification and encrypted byte string. The checking code is for example a debugging code, cyclic redundancy check (CRC) code or checksum code. The CRC code may correspond to layer or the target address of the memory to determine whether the layer or the target address error has occurred.
In the following, in the step 130, each byte of the encrypted byte array is defined as a delta value, shown in
In the next step 140, a path object with the delta values is created on a specified layer. In this embodiment, each of the delta values has and a dxi value and a fixed Y offset. The path is created in two dimensional coordinates (X-Y orthogonal space). As shown in
As noted above, the IC layout object is appended into a byte array and encrypted into an encrypted byte array. Alternatives of layout encryption may include many different types, such as moving all layout objects into a specific layer and converting the objects into: irregular shapes (encode data into offsets), regular shapes (encode data into offsets), texts with encoded string, properties with encoded string, or the combination thereof, shown in
In the present invention, a path is suitably used to store encrypted data. Each layout object can be converted into OASIS like byte array. The byte array is encrypted into another byte array, with CRC or checksum code. The path is created for the encrypted byte array. The path with encrypted data as X or Y offsets (depend on which direction has more space), other direction only shift a small value. The offset of each segment of the path is one byte (value 1˜256) of the byte array. It needs header of object id+segment id, in case of huge number of points (need to store in more than one paths) exceeds limit. If there is no space, the text or property can be used.
Finally, in the step 150, the path is saved into the DB 160 on the specific layer. That is, the pass record is stored into the DB 160.
Referring to
It will be understood that the above descriptions of embodiments are given by way of example only and that various modifications may be made by those with ordinary skill in the art. The above specification, examples and data provide a complete description of the structure and use of exemplary embodiments of the invention. Although various embodiments of the invention have been described above with a certain degree of particularity, or with reference to one or more individual embodiments, those with ordinary skill in the art could make numerous alterations to the disclosed embodiments without departing from the spirit or scope of this invention.
Su, Yi-Jen, Lee, Chung-cheng, Chen, Hung Yeh
Patent | Priority | Assignee | Title |
10984165, | Jan 29 2020 | International Business Machines Corporation | Digital Rights Management for printed circuit boards |
Patent | Priority | Assignee | Title |
5428685, | Jan 22 1992 | Fujitsu Limited | IC memory card and method of protecting data therein |
6308256, | Aug 18 1999 | Oracle America, Inc | Secure execution of program instructions provided by network interactions with processor |
6598166, | Aug 18 1999 | Oracle America, Inc | Microprocessor in which logic changes during execution |
6675298, | Aug 18 1999 | Oracle America, Inc | Execution of instructions using op code lengths longer than standard op code lengths to encode data |
7024640, | Jun 29 2001 | NXP B V | Integrated circuit cell identification |
7222321, | May 10 2005 | Anaglobe Technology, Inc. | System and method for manipulating an integrated circuit layout |
7353400, | Aug 18 1999 | Oracle America, Inc | Secure program execution depending on predictable error correction |
8621237, | Jun 30 2011 | EMC IP HOLDING COMPANY LLC | Protecting against cryptographic key exposure in source code |
8910303, | May 01 2012 | Anaglobe Technology, Inc. | System and method for manipulating security of integrated circuit layout |
9223912, | Sep 10 2014 | ANSYS, Inc | Systems, methods and devices for providing RLCK parasitic extraction back-annotation in electronic design automation |
9635011, | Aug 27 2014 | JONETIX CORPORATION | Encryption and decryption techniques using shuffle function |
20060259882, | |||
20070033406, | |||
20080208886, | |||
20080219441, | |||
20090222785, | |||
20100082997, | |||
20110154465, | |||
20120054498, | |||
20130298094, | |||
20130298262, | |||
20130305194, | |||
20140281559, | |||
20140340330, | |||
20150254477, | |||
20150347762, | |||
20160034694, | |||
20160110486, | |||
20170111330, | |||
20170353297, | |||
20180060561, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Dec 05 2016 | SU, YI-JEN | ANAGLOBE TECHNOLOGY, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 040739 | /0026 | |
Dec 05 2016 | LEE, CHUNG-CHENG | ANAGLOBE TECHNOLOGY, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 040739 | /0026 | |
Dec 06 2016 | CHEN, HUNG YEH | ANAGLOBE TECHNOLOGY, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 040739 | /0026 | |
Dec 12 2016 | Anaglobe Technology, Inc. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Aug 15 2022 | M2551: Payment of Maintenance Fee, 4th Yr, Small Entity. |
Date | Maintenance Schedule |
Feb 26 2022 | 4 years fee payment window open |
Aug 26 2022 | 6 months grace period start (w surcharge) |
Feb 26 2023 | patent expiry (for year 4) |
Feb 26 2025 | 2 years to revive unintentionally abandoned end. (for year 4) |
Feb 26 2026 | 8 years fee payment window open |
Aug 26 2026 | 6 months grace period start (w surcharge) |
Feb 26 2027 | patent expiry (for year 8) |
Feb 26 2029 | 2 years to revive unintentionally abandoned end. (for year 8) |
Feb 26 2030 | 12 years fee payment window open |
Aug 26 2030 | 6 months grace period start (w surcharge) |
Feb 26 2031 | patent expiry (for year 12) |
Feb 26 2033 | 2 years to revive unintentionally abandoned end. (for year 12) |