qckbool logo

Using QckBool to Create Derived Process Layers

IC designers do not need to manually create every single process layer when designing a custom chip. Various layers can be derived from other layers using rules. The rules are generally “boolean” operations and sizing -- for example, you may size a layer, subtract one or more layers from it and then combine it with yet another layer.

Consider the cell shown at right. The designer has laid out polgyons from four different layers. He also will need a NPLUS layer for processing but he does not draw that layer. Instead he has a rule set to generate the NPLUS layer:


basic cell layout

NPLUS Recipe

The NPLUS layer is produced by a) sizing up LAYER 11 by 0.5 um; then b) substracting layers 14 and 19 from the sized up Layer 11 and finally c) combining that results with layer 49.

   Layer        Operation           Layer            Result   

   LAYER11     SIZE +0.5 um           -              temp1   
   temp1           NOT             LAYER14           temp2   
   temp2           NOT             LAYER19           temp3   
   temp3           OR              LAYER48           NPLUS   

Artwork Conversion’s QckBool and GDSFILT programs can be controlled from a script to achieve this type of derived layers. QckBool performs the sizing and boolean operations and GDSFILT can be used to both extract the source layers from the GDSII file and to later combine various files as needed into a final output.

For details about GDSFILT and its command line syntax go to: Merging Multiple GDSII Files ...

For details about boolw32f's command line syntax go to: The boolw32f boolean engine


The derived NPLUS layer will look like this

The Script

#! /bin/sh



# the input file is test_layout.gds with top cell = CELL0

# Step 1
# size Layer 11 up by +0.5 um and store results in temp1.sf; target layer = 148
# program input_file out_file inp_Top out_layer op_layer sizing_option

${BOOLENG} test_layout.gds temp1.sf CELL0 148 +11 -sizing:0.5

# BOOLENG will always create a flat GDSII file with top structure name TOP

# Step 2
# merge the new layer 148 data (in temp1.sf) with the source file so that we can then
# perform the boolean. We use GDSFILT’s merge function with combine option to do this.
${GDSFILT} temp1.sf temp2.sf TOP -merge test_layout.gds -combine NEWTOP CELL0

# Step 3
# the resulting file, temp2.sf, now has temporary data on layer 148, and we will
# want to subtract data on layers 14 and 19 and OR data on layer 48. The output file
# will be called NPLUS.GDS and this will have our NPLUS data on layer 148. We can do
# the subtraction (-) and the OR function (+) all in one step.

${BOOLENG} temp2.sf NPLUS.GDS NEWTOP 148 +148-14-19+48