QIS WEB Page Header

View Only Applications

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:

  1. As the files become very large, the amount of time required to encrypt and then decrypt the data grows quickly to the point where it becomes a major bottleneck for users.

  2. On the viewing side, the QIS would have to decrypt the incoming file and keep a temporary unencrypted file on disk that could be easily tapped to obtain the data.


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.

Flow showing how memory maps can be transfered to a reviewer who cannot reconstruct the original GDSII.

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:

    bigchip.gds.scan.b64

    bigchip.gds.dbload.b64



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