Der String-Algorithmus, wie er bis jetzt beschrieben wurde, würde nicht zufriedenstellend funktionieren. Probleme bereiten Bereiche der Geometrie wo eine starke Krümmung der Berandung auftritt, insbesonders an konvexe und konkaven Ecken des Simulationsgebietes. Es entstehen hier Fehler, die ursächlich mit der Methode, den Rand zu bewegen, zusammenhängen, und die durch zusätzliche Maßnahmen verhindert werden müssen.
Abbildung 2.4: Bewegung der Ätzfront an konkaven Ecken; (a) ohne Einfügen von
zusätzlichen Punkten, (b) mit Einfügen von zusätzlichen Punkten.
An konkaven Ecken müssen zusätzliche Punkte eingefügt werden, wie in Abbildung 2.4 gezeigt wird. Die theoretisch zu erwartende Ätzfront ist strichliert eingezeichnet. Ohne Einfügen zusätzlicher Punkte würde sich die konkave Ecke der Initialgeometrie, selbst bei noch so kleiner Wahl der Liniensegmentlänge, nicht ausrunden. Im Algorithmus wird daher ein Winkelkriterium vorgesehen, wonach an konkaven Ecken des Simulationsgebietes ab einem bestimmten Grenzwinkel zusätzliche Punkte in den String eingefügt werden.
An konvexen Ecken kommt es zu einem Zurückbleiben der Ätzfront gegenüber dem theoretisch zu erwartenden Ergebnis. Die Situation ist in Abbildung 2.5 dargestellt, wobei strichliert das richtige Ergebnis eingezeichnet ist.
Abbildung 2.5: Zurückbleiben der Ätzfront an konvexen Ecken; (a) ohne Korrektur
der Ätzrate des Punktes P3, (b) mit Korrektur der Ätzrate des
Punktes P3.
Idealerweise sollte der Winkel, den die beiden Geraden der Initialgeometrie einschließen, während der Simulation unverändert bleiben, da es sich im physikalischen Sinn um die Bewegung und den Schnitt zweier Ätzfronten handelt. Um das Zurückbleiben der Ätzfront zu verhindern, muß die Ätzrate von Punkten an konvexen Ecken entsprechend Gleichung 2.1 korrigiert werden.
Die Gleichung errechnet einen Verstärkungsfaktor entsprechend dem Schnittpunkt der Ätzfronten, wobei mit der spitze Winkel gemeint ist, den die beiden Liniensegmente miteinander einschließen.
Ein ernst zu nehmendes Problem tritt, ungeachtet jeder Ätzratenkorrektur, an konvexen Ecken des Simulationsgebietes auf, wenn sich die Punkte des Randes zu weit bewegen. Dies hat zur Folge, daß sich Liniensegmente plötzlich kreuzen und sogenannte Oberflächen-Loops entstehen, wie in Abbildung 2.6 gezeigt wird.
Abbildung 2.6: Das Entstehen von Oberflächen-Loops.
Da im Algorithmus keinerlei Information darüber vorliegt, welche Bereiche der Geometrie bereits weggeätzt wurden, beginnen einmal entstandene Oberflächen-Loops mit zunehmender Simulationszeit zu wachsen. Abbildung 2.7 und Abbildung 2.8 verdeutlichen diesen Vorgang. Die beiden Simulationen wurden mit dem Programm SAMPLE [Ele91] gemacht und zeigen die Entwicklung eines Photolackprofiles zu zwei verschiedenen Zeitpunkten. Das Entfernen der Oberflächen-Loops wurde hier bewußt unterdrückt. Nach 15 Sekunden Entwicklungszeit (Abbildung 2.7) sind bereits einige Loops an den spitzten Ecken des Lackprofiles entstanden, die zu wachsen beginnen und nach 20 Sekunden (Abbildung 2.8) eine beachtliche Größe und Komplexität erreicht haben. Das Entstehen der Oberflächen-Loops ist sehr eng mit der Wahl des Zeitschrittes verbunden. Wählt man den Zeitschritt hinreichend klein, kann das Entstehen von Oberflächen-Loops unter Umständen vermieden werden (siehe auch Abbildung 2.5). Punkte an konvexen Ecken würden dann aufgrund der kurzen Segmentlänge entfernt werden, bevor sich ein Oberflächen-Loop ausbilden kann. Diese Vorgangsweise ist aber kein praktikabler Weg, weil abgesehen von der anwachsenden Simulationszeit neben der Zeitschrittweite auch die Segmentlänge und die Ätzratenverteilung in das Entstehen der Oberflächen-Loops mit eingehen und es
Abbildung 2.7: Das Entstehen von Oberflächen-Loops. Photolackentwicklung mit
SAMPLE, 15 Sekunden Entwicklungszeit, mit unterdrücktem Entfernen
der Oberflächen-Loops.
Abbildung 2.8: Das Vergrössern der Oberflächen-Loops. Photolackentwicklung
mit SAMPLE, 20 Sekunden Entwicklungszeit, mit unterdrücktem
Entfernen der Oberflächen-Loops.
daher schwierig ist, auf diesem Weg das Vermeiden von Oberflächen-Loops zu garantieren. Das Vergrößern von Oberflächen-Loops muß aber auf jeden Fall verhindert werden, da durch das rapide Anwachsen der Punkte im String eine erfolgreiche Simulation in den wenigsten Fällen garantiert werden kann. Daher verfügen die meisten Simulatoren über spezielle Algorithmen, die, nach jedem fünften bis zehnten Zeitschritt aufgerufen, eventuell entstandene Loops entfernen, noch bevor sie zu komplex werden. Abbildung 2.9 zeigt eine Möglichkeit, Oberflächen-Loops zu erkennen und zu entfernen. Zu Beginn werden alle Schnittpunkte, die durch sich kreuzende Liniensegmente auftreten bestimmt. Dazu muß jedes Segment mit allen übrigen auf einen möglichen Schnitt überprüft werden.
Abbildung 2.9: Das Erkennen und Entfernen von Oberflächen-Loops.
Schneiden sich zwei Liniensegmente, so wird der Schnittpunkt, wie in Abbildung 2.9(b) gezeigt, als neuer Punkt in den String eingefügt. Anschließend wird der String ab dem Schnittpunkt durchlaufen (da stets eine geordnete Punktfolge vorhanden sein muß, ist die Richtung eindeutig) und alle folgenden Punkte aus dem String entfernt, bis man wieder beim Schnittpunkt angelangt ist. Abbildung 2.10 zeigt das Simulationsergebnis der Photolackentwicklung mit SAMPLE, wobei hier das oben beschriebene Verfahren zum Erkennen und Entfernen von Oberflächen-Loops eingesetzt wurde.
Abbildung 2.10: Vermeidung von Oberflächen-Loops.
Photolackentwicklung mit SAMPLE, 15 und 20 Sekunden Entwicklungszeit.
Abbildung 2.11: Bewegungsvekoren für den String-Algorithmus;
(a) Isotrope Ätzung, (b) Direktionale Ätzung.