ASECA

 A cellular automata simulation program for silicon anisotropic super micro-etching process in aqueous KOH

Kazume Nishidate, Mamoru Baba
Department of Electrical and Electronic Engineering, 
Faculty of Engineering, Iwate University, Morioka 020, Japan

Richard J. Gaylord
Department of Materials Science and Engineering, 
University of Illinois at Urbana-Champaign, Urbana, IL 61801

A unit cell of a silicon single crystal

pos2={
{0,0,0},
{1/2,0,1/2},
{0,1/2,1/2},
{1/2,1/2,0},
{1/4,1/4,3/4},
{3/4,3/4,3/4},
{3/4,1/4,1/4},
{1/4,3/4,1/4},
{1,0,0},{0,1,0},{0,0,1},{1,1,0},{1,0,1},{0,1,1},{1,1,1},
{1,1/2,1/2},{1/2,1,1/2},
{1/2,1/2,1}
};

lis=Partition[Map[pos2[[#]]&,
{2,7, 7,4, 2,5, 5,3, 3,8, 8,4, 7,9,
11,5, 6,15, 6,16, 7,16, 6,17, 6,18, 18,5,
8,10, 8,17}],2];

gg=Graphics3D[

{
Map[Text[#,pos2[[#]]]&,Range[Length[pos2]]],
{Thickness[0.001],GrayLevel[0.1],
Dashing[{0.02}],Map[Line[#]&,lis]},
AbsolutePointSize[24],GrayLevel[0.8],
Map[Point[#]&,pos2]
}

];

Show[gg,DefaultFont->{"Courie",28},
ViewPoint->{9, 4, 1}]

A unit cell of a silicon single crystal. Here, the Si atoms are labeled with the numbers from 1 to 18. Note that the "net" number of atoms in a silicon unit cell is 8, and which will be used to represent a cell state of the unit cell in CA calculation.

The bonding situations of a Si atom on each surface for the three main low-index crystal planes {110}, {100} and {111}.

We consider only three principle crystal plane.

pos5={{0,0,0},{1/2,1/2,0},{1/4,1/4,1/4},
{1/2,0,1/2},{0,1/2,1/2}};

lis=Partition[Map[pos5[[#]]&,
{1,3, 2,3, 4,3, 5,3}],2]

g100=Show[
Graphics3D[
{
{Polygon[{{0,0,1/4},{1/2,0,1/4},{1/2,1/2,1/4},{0,1/2,1/4},
{0,0,1/4}}]},

{Thickness[0.001],GrayLevel[0.1],
Dashing[{0.02}],Map[Line[#]&,lis]},

{AbsolutePointSize[24],
Point[{0,0,0}],Point[{1/2,1/2,0}],


GrayLevel[0.7],
Point[{1/4,1/4,1/4}],

GrayLevel[0.0],
AbsolutePointSize[26],
Point[{1/4,1/4,1/4}],

GrayLevel[1],
AbsolutePointSize[24],
Point[{1/2,0,1/2}],

GrayLevel[0.0],
AbsolutePointSize[26],
Point[{1/2,0,1/2}],

GrayLevel[1],
AbsolutePointSize[24],
Point[{0,1/2,1/2}],
GrayLevel[0.0],
AbsolutePointSize[26],
Point[{0,1/2,1/2}]

}

},
PlotLabel->FontForm["Type 2: {100}", {"Times", 28}]


],
ViewPoint->{10, 4, 3}];

g110=Show[
Graphics3D[
{
{Polygon[{{0,0,0},{1/2,1/2,0},{1/2,1/2,1/2},{0,0,1/2}}]},

{Thickness[0.001],GrayLevel[0.1],
Dashing[{0.02}],Map[Line[#]&,lis]},

{AbsolutePointSize[24],

Point[{0,1/2,1/2}],

GrayLevel[0.7],
Point[{1/4,1/4,1/4}],
GrayLevel[0.0],
AbsolutePointSize[26],
Point[{1/4,1/4,1/4}],

GrayLevel[0.7],
AbsolutePointSize[24],
Point[{1/2,1/2,0}],
GrayLevel[0.0],
AbsolutePointSize[26],
Point[{1/2,1/2,0}],

GrayLevel[0.7],
AbsolutePointSize[24],
Point[{0,0,0}],
GrayLevel[0.0],
AbsolutePointSize[26],
Point[{0,0,0}],

GrayLevel[1],
AbsolutePointSize[24],
Point[{1/2,0,1/2}],
GrayLevel[0.0],
AbsolutePointSize[26],
Point[{1/2,0,1/2}]
}

},
PlotLabel->FontForm["Type 1: {110}", {"Times", 28}]


],
ViewPoint->{10, 4, 3}

];

points={Point[{0,0,0}],Point[{1/2,1/2,0}],Point[{1/4,1/4,1/4}],
Point[{1/2,0,1/2}],Point[{0,1/2,1/2}]};

poli={{0,0,1/2},{3/4,1/4,0},{1,1,1/2},{1/4,3/4,1},{0,0,1/2}}/2;

g111=Show[
Graphics3D[
{
{Polygon[
poli
]},

{Thickness[0.001],GrayLevel[0.1],
Dashing[{0.02}],Map[Line[#]&,lis]},

{AbsolutePointSize[24],
{Point[{0,0,0}],Point[{1/2,1/2,0}],
Point[{0,1/2,1/2}],
GrayLevel[0.7],
Point[{1/4,1/4,1/4}],

GrayLevel[0.0],
AbsolutePointSize[26],
Point[{1/4,1/4,1/4}],

GrayLevel[1],
AbsolutePointSize[24],
Point[{1/2,0,1/2}],
GrayLevel[0.0],
AbsolutePointSize[26],
Point[{1/2,0,1/2}]

}
}

},
PlotLabel->FontForm["Type 3: {111}", {"Times", 28}]

],
ViewPoint->{15, -5, 8}
];

Show[GraphicsArray[{g110,g100,g111}]]

The bonding situations of a Si atom on each surface for the three main low-index crystal planes {110}, {100} and {111}. A gray circle is a surface Si atom, a solid circle is a bulk Si atom, and an open circle indicates an unoccupied (etched) Si site, respectively.

An L-shaped mask pattern on the first layer of a Si {100} crystal surface.

mesh[n_]:=ReplacePart[Transpose[
       ReplacePart[Table[2,{n},{n}],1,
        Flatten[Table[{i,j},{i,5,n-3},{j,n-4,n-3}],1]]],1,
     Flatten[Table[{i,j},{i,5,n-3},{j,n-4,n-3}],1]];

ListDensityPlot[mesh[20],Mesh->False]

A L-shaped mask pattern on the first layer of a Si {100} crystal surface. Where L=5.42 Å is a lattice constant of a Si crystallographic unit cell in Fig. 1.

The rule-based functional Mathematica program for silicon anisotropic super micro-etching CA.

Where the update rules (Rule 1 to Rule 6) are defined by rule functions. The atomE (W, N, S, NN, SS, NNNW, SSSE) function specifies a nearest neighbour Si atom site for the target Si atom site.

Clear[Silicon]

Silicon[mask_List,
        p1_Integer,p2_Integer,p3_Integer,t_Integer]:=

 Module[{etching,n=20},

   p110=N[p1/(p1+p2+p3)];
   p100=N[p2/(p1+p2+p3)];
   p111=N[p3/(p1+p2+p3)];

mMap4[op_,lis_List]:=Map[Map[Map[op,#]&,#]&,lis];
mMap3[op_,lis_List]:=Map[Map[op,#]&,lis];
mMap2[op_,lis_List]:=Map[op,lis];

atom[num_,lis_List]:=Flatten[mMap4[#[[num]]&,lis],1];

atomE[num_,lis_List]:=
        Flatten[mMap4[#[[num]]&,
        mMap3[RotateLeft[#]&,lis]],1];
atomW[num_,lis_List]:=
        Flatten[mMap4[#[[num]]&,
        mMap3[RotateRight[#]&,lis]],1];
atomN[num_,lis_List]:=
        Flatten[mMap4[#[[num]]&,
        mMap2[RotateRight[#]&,lis]],1];
atomS[num_,lis_List]:=
        Flatten[mMap4[#[[num]]&,
        mMap2[RotateLeft[#]&,lis]],1];

atomNN[num_,lis_List]:=
        Flatten[RotateRight[mMap4[#[[num]]&,lis]],1];
atomSS[num_,lis_List]:=
        Flatten[RotateLeft[mMap4[#[[num]]&,lis]],1];

atomNNNW[num_,lis_List]:=
        Flatten[mMap4[#[[num]]&,
        RotateRight[mMap2[RotateRight[#]&,
        mMap3[RotateRight[#]&,lis]]]],1];

atomSSSE[num_,lis_List]:=
        Flatten[mMap4[#[[num]]&,
        RotateLeft[mMap2[RotateLeft[#]&,
        mMap3[RotateLeft[#]&,lis]]]],1];

rule[ 1,a_?Positive,b_?Positive,0,0]:=If[Random[]<p100,0,1];
rule[ 1,a_?Positive,0,c_?Positive,0]:=If[Random[]<p100,0,1];
rule[ 1,a_?Positive,0,0,d_?Positive]:=If[Random[]<p100,0,1];
rule[ 1,0,b_?Positive,c_?Positive,0]:=If[Random[]<p100,0,1];
rule[ 1,0,b_?Positive,0,d_?Positive]:=If[Random[]<p100,0,1];
rule[ 1,0,0,c_?Positive,d_?Positive]:=If[Random[]<p100,0,1];

rule[ 1,a_?Positive,b_?Positive,1,0]:=If[Random[]<p110,0,1];
rule[ 1,a_?Positive,1,c_?Positive,0]:=If[Random[]<p110,0,1];
rule[ 1,1,b_?Positive,c_?Positive,0]:=If[Random[]<p110,0,1];

rule[ 1,a_?Positive,b_?Positive,0,1]:=If[Random[]<p110,0,1];
rule[ 1,a_?Positive,1,0,d_?Positive]:=If[Random[]<p110,0,1];
rule[ 1,1,b_?Positive,0,d_?Positive]:=If[Random[]<p110,0,1];

rule[ 1,a_?Positive,0,c_?Positive,1]:=If[Random[]<p110,0,1];
rule[ 1,a_?Positive,0,1,d_?Positive]:=If[Random[]<p110,0,1];
rule[ 1,1,0,c_?Positive,d_?Positive]:=If[Random[]<p110,0,1];

rule[ 1,0,b_?Positive,c_?Positive,1]:=If[Random[]<p110,0,1];
rule[ 1,0,b_?Positive,1,d_?Positive]:=If[Random[]<p110,0,1];
rule[ 1,0,1,c_?Positive,d_?Positive]:=If[Random[]<p110,0,1];

rule[ 1,a_?Positive,b_?Positive,c_?Positive,0]:=If[Random[]<p111,0,1];
rule[ 1,a_?Positive,b_?Positive,0,d_?Positive]:=If[Random[]<p111,0,1];
rule[ 1,a_?Positive,0,c_?Positive,d_?Positive]:=If[Random[]<p111,0,1];
rule[ 1,0,b_?Positive,c_?Positive,d_?Positive]:=If[Random[]<p111,0,1];

rule[ 1,a_,b_,c_,d_]:=0;

rule[ 2,a_,b_,c_,0]:=1;
rule[ 2,a_,b_,0,d_]:=1;
rule[ 2,a_,0,c_,d_]:=1;
rule[ 2,0,b_,c_,d_]:=1;

rule[ x_,a_,b_,c_,d_]:=x;

Attributes[rule]:=Listable;

etching[lis_List]:=
  Partition[Map[Thread[#]&, Transpose[{
  
  rule[atom[1,#],atomSS[5,#],atomSSSE[6,#],
     atomS[7,#],atomE[8,#]],

  rule[atom[2,#],atom[5,#],atom[7,#],
     atomE[6,#],atomE[8,#]],

  rule[atom[3,#],atom[5,#],atom[8,#],
     atomS[6,#],atomS[7,#]],

  rule[atom[4,#],atom[7,#],atom[8,#],
     atomSS[5,#],atomSS[6,#]],

  rule[atom[5,#],atomNN[1,#],atomNN[4,#],
     atom[3,#],atom[2,#]],

  rule[atom[6,#],atomN[3,#],atomNN[4,#],
     atomW[2,#],atomNNNW[1,#]],

  rule[atom[7,#],atom[2,#],atomN[3,#],
     atom[4,#],atomN[1,#]],

  rule[atom[8,#],atom[4,#],atom[3,#],
     atomW[2,#],atomW[1,#]]

}&[lis]]],n];

Map[Drop[#,-1]&,NestList[etching[#]&,mask,t]]
]

The calculated super micro-etching profiles (three-dimensional view) at 100 C (100 degree) as a function of CA calculational time step ( (Subscript[t, CA]) = 1, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 21). The time is evolving from left to right and from up to down directions.

We use the experimentally determined etching ratio p110:p100:p111=50:30:1 (at 100 degree).

Clear[mask]
mask[m_]:=Join[{mesh[m]},Table[2,{m},{m},{m}],
      Table[e,{1},{m},{m}]]/.{1->{2,2,2,2,1,1,2,2},
      2->Table[2,{8}],
    e->Table[e,{8}]};

Timing[etch1=Silicon[mask[20],50,30,1,20];]

gr[etch_,prl_,prh_,vpx_,vpy_,vpz_]:=
Map[ListPlot3D[
  Apply[Plus,mMap4[Apply[Plus,#]&,#]],
  PlotRange->{prl,prh},ViewPoint->{vpx,vpy,vpz},
  Axes->False,Boxed->False,Mesh->False,
  DisplayFunction->Identity
]&,etch];

gr=Map[ListPlot3D[
  Apply[Plus,mMap4[Apply[Plus,#]&,#]],
  PlotRange->{300,340},ViewPoint->{1.025, 2.530, 2.000},
  Axes->False,Boxed->False,Mesh->False,
  DisplayFunction->Identity
]&,etch1];

Show[GraphicsArray[{
{gr[[1]],gr[[2]],gr[[4]],gr[[6]]},
{gr[[8]],gr[[10]],gr[[12]],gr[[14]]},
{gr[[16]],gr[[18]],gr[[20]],gr[[21]]}
}
],GraphicsSpacing->{0,0},
DisplayFunction->$DisplayFunction]

gr2=Map[ListContourPlot[
  Apply[Plus,mMap4[Apply[Plus,#]&,#]],
  Axes->False,ContourShading->False,FrameTicks->None,
  DisplayFunction->Identity
]&,etch1];

Show[GraphicsArray[{
{gr2[[1]],gr2[[2]],gr2[[4]],gr2[[6]]},
{gr2[[8]],gr2[[10]],gr2[[12]],gr2[[14]]},
{gr2[[16]],gr2[[18]],gr2[[20]],gr2[[21]]}
}
],GraphicsSpacing->{0.25,0.3},
DisplayFunction->$DisplayFunction]

The calculated super micro-etching profiles (three-dimensional view) at 20 C as a function of CA calculational time step ( (Subscript[t, CA]) = 1, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 21). The time is evolving from left to right and from up to down directions.

Timing[etch1=Silicon[mask[20],160,100,1,20];]

gr=Map[ListPlot3D[
  Apply[Plus,mMap4[Apply[Plus,#]&,#]],
  PlotRange->{300,340},ViewPoint->{1.025, 2.530, 2.000},
  Axes->False,Boxed->False,Mesh->False,
  DisplayFunction->Identity
]&,etch1];

Show[GraphicsArray[{
{gr[[1]],gr[[2]],gr[[4]],gr[[6]]},
{gr[[8]],gr[[10]],gr[[12]],gr[[14]]},
{gr[[16]],gr[[18]],gr[[20]],gr[[21]]}
}
],GraphicsSpacing->{0,0},
DisplayFunction->$DisplayFunction]

gr2=Map[ListContourPlot[
  Apply[Plus,mMap4[Apply[Plus,#]&,#]],
  Axes->False,ContourShading->False,FrameTicks->None,
  DisplayFunction->Identity
]&,etch1];

Show[GraphicsArray[{
{gr2[[1]],gr2[[2]],gr2[[4]],gr2[[6]]},
{gr2[[8]],gr2[[10]],gr2[[12]],gr2[[14]]},
{gr2[[16]],gr2[[18]],gr2[[20]],gr2[[21]]}
}
],GraphicsSpacing->{0.25,0.3},
DisplayFunction->$DisplayFunction]

gr[etch_,prl_,prh_,vpx_,vpy_,vpz_]:=
Map[ListPlot3D[
  Apply[Plus,mMap4[Apply[Plus,#]&,#]],
  PlotRange->{prl,prh},ViewPoint->{vpx,vpy,vpz},
  Axes->False,Boxed->False,Mesh->False
]&,etch];

Timing[etch1=Silicon[mask[20],50,30,1,1];]

gr[etch1,300,340,1.025, 2.530, 2.000]

Reference

ASECA: A cellular-automata simulation program for a silicon anisotropic super-micro-etching process in aqueous KOH
Kazume Nishidate, Mamoru Baba, and Richard J. Gaylord,
COMPUTERS IN PHYSICS, VOL. 12, NO. 1, (1998) pp88-93.