AV-Portal 3.23.2 (82e6d442014116effb30fa56eb6dcabdede8ee7f)

Designing PCBs with code

Video in TIB AV-Portal: Designing PCBs with code

Formal Metadata

Designing PCBs with code
Is designing circuits with code instead of CAD the future of electronic design automation?
Title of Series
CC Attribution 4.0 International:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Release Date

Content Metadata

Subject Area
An overview and history of various tools and languages that allow you to use code rather than CAD software to design circuits.
Keywords Hardware & Making

Related Material

The following resource is accompanying material for the video
Ocean current Game controller Open source Software developer Code Software developer Projective plane Open source Code Bit Computer Computer Software E-Book-Reader Virtual reality
Hardware description language Component-based software engineering Code IRIS-T Dreizehn Computer Routing Connected space
Hardware description language Architecture Complex (psychology) Code Quicksort Logic gate Library (computing) Task (computing)
Architecture Code Mereology Field programmable gate array Logic gate Semantics (computer science) Library (computing) Hydraulic jump Connected space
Implementation Simulation Focus (optics) Logical constant Analogy Parameter (computer programming) Markup language System call Digital electronics Variable (mathematics) Hardware description language Architecture Component-based software engineering Sample (statistics) Function (mathematics) Analogy Formal verification Ideal (ethics) Endliche Modelltheorie output Extension (kinesiology) Integer Library (computing)
Slide rule Digital electronics Computer file Projective plane Java applet Fitness function Compiler Online help Modulare Programmierung Formal language Formal language Connected space Compiler Hardware description language Positional notation Different (Kate Ryan album) Maschinelle √úbersetzung Navigation Integrated development environment Quicksort Library (computing) Plug-in (computing) Descriptive statistics Window
Slide rule Computer program Functional (mathematics) Digital electronics Code Weight Set (mathematics) Public domain Electronic mailing list Formal language Medical imaging Latent heat Positional notation Operator (mathematics) Program slicing Social class Area Execution unit Moment (mathematics) Public domain Bit Mereology Template (C++) Formal language Connected space Positional notation Process (computing) Loop (music) Right angle Programmschleife Spacetime
Computer program Graph (mathematics) Service (economics) Visualization (computer graphics) Visualization (computer graphics) Graph (mathematics) Similarity (geometry) Formal language
Implementation Algorithm Graph (mathematics) Kernel (computing) Term (mathematics) State of matter Graph (mathematics) Open source Function (mathematics) Object (grammar)
Point (geometry) Dataflow Arithmetic mean Digital electronics Code Kinematics Direction (geometry) Analogy Mixed reality Analogy Event horizon Product (business)
Point (geometry) Scripting language Digital electronics Code Multiplication sign Interactive television Set (mathematics) Mathematical analysis Parameter (computer programming) Formal language Component-based software engineering Cuboid Text editor Descriptive statistics Formal grammar Module (mathematics) Scripting language Parsing Inheritance (object-oriented programming) Java applet Mathematical analysis Public domain Computer Formal language Digital electronics Message passing Voting Fluid statics Formal grammar output Text editor Problemorientierte Programmiersprache
Beta function Digital electronics Inheritance (object-oriented programming) File format Projective plane Expression File format Numbering scheme Bit Numbering scheme Formal language Revision control Vapor Text editor Problemorientierte Programmiersprache Quicksort Text editor Chi-squared distribution Alpha (investment)
Windows Registry Computer program Freeware Service (economics) Digital electronics Constructor (object-oriented programming) Formal language Iteration Software Modul <Datentyp> Spacetime Process (computing) Physical system Collaborationism Electronic design automation Constructor (object-oriented programming) Projective plane Open source Usability Process (computing) Software Computer hardware Website Iteration Modul <Datentyp> Cycle (graph theory) Speichermodell Spacetime
Graph (mathematics) Projective plane Usability Asymptotic analysis Algebra
Medical imaging Simulation Internetworking Computer simulation Line (geometry) 8 (number) Number
Process (computing) Open source Graph (mathematics) Interface (computing) Number
Computer program Kernel (computing) Graph (mathematics) Translation (relic) Ranking Number
Point (geometry) Programming language Link (knot theory) Graph (mathematics) Modal logic Interface (computing) Numbering scheme Branch (computer science)
Software Elasticity (physics) Gamma function Element (mathematics) Number
MUD Roundness (object) Internetworking Graph (mathematics)
Hypermedia System programming Median
and and and
and the when it's Caspar and
I am here to talk to you about designing PC these that's printed circuit boards with code
so just a little bit about me I'm a freelance electonic engineer and suffered a developers and the pictured here to my current project sponsor virtual reality check controller another is braille e-book reader and I love writing code and I'll of open source and especially open-source electronics people coming together working on something all of from all over the globe really inspires me so um
you know as I said I love electronics and of code uh but I don't actually enjoy a designing electronic so much uh I I get very frustrated with the design tools and this is how typically you design a printed circuit board you have your schematic 2 on 1 side where you define your components in the connections between them and then you move over to your layout tool where you then route those connections and place components so if
you designing digital hardware if you design it something to be run on an FPGA you can actually use schematic entry as well uh but hardware description languages were invented in the eighties and that's pretty much how we largely now design digital circuits uh
because the schematic entry for this sort of task 2 becomes very confusing and there is a little puzzle found if you go to the euro there you can get it and you can try and so that's um yes so we use
code to describe the logic circuits because it's much easier to manage the complexity uh so these are known as hardware description languages but this is a very very low there and thank or is
it yes it is true and
so if you're doing a schematic and especially with high income devices such as FPGA is asthmatics a really just uh there's a lot of labels and the jump all over the place and it's kind of hard to follow what's going on really and very tedious t you know defined hundreds of connections that just because kind of go in parallel so no that's the motivation that's behind exploring the space of of using code to uh to define fair to define atlas from 4 to do to make semantics so
can we use HDLs analog circuits well there's actually uh analog in mixed-signal extensions to the the popular HDLs uh Verilog a was defined in 1993 and it was were then merged into a mess which stands for analog and mixed-signal and in 2000 um
there's also uh an analog and mixed-signal extension for the HTML and there's another 1 that I came across with in a paper from 1999 with call the circuit description language darkened find any implementation of it the so the focus of these this simulation and verification really so rather than just do pure schematic entry you are describing the behavior of your circuit and you know you need to know a lot of details about the behavior of you components so what we want what what I want anyway is something to Due schematic entry to do create netlists are rather than the analog simulation because the same of models work so I came across this which is
called the PCB hardware description language and this is the project from 2011 it it has quite a clean syntax for defining uh devices in the connections is a more advanced features that kind of didn't fit on the slide uh but it this is a concise notation to do connections in parallel and of and in you can see it as a sort of a native module system so you have all your different circuits spread across different files so it's a new language
and which has its pros and cons and you get a clean syntax uh but it's not as expressive as a general purpose language there is a compiler it's written in Java and it can happen that this is for quite a few different PCB design tools it does some natively and then there is some translation software for others it was as an Eclipse plug-in so you can write descriptions with the help of an ID stored and managed to try this um
that's what I came across this skittles so this is the python around there's a bit of operator overloading not going on here so even if you use to reading Python you might be a bit confused but it's essentially a set of classes to help you design circuits and you can do the rest of your design in the car I can lay out and is another reason 1 who which is another reason uh come embedded in the domain space of specific language for designing circuits in Python which is by circuit um and this is also the this is quite influx of moment so this slide kind of went out of date in the last few days uh on the example of how the circuit is defined there and has a very interesting experiment of features uh so 1 of that 1 or that 1 of those ideas is to break it a bonus up into into different there's some functions and then define connections on those and it also does that the footprint of missions in layout um
so ph dl still and by circuit the date the yes the prose of area you that you can define something once and reuse that's the idea it and you can use for a loop slice notation and look at programming features to speed up the design process this image it so it's hard to visualize what's going on from code to your actual necklace uh all your circuit uh thicker definitions can still be very tedious so uh it's hard to associate footprints and then make sure those footprints a right to make sure you connections alright and if you if there's any mistake in that it can be quite it could would be quite hard to debug so i'm gonna just some of these um this realization
so even though I find 2 drawings medics quite tedious I like to read them and like to refer to them there you really really useful uh visual too so I was experimenting with trying to that visualisations to some these
languages and contributed this to skilled services uh graph this graph if you don't know graph is a supreme program where you can programs programmatically define your graphs there so so I tried to make this look kind of similar to schematic so you know what's going on but it's of obviously it's not a schematic but it has similarities and I we haven't really tried to scale this up here but this is a conventional experiment um by circuit
or date and has a a graph is output as well yeah which be created data-driven dead the the reason of this looks like this is because in place that you can do layout as well so there's a lot of this initial implementation of a sort of interactive you away you can click on uh you all nodes on the graph and then it highlights what's going on in your layout the terms so queries there came across a
political metaplasticity and that takes your users uh so your or your uh the output from the log yeah and it tries to what made it draws quite quite good the choir always I'm really impressed with the schematic state that comes up with and this is using played yes all world very soon it's going to be using select the this successor which is objects so that's the eclipse layout kernel and that uses very similar algorithms to what's being used in reference to lay out these graphs um so B and
that creates a new so we have been experimenting event with use the using this fall analog when mixed signals kinetics and the the summit in show a kind of the products of that experimentation and 1 is not exactly what people Woodrow it's quite readable and um on on on very happy with it so the the nerves so that is that the the flow of go there has to be defined so you your schematics were generally flow we using this from uh you do flow up up to down and up and left to right so as we scale this up it'll be interesting to see if that actually doesn't make it I I think it will make uh schematics much worried because all of this all schematics defined in this way will flow in the same direction and will be easier to follow uh you'll be interesting to see how to steer scales of for higher hierarchical schematics them so I'm really looking forward to experimenting with us the so kind of on the 2nd
point there is still quite tedious to actually define your circuits even in code and but mean by charisma called
the lecture grammar which is currently a JavaScript module to pass electronic component descriptions uh so the idea here is that as electronic hobbyists engineers we already use quite a specific language to quite a restricted language to to to describe what are circuits and the components so but if we if we take advantage of that what people already know we could see it get that use that fall as a parameter k input as well so it is true as it as set is this is just a modular I'm working on a Python vote to contribute to that that to these other next uh a domain-specific which isn't in Python the um the yeah so
the I've been playing with this idea of also kind of uh creating another another domain-specific language possibly in JavaScript no have which just to confirm that would slow which is everything that can be written in just will be written in JavaScript and so my goal so this would be to make it easier to design a reason about says it's circuits and you static analysis to make it very hard to create box parents with John scripts is the best uh uh choice if for that goal I'm not sure yet so maybe at some point we will switch language that and yes of adults to have an interactive editor we you can visualize a circuit with something something like the analysis Fiji and at at the code at the same time the so you probably wondering
about you know whether you should use these projects to define circuits and I don't know how I think if you are interested in the idea should the flea tried out I wouldn't use it for any thing important yet have um so ph dl was created and its I think 1 when I tried it it's it's it's you know it works for previous versions of the legal and nearest so is the I think this has a much use so there's been some the chart skittle I would say is that out of our budget and sort of just coming up with the sense that these are not official cut off from the creators and tend to my own experience I haven't even got sort yet so I've just over a bed
and the layout of 4 principal there's this but the domain-specific languages as well for creating footprints and layouts kike montre is 1 fork I cared parents I haven't tried it but it it looks pretty good actually until do use it quite a bit in circuit a b there is also a language it for creating footprints and uh this an experimental layout and routine using an SMT solvers um a I'll secreted experiments about a year ago to that makes a racket scheme and Chi act as expressions uh that would be kiken S-expression format into an editor uh door without hasn't seen much work lately um so the
I guess the question is it and injustice effective it what what what we want achieve by making hardware design more like software and really we want to be able to um we want to be able to have the fast iteration cycles and iterate on our designed so that we we uh get somewhere and quick of it we want to use programming constructs for of the fast the fast and better design process so I've kind of so to lot about already and really they we want modularity and reusability um sold the they are having covered much of that but all of these languages we have uh module systems so that you can reuse this encoding and into to them and so on the yeah you will hopefully make use of other people's work and kind of collaborate in that way uh an idea
Mr. mention not to mention my own project here which is uh a website a service to the of a registry for for electronic designs so my hope here is really that um that this could can become a collaborative space for pick the readers other people's circuits um the
so I think if initiative earlier um I really want thank all the creators of all these projects because really large samples presenting other people's works income my thoughts on top of that and sober Nelson uh and and others that have created Pht
LJ Vanderbilt unstable and David Craven on circuit and new ltaly for listed as cities and of course all the contributors to graph is an alg make this kind of experimentation possible after
all we go now to their Q and made the signal light the signals that the Internet has no questions so please line up at the microphones if you have any questions for our speaker costs there's someone already ready
and to make a phone number to please in which also solutions of small for what if you want to do what's the simulations some was it possible image exported to spice or something who uh um there I don't know uh I think if you want to do simulation you should look
into the the Verilog supernovae she'll solutions and possibly all 1 you probably don't want to write spice directly here in make a phone number for please the so what can you say something about the
process or process of the placement of the circuitry of sources of the interface to the spices 1 and very interesting aspect but on the other hand I want to have an interface therefore the actual placing of the complements did you think about this well yeah so uh it serve for
both pH well for P still you really export to or kernel go or then use the translation program to translated to another program um so you then you do your layout in in those programs and the same for skilled you export to Python
there's certain guy can't and then do your layout Inc I can't bicycles until only 1 really uh experimenting with doing layout program sickly um yeah microphone number 3
places by your experiments with our netlist SVG schemes published anywhere so we can all build on that and know what our stuff the yeah there merged into netlists SPG it's sorry my workers kneel totally working on it as well a kind of both experimentally and it's just
being merged into the master branch of that necessity and all the other all the links are in the top 1 that include the stuff to interfaces with the of programming languages you listed above but know what that's kind of uh largely imaginary at this point so what we need to do
is outpost network that here uses netlists and then use that elasticity for that it's really it seems pretty straightforward to once we get around to it I think OK there is someone has to
make a phone number 4 OK so my question is do you think it would be possible to create ultimately crude to constrain best place that could actually work for placement of the elements for I mean I don't know we will but I
I find that the experiments that have been done in place like a really interesting whether they're actually gonna lead somewhere I don't know um now come come much more on the unfortunate thank you thank you you thank you for the took small the Signal angel doing more questions they are no more questions from
the Internet and I think you also run out of questions so cost of thank you again for the torque and please give a warm round of applause thank you very much so what and you hear
the I and the each but the peak but back back back pay