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:

  starting_data.gif

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

  results.gif

The derived NPLUS layer will look like this


The Script

#! /bin/sh

BIN=/users/qckbool/bin

BOOLENG=${BIN}/boolw32f
GDSFILT=${BIN}/gdsfilt

# 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