Jörg Kaleita is technisch accountmanager Emea bij Altium Europe.

24 May 2012

Reflecties en andere signaalverstoringen kunnen we niet negeren tijdens het ontwerp van een PCB. Een geïntegreerde omgeving maakt het mogelijk om ze mee te nemen in het designproces.

Simulatie van de signaalintegriteit voor, tijdens en na het ontwerpen van een PCB is een van de meest onderschatte taken bij elektronicaontwikkeling. Ontwikkelaars vertrouwen vaak op vuistregels om de risico‘s van reflecties en overspraak afdoende en zonder veel extra inspanningen de baas te kunnen. Maar voldoet deze benadering wel aan de eisen van moderne elektronica?

Om deze vraag te beantwoorden, dienen we eerst te kijken naar de elementaire natuurkunde van reflecties op transmissielijnen. Tijdens hun studie hebben veel technici geleerd dat de wereld binair is. Er zijn slechts twee mogelijke toestanden: 0 en 1. Een binair signaal kenmerkt zich door vlekkeloze transities tussen beide. Oscillatie als gevolg van signaalreflecties door de ontvanger is niet een probleem dat binnen deze context aandacht krijgt.

Voor technieken met lage snelheid, zoals TTL met een rise-tijd van ongeveer 5 ns, hoeft het inderdaad geen probleem te zijn. In de regel verslechtert de signaalintegriteit hierbij slechts een beetje als gevolg van de reflectie aan de ontvangstzijde. Waarom dan extra moeite stoppen in simulatie? Het antwoord is eenvoudig: omdat de technologie niet stilstaat en kleinere structuren in halfgeleiders vaak resulteren in kortere stijg- en daaltijden. Deze resulteren vervolgens in reflecties die op hun beurt weer leiden tot over- en undershoot van signalen. Bij een signaal van 2,5 V met een overshoot tot 4,5 V kan het goed zijn dat dit de laatste reflectie is aan de ontvangstzijde omdat de ESD-diode aan de zendkant kapot is gegaan. Een undershoot tot 1,5 V kan betekenen dat de ontvanger twee keer wordt geklokt (signal discontinuity), wat nog meer onaangename gevolgen kan hebben omdat een fout als deze moeilijk te vinden is.

Altium beheerscherm 400px
Figuur 1: Na simulatie toont het beheervenster de status van alle netten.

Om reflectie op een transmissielijn vast te stellen, moeten we de transitionele elektrische lengte (transitional electrical length, TEL) weten. Dit is de snelheid van een elektromagnetische golf in een materiaal vermenigvuldigd met de stijg- of daaltijd van het signaal. In FR4-PCB-materialen zijn snelheden van 15 cm/ns – ongeveer een derde van de lichtsnelheid – gebruikelijk. Uitgaande van een stijgtijd van 0,3 ns, probleemloos haalbaar voor veel moderne drivers, geeft dit een TEL van 4,5 cm. Een van de vuistregels zegt nu dat reflecties het vaakst optreden wanneer een transmissielijn meer dan twintig procent langer is dan de berekende TEL. In ons geval is dat dus 9 mm. Hoeveel verbindingen in een PCB-ontwerp zijn er langer? Juist. Reflecties kunnen we dus niet negeren.

Overspraak

Hoe kunnen we ervoor zorgen dat we deze storingen zonder veel inspanningen kunnen ontdekken voordat de klant begint te klagen? Een geïntegreerde ontwikkelomgeving zoals Altium Designer biedt een interessante oplossing, omdat simulatie van de signaalintegriteit een integraal onderdeel is van het pakket en niet afzonderlijk hoeft te worden gekocht. Een ander voordeel is dat de simulatie niet een losse tool is in een verzameling gereedschappen, maar gewoon bij de informatie in de gedeelde database kan. Ook alle overige processen, waaronder het PCB-ontwerp, kunnen deze informatie gebruiken.

Wanneer we de printplaat eenmaal hebben gerouteerd, heeft de simulatietool toegang tot alle benodigde gegevens, waaronder netten, lagenopbouw, spoorlengtes en pinafstanden. Door van tevoren een juist Ibis-model aan de gebruikte componenten toe te wijzen, kunnen we de simulatie eenvoudig uitvoeren. Het is daarbij aan te raden regels te specificeren die toleranties toestaan van bijvoorbeeld plus of min twintig procent. Met één druk op de knop beoordeelt de tool alle netten op naleving van de ingegeven toleranties.

Na voltooiing van de simulatie krijgen we de status van alle netten duidelijk in het beheervenster getoond (Figuur 1). Hebben alle signalen de test succesvol doorstaan, dan kunnen we door met andere taken. Als er problemen zijn, kunnen we de betreffende signalen, evenals alle knooppunten, verder controleren op reflecties. Met één muisklik kunnen we de tool de signalen laten herkennen en markeren op het PCB of in het schema. Gebruiken we componenten met programmeerbare I/O, bijvoorbeeld FPGA‘s, dan is het mogelijk de verschillende curves te stapelen om het beste vermogen van de driver te berekenen (Figuur 2).

Door de geïntegreerde omgeving is het niet nodig om over te schakelen op een andere tool, bijvoorbeeld wanneer we het vermogen van de driver en de uitkomsten van simulatie moeten combineren. Als we dat vermogen niet kunnen wijzigen, hebben we de mogelijkheid een seriële weerstand te gebruiken voor demping van het signaal. Ook hebben we de beschikking over verschillende termination-modellen, zodat het een eitje is om de beste weerstandswaarde te bepalen.

Veel PCB-ontwerpers stellen ook esthetische eisen aan hun designs. Daarom routeren ze busstructuren vaak samen. Dit ziet er mooi uit, maar brengt het gevaar op overspraak met zich mee. Om dit soort ’risicovolle‘ constructies te vinden, kunnen we zoekcriteria instellen, bijvoorbeeld maximaal 10 mm ruimte en minimaal 10 mm parallelle sporen. Het resultaat kunnen we vervolgens laten analyseren op overspraak.

Afstemming

In toenemende mate leggen standaarden de verantwoordelijkheid voor het juist functioneren van halfgeleidercomponenten bij het routeringsproces. Het is daarom noodzakelijk om ons strikt te houden aan de specificaties van de datasheet; anders is zelfs de beste simulatietool nutteloos. Wanneer we bijvoorbeeld DDR-geheugen gebruiken, moeten we voldoen aan alle data- en kloklijnlengtes.

Voor het routeren van interconnects in eenvoudige busstructuren (zoals DDR3-geheugen) biedt de ontwikkelomgeving functies om de lengtes onderling af te stemmen. Hetzelfde geldt voor differentiële verbindingen (bijvoorbeeld Gigabit Ethernet). Na routering wordt er vaak een tolerantiewaarde gezet voor de netten, die vervolgens wordt gebruikt voor de lengteafstemming. Ook worden er golflijnen toegevoegd aan de ingegeven specificaties.

Altium simulatiescherm 400px
Figuur 2: Het simulatievenster biedt de mogelijkheid om te testen op signaalintegriteit.

Bij impedantiegedreven sporen wordt die impedantie grotendeels bepaald door de lijnbreedte en lagenopbouw van het bord. De omgeving kan deze waarden bepalen op basis van de gespecificeerde data in de gedeelde database. We hoeven slechts een regel in te stellen om ervoor te zorgen dat de tool deze berekening uitvoert voor de betreffende interconnects.

Als twee geheugenbanken op dezelfde drivercomponent zijn aangesloten, is het niet zo eenvoudig om de lengtes van de verbindingen te tunen. Dan is er namelijk overeenstemming nodig in de lengtes van driveroutput en receiverinput. Gebruiken we dezelfde componenten voor de ontvanger, dan zijn de twee sporen gewoonlijk even lang. Variëren de invoercapaciteiten echter, dan resulteren verschillende lengtes in een runtime verschil dat we eerst moeten simuleren. Een veel voorkomend probleem hierbij is de segmentatie van de netten. Omdat een net wordt opgedeeld in drie segmenten met ieder een eigen naam, geeft de tool een fout die leidt tot een kortsluiting.

Het concept van ’net ties‘ kan hier uitkomst bieden. We definiëren een willekeurige component in de bibliotheekeditor en geven daaraan de eigenschap ’net tie‘ mee. Vervolgens kunnen we een regel instellen om de component wel of niet te laten verschijnen in de materiaallijst. Dit voorkomt regelschendingen en maakt het mogelijk om de lengte van ieder segment aan te passen.

Het tegenovergestelde doet zich voor wanneer we een spoor met een weerstand routeren. In dat geval hebben we een net voor en achter de weerstand, wat het een stuk moeilijker maakt om de lengte aan te passen. Hier kan een klein foefje helpen: maak even kortsluiting met de gebruikte weerstand in het schema. Hierdoor ontstaat één fysiek net, zodat het aanpassen van de lengte een formaliteit wordt. We kunnen de weerstand nu op de gewenste plek op het PCB plaatsen en het spoor naar beide connectoren routeren. Na aanpassing van de lengte kunnen we de juiste weerstandswaarde bepalen met de simulator. Vervolgens kan de kortsluiting worden opgeheven en de berekende waarde ingevoerd. Door het betreffende spoor een kleur te geven, kunnen we het eenvoudig verwijderen met de kleurselectiefunctie.

Edited by Nieke Roos