Elektronica ontwerpen met woorden

elektronica-hdl

Het tekenen van schema’s is al decennialang een essentieel onderdeel van het ontwerpen van elektronica. Technolution ontwikkelde een eigen programmeertaal als vervanging voor het tekenen van schema’s: De Hardware Description Language (HDL). Ontwerpen in HDL gaat sneller, is overzichtelijker en bevordert het gebruik van bouwblokken.

Artikel uit Objective 22, november 2014 - ook beschikbaar in pdf

Een afbeelding zegt meer dan duizend woorden. Maar soms zegt één woord meer dan duizend lijntjes in een elektronisch schema. In een schema is de werking van een elektronische schakeling prima uit te leggen. Hoe meer details het schema echter bevat, des te minder overzichtelijk het is. Het schema van een analoge schakeling is nog wel te begrijpen, zelfs als alle informatie in één afbeelding staat. Digitale schakelingen daarentegen bevatten zoveel verbindingen dat het overzicht verdwijnt. Sommige chips hebben wel meer dan duizend aansluitingen. Vanaf elk pootje loopt er dus een lijntje naar een ander component.

Frustratie en inspiratie

Een stuk geheugen verbinden in een schema betekent bijvoorbeeld 64 lijnen tekenen. Dit handmatig tekenen brengt risico's mee voor verkeerde aansluitingen, terwijl het maar om één functie gaat: het verbinden van twee databussen. In woorden is dat snel opgeschreven: koppel databus X aan databus Y. Het tekenen en onderhouden van schema's voor grote en complexe digitale producten is erg arbeidsintensief. De frustratie over het vele tekenwerk en de bijbehorende kans op fouten leidden bij ons tot inspiratie: dat moet toch ook op een andere manier kunnen? Kan dat niet compacter, met een beschrijving in plaats van een tekening? Want een deel van het werk geschiedt al in woorden. De input voor programmeerbare logica is VHDL, een taal die de functies in de FPGA's beschrijft. De FPGA-tooling levert een tabel waarin staat wat er aan de randen (interfaces) van die chips gebeurt, met alle pennen en hun functies.

Wat is HDL?

Met HDL ontwerpen we elektronica in woorden, het is een domein-specifieke taal. HDL beschrijft welke onderdelen er nodig zijn om een functie te implementeren en hoe die onderdelen met elkaar zijn verbonden. Het maakt de invoer van informatie makkelijker. Nu kun je schrijven ‘koppel databus X aan databus Y’ en hoef je geen 64 lijnen meer te tekenen. Als het nodig is kun je in dezelfde regel tekst afsluitweerstanden meenemen. In één regel heb je dan ook gelijk 64 weerstanden geïmplementeerd. HDL is een object-georiënteerde taal. Dus kun je allerlei eigenschappen aan je componenten toekennen, die de compiler automatisch checkt of gebruikt, bijvoorbeeld of de uitgang van chip 1 compatibel is met de ingang van chip 2. Dat zie je niet in een schema.

De HDL-compiler

De compiler leest de HDL in en controleert op syntactische en semantische fouten. Dan voert de compiler de in de HDL opgeschreven berekeningen uit en rapporteert de resultaten. Nadat de compiler een model heeft gemaakt van het gehele circuit, worden de automatische checks uitgevoerd. Als laatste stap genereert hij de input voor een PCB-lay-outpakket en een bijbehorende Bill of Materials (BOM).

Component versus functie

Elk component in een ontwerp zit daar met een reden, maar aan een schema is niet te zien welke. In een traditioneel schema reken je eerst uit welke weerstanden je nodig hebt. Die berekening staat in een apart document. Schema en document moeten synchroon blijven. In HDL kan de ontwerper in het ontwerp opschrijven met welke berekening hij tot die weerstand is gekomen. Verandert er iets in die berekening, dan berekent de HDL-compiler de nieuwe waarde en wordt de weerstand automatisch aangepast. Dit houdt het ontwerp overzichtelijk en consistent. Daarnaast specificeert de ontwerper in HDL alleen de vereiste eigenschappen van een component. Op die manier maakt hij de essentie van de ontwerpkeuzes expliciet. We kiezen ervoor om alleen de cruciale eigenschappen op te schrijven. Op die manier passen er verschillende componenten in het ontwerp. De compiler matcht vervolgens de componenten in de database met de gespecificeerde eigenschappen en kiest er één component uit. Hierbij kunnen in het ontwerp algemene richtlijnen worden opgenomen, zoals de maat of de geprefereerde leveranciers.

Aan de hand van de opgegeven en berekende parameters kiest de compiler dus de juiste component. Er zijn in de database misschien wel tien of twintig geschikte componenten om uit te kiezen. Als de gekozen component voor een volgende productie niet meer leverbaar is, is het ontwerp nog niet onbruikbaar; als de compiler opnieuw gedraaid wordt, kiest hij weer een component uit de database – zonder uitgebreid herontwerp. Op dezelfde manier is migratie van technologie (bijvoorbeeld naar kleinere componenten) snel te realiseren door enkele parameters te wijzigen. De maat van de componenten kan op één plaats in het ontwerp worden gespecificeerd. De compiler kiest dan alleen devices met de gespecificeerde maatvoering. In schema's is met zo'n aanpassing heel veel werk gemoeid.

Timing constraints en fysieke voorschriften zijn ook in HDL op een efficiënte manier weer te geven. Wat is de minimale of maximale afstand tussen componenten? Hoeveel mogen de lijnen in eenzelfde databus van lengte verschillen? Het zijn zaken die in een schema, het overzicht zeker niet bevorderen, als ze überhaupt al in te voeren zijn. Daarom wordt er vaak een aanvullend document gemaakt, met als gevolg extra werk voor de ontwerper en de lay-outer gecombineerd met hogere kans op fouten. In HDL zijn deze parameters verbonden aan de objecten die in het ontwerp worden gebruikt; ze staan dus in het ontwerp. Zo worden ze automatisch door de compiler verzameld. 

Tekening versus taal

Werken met HDL kan nog steeds samengaan met het tekenen van schema's. Nog afgezien van de schetsen en krabbels die elke ontwerper op een vel papier of een whiteboard maakt om zijn gedachten te ordenen en een overzicht te creëren. Voor bepaalde soorten circuits blijft een schema handiger, zoals analoge schema's waarin je wilt kunnen zien hoe de stroom loopt. Daarom hebben we in de HDL-compiler de mogelijkheid ingebouwd om schema’s toe te voegen. Bijvoorbeeld een voeding of een analoge filter. De compiler vertaalt het schema naar HDL, waarna het resultaat op dezelfde wijze wordt verwerkt en gecontroleerd als de handgeschreven HDL.

Risico's naar voren halen

Het controleren van een schema kan behoorlijk arbeidsintensief zijn. In HDL gaat dat een stuk makkelijker. De HDL-compiler voert een aantal automatische checks uit. Een logic-level-check bekijkt of output en input compatibel zijn. Of nog basaler: heb je de inputs wel aan outputs verbonden en niet per ongeluk aan elkaar. Op een net (alle verbindingen die vastzitten aan één koperspoor) moeten ten minste één zender en één ontvanger zijn aangesloten. En bij meerdere zenders moet je checken of ze niet tegelijkertijd iets zenden. Het zijn vaak kleine, simpele fouten die je nu snel kunt checken met HDL. Eventuele fouten zijn al zichtbaar bij het compileren en niet pas als het PCB op de testbank ligt. Zo zijn er minder ontwerpreviews nodig en neemt de voorspelbaarheid van het project toe. Bij iedere volgende fase van een project nemen de kosten van een fout toe, dus vroeg oplossen bespaart geld.

Korte ontwerpcycles en bouwblokken

Met HDL kun je sneller een ontwerp realiseren en kleinere iteraties maken. Daarmee leent HDL zich bij uitstek voor Agile-werkmethodes. En omdat het tekst is, zijn versies goed te vergelijken: wat is er in een nieuwe versie veranderd ten opzichte van de vorige en wie heeft dat gedaan? Verschillende versies zijn zo beter te beheren.

HDL maakt tevens de opbouw van een IP-bibliotheek een stuk makkelijker. Onze ontwerpers hoeven niet steeds het wiel opnieuw uit te vinden, maar kunnen elementen hergebruiken die eerder door een collega zijn gemaakt. Hoewel dat in schema's ook zou kunnen, gebeurt dat vaak niet, omdat een kant-en-klaar IP-blok vaak niet goed past in de omvang van een ander schema. In HDL kun je door middel van parameters het IP-blok aanpassen aan de omgeving waarin het gebruikt gaat worden. Je kunt voortbouwen op ideeën (IP/bouwblokken) die door anderen zijn bedacht. Als je een versterker als IP-blok hebt, hoef je daar niet meer over na te denken. Zodoende kun je steeds grotere problemen oplossen.

Innovatie in processen

Naast het ontwikkelen en leveren van innovatieve producten, benaderen wij ook onze processen op een innovatieve manier. Wij kijken continu naar de werkwijze binnen het bedrijf: kan dat efficiënter, beter, voorspelbaarder, goedkoper, kwalitatiever of sneller? Zo ja, dan doen we dat ook. Als de benodigde gereedschappen niet verkrijgbaar zijn, maken we ze zelf. HDL is een mooi voorbeeld van zo’n interne innovatie. Door steeds na te denken over onze manier van werken en over de gebruikte gereedschappen houden we onszelf scherp: oude, vertrouwde paden leiden niet altijd naar de mooiste toekomst.

We zijn vanaf het begin enthousiast geweest over HDL-ideeën en hebben ze daarom ontwikkeld en geïmplementeerd in ons eigen ontwerpproces. Uiteraard ging dat gepaard met een leercurve en een gewenningsproces die tijd kostten, maar de collega’s die met HDL werken pikten het snel op en zijn er positief over. Inmiddels hebben we een aantal serieuze designs gemaakt met HDL, die hebben geresulteerd in goedwerkende PCB's.

We zijn nog niet klaar met HDL; we blijven eraan ontwikkelen en optimaliseren. Met de huidige versie van HDL kan inmiddels snel en prettig gewerkt worden en is de kans op fouten afgenomen. Met de ervaring die we hebben opgedaan zien we nog een flinke lijst mogelijke uitbreidingen. We hebben een roadmap voor HDL gemaakt en we zullen de gereedschappen door blijven ontwikkelen. We dagen andere ontwerpers en klanten uit om HDL eens te komen ervaren en om met ons mee te denken over de HDL-roadmap.

Contact:

Gerelateerde items

Lagere kosten door modulair ontwikkelen

Lees meer

Publicatie

Zonder secure hardware geen security

Lees meer

Publicatie

Meerkanaals hoogspanningsvoeding

Lees meer

Project

Aansluiting bij partnerprogramma Microsemi Corporation

Lees meer

Nieuws