Hoe bij ASML software wordt ontwikkeld

Hoe kleiner de schaal, hoe groter de uitdagingen voor de software-ontwikkelaars.

Met de machines van ASML worden geavanceerde chips gemaakt en ze moeten dus tot op de nanometer nauwkeurig zijn. De software in die machines wordt steeds belangrijker. Daarom vroegen we softwaredirecteur John Koster hoe de software voor deze ingewikkelde machines wordt ontwikkeld.

De uitdagingen voor ASML op engineeringgebied zijn enorm door de nanometerschaal waarop de machines opereren. Die machines worden in alles aangestuurd door software, dus gelden op dat gebied al even strenge eisen. Die software wordt tegelijk met de machine ontwikkeld en John Koster is één van de mensen die dit proces overziet.

Om een idee te geven van de engineering-uitdagingen in de euv-machines van ASML, zetten we hier uiteen hoe die extreem ultra violette stralen worden opgewekt, waarmee de siliciumwafers uiteindelijk worden belicht en chips worden gemaakt.

Druppels tin vallen vrij voorlangs een uiterst gladde spiegel (als je die vergroot naar het oppervlak van Duitsland, dan is de grootste oneffenheid nog maar 1 mm hoog). Elke druppel wordt twee keer geraakt door een laserstraal. De eerste straal vervormt de druppel tot een soort pannenkoek, waarna de tweede straal de druppel verdampt. Bij dat proces ontstaat het extreem ultra violet licht, dat vervolgens via de spiegel de machine wordt ingeleid.

Dit proces wordt gestuurd door software. Software die door John Koster en zijn teams wordt geschreven.

Enterprise software in één behuizing

“We noemen het embedded software”, vertelt Koster. “Maar eigenlijk is zo’n apparaat een volledig geautomatiseerde fabriek op zich. In een normale fabriek zou je het dus enterprise software noemen. Alleen zit het nu in één systeem in één behuizing.” Binnen het systeem zelf zit al heel veel functionaliteit, maar dat is nog niet alles. Die software moet ook goed samenwerken met het systeem van de klant. “De automatisering bij de klant neemt steeds grotere vormen aan”, zegt John. “Dus breidt de uitdaging zich steeds verder uit. Daarom is goed samenwerken met die klant de enige manier om de toenemende complexiteit te lijf te gaan.”

Daar komt nog bij dat ASML een diverse klantpopulatie heeft. Al die klanten hebben hun eigen specifieke eisen voor hun producten, en dat zorgt voor een spagaat voor de softwaredivisie. John: “Als software-organisatie probeer je je diversiteit te beperken. Waar mogelijk breng je updates uit die passen binnen je geconsolideerde omgeving, maar tegelijkertijd moet je in staat zijn om aan specifieke klantbehoeften te voldoen.”

Groeiende complexiteit

De taak van software in de machines is het besturen ervan. ASML bouwt open systemen, wat wil zeggen dat klanten hun machines op heel veel manieren kunnen gebruiken. “Onze machine produceert wafers, en dat gebeurt op basis van recepten van de klant zelf. Daarin is de vrijheid voor de klant groot. Aan onze machine de taak om dat recept naar nanometerschaal over te brengen. En dat gebeurt met behulp van de software die wij maken.”

Die software krijgt een steeds grotere rol, benadrukt John. “Natuurlijk, de machinehardware moet de intrinsieke capaciteiten hebben, en sensoren moeten tot op de nanometer kunnen meten. Maar met de software stuur je de machine naar het optimale setpoint berekend door wiskundige algoritmen. Dat resulteert in een complex meet- en regelsysteem.” En dat systeem wordt steeds complexer naarmate de schaal waarin gewerkt wordt kleiner wordt en de snelheid wordt opgevoerd. Beide moeten steeds worden geoptimaliseerd om de concurrentie voor te blijven en de chipbouwers in staat te stellen om de Wet van Moore in stand te houden.

Maar hoe kleiner de schaal waarin je werkt, hoe groter de invloed is van fysieke factoren waar je voorheen geen rekening mee hoefde te houden. “Eerst waren deze krachten te verwaarlozen, maar ineens gaan ze meespelen en moet je ze meenemen in de berekeningen. Mijn eis aan de hardware is dat het zoveel mogelijk aspecten zelf oplost. Maar toch neemt het aantal dat we moeten meenemen in de software gestaag toe.”

Ontwikkelen in modules

Om die complexiteit beheersbaar te houden wordt de machine bij de ontwikkeling opgedeeld in functies, waar apart aan wordt ontwikkeld. Door die modulaire opbouw kunnen ontwikkelaars zich beperken tot het stukje dat ze moeten kennen om hun werk goed te doen. Tegelijk is het ook de manier waarop de machine in functies is opgedeeld. “Het duurt jaren voordat je het hele software-bouwwerk kunt overzien”, stelt Koster.

Er werken dus veel verschillende teams op projectbasis aan de verschillende functionaliteiten. De vorm waarin dat gebeurt ligt niet vast, maar wordt gekozen op basis van wat het beste past. “Voor software past de scrum-benadering”, vertelt Koster. “Voor hardware is waterval vaker geschikt. Maar je zult binnen ASML alle vormen tegenkomen.” Hij stelt dat je teams een bepaalde vrijheid moet geven om de ontwikkeling optimaal in te richten. “Maar het moet allemaal wel voldoen aan het grotere integratieplan”, laat hij daarop volgen. Want al die functies moeten samenkomen in één grote machine.

Ontwikkelen op basis van de vorige generatie

Het ontwikkelen van nieuwe software voor de machines van ASML kan onmogelijk vanaf scratch gebeuren. Er is een codebasis van om en nabij de 50 miljoen regels. Maar John spreekt niet van oude code of legacycode. Hij heeft het daarentegen over een evolutie. “We vertrekken vanuit de maturity van de vorige release, want nieuwe code ontwikkel je vanuit de vorige generatie. Voor een nieuwe machine raken we ongeveer een derde van de regels aan. Zo kun je nieuwe functies toevoegen op de bestaande codebasis.”

Nieuwe functies moeten dus in de bestaande code worden verwerkt, met behoud van de oorspronkelijke functionaliteit. Maar die elementen hebben vaak wel een grote impact op de werking van de machine. Dat proces moet dus goed worden beheerst.

Groeiende codebasis

Deze uitdaging raakt volgens John overigens een uitdaging die in de hele maatschappij speelt. “De beschikbare code wordt groter en groter”, stelt hij. “Bovendien heeft software een langere levensduur dan hardware. Dat beseffen veel mensen zich niet, maar het is wel zo.”

Om op die steeds groeiende codebasis te kunnen blijven verder bouwen is het volgens Koster vooral belangrijk dat je de bestaande interfaces zo goed mogelijk onderhoudt. “Dat is soms lastig, omdat vanwege tijdsdruk de code niet altijd volledig gedocumenteerd is en omdat het lezen van code moeilijk kan zijn”, zegt hij. Daarom is ASML nu met de Universiteit van Eindhoven bezig om analysetools te ontwikkelen waarmee ze het gedrag van de code op voorhand kunnen karakteriseren, zodat ze beter kunnen inschatten of nieuwe code voldoet aan de omgeving waarin het zal worden geplaatst. “En dat is best moeilijk”, benadrukt John. Die analysetools zijn dan ook nog niet beschikbaar, maar het is wel een project waarvan John verwacht dat het het ontwikkelen van nieuwe functionaliteit uiteindelijk makkelijker zal maken.

Updates in productieomgeving

Dat laatste is geen overbodige luxe, want de klanten van ASML vragen steeds meer functionaliteit en nauwkeurigheid, zodat ze steeds snellere, kleinere en krachtigere chips kunnen maken. Ze optimaliseren hun fabrieken voortdurend en vragen ASML bijvoorbeeld om steeds meer data. “Want aan de hand van die data controleert de klant de nauwkeurigheid van de producten en verbeteren ze de productie.” De klant vraagt dus om nieuwe of verbeterde API’s en functionaliteiten, die vervolgens in nieuwe machines beschikbaar komen of in bestaande machines via updates.

Die updates, bij ASML delta’s genaamd, zijn zeer belangrijk, omdat ASML machines levert die meer dan tien jaar meegaan en die een grote investering betekenen voor de klant. Tien jaar is een eeuwigheid in de semiconductorindustrie, dus moeten de machines steeds met hun tijd meegaan.

Als je updates uitbrengt moet het machinepark wel blijven functioneren. Voor dit updaten heeft ASML daarom bij iedere klant een volledige afdeling zitten van de customer support organisatie. Zij zorgen ervoor dat de nieuwe software en hardware wordt geïnstalleerd. Vervolgens zal de klant bijna altijd eerst een check doen om te kijken of de configuratie van de machine goed is voor de productie die hij wil gaan draaien. “Als wij een update aan de machine doen, dan eist de klant dat we dat weten te realiseren binnen een shift, dat is acht uur. En als het onverhoopt niet lukt moet je je plan B klaar hebben. Dan moet je bijvoorbeeld snel kunnen deïnstalleren en de machine productieklaar teruggeven.”

Testen en nog eens testen

Doorheen het ontwikkelproces wordt dan ook heel veel getest, om te voorkomen dat zaken mislopen. Dat testen gaat gelijk op met het ontwikkelen, vertelt John. Hij verwijst daarbij allereerst naar de aloude wijsheid dat software testen alleen de aanwezigheid van bugs toont, nooit de afwezigheid ervan. Bij het testen vaart ASML dan ook op de ruimschoots aanwezige ervaring. “In het verleden hebben we veel testcases opgebouwd.” Er staan dus al heel veel tests klaar waar de software voortdurend doorheen wordt gehaald.

Daarnaast gaat het testen stapsgewijs, net als het ontwikkelen van de software. De teams schrijven hun tests tegelijk met de software en ze voeren al vroegtijdig automatische moduletests uit. Hoe meer er vervolgens samenkomt, hoe groter de tests worden. John Koster overziet daarbij het grotere geheel. “Als je nieuwe functionaliteit uitbrengt, dan maak je daar een specificatie voor en het bijbehorende ontwikkelteam levert de volledig gekwalificeerde functie op. Tegelijkertijd stellen we ons op systeemniveau de vraag wat deze functionaliteit betekent in het grotere systeem en of we er additionele tests voor moeten maken. Die vragen stel je natuurlijk van tevoren. Is het iets dat lokaal is, dan moet je dat ook lokaal afvangen. Gaat het breder, dan zul je daar je testset voor moeten uitbreiden.”

Het testen gaan overigens zoveel mogelijk op een simulatieplatform. “Het gedrag en de volgorde kun je prima testen in een simulatie”, stelt John. “Alleen de nanometers moeten echt worden getest op de uiteindelijke machine.”


Comments are closed.