We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

How to design your own chip?

00:00

Formal Metadata

Title
How to design your own chip?
Title of Series
Number of Parts
84
Author
License
CC Attribution 3.0 Unported:
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.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
Buy hardware, write software -- this is the basic rule we in the FLOSS community followed for many years. But things are changing. Today it is easier than ever before to create own digital hardware, aka. "chips." In this talk I'll show give a introduction into what (in terms of tools, knowledge and other factors) is required to get a digital hardware design up and running. I'll also show how to get started: where can I find the community to get help and existing code? What existing projects can I contribute to?
16
Thumbnail
41:34
27
Thumbnail
08:57
36
Thumbnail
48:55
56
58
Thumbnail
1:02:53
67
Thumbnail
45:41
68
69
Thumbnail
37:44
AuthenticationSlide ruleSoftware developerGoodness of fitXMLUMLComputer animationMeeting/Interview
System administratorDatabaseQuery languageKernel (computing)MathematicsCoprocessorCodeSoftware developerSource codeLine (geometry)Reduction of orderBitState of matterProcess (computing)StatisticsStack (abstract data type)Computer hardwareComputer animationLecture/Conference
WordSource codeConstraint (mathematics)Category of beingSoftware developerDifferent (Kate Ryan album)Programming languageLevel (video gaming)Computer hardwareComputer programLibrary (computing)Open sourceAreaDigital electronicsObject-oriented programmingWhiteboardDescriptive statisticsTerm (mathematics)BitSpeichermodellPeripheralPhysical systemComputer-assisted translationReal numberCyberspaceDataflowCodeSummierbarkeitScheduling (computing)Projective planeHardware description languageLecture/ConferenceSource code
Computer simulationFunction (mathematics)View (database)WaveformOpen sourceDescriptive statisticsComputer programProgramming languageElectronic mailing listLogic gatePhysical systemLevel (video gaming)Computer clusterDot productLecture/ConferenceComputer animation
Functional (mathematics)Computer programBit rateMessage passingRegular graphRange (statistics)BefehlsprozessorComputer networkMicrocontrollerImplementationReal numberMereologyComputer hardwareField programmable gate arrayCore dumpLecture/Conference
Projective planeVideo projectorServer (computing)SoftwareReal numberUnit testingForm (programming)Axiom of choiceProgramming languageOpen sourcePhysical systemBitSystem callSoftware testingExtension (kinesiology)1 (number)View (database)Computer simulationComputer hardwareMultiplication signFormal verificationCodeHardware description languageDifferent (Kate Ryan album)AreaTheory of relativityRevision controlProcess (computing)CoprocessorModel theoryGroup actionSoftware developerNP-hardStudent's t-testReduced instruction set computingExecution unitSpeichermodellGoodness of fitFront and back endsLecture/ConferenceComputer animation
CoprocessorComputer simulationInsertion lossWaveformFormal verificationDifferent (Kate Ryan album)Software testingCompilation albumCompilerComputer programAreaCode1 (number)Student's t-testFunction (mathematics)Water vaporRevision controlJava appletLibrary (computing)Open sourceFormal grammarProof theoryCuboidUnit testingRandomizationKeyboard shortcutoutputProjective planeSoftwareBitGradient descentComputer fileReal numberWordResultantFreewareComputer hardwareFunctional (mathematics)Execution unitSoftware frameworkCodeImplementationWhiteboardRun-time systemConstraint (mathematics)SpeichermodellField programmable gate arrayIsing-ModellWebsiteSoftware bugLecture/ConferenceComputer animation
Exterior algebraProjective planeCyberspaceImplementationService (economics)Electronic mailing listComputer networkOrder (biology)1 (number)WhiteboardStandard deviationMultiplication signField programmable gate arrayControl flowData storage deviceHypermediaBitRevision controlPosition operatorNeuroinformatikProduct (business)Point (geometry)WordCoprocessorOpen sourceLattice (group)Arithmetic meanRange (statistics)Regular graph2 (number)FreewareLogic gateEquivalence relationLecture/ConferenceComputer animation
WhiteboardReal numberProcess (computing)ResultantModel theoryLecture/Conference
DampingComputer hardwareProjective planeBefehlsprozessorSemiconductor memoryBitDirection (geometry)CoprocessorComputer animation
AreaData analysisReal numberComputer hardwareConvolutionTerm (mathematics)Direction (geometry)Point (geometry)Artificial neural networkPattern recognitionCoprocessorProcess (computing)Software development kitImplementationPower (physics)Revision controlConnected spaceSupercomputerParameter (computer programming)Library (computing)Rule of inferenceLecture/ConferenceComputer animation
CirclePower (physics)Virtual machineRule of inferenceOpen sourceResultantLogic gateDimensional analysisGroup actionObservational studySet (mathematics)Greatest elementParameter (computer programming)Software developerTube (container)Library (computing)Fitness functionRight angleSoftware development kitLecture/Conference
Order of magnitudeNumberTableauOpen sourceSoftware developerAuditory maskingArithmetic meanSquare numberFormal verificationComputer configurationMultiplication signPopulation densityBitGoodness of fitResultantFacebookNP-hardRevision controlMetreSoftware testingCodeLogic gateAdditionConnected spaceProduct (business)AreaCompiler1 (number)ImplementationLine (geometry)Pairwise comparisonSource codeProjective planeDirection (geometry)Musical ensembleMassBlack boxObject (grammar)Error messagePhysical systemDataflowLevel (video gaming)State of matterScripting languageComputer animation
Source codeOpen sourceLine (geometry)Multiplication signSoftware testingCASE <Informatik>Projective planeLecture/Conference
Open sourceMulti-core processorPlanningReal numberCoprocessorNatural numberQuicksortMathematicsSemiconductor memoryGame controllerRepository (publishing)MicrocontrollerWhiteboardOcean currentComputer animation
Video projectorGoodness of fitWaveformComputer-assisted translationRule of inferenceAxiom of choiceType theoryStandard deviationGroup actionTheoryProjective plane1 (number)Social classSource codeComputer hardwareSet (mathematics)Vulnerability (computing)Software developerSoftwareLecture/ConferenceMeeting/InterviewComputer animationPanel painting
Graphics tabletComputer hardwarePosition operatorMultiplication signProjective planeSpeichermodellClosed setKeyboard shortcutNational Physical LaboratoryOpen setSocial classLibrary (computing)QuicksortProgramming languageModule (mathematics)Computer-assisted translationAxiom of choiceWebsiteState of matterComputer fileCodeTerm (mathematics)Right angleRootOpen sourceCoprocessorRevision controlMereologySoftwareGoogle AdWordsVulnerability (computing)Core dumpLecture/ConferenceComputer animation
State of matterFunctional (mathematics)Server (computing)2 (number)TelebankingOpen setSummierbarkeitWebsiteDomain nameSystem callProduct (business)Numbering schemeProjective planeCodeRepository (publishing)Revision controlBlogLine (geometry)Right angleAreaLecture/ConferenceComputer animation
Term (mathematics)WebsiteVideo gameCoprocessorGoodness of fitOpen setBlock (periodic table)Form (programming)YouTubeStability theorySoftware developerOpen sourceProjective planeDisk read-and-write headState of matterContent (media)Computer hardwareGroup actionFocus (optics)Social classRepository (publishing)Multiplication signProcess (computing)BlogSpeichermodellEmailGoogolBitLecture/ConferenceComputer animation
AdditionPoint (geometry)State of matterAxiom of choiceIntrusion detection systemOpen setLie groupLecture/Conference
FamilyWebsiteOpen sourceCyberspaceInformationProduct (business)Graphics softwareStandard deviationFigurate numberProgrammierstilFuzzy logicProjective planeDigital electronicsPlug-in (computing)Function (mathematics)Field programmable gate arrayAuditory maskingAxiom of choiceComputer animation
Computer animation
Transcript: English(auto-generated)
Thank you for your attention. The microphone is not on, so I'm going to switch to English now.
Good. The question that I put on this first slide is how to design your own chip.
And to do that, let's start with a story. And actually a story that's pretty familiar for those of you that do software development. And I guess that's actually most people here. So it's a story of Tom Lear, a guy that is actually a DBA admin.
He's doing some database work. And one day he finds this really weird query that doesn't just run right. It's slow for unknown reasons. He has no idea what's actually wrong. So he looks at some statistics that he gets of the queries. Looks all kind of weirdly wrong.
But he looks at the query itself and it should be fast actually. So he goes deeper in the stack and he goes through the whole DB stack. He goes to the kernel layer. And in the end, he figures out the C code looks right. The stuff that's executed looks right. It's just slow for some reason. So he digs down further and he actually looks at the C code that he sees.
And he sees, well, this kind of weirdly one line of C code that is actually the hotspot in his database query is actually turning out to be a lot of assembly instructions. Some weird loop unrolling. Something that he knows he could do much faster if you just had a bit of modification to the processor that he has.
So he says, well, no problem. Just check out the processor source code. Do some changes. Do a simple simulation. Push it. Do a pull request. And just two weeks later, he goes to the shop and buys his new processor. Looks unrealistic.
Yeah, it does. And actually, it's in the name of this guy. Yeah. It doesn't work that way. And the question is, why doesn't it work that way? Why can't we do hardware development? Why can't we do chip development? Actually, the way we do software development. Why is it so much slower? Why is it so much more expensive?
And that's what we're going to have a look at today. And... Sorry. I'm going to start with some words. And I'm seeing I'm standing in front of the slides. I'm sorry. But this cat is always kind of irritating. But it's a frost contradiction. So it has to be there.
I'm going to start with some words. And the word I will use today most is digital hardware design. And I use digital hardware design to kind of separate it from the non-digital hardware design. Oops. Yeah.
That is doing PCB. That's doing things like Maker where you have Arduino boards that you put together that you program. What we will have a look at today is really digital hardware design. That means you create your own chips in the end. So physical devices. That's what we hope for.
The other term we use is free and open source silicon. I guess that's a good compromise to get rid of this hardware versus digital hardware confusion. And open source hardware is sometimes used for chip design but sometimes used also for this whole Maker area.
And I try to distinguish that because it's easily confused. Because the techniques and the constraints that we have when designing are very much different. So I don't know how many of you have... And that's hard to read but it's not relevant what's actually on there anyways. How many of you have ever read or written some Veriloc code, some VHDL code, some system Veriloc code, things like that?
Just raise your hand. Okay, that's 20%, 30%, something like that. For all the others of you, so we start our design with source code just as we do in software development. The source code is actually not real source code but the design guys actually insist on that as a hardware description language.
It's not a programming language. So what you do in the end is you describe how your transistors that make up your chip are connected or how they function in this way. You do it on a bit higher level but you're not on as high level as if you would do a C++-based programming or things like that.
So for all of you that have never heard of hardware design, I will quickly go through the design flow. The steps that you need to take, essentially going from your ideas that you express in the source code to the final chip.
And you start on the left with your HDL sources, that's essentially your source code. And you use some other libraries that you get from vendors, that you get from other sources. And that's called IP cores. It's a weird word because intellectual property doesn't need to be very intellectual or property of anybody.
But that's how it is and that's what we stick with. And what you got in the end is essentially your design project, the description of your chip. And then you have a couple of ways to go. First you can do simulation and you always can do simulation and that's what you want to do.
And what you get as output of simulation is a nice view of a lot of waveforms. So you got all the signals that you have in your system and it's not visible right now. But it's usually also if you have it on the screen it's not much more understandable.
So debugging is really really annoying at this level. So but that's the output you get out of a simulation. So you say well that's nice, that's what I always wanted to have a look at. But that's not really that satisfying. The other way to go is you take the same sources and do synthesis.
So meaning you go from this description in this programming like language to a netlist. And a netlist is essentially a collection of usually not transistors but AND and OR gates and things like that that are connected by wires. And if you have the netlist essentially it's just a grab bag of unplaced wires.
So you have essentially just like a fish net or so. You have in the dots are essentially your AND and OR gates and that are weirdly connected. So you got this weird net of things that is coming out of synthesis. Taking the synthesis you can either neatly place this netlist on a piece of silicon.
Or you can program it on an FPGA. And who has ever heard of FPGAs before? Just raise your hand again. Well that's the majority, that's great. So FPGAs are essentially chips that you can reprogram.
So they have some fixed net grid in there and you can put different functionality onto the pieces of this grid. And actually FPGA is very nice because it in the end gives you a real piece of hardware. So a real black thingy that you can solder onto something and that has your function that you program.
So that's actually rather nice. Downside is FPGAs especially as they get larger or rather expensive. We'll have a look at that. And also the clock rates and the functionality that you can put on FPGA is rather limited. So on a standard FPGA in the regular price range of a couple hundred dollars or euros or not pounds anymore.
You can go up to like 200 megahertz speeds like that. So that's usually what you use. And you can program a couple small CPU cores on there. Like similar to Cortex M3 cores, things like that.
So very small tiny microcontroller like cores. So in the end what you get as I said is the FPGA implementation. That's your first part of a chip. Unfortunately kind of those chips are much like the picture we have here. And it looks I think on the projector even worse than it does in reality.
So that's all natural and gluten free. And actually they advertise those chips as servings of vegetables. I've never seen that before. Kind of eat one pound of chip. So that's the chips you get out of that. It's not the real nice form of chips that you want to have in the end. So the real guys go for an ASIC backend.
You take the same design sources to a tiny different synthesis. And then you want to design your own chip. To do that you need to do a couple more steps. And we'll have a look at that also. And in the end what you get is the real chips. You know the fat salty ones take a lot of work to go jogging afterwards.
But that's the stuff you want. So let's have a look at reality. Let's start the simulation. What do you need to do a simulation of your chip design? How much of that can you do with open source tools? When do you need actually to use commercial tools?
And what's the stuff that's available around there? First, for a simulation you need code. Obviously you need a simulator. And you obviously want to do some testing. In the software world we have a lot of unit testing up to system tests. Whatever you use and agile methods and things like that.
You'll find in the hardware world they're much more in the old V model style of development. And that has good reasons for that. And we'll also have a look at that. So testing is a bit different in hardware than it is usually done in software. So, but we start writing your code. Writing your code there is essentially two programming languages.
Our hardware description languages that are mainly used. We have Verilog or its newer version System Verilog. For all of you that have heard System Verilog and thought well this is kind of this weird stuff that never works for hardware.
Times have changed. System Verilog is now very much able to do hardware designs. It unfortunately has a different language that is named the same. But that cannot be put in synthesis and put on a chip. But that just can be used for verification testing. And they made this bad choice of naming.
So anyways that's where we are. System Verilog is a good way to go. Or VHDL. Essentially Verilog is if you like C you gotta like Verilog. If you like Pascal you gotta like VHDL. So that's kind of how the languages look. They both look very weird and old.
But yeah well things are. There is a couple new ones. There is BlueSpec. It's not widely used at all. There is Chisel which is a bit more widely used today because there is a very interesting processor design. The RISC-V processor that's coming out of Berkeley. Actually the group of David Patterson.
Maybe some of you have heard of this guy. The guy that kind of invented the RISC idea or brought it to wider knowledge. They are doing a processor design now called RISC-V. That's where Chisel is coming into play. And MyHDL. It's also there but it's kind of not that widely used and definitely not in industry.
So you want to do some simulation you need to do. Or you need to run a simulator to do this. There are some places where commercial software is the only way to go. And that's why I mentioned the big three commercial simulators here.
There is one from Cadence, one from Mentor Graphics and one from Synopsys. And when you do just simulation you don't actually need to use those. You can use whatever you want. If you want to do an ASIC in the end you definitely will need to use one of those three. And they're a hell of expensive. There is open source solutions and they're actually great open source solutions.
There is Icarus Verilog for Verilog simulation. There is GADL for if you want to simulate VHDL code. And there is Verilator which is a very very nice project that translates Verilog code into a C code and then compiles that. And then you get essentially a runnable program that contains your simulation and it's actually rather fast.
So good one. And you need a waveform here because that's your output of your simulation. Don't forget that. That's the joy that comes out of simulation is this great waveform. Testing and verification. First of all maybe to since I mentioned testing and verification.
So testing is essentially what you all the stuff you do in software is just run a unit test. See okay it works it's nice. Verification goes a bit beyond that because you want to make sure that the stuff that you produce the outputs you get
from your simulation or in the end the further steps are actually what you specify and what you want it to have. So they actually apply a lot of formal proofs. They use things like constraint random verification things like that where you have a lot of random inputs. So you try to get as much coverage as possible using as many techniques as you can get your hands on before you produce a chip.
So there is some tools that are available in the open source world that can go towards this goal. There is CocoDB actually a very nice project. It's Python based tests. It's actually a test runner that's actually used in industry quite widely done by a couple of guys in the UK.
There is vUnit also a nice testing framework for VHDL only. And there is some OSVVM methodology which gives you a couple of wider scope of verification.
All of those three if you look at actually existing open source projects that do hardware design you won't usually find any of those. You usually don't find any testing. It's just like in a software box you should write your unit tests and all that stuff. But in the end you just look at the way from okay it's fine and let's ship it.
Okay let's have a look at some some results that we get out of simulation. So it's pretty accessible for hobbyists and I mean by hobbyists it's you can get the software for free as a beer so you don't need to pay for it. But it's not open source usually. So you can get your hands on that stuff.
It's cheap. You don't need any hardware except the PC you usually have. And so four out of five. There's also a lot of open source tools so yeah let's go with that. It's not that much fun in the end. I don't know who has fun looking at waveforms or simulating a chip on your PC.
That's that's not where the fun starts. Yeah but anyways we have FPGAs. And with FPGAs you can actually get as we said kind of some real piece of like thingy that does your functionality. So what do you need? Again code simulator testing. You can skip the testing depends on you.
You need a synthesis tool. You need an implementation tool and you need an FPGA board. And we'll have a look at all those three in a second. First of all synthesis. So you go from the VHDL code or the Verilog code to the netlist.
That's what the synthesis does. There is one or a couple of major commercial tools. One of them is Synopsys Simplify. There is usually all the FPGA vendors also sell or give you for free depending on the exact vendor. Tools that can do synthesis.
There is tools by Xilinx that's Xilinx Vivado or for the older guys it's ISE. And there is tools for Altera that's called Quartus. I'm mainly on an Xilinx site. It's kind of just what you have available. And what you should know about all those tools. It's usually a five to six gigabyte download.
They usually contain a couple versions of your Java runtime environments. That's what you need. They usually contain a dozens of C libraries, different compilers, different compiler versions. They usually pack that all up into zip files which for some reason don't know symlinks.
So you got a lot of files that are .so, .so.1, .so.1.1, things like that. And that makes your download six gigabytes or something like that in the end. It's a real modern way of packaging software. And in the end kind of every version has its own bugs. You want to usually keep around a stack of them and switch between them.
So it works. It's kind of the software you need to use, not the stuff that you want to use. But there is three alternatives. There is Verilog2Routing, which is a free services tool. I think it's been developed in France mainly.
And there is another project. It's called YoSIS. It's a guy by Clifford Wolf. He's based in Austria somewhere. And actually that's a very interesting thing to look at. And we'll have a see in a second why that is interesting. Okay, FPGA implementation tool. So you got your netlist.
You got this fishnet of things. And now you want to place this fishnet neatly onto the space that you have available on your FPGA. So essentially you need to figure out how to Tetris or puzzle things together. That's what implementation does essentially. Again, there is vendor tools. Every FPGA vendor also has an interest in giving you the tools to make actually the pieces of silicon that they sell useful to you.
So again, we have ISE, Vivado, we have Quartus. But there is also one major free alternative. I wouldn't call it major, but actually that's the only free alternative that works nicely.
And that's Project IceStorm. And that's an implementation tool for lattice ice 40 FPGAs. That's very small FPGAs. So ice 40, I think it's 40k gate equivalents. Meaning ants and ores, things like that.
So you can't get very much on those chips, but you can actually get some small designs onto those chips. And we'll see in a second. Oh, we're still right now. Yeah, the ice stick was even less.
Whatever. Yeah, it should be. It's really cheap. It's very small. And I think it's still sold out. Clifford presented that project at the KAUS Computer Congress, I think, yeah, kind of this Christmas. And just shortly after that, they were completely sold out of those.
And I think they are rarely available. So they're available again, but not that much. I think they're ramping up production again, because it's really the only free way of getting a full toolchain to your FPGA. So if you're interested in that, and you definitely should have a look at that, because it's the great starting point.
There are some other boards. There is an Altera board, the DE Nano, rather cheap. And there is also a small Xilinx board with the Arctic 7 FPGA. So that's kind of, as I said, on those small chips, you can get maybe one small processor on the ice.
You can get very limited, a bit of switching. You can't get even a full processor design on those FPGAs. So if you want to do a bit more serious, interesting things, you want to go with a bit larger boards. The Nexus 4 is a very good version to go with.
It's actually, in education pricing, I think it's 170, and it's like 200 or 300 euros in regular pricing. But just find some guy that studies, you're going to find somebody. The Altera version or a bit older, the Zetex ones, actually also a nice small German company that manufacture those boards.
I think they have also been on a Bitcoin market thingy, but I guess they're getting off that now. So the larger your ideas get, the larger your boards need to go. There is a Xilinx version, there is another Xilinx version, and there is also a Xilinx version.
There are definitely more than a thousand euros. There are two, three thousand, things like that, and they grow as much as you want to. So let's have a look. Hobbyist accessibility score, essentially you need to spend some money.
And how much that is depends probably on what you have. So for a couple of us maybe a thousand euros are totally fine, and for others not so. But still, we're still on a cheap range here, come on, it's FPGAs, come on, it's really cheap. So three out of five. Open source support, yeah, so Ice40 works nice.
Everything else, not really. So you need to use the vendor tools, they're usually freely available, so you can download them for free. And they work up to reasonable FPGA sizes, so they usually limit the size of the FPGA that you can program with them. For most of the boards we have shown, they work rather nicely.
So it's a crappy software, but it does its job, you can get your things done. Fun score, it's nicer, it's definitely nicer. You get something real in your hands, and that's what you want. In the end you want to have this couple of weeks of work, and then you show your girlfriend or your wife or your mom or whatever.
Well this LED now goes on, it took me two months, but it works. Yeah, great job there. That's what you want in the end. So some advertisement.
You can do obviously all, you can start from scratch. Do your own project. But there's a couple of projects out there in the wild that already do some interesting things that you can extend. So you don't want to start from nothing. And one project that I'm involved in is called OptumSOC.
And what we do is we build a system, a chip. So a chip design consisting of a couple of CPU cores, memory on there, interconnect, things like that. And build it all together, and then you can compile it, put it on the FPGA and extend it to your own ideas. So that maybe goes a bit in the direction of the story that we have seen in the beginning.
Where you want to just take an existing processor or design and extend it to do maybe a special hardware accelerator that you think could solve a problem faster. I think the hot thing to look at today in terms of hardware accelerators are things that are looking at deep learning,
things that look at convolutional neural networks, things like that to do image recognition, to do the other big data analysis things. That's where a lot of this hardware accelerator things comes into play. And if you want to go into this direction, I guess things like that are a good starting point.
Well, going to the area where the real fun is, ASIC design. ASIC is essentially the chips that we want to have in the end. So what do you need? A couple of things. Some are more easily to obtain than others.
You need all of the above that we had before. And you need a thing that's called a design kit. We get to that. You need an implementation tool again. Money. And we start with the design kit. That's actually the thing that is, depending on your connections to industry, more or less easily to obtain, but usually you can get that.
So what it is, it's a standard cell library, design rules, electrical parameters, things like that. Essentially everything that a design or foundry process is made up of. So you can put your processor or whatever design to a company like Global Fundries or TSMC or probably not Intel.
And they sell you kind of, well, I want to fabricate this chip in a 14 nanometer FinFET technology.
Or I want to have it in a 14 nanometer FinFET low power technology. Or there is a couple of versions of those technologies usually depending on if you target like a mobile market where you want to optimize your chip design for low power. Or where you have a HPC style processor where you want to optimize it for performance.
So even though within this technology node as 14 nanometers FinFET is, you have a couple of subcategories that you want to optimize your design for. And all those parameters, essentially the things you need to choose to get the result in 14 nanometer FinFET low power is what's inside the design kit.
Standard cell libraries essentially tell you, I want an AND gate and this is pre-placed, put those transistors in this dimensioning right there. You have design rules, how many layers of metal you can have.
So essentially at the bottom you always have your transistors and then you have a couple of metal layers. How wide do they need to be, things like that, all those stuff, electrical parameters, all the stuff. You get that from the foundry, you usually get it for free, but you need to sign an NDA. And usually not just one of those, yeah, just don't tell anybody about it and you're going to be fine NDA's.
But it's usually one of those NDA's. Yeah, you're allowed to install this on exactly one machine, you're not allowed to access this machine remotely from anywhere. Or I've seen one where it says you can access it remotely, but just 20 kilometers in a circle around this machine. I have no idea where this rule comes from.
And you need to encrypt it or things like that. So the NDA is really not nice and definitely not a good fit for most open source style of developments. Again, it's usually free, but in the end you need to buy a chip so they don't care about that much.
But the amount of money that you need doesn't stop there. You need an ASIC implementation tool. You can usually choose one or the other, but that's about where things stop. You use either a synopsis design compiler or you use the cadence tool.
And I think it's called encounter tool set now. They rename their products kind of every two weeks or so, I don't know. And they always choose whatever the market likes. But in the end, you know, it's a six or 10 or 20 gigabytes download. And it contains all the old versions and all the old code in there. So whenever they tell you we designed it all new, maybe the UI is new.
By the way, all that stuff is usually scripted in TCL scripts. So TCL holds all the tools that you use together. So if you're not up to speed with your TCL knowledge, that's where you need to start right now. Good.
We got those two. I think a couple of 10,000 euros should do it, depending on what you do. There is some open source options and that's the one is Qflow and the other one is Corollas 2. The bad thing about those is you need to be ready to take risk.
Because no company whatever will give you any guarantee or even say you that it's a good idea to use those tools. And I think for Qflow, they have done a small design that actually taped out for Corollas. I'm not so sure. So unless you got a really huge stack of money, you're going to probably stay with those because you don't want to spend the money a couple of times.
We talked about money. Yeah, you need money. Let's have a look at some numbers. So doing a full chip design, essentially just one table. So you got your source code, you compile it essentially once, you synthesize it once, you do your wafer masks and things like that.
And then you want to do a full production. It's in a couple million euros range. That's obviously a lot. So you need to share this cost and that's where a technique called multi-project wafers comes into play. And that is essentially a way of sharing the chip area that you have with others.
You can get this from a couple, usually it's kind of vendors or collectives. I think in Europe, the most active one is called Europractice. They do this for universities, but they also do it for other research facilities and they also do it for whoever gives them some money.
So that's actually available for everybody. For example, so you want to get your chip, you want to get 50 chips, 50 original ones in 40 nanometers. You pay per square millimeters, at least nine square millimeters will come on.
So that's around 50,000 euros. This gives you essentially a piece of silicon. That's no black box, no packaging, no testing whatsoever. So that comes on top of that. And out of those 50 pieces, you're usually happy if you have kind of 10 or 20
that actually work depending on your luck and the time of the day and things like that. You can get in this technology 40 nanometers, you can get 1500 kilo gates per square millimeter. So if you compare that back to the FPGA numbers, and please don't compare them directly, but kind of a rough order of magnitude comparison.
It's just you can get so much more on one square millimeter of chip than you can get on a reasonably costly FPGA. So yeah, if you want to go on all the technologies, that's probably what you want to do. So 65 nanometers, I think that was made a Pentium 4 era, something like that.
But newer maybe. It gets much cheaper and you still can go a bit higher, 120 nanometers, things like that. So this sounds kind of unlikely that any open source project would do that.
Actually, let's have a look. There's one more option. They call it eASIC. It's essentially a ASIC, just like an FPGA that's already done. But they allow you to add one custom layer on top of that. So you got your transistors, you got your interconnection, your wiring layers, and you can add one additional wiring layer on top.
So you can do a couple of new connections. So you get essentially the bit of a density of a real ASIC. You got less cost and you got a bit of the problems that you have with an FPGA.
So for some things it might be an idea, but also there is kind of the design tools and all that. It's kind of really in early stages, so there's probably nothing you will go for. But if you ever think in this direction, have a look at that. Good.
Yeah. Results, results are in. I think for most of us that haven't just sold Facebook to an investor, it's going to be a bit hard on the money side. It's not really available to open source developers unless you want to take a lot of risk, meaning money.
But the fun depends. It's kind of, if it works in the end, it's kind of the greatest experience you can have because then you can't just show a red LED to your mom. But a black box, come on, that's what you want. The fun depends because there is no real guarantee that things will work out in the first place.
That's what companies do verification and a lot of verification for. So I just heard from some guy at a large semiconductor manufacturer that does modem chips. So they usually have 100% line coverage on their source code before they ship out anything.
And achieving 100% line coverage is pretty much work. So that's what they do before they tape out anything. And even then, when you talk to the guys that actually did the design, when they send it out and until they
get it back and they put it on a tester and see if their test cases still run on the final chip. So that's where everybody is standing around this tester and just hopes it works. So that's what fun means in the end. Okay, so yeah, definitely if it works. As I said before, it sounds impossible to do this in an open source way or to do as a community.
But there is actually one project that I know of that is actively doing that. So they are an open source community. They're actually coming out of University of Cambridge.
And they are doing a chip design, a kind of a microcontroller based chip design based on a RISC-V processor. That's the current hype in processor designs that is available. As I said, coming out of Berkeley, they use this processor core, add all the stuff around it that you need to get a full microcontroller.
So memory controllers, IO, things like that and some other ideas. And the plan is to put that on a real piece of silicon by the end of the year. It actually looks really good. So you can go there right now and get a design that runs on an FPGA, runs on one of those Nexus boards.
And you can contribute to that. They actually got their GitHub repository and you can get just started with that. And in the end, the changes you make will hopefully end up in a real chip. So that's, I guess, a good compromise if you don't want to spend the money all yourself.
And it's, I think, financed by EU money, so go for it. What we've seen right now is what you can do to get involved, to get started, to do your own chip designs. Doing it all by yourself is probably going to be not that much fun.
So, I'm sorry, the projector is just, but the CAD is really sad. Good. So, yeah, let's join the party, let's see what the community does, what you can do to find others that share your joy in looking at waveforms.
So, fourth check, let's have a look at the community. And what do we need to, kind of, what holds the community together, what's there usually in the software world? Yeah, we want to have mechanisms, rules that others can participate.
We want to build an existing work, we've seen a couple of projects already. And we want to exchange ideas to make sure that everybody profits from what we found out. Yeah, how can those two live together? Actually, they can live together quite happily. And living together is the set of rules that helps our community.
And we express those rules usually in a license choice. So, that's essentially the rules that we have. And, as usual, there is kind of three types of licenses and I'm not going to judge them. It's your personal choice, it's the way how you want to structure your community or if you want to go in an existing one, accept the rules or not.
There's usually permissive licensing, weak copyleft and strong copyleft licenses. And I think this is a topic that's pretty well settled in the software development world. Everybody has their opinions on that, but it's good because it has been discussed a lot. In the hardware world, it's not that clear what you should choose or what you can choose and what the implications are.
So, let's have a quick look at that. So, permissive licensing without a patent clause. So, in the software world, MIT and BSD licenses. This also works great in the hardware world. So, essentially, you can do whatever with your source code that you want.
That's a set of rules that's well enough understood to be applicable to just about anything. There is a project that uses the BSD license, it's RISC-V. I guess that's one of the major projects right now. There is also, if you want to have a license like the Apache license, you can go with the solder pad license.
And actually, if you look at licenses for hardware guys and have problems with that, ask this guy. I think he's in the unique position of actually having understood hardware design and being a lawyer at the same time. So, definitely, if you have any questions on hardware design and licensing, that's the way to go to.
And he's based in the UK and a really nice guy. So, weak copyleft. LGPL usually comes into mind or the Mozilla public license. Essentially, you don't have copyleft for your whole project, just for a small part of your project, just one module or just one file.
File-based copyleft. There is the OHDL license, it's based on the MPL by Julius Baxter, also a nice guy. And, yeah, library copyleft. LGPL. The question is, well, what a library is in software terms has been figured out over time, so it's well-defined.
What is a library in hardware terms? It's not that well-defined. And that's where the trouble starts. There is no clear definition of a library in hardware designs. You could make up one, but there is just not one right today. And that makes actually using the LGPL a pretty tough choice.
Because, essentially, you use a license that is not clear on anybody what it means. It's still commonly used on OpenCores, so that's kind of the site where you find a lot of existing IP cores. But, yeah, I would definitely recommend stay away from it. Because you make it extremely hard for somebody else to use your code if it's just not clear what you meant by using this license.
Okay, there is strong copyleft, there is LGPL. LGPL v3 uses hardware-friendly language, as I wrote there. Actually, it was drafted with the, so when they open-sourced the Spark processor at Sun, they took this experience and put it into the LGPL v3.
It's used, but the implications are not fully understood or not what you want it to be. You have a chip design, and as I told you before, there is no way around in the current world to design your chip without using IP cores,
without using some stuff that others created. And that's usually not available under the LGPL, and they would do anything but release it under such a license. So essentially what you do when using LGPL today is you either restrict yourself to
the usage of this core in a way that creates incentive to sell you commercial versions. That's what Geisler does with their Leon cores. Essentially, they want you to buy a commercial one, and other than that, you can use the LGPL.
I think there could be a space for such a strong copyleft license in the hardware world. It's just not there yet, so let's see. Okay, so we had a look at licensing. Now we want to get some existing IP cores, some libraries, some modules, things like that.
And the place to go to today is a site called opencores.org. If you look at that site, you understand what the cat is doing. It's actually sleeping on a keyboard. So it's in a very dormant state. It's not doing much, but it also prevents you from doing anything because it's sleeping on a keyboard.
That's what is happening to OpenCourse today. It's actually backed by a company. They have lost interest in that, but they still earn a lot of Google AdWords money from that site. So they prevent anybody actually from doing anything about its sleepy state. It's in a not really functional state anymore.
So sometimes you can download things, sometimes not. Sometimes you can register a new account, sometimes not. Sometimes the SVN server works, which means you can download things with a couple bytes per second. Sometimes it doesn't, but still it's there.
So we, and I'll tell you in a bit, what we actually meant is figured out. So we need some community hub. So we need to replace OpenCourse with something that's actually living in the 21st century and is actually working.
And maybe we have achieved some of those goals. So what we want to do is give people a way to publish their work, to make it visible to the world. We want to have a way to find code that you can reuse. Because right now it's essentially reading blog posts of things that Google maybe turns up to you.
And it's interesting, I've been in this area for a couple of years now. And it's still sometimes that somebody comes up, well, there was this great project that implemented a whole GPU that actually runs an FPGA and that has a couple thousand or 10,000 lines of code.
I never heard of that. It's just that there's some projects that are just done by one guy in his home back in Texas or so. And it's never shown to the world. And it's a shame, it's really a shame because there is a lot of stuff out there. And so what we did is created a new site.
It's following the OpenOffice LibreOffice naming scheme. So it's called LibreCourse. And what you see here is a screenshot actually of the version that we will release in October. So you won't find this online right now. That essentially replaces OpenCourse with something that fulfills the goals that I've just been talking about.
So remember the name right now. You can actually go to the site. You find some things that I talked about, the licensing thing and that on the site already today. But the project repository, actually the heart of the site will go live in October.
And I'll tell you why. So what do we have in mind in terms of goals? So first of all we need to have a hub site where there's some documentation. It's really hard to get started in hardware design today. You usually are able to take courses at university that teach you how things were done roughly 10 or 20 years ago.
Depending on how well updated the lab course or whatever is that you took. If you never visited any electrical engineering classes or didn't go to university, I think you will have a really hard time getting started. Because there is just not much content out there that you can just read a couple blog posts,
watch a couple of YouTube videos and then get started. That's all the stuff that software development is so much easier on. So documentation. News and discussion. There's already one thing out there. That's a blog planet. So yeah, we're a bit still in the last century.
So there's still blogs out there. I don't know. No Google Plus or... Is anybody still using Google Plus? No, let's keep up. Fantastic. Good. It's funny how long blogs kind of remain there as stable.
Yeah. And it's a project repository. That's the ideas. As said, documentation. First content out there today. News and discussion. You can find a mailing list. It's still around, yeah? So no Google Plus. I received a lot of things like that. And the project repository to be released in October.
So who's behind all that? It's, I think, one of the most active open source hardware groups that are behind the open risk project or processor. It's a risk-based processor design.
And some guys that have seen before, so Julius Baxter and Olof Kindgren, for example. There's a couple others that are very active in this open course and open risk community. And while the focus today is not so much anymore on actually developing a processor design, it's those guys that are kind of have a lot of experience in the industry as well as in open source.
So we kind of met each other and said, well, kind of we need to solve this. The starting point was this open course sleeping state problem. And we got together.
We actually, first of all, wanted to solve the major problem that open course has today, because the trademarks for open course lie with one company. They don't give it up unless you pay them a couple of 10,000 euros. So we wanted to solve this once for all. And said we want to have this foundation that essentially is a shared legal entity
that kind of contains mainly those trademarks to make sure that they are taken away from the community again. We founded this in the UK, which now maybe turns out not to be a dead smart choice, since I found out kind of just transferring some money to the UK is kind of a huge mess.
You can get an IBAN if you add a Western Union addition to your banking account. Welcome to the 1920s. I have no idea. But yeah, that's where we are. Did I forget anything on this slide? No, I didn't.
So yeah, it's two years old now. It works right well. We've figured out all the legal stuff. We're pretty good on the site. So going into the question how to design your own chip. So have a look at an existing project. It's going to be much easier for you. And there is actually people that you can talk to and ask questions.
In the end, just fire up your editor. Actually, Emacs is a very nice choice for Verilog editing, because I think the standard coding style for Verilog is just use whatever Emacs with the Verilog plugin outputs you. That's actually used in most projects, funnily.
Indenting by three spaces, by the way. Yeah, FPGA designs, you can do that. ASICs, yeah, if you got the money or if you join low risk. So definitely have a look at that. As I told you, we have a look at the site in October.
And that's actually where the next OrConf is. It was formerly called OpenRisk Conference, but it's not just OpenRisk anymore. So last year we were at CERN. It had like 120 people that attended from all over the world. We actually had a lot of people from the UK that are involved in RISC-V. So there is a lot of interesting discussions, in-depth technical,
and also on the licensing or community side as well. So if you look at digital hardware design, that's the conference to go to. October 7 to 9 in Bologna, a nice city, get some pizza there and obviously some spaghetti. No admission, please register anyways to make sure that we got enough space for you. Orconf.org for more information.
That's about all I have to say. I put some contact details up there. Fosse Foundation, and that's me on the left side. And if you have questions, I guess we're ready to have the mask now. Thanks.