Artwork's customers have asked us to provide a "view" only function -- a GDSII database that can be sent in some encrypted format to another user for viewing and review but without the ability to do anything else with the database.
Many years ago we offered a GDSII to GDY converter and viewer where we scrambled the GDSII data in a simple fashion and provided a "custom" viewer to display the data. However the scrambling was such that even a fairly novice programmer could easily have figured it out and defeated it. Not enough security for today's extremely proprietary databases.
Drawbacks to Encryption/Decryption
We thought about integrating modern encryption/decription tools into the QIS flow but ran into a couple of signficant drawbacks:
QIS Memory Maps to the Rescue
In order for QIS to display a file, it must first scan it and build a "table" which is stored in RAM. It then builds a Quad Tree and loads this into memory along with a compressed version of the GDSII data. These memory maps can be stored to disk for later reuse.
The file owner creates the two memory maps using QIS. These can then be "sent" to a reviewer who can view the data but cannot recreate a GDSII file from the memory maps.
How to Create the Memory Maps
Prior to opening the GDSII file using QIS one must issue several prepartory commands:
Set_Load_Memory this command instructs QIS to load ON the GDSII file into memory. Set_Memory_Maps_Dir this instructs QIS where to write /temp/maps the two memory map files. Directory must exist. Set_Create_Memory_Maps this command instructs QIS to write ON the memory maps to disk. Set_Input_Layer_Map this is an optional command and can 9-9,10-10 be used to limit which entites are loaded. Open_GDSII once the proper flags are set, open the GDSII file
If the input file is called bigchip.gds and it is produced on a big endian machine and using 64 bit QIS then the two files generated will be called:
How to Load Memory Maps
The "reviewer" will not receive a GDSII file. Instead he will get the two memory maps which must be loaded to start up the display. To display the file use the Open_GDSII command but supply the full path/name of the scan and db load memory map files:
Open_GDSII . /temp/maps/bigchip.gds.scan.b64,/temp/maps/bigchip.gds.dbload.b64
Constraints on Using Memory Maps
Memory maps are specific to the CPU architecture and to the number of bits used. For example, a CPU architecture can store data in byte order little endian or big endian. Also, QIS is available in both 32 bit and 64 bit versions.
In order for a viewer to use memory maps its CPU must share the same endian format and bit width as the CPU that created the memory maps.
|System||QIS 32||QIS 64|
|Solaris on UltraSparc||BIG 32||BIG 64|
|Solaris on X86||LITTLE 32||LITTLE 64|
|Linux on X86||LITTLE 32||LITTLE 64|
|Windows on X86||LITTLE 32||N/A|