 with an 8-second delay. Hey, it's 12.30. Greetings everyone. So what I'm doing is building a RISC-5 processor, not on an FPGA. Okay, well, let's get started. So I'm going to make my video smaller. And yeah, I'm not going to electrocute myself. So let's see. All right. So I've got KiCat open. And let me make my video window a little bit smaller. Okay, that's pretty good. All right. So one of the problems is that I'm on, like, you know, a huge screen and I don't know what the encoding is going to look like on YouTube. So this may turn out to be really bad. If it does turn out to be bad, I do have some other live streaming software that I could use that does connect up to YouTube. And maybe I'll do that the next time. But in any case, yeah, I know it's fuzzy. But most of my work is going to be done a little close up more like this. So hopefully that won't be that fuzzy. And I'm here in the Bay Area in sunny California where of course the internet is crap. Because this is the technological capital of the world. So anyway, why don't we get started? So here we go. This is the whole thing. And I thought that I would get started. Change 240p to 720p. Yes, that is to any viewer. YouTube will automatically select your resolution based on your internet speed, I guess, so you could try going to settings. That's the gear and changing your resolution to 720. Maybe it'll work. Maybe it won't. Okay. So what I thought is I've added these pull up resistors to these output signals over here. And the only reason I have pull up resistors is that in the TI manual, it basically says that for buffers like this, you want the enables to be pulled up with a resistor so that on power up while these chips are still powering up, the buffer will be disabled. So that's why I added all of these pull up resistors. Now, I use this for resistor pack. These are isolated resistors. I don't actually need to do that. In fact, I have found, let's see if it's in here. Yeah. So this kind of resistor has eight resistors in it that have one terminal common. So that's the kind of resistor that I'm going to use. Now, in the KiCad libraries, there is only this resistor pack. And if we look at it, we can see that it actually has nine pins, where this symbol actually has 10 pins, because it's actually got two VCC things, two VCC pins. Also, the pin numbering might be different one, two, three, four and five. And I think this is like one, two, three, four and five. So this is no good. So I'm going to need to make a new symbol and use that. So let's see. What I want to do is copy this entire block copy. And I'm going to make a new symbol, new symbol. First, I'm going to select an active life. Nope, not a new library. I'm going to select my library, which is here, and create a new symbol. And I'm just going to call it, I don't know, our pack eight, the R and sure, show pin numbers. I don't need the pin names. Hit OK. And let me paste my symbol in. So this is the thing that I'm going to modify. Kycat versus Eagle. I actually bought a license to Eagle before it was bought out. And it was okay. The problem is that Eagle was limited in the size of the printed circuit board that it could use. And I was always exceeding that size. So I paid to get the higher package. And then I realized that nobody else could actually follow what I was doing, because of course, they would have to have the paid package. So at that point, I ditched Eagle and just went to Kycat and never look back. I have not used the new version of Eagle. And obviously, I'm not going to because now I'm perfectly happy with Kycat. So and again, all these different packages have their quirks, and you're not going to like them at first, but eventually you'll learn how to use them. Okay. So I'm going to roughly center this. Okay, and I'm going to add a pin. Sure, that's fine. I could even make this an invisible pin and stack it on top. But let's not do that. Okay, so let's also pull up this. Okay, hopefully that's visible. So this is the YC 158 that I want to use. So this pin is going to be 10 and five. So I'm just going to change that to five, change this to 10. I could do this a bunch of other ways. For example, I could move this pin on top of here and make it invisible. In fact, why don't I do that just to show you how it's possible, invisible. Okay, so you can see that on the symbol that the pin actually looks like it's there. It's just grayed out. But when I put it on the schematic, it's not actually going to show up. And when I connect to this terminal over here, what Kaikad will do is it actually connects all of the pins that are right there. So so I just need to connect one wire instead of two. All right, let's see. Oops. All right, so the other pins are one through four and six through nine. So let's go ahead and one through four, one, two, three, four, and six through nine. Great. Okay, so this is my fixed up symbol. I'm going to save that. And of course, it's trying to save it to the wrong library. So I need to save this to a different library. First of all, our pack eight. How do I do that? Export symbol, copy symbol, duplicate symbol, cut symbol, maybe, and put it into Elmar. Unfortunately, this is a little bit infuriating. So paste symbol, there we go. Now it's in the right library. And now I can save it. Let's just move this up here, maybe, and this up here. And that looks pretty good. Save. Great. I know I don't need to save that. Okay, so now what I could do is delete that symbol and pull in my symbol, our pack eight. And the pins are correct. There is an invisible pin over here. So that's great. And now I can just delete this and delete most of these VCCs and move this and rotate it around. Maybe flip it on the Y axis. Yep. Okay. And then of course, I need to fix up these wires. So this wire here, this wire here, there. Oops. All right. So that's that resistor pack. There's another one over here. I'll just delete. There's a reason that I'm doing this. I'll get to that in a second. I promise we will get to the printed circuit board. It goes here. And this connects up to here. This connects up to here. These two here. And it's all the way down to here. So that is my resistor pack. So now the problem is that I need to find a suitable, yeah. Yeah, you do need to jump between the mouse and the keyboard a lot. But I don't know, a lot of the hot keys are just, you know, single keys or, you know, shift something. So I don't know, it works for me. Coffee. Okay. Okay, so what we now need to do is pull in a suitable footprint for this resistor pack. So what you do, first of all, is you go to CVPCB. Yes, the video is a little laggy. There is about an eight second delay, but it will depend on your internet connection and mine. So I need to annotate because of course, I didn't annotate those. So now I can refer to specific chips. Okay. So our pack eight. So what I actually need to do first is just go through the library and see if I can find a resistor pack. So this is going to be a surface mount resistor. Resistor is SMD. And here are all the choices that you get. And none of them are suitable because none of them are actually 10 pins. So we are going to have to make one. So let's go ahead and make a footprint. So again, let me pull up this. And let's see, you know, I'm going to make it a little bit smaller. But what I'm trying to do is first of all, find the land pattern if there is one. No, there isn't. There is not a recommended land pattern. I hate when they do that. All right, we'll make something up. Okay. So again, this is a YC158. And let's see YC158. So hey, okay. YC158, that's this. So we see that the pin pitch is P. And the pin, I'm just going to write this down for myself. So the pin pitch is P in pitch. And the pin width is H, of course, because H stands for width. The total width of the chip is L, because L stands for width, width of chip. I think that's probably all I need. There's also the distance between these pins, which is W2. W2 is the pin distance. So and then there's W1, which is the size of the pin underneath the chip. So this is the length of the pin. Okay. So we're on the 158, right? Yeah. Okay, so here's the table 158. So we have H, which is the width of the pin. H is 0.6 millimeters. P is the pitch, which is 0.64 millimeters. That's pretty weird. 0.64 millimeters. Is there something that's maybe a little more standard than that? There is a YC358. 358 is exactly the same. So, okay, 0.64 millimeters, it is. That's a funny pin pitch. All right, the width of the chip is L, which is 3.2 millimeters. The distance between the rows of pins. Yeah, I'm definitely using a different size. It's definitely not, it's just not any of these. Even the four is an eight pin thing. And what if I buy a smaller pin count and double it? Yes, I probably could, but I'm just going to do this exercise, you know, just to make a footprint. I could very well do that. In fact, I've done that on other boards. I'm just going to do this. So okay, so the distance between the rows is W2, which is over here. It's 1.6 millimeters. And W1 is the size of the pin. H is 0.45. Not 0.6. Let's see. H. Thank you. 0.45. 0.45. 0.64. 3.2. Yeah, that's right. Okay, and W1 is the size of the pin underneath the chip, which is 0.35 millimeters. Great. Yeah, I guess that makes sense. Okay. So, yeah, and I guess that makes sense because they also have 1.27 ones. They also have 0.67 instead of 0.64. That's kind of freaky. All right, we have our measurements. So let's see. The first thing I'm going to do is select an active library. And I'm going to go to my library, lmarve. And I think I'm going to use the footprint wizard for this. And really what we're doing is an SMT dip, which is basically an SOIC. Obviously, it's not going to look nearly like that. But the pad count is 10. And the row count is two. And the pad pitch is 0.64 millimeters. The pad width, so the width of the pin is 0.45 millimeters. The pad length, okay. Well, okay, row spacing first. So the row spacing is right down the center of the pads, I think. So the row spacing is 1.6 millimeters. Okay. And now we just need to decide on a pad length. So the width underneath the pin, or the length underneath the pin is 0.35. So I could just double that to 0.7. And there it is. That actually looks very similar to the other resistor pack dealios that I've seen. So in terms of the body, a silkscreen inside would look like that. Yeah, sure. Why not? I mean, I could make the silkscreen look actually now. I'll make it look like that. The outermost pads are actually larger than the rest. You mean one in 10 and five and six. That's interesting. Or so I'm not, you know, I suppose I could do that. I could modify it to make pins 10, one, six and five a little bigger. But in any case, this is just a starting point. So now export footprint to editor. There it is. Let me move this down. And I'm just going to call this, see your footprint method. Oh, nice. Have you released it on GitHub? If you have, I would be very happy to grab them eventually. So this is a YC 158. Edit. YC 158. And that's just on the fab layer. So, you know, if you're printing out a guide to putting together the putting together the instructions, that's where that will appear. This is the reference number. This is this is the silkscreen around it. I actually don't need this pin one indicator because this is a symmetric chip. Pins one and pins six. I mean, pins 10 and five are the same. So if I flip the chip around, it's going to be the same anyway. So I can just remove that. Let me go to millimeters and zoom in and do this. Join them up. This didn't get on the millimeter grid for some reason. So let's just put them on the millimeter grid because I'm a millimeter sort of person. That's how I roll. Okay. And let's actually make this silkscreen outline match the size of the resistor pack. The size of the resistor pack is actually, you know, really close. It's L by W2 and L was 3.2. So we have this and this and I'm looking at four. That's not nearly 3.2. So this one, let's see, and point X. And if it's 3.2, then I want 1.6. Right. Yeah, this is supposed to be 3.2. I don't know why it did that to me. I must screwed something up in the wizard. All right. The body, 1.6. That looks a little better. 1.6. The edge contacts are a little bigger. Oh, you're right. H is actually different from H1. Aha. Interesting. Okay. So H is actually the outer pin, which is 0.45. What's H1? It's the same. Okay. For this particular chip, it's the same. But yeah, you can see that for some of the other chips, they're different. Interesting. Okay. And now, what is the width? 1.6. So this would be minus 0.8. Okay, that's obviously not going to work exactly for the outline. So I'll just do that. So that's the silk screen for the resistor. And I hope this isn't boring. I know I said that I would be doing printed circuit boards, but okay. And then this is the, okay, so this is the courtyard and the courtyard is meant to go just outside of the chip outline, including the silk screen. And the idea behind the courtyard is that none of the courtyards for any of the components should overlap. So they just go a little bit outside the edge. Okay. And I don't need to pin one designation again because this is a symmetric chip. I'm going to change the size of this to 0.5 and 0.5. A chunky. So let me change the thickness to maybe 0.1. I may not actually show up on the printed circuit board because the board manufacturers have things, restrictions. This one I'm also going to make maybe 0.7 by 0.7. Again, this shows up just on the assembly guide. Interestingly, let's see, I also need, well, I'm not going to be doing an assembly guide. So I really don't need to worry about the fab layer. So I'll just leave that alone. Let's just move on. So I'm going to say I'm going to make sure that all this stuff is good. Footprint name in library is actually going to be YC158. I'm not going to do 3D settings because I'm not up to speed on making 3D things. So I'll just leave that alone. Okay. Save footprint in active library, YC158, LMRV. Okay. Now we can go ahead and associate that footprint to this part. So let's go to CVPCB and let it load up all the footprints. And now we're just going to go to our resistor packs. That's this and pull up LMRV. And where is my YC158? Right there. Okay. That's pretty cool. All right. Here's something which bugs the heck out of me. And it really bugs the heck out of me. So all of these 100N resistors, these .1 microfarad resistors, they all need to be 0603s. Now, if I had associated the 0603 footprint with one of these capacitors and then copied that, then all of these would be associated with 0.603. But because I didn't do that, I have to manually go in and select 0603 for each and every one of these. There's no copy. I can't just say control C, control V, and have it copy the footprint. That's ridiculous. So here's what I'm going to do. I'm going to apply, hit OK. I'm going to close the schematic. I'm going to go into Sublime and I'm going to open the schematic. And I'm going to find 0603. You have to select it in the right menu. Really? Really? Is that it? Is that the secret? So I have to select it in the right menu. That's over here. So first, I would need to go to capacitors. And, well, yeah, I mean, I do have to select it over here. I just click over here and double click and then click here again and then double click. And, you know, here's another dumb thing. Let's suppose it were this one down here. Well, if I click on it, oh, it actually doesn't do that anymore. It used to scroll all the way back up to the beginning. Okay, that's fine. This is workable. Really? Oops. I've got a 10 micro here. I'm going to skip that for now. Well, so what I was going to do is I was going to go into Sublime and find the line. Can you select more than one? Can I? Whoa. No, I can't. Yes, I can. Amazing. Thank you so much. This makes my life so much easier. Awesome, dude. Dude. Okay. Very nice. Thank you very much. Well, I knew there was a reason that I was going to livestream this. The 10 micros are going to be electrolytic. And as far as I can tell, all of these underscore fours, these are four millimeters, all of these are identical, except I think this actually means the height. Because when I looked at the footprints, I couldn't tell the difference. So I'm just going to select those four by 4.5 and 4 by 4.5. See, look at that. I double clicked on this, right, and the scroll bar moved. And then to select it again, I have to move up. So that's kind of ridiculous. Okay. Dual PCIe card edge. This is the card edge. So that is in my library as not slot, but PCI express. Okay. LVC, the 541s are TSOPs, specifically TSOP 20s. TSOP 20s. So I'm going to go to the housings, TSOP and go to TSOP 20. Okay. And I'm just going to select all of these and make them all TSOP 20. And I did print out the footprint here. And I did put a chip up against the footprint and I made sure that it fit correctly. So yeah, I have ruined more than one board by choosing the wrong footprint. If you know UI design and C++, we need you in KiCad. Well, that would be me, but here's the problem, right? I do want to, you know, help out with KiCad, but the problem is that in order to get started with any large complicated piece of software, I need a documentation guide that tells me where all the software is, what all the classes do. I need full documentation of all the classes. I need like, you know, I need to study the code. I can't just go in and hack. Well, maybe some people can, but I sure can't. So that's really what's preventing me from, you know, going into KiCad and just making the modifications I want myself. Okay. The LVCO 408 and 32 are all TSOP 14s. I printed that one out also. So TSOP 14. Now, the one EP is the one with the ground pad or the heat sink pad underneath. So that's not the one that I want. This is the one that I want. All right. Now, good. I've got everything associated with a footprint. So as the final step, oh, yeah, I did make several modifications before you joined. So this was the sign bit, basically. And what I did was, based on a suggestion on the YouTube video, I actually broke that out also so that each AND gate feeds at most eight of these inputs. So, you know, it's a little less capacitive load. There was another comment about these shift lines that they're actually driving quite a few of these buffers. But again, you know, like I said in the feedback video, it's probably going to be a savings of about two nanoseconds if I were to buffer that. And I just can't be bothered. Yeah, right. I mean, if you're going to write C++, see, okay, when I write C++, I automatically start writing Doxygen documentation. So yeah, that's the thing that's infuriating to me. Okay. So before I go to the PCB, I'm just going to run a design check. Ah, okay. Pin 19 of component U55 is unconnected. Really? Ha! Quadbug. I guess I must have forgotten to connect those up. Thank you design rule check. Run. Finished. Okay. So I didn't make any stupid mistakes. Any non-stupid mistakes are totally my fault. Okay. Save that. Let's go to the printed circuit board. All right. Here we go. The printed circuit board. So the first thing that I forgot to generate the net. So you have to go to generate net list. Generate net list and just save that. And then you can't insert links. Really? That sucks. There is Doxygen for KiCad. I hope it's good Doxygen. Okay. So read the current net list and that will bring in all. Now, this is the thing that I love about KiCad 5. And if you're still on KiCad 4, you really need to ditch it. See? When you import your net list, you get to move all these things around. They don't all appear in on top of each other. It's awesome. Okay. So I'm going to change the grid to one millimeter because I like my components on a one millimeter grid. And I'm just going to take pad one and move it. So now I'm moving the center of pad one on a one millimeter grid. And I'm just going to stick that right down at the bottom. And I'm going to, how do I turn off Bratz and us? There we go. Okay. Now, from this point on, it's going to take a long, long time to make this printed circuit board. I'm not going to finish this in a few hours. And I'll probably stop the stream in a few hours. But, you know, just so that you can get a taste of, you know, my design flow. So here's the card edge. So the first thing is, and one of the issues with with Kaikad that I have is that when you create a footprint, you can't actually make any edge cuts. So edge cuts are the outline of the printed circuit board, right? So if I go to edge cuts, and I, you know, make a line like this, like this, and like this, and, you know, like this, say, that's the outline of my printed circuit board. And that is, and that is what the board manufacturer will cut out. Let me just delete that, because I don't need that. So when you create a footprint, that's supposed to go at the edge of a board. You can't draw edge cuts, which is, you know, I guess, you know, you know, I guess you could take it or leave it, but it would have been nice. So what I'm going to do, what I would have loved to do is actually copy this part of the silk screen and copy it onto the edge cuts layer. But of course, I can't because this is a footprint, and you can't, you know, select pieces of the footprint. So instead, what I would have to do is go into edge cuts and add some lines and, you know, go down to, I don't know, 0.1, 0.1, and then make it so that, or maybe 0.05, can you? Okay. Teach me, master. How? You have to unlock the footprint. Okay. Clarify selection. Sure. Do I have to unlock the footprint? Is it in properties? But it might only apply to pads. Well, let's see. Okay, I've selected the footprint. All right. Have I selected the footprint? I don't think I can select the footprint. Unless I go maybe, ah, there we go. I've selected the footprint. Let me right-click. Maybe locking. Unlock. Okay. So I've unlocked it. No. No. Sorry. Didn't work. Let's lock it up. Okay. So anyway, what I was saying is, you know, what I have to do is go to a fairly fine grid and then go to edge cuts and, you know, draw a line. And, you know, just do that so that the edge cuts follow the outline of this silkscreen that I drew. So anyway, I'm not going to do that here. Maybe what I'll do is I'll go here and draw something fairly reasonable, something like, okay, start point and end point. Start point x86.05. Does that straighten it out? It straightens it out in the other direction. I wanted this to go here. And then end point y. Let's just make it 100. Yeah. Okay. So that's approximately the area that I'm going to be working with. Yeah. Feature request. Right. That's always worked. I actually filed a bug against KiCAD 5 and it was something simple. It was like when you're in schematic mode and you select a reference or something like that, it automatically selects the number of the reference. So if your reference was something like U25 and you edited it, automatically the text selection would be on the 25. So you could easily change a number. But if it was something like, you know, U3.75 or something like that, I think it would select all of 3.75 rather than the last 75. And I didn't like that. I was like, well, you know, really it's the number after the dot that you want to change. So anyway, they said, yeah, we admit that that's probably a bug, but we're going to file that bug as a beginners on the beginners list. So that if you were a beginner in KiCAD and you wanted to modify KiCAD, you could fix that bug. I hate that. Why wouldn't you just fix it? It wasn't a bad experience. It was just puzzling. I mean, why would they set aside a bug for a beginner to work on eventually, rather than saying, oh, that's an easy bug to fix. I'll just fix it right now. Because, you know, I have no idea what the C++ code looks like. I have no idea where to look in the code base to fix that. And I would be a beginner. And yeah, I guess if I were, you know, if I wanted to work on KiCAD, a beginner's bug maybe would be a good idea. But, you know, it should be a beginner's feature. It shouldn't be a bug. Anyway, that's, yeah, I could go on and on. All right, let's do something. So typically what I do is I place the chips down first, then I route everything, and then I would place the decoupling capacitors. Oh, why is this an RPAC? Oh, yeah, right. And then I would place the decoupling capacitors. And what I would do, greetings risk five friends. And then what I would do is, yeah, I already said that at the beginning of the video. You're just late. And then what I would do is I would route tracks around the decoupling capacitors. So that's typically what I do. Also, what I do is I immediately go into the layers setup. And I make this a four layer board. The density of boards that I make, you have to have pretty much at least four, four layers. And the inner layers, I make power layers. And this is just round VCC. Right. So I have the top two layers, the top and the bottom layers are single. Okay. So let's go ahead and just choose a random chip. Uh, actually, let me go to the schematic and see what chip I should work on first. How about this one? You want, no, how about how about one of these, because this is going to be probably a regular array or something. So let's do you 16, you 15, you 14, you 13, you 12 and you 11. So I'll start with you 11 and go to you 16. How about that? So let's find you 11. Where are you? You 11. There's 14. There's nine. There's 10. There's you 11. Okay. Am I still? No, I need to be on my one millimeter grid. I seem to recall that in Eagle, there was a way to actually have a hot key that switched you between like a fine grid and a course grid. I kind of would like that too. Because, you know, typically I work on two grids, either one millimeter or .01 millimeter for routing. So, all right. So here's my chip. I'll turn on rat's nest so I can see where the chip is supposed to go. The T key lets you find and move footprints. T. Whoa. Nice. Yeah. So, okay. Clearly, this chip needs to be on the flip side. So I'll see you on the flip side. And typically what I do is I double stuff my board. So, you know, I don't care where chips go on the top side, on the bottom side. I'm not actually going to reflow this. I'm going to just build this by hand. And I actually got, let me see if I can show you this. Let me set this down. And I don't know how clear this is going to be. But, all right. So you can see that this kind of looks like a hobby knife, but it's actually a soldering tip. And apparently this is for drag soldering fine pitch chips. Isn't that neat? Okay. Moving on. So, yeah. So here is the chip. So it goes from RS17, which I guess is on the bottom layer. So turn off rat's nest. I don't need that now. So I need to route these. So I'm just going to, one thing that I forgot to set up, did the parts get re-annotated? Yes. Yes, that's right. The parts did get re-annotated so that all of the buffers now line up properly rather than in two sections. So set up designer rules. Forgot to set this up. Am I in millimeters? I am. So I will temporarily change to inches. And this is another thing that they fixed. I think in Kaik had five is that some of the dialogues remained in either millimeters or inches regardless of what you selected over here. And that was also infuriating to me. And I filed a bug on that. And the initial answer that I got was, well, that's the way it is. Fuck you. That was the way it is. But they fixed it. So awesome. Yeah, they did used to be really bad about like, this is the way it is. We use it at, what is it, CERN. And that's what we're happy with. And the rest of you can go take a long walk off a short pier. So anyway, so I'll go to inches and I will go to design rules. And I will change the track width, the global design rules, the minimum track width. Now my board house can do six and six. You don't want to push them. So I'm just going to go with seven and seven. The minimum via diameter, I'm fine with that. So then I can go ahead and change the clearance to seven and seven. Kind of funny that all the board manufacturers specify their clearance and track width in mills, but their drill sizes seem to be all in millimeters. I don't know why. In terms of power lines, I usually don't have a separate net class for power because I have whole power planes. So if I'm connecting, say, this ground into the power plane, well, it just needs to go through a small trace and then a via. And I think that small trace can take just that amount of power. It's not like I'm routing power through large networks. So all right. So now I set my oops, let me go back to millimeters. Now I set my grid size to the smallest possible. And now I can do some routing. So I'm just going to do this and this. And unfortunately, the push and shove router is pretty good. But sometimes it does weird things like this. Well, I mean, that's okay. But then sometimes if you move it back, these traces will actually stay there, which is kind of infuriating. But I guess you could clean it up afterwards. And I do have a cat. Oops. Yeah. And that's the other thing. If I had an edge cut here, would this actually route across? Let's try it. Get my edge cut tool here. I'm just gonna make a fake edge cut. Oops. Edge cut. I'm just gonna claim that it's right over there, and I'll make I'll just close the the path sort of like that. I'll fix this up later. This is just an experiment that I want to do. So let's see. So if I were to route from outs, no tracks on copper later only. Oh, interesting. Okay. It doesn't go outside the edge cuts. I think that's that's actually pretty cool. Yeah, it I don't think it's that the outline is closed. I think it's that you just can't cross the the edge cut, which is awesome. That's another thing that I think they fixed in Kaikad 5. In Kaikad 4, it would just go ahead and happily cross the boundaries. So again, you know, I can't say enough good about Kaikad 5. They really did a good job. Yeah. Yeah, it could definitely screw up the 3D render for sure. Okay. More routing. Okay. So that was the easy part. Let's go ahead and grab. Let's see. It's U11. Let me see what the corresponding chip was U13, I think. Yeah, let's okay. So let's use my newly learned hotkey F13. Nice. Let me go to one millimeter grid. Choose the ground pad to align to turn on rat's nest. See where this goes. So this also needs to flip rotate and yeah, this is okay. Okay. So here, what I want to do really is I want what would be nice is that if I could just stack this chip right on top, right? Because you can see that all of these wires just, you know, sort of go in parallel. Instead, what I'm going to do is I'm going to flip it like this. Okay. And now it's not great because, you know, now all the wires are twisted. And this is where you get into going back to the schematic and redoing it. So let's see. So I need to take U13 and reverse all of these pins. So I go back to the schematic, go to U13 and to reverse all of these pins. I think I just need to flip this over the X, right? Yeah. Move that there. And then of course, I've got these hanging bits. So I'm going to do that here. And this is now this move my label here, move no shift. I suspect I'm going to have to do the same with us. So I may as well do that now. This one goes to shift one. And this one also goes to, oh, oh, that's not what I wanted to do. That's not what I wanted to do at all. The ground is connected to everything, isn't it? I'll do this. There we go. Why am I doing that? Why don't I just do this? Okay. Let me move this label down to here so that it's inside the box. Okay. So I flipped these two chips. Now I have to redo the net. Save and hope that that actually did what I think it did. So I'm going to take U13 and move it over a bit. And I'm going to import the net. And now we can see that everything is parallel to each other. So I can just put this chip on the top side and just have a Viya going to here like this. Like, for example, for 13, if I just put a Viya here, that Viya is kind of big. That's okay. That Viya connects up to there. And then here, this Viya connects up to here and so on. So that's kind of cool. I could probably stand to make these Vias a little smaller. And one of the things about Vias is that you want to place them relatively far away. The other thing about Vias is that when you have a ground plane, so let me go to the ground plane. Turn off the rat's nest. Yeah, let me go back to edge cuts and just sort of hooky something up. Sure. Let's just, you know, make something weird. Weird and wacky. Just so that I can have a closed outline again. Okay, that's good enough. So now, well, that's kind of excessive. But okay. So now I'm going to go to the ground plane. And I'm going to make a filled zone. And I'm just going to connect it to ground. And I'm going to just make that my filled zone. Right. Now I can hit B, which will fill the entire zone. Oh, I don't have anything actually connected to ground. So what I need to do is just do this and other side. And now that's connected to ground. And now when I fill my ground zone, it will fill the entire thing. And this is what I was getting at. So you can see that there is a large space between the ground plane and the Viya. You can pull that in, depending on the capabilities of your boardhouse. And I tend to think that if they can do 7, 7 or 6, 6 spacing, then they can do some pretty close. Oh, was that, was that the, I don't know, they actually did change it. See, it changes to inches. So inches. So the anti pad clearance, if they can do 7, 7 spacing, then in theory between the two layers, they should also be able to align it relatively close. The problem is that, yeah, the ground fill doesn't, does not cause shorts. I haven't actually seen that happen. So, you know, maybe I can bring it down to 1. Again, if they do 7, 7 spacing and they're off by like 1 mil, that could actually short out. So, you know, I'll go down to 10 mils and clearance of 10 mils and a spoke width. Yeah, that's fine. So now I can refill. Okay, and you can see that it pulled it in a little closer, you know, and you can get closer and closer. But the thing is that there's this thin sliver where it's just not going to be able to fill ground. And the reason that you want that is that you can see this green wire over here. Let's suppose this green wire were going off to the left, right? Well, then the return path in ground would have to go around the via and then back down to here. And that gives you a current loop and that gives you inductance and that makes the signal integrity worse. What you want is you always want ground to be as close as possible to the signal so that, you know, if there were a connection between the grounds here, then the ground loop would just go sort of around the via as close to the via as possible and then over here. And that way your loop area is as small as possible. And that means that your signal integrity on the trace is pretty much as good as it's going to get. The only way that you could get it better is by the ground return path will just go diagonally. No, it will not. It actually won't go diagonally. If I understand you properly, the ground return path is always as close to the signal as possible because remember that a voltage difference is between one point and another and the electric field is going to be as close to the ground as possible. So in fact, you know, ground just doesn't go anywhere. It takes the path of least resistance and the path of least resistance is going to be as close to the signal trace as possible. So, yeah, so anyway, you know, to get even better signal integrity, you would want your trace to be surrounded on top and bottom by ground and on the sides by ground. But, you know, obviously we don't have that. So, yeah. So that's why you want the vias to be farther apart so that you can get ground between the vias. And as long as you can get ground all around the vias, then you don't really have to worry that much about loop area. So, loop area, it's a thing. So let me unfill, go back to front, and then I can just take this vias and drag it over here. Now, if I fill it, you can see that there is a nice ground path over here. So, awesome. Now, the vias are so big compared to the traces that I can't possibly stuff all the vias that I need to. So, you know, maybe I can shrink the vias just a little bit or something. I may have to, you know, like sneak some vias in down here. But anyway, yeah, and I don't use a board house that can do things like micro vias or anything like that. So, let's go back to here. And I have this goes here. I have this, this, this, this one is going to end up here somewhere. So, I hope the video is fairly clear and it's not that fuzzy. I usually tend to work in real close and instead of, you know, all the way zoomed out like this. So, hopefully the features are big enough that you can sort of see the details of what I'm doing. If not, let me know because, you know, then I might switch to some different software eventually. Great. Okay. So, this is working out. So, that's cool. And is this, no, this goes to the next chip. And this comes, I think, from the next chip. No, no, actually, I think. So, Cat wants to leave. Yes? No? What do you want? Up or down? Okay. So, let me just fill. And you can see that these vias are too close. These vias are too close. These vias are too close. And sometimes what I do is I just place the vias on like a small grid, like a 0.5 millimeter grid. But I know that I'm going to have tons of vias. So, I'm not going to do this. Fan out alternate pins. Yeah. I could actually do that too, couldn't I? Yeah, I might do that. Let me remember that so that maybe on the next chip, I will do that. I'm just going to leave this as it is for now because, again, it's only temporary and I will, you know, move the vias around afterwards to fix things up, to fix problems like this up where, you know, you have the return path of this wire having to go around one of these vias. So, usually, I'll do like a final pass once I've laid everything out and start moving all the vias around. Okay. So, that's that chip. Now, we're going to have another problem because we essentially have kind of three copies of this chip. So, I was able to put two copies, one on top of the other. But the third copy is going to be a bit of a problem. So, that's going to be U16, I think. Oh, that's not U16. Which one was it? U15. Yeah, this one. This one. So, if I place this and look at the rat's nest. So, again, we have this thing where it sort of wants to be on the other side, like that, so that it can be parallel. But unfortunately, I can't stick it on the bottom or the top. So, what do I do? I kind of like these to be close to each other, like this. Let's see what happens if I do that. And also, I wanted this on a one millimeter grid, cat hair. Yeah, and I do want these to be flipped because here's what I'm going to try. So, I'm going to take the back to my fine grid and go to say, yeah, that's actually also a good idea. Just place them all three side by side. Yeah. And the other thing that I also have to remember is that it's best when you route the top side in one direction and the bottom side in the orthogonal direction. That worked out really, really well when I was building the ALU. And I have to remember to do that. So, the suggestion is that I just wire up a bus like this and then why don't I do that? I mean, that sounds like a really good idea. So, let's just get rid of all this. It's really easy to rip up your work when you're first starting. But once you've done it, oh, in the footprint file, you just can't do it. Interesting. I definitely want to do that. But you can set edge cuts layer in the footprint file. Oh, I see. Okay. So, you draw the lines on some other layer and then you go into the file and you change that layer to edge cuts. That makes sense. Okay. So, we're going to put these chips side by side. And I do want them on the flip side. So, great. Okay. So, I will actually end up doing that. I have a glit... Yeah. Well, I don't want to remove everything. I've done that before. But I don't want to do that here because I really do want to keep these lines. Okay. What was I going to do? Right. I was going to take this guy and flip and ends up here. I do want these as close as possible. But unfortunately, there's the silk screen that I also want to keep. So, I'm just going to move to a smaller grid spacing and regret it later. Okay. And this guy, flip, potate. Very cool. Okay. Keep room for the caps. Yes. The caps will probably just end up going on top. So, in the old days, when we had dips, you would actually have capacitors that could fit underneath the chip they were these flat capacitors with one pin going off in one corner and one pin going off in the other corner. So, the designers could just stick them under the chip, put the chip down on top of it, and then solder everything in place. Prior to that, or in less expensive designs, they would just put the capacitor like on one side of the chip and then one pin would go to VCC and the other pin would go to ground. Right. And there were sockets that actually had them built in. They weren't actually flat capacitors. The sockets were a little thicker so that the capacitor would actually go in the socket, which is kind of cool. But anyway, with high-speed designs, obviously, you want the capacitor to be as close to VCC and ground as possible. Ideally, you want VCC and ground to be on pins next to each other. But these ground and VCC pins are on opposite corners. So, the general rule is you put the capacitor as close to VCC as possible and then ground it. So, yeah, just to show what I do, what I've learned is kind of the best practice here is here's a capacitor. I'm going to flip it. I'm going to rotate this and that'll be where it is. Right. So, here's what you do. Here's what I do. You go to the finest grid and you wire VCC to VCC and then you don't wire this to the VCC plane. You wire this to the VCC plane like that. Same thing with ground. You would wire this, well, I mean here the capacitor isn't close to ground, but if there were a power ground connection, this is a single ground, if there were a power ground connection, you would take the connection between the chip's ground and the capacitor's ground and then make a separate connection between the ground and the ground plane like that. So, the idea is that sort of the power that the chip gets has to come from the capacitor first and then if the capacitor is depleted of charge, it starts pulling it from the plane. Maybe it doesn't matter in this stupid low-speed design, but still, you know, that's what I do. Anyway, I'm going to move this away because I do that last. Okay, so what we were going to do is we were going to make this an actual bus. So, we go on the front side, I guess, and here, let's do this. So, here's one signal and I'm going to bring it out to, so I need enough room for, I think, 10 signals because it's eight signals and then they're shifted one left and one right. So, let's just put this here, just sort of line it up and then on the other side, I'm going to do that and that is what our bus is going to be and then I can just take this and continue this way and then put a via there, sort of line it up and then do it that way. And that's probably the best way to do this. Again, the vias are going to be a little big. So, again, you want them to be far apart so that you can get ground between the vias because, again, with this bus, you want the ground path to follow the signal as close as possible. And if there is a, and so you want the via pattern to support that, it's okay not to have ground between vias if the closest ground to the signal doesn't cut across that. So, let's go ahead and do RS 10 now. Nice. Okay. Very cool. All right. So, let's do this now and put this via here. So, here's an example of what I was talking about, of what I'm talking about. I can put this via as close as I want. So, let's stick it there and then this via, though, is going to have a problem. So, now if I fill the ground plane and look at it, ground plane, ground plane. Hello. Ground plane? Oh, yeah. Right. Because I need something connected to ground. Distractions. No, that's okay. It's all useful information. Okay. So, now here we can see that the path that the ground is going to take is going to go along here, is going to go around here, and is going to go up. That's fine. Same thing here. The path is going to go here, and then it's going to get diverted over here, and then it's going to go up. So, that's okay because I don't have a bus going this way. Well, even if I did have a bus going this way, the path would be here and around this way and over here. And that's the best you're going to get. Now, if I had a third via over here, that would be a problem because then this would have to either go around both vias and then over here or both vias around here. And that could affect the signal integrity on other wires. So, that's something that you really have to watch out for. At the ends of buses, you can have it perfectly diagonal. And as long as you don't have signals going across that diagonal, you're safe. This is a problem, though, because now in order for the signal to go from this red wire to this green wire, it's going to have to go around the via the long way. And of course, if I'm going to have more vias, that's going to be a problem. So, can I make the ground path transparent? Well, you can turn it on and off, right? You can do control B and what that does is it unfills. Unfortunately, that's not what you really want. You want it to have like a very low alpha. So, you can kind of sort of see it, but not really. But no, it's either this or this and or this and yeah, I know, like 10% transparency or you can set layer color, including transparency really change layer color. Whoa. That's awesome. The holy crap. I'm learning a lot. All right, that's really cool. Okay, I'm just going to have to get used to this. But yeah, looks awesome. All right. So anyway, the point is it's the future. So the point is that I want these vias to be farther away from each other. So I'm going to take this via and drag it this way. And again, this is kind of the infuriating thing. This via was not actually connected. So really? Okay. Interesting. Well, thanks for that. I'm glad that this is actually of some use. So I'll just do this and this and then I can delete this segment and this segment. So that was kind of infuriating that, you know, when I pop the via onto the signal, didn't actually connect even though it snapped to it. So, yeah, so now if I do a B, we can see that this black area now has a nice yellow area between it. And now the signal can actually, the ground, the return signal can actually get through. So and also I can probably move this via up a bit. I really want to stuff these as close as possible because remember, I have to get 10 wires in here. So, okay, let's do another one. Press 11. Okay, let's whoa. Okay, so see it is actually snapping onto this wire here. So if I click on it, and then if I try to move it, oh, okay. Well, I guess I'm the idiot here. That's not going to work about this. Sure. It's not going to be, it's not going to line up very well, but, you know, it'll do. Now, obviously, I'm going to be running out of space. And okay, here's something that I'd like to see. And I think I've seen complaints, right? I can't just take this and pull all these up, right? I would kind of like the traces to follow along with it. That's annoying. That's really annoying. But at least when you connect them, they do actually get connected. So, you know, drag water. I think it's probably a hard problem. That's why they haven't worked on it, really. Okay, so now I can just connect these guys up. The other problem is like these little nubblies. Like, there's a little nubbly right there. There's no reason for that nubbly to appear. And that has been a consistent problem. Yeah. I mean, it doesn't even have to be a great push and shove algorithm. You know, because really, all you're doing is, I mean, you're not going to take the chips and then just sort of push them through a whole bunch of wires. Really, what I want is just something where I can take a chip and move it up into emptier space, into empty space, and, you know, just stretch the wires. That's all I want. And, you know, that's probably a really limited use case and it's not all that general. So, again, yeah, it's in general, it's a hard problem. So, but at least I can do this and this and this. Okay. And now again, we've got all these tiny little stupid stubs. And there is a way clean up tracks and vias. And does it work? Nope, it does not. Because it thinks that this wire needs that tiny little thing to connect. Fine. Okay, let me get rid of the rats most and continue. So it's two o'clock. I thought, you know, maybe I would go for another hour. Is that okay? Because really, you know, once, once you're past, you know, this stage, it's just, you know, drudgery, putting all the chips down, wiring everything up. And, you know, I think I've shown pretty much most of what I want to show all the little, you know, tricksy things that I run into and that sort of thing. So, sure, that'll go there. Go here. Go here. Yeah, it's funny that I sort of rediscovered, not rediscovered, but re-remembered, I guess, the whole orthogonal wires on opposite sides thing. Because that is a typical auto router move or auto router preference that you can set. Yeah, honestly, I don't miss the auto router. I really don't. Eagle has an auto router. Yeah, and I don't miss it. Never trust the auto router. I'm hoping that with the revolution in AI that's going on right now, we'll get better auto routers. Okay, I've got RS116, ungate swap U13, before you get into trouble. There isn't any gate swap on U13. Oh, in space trouble. I don't know what you mean. Oh, no. I think this is fine. Oh, right. Yeah, I know what you're talking about. Okay, yes. Thank you. Yep, you're absolutely right. I do need to ungate swap those two to unflep, actually. These two dudes, right? Flipping back on the x-axis. Yep, what? Wrong ones. Those are the no shift ones connected here to this convenient ground. There's no ground there. And this one gets connected to Don't stress. I'm actually less stressed out than I thought I would be. I thought I'd be like, oh my God, I'm going to make a mistake, but I'll make mistakes. I make learning opportunities. Okay, so generate the net list. Save. Go back here. Read the current net list. That's weird. Okay, why did it give me U16 to place? I don't know, but whatever. Yeah, pair of layouting. It totally is, isn't it? Okay. Yeah, I think that I would have made a lot fewer mistakes on the schematic if I had live streamed it. Anyway, that's neither here nor there. DRC. What is it that the Chinese call it? A flesh. DRC. I think this is going to go right up close to the chip. And I hope I don't regret that later. You're welcome. Again, I wasn't really sure how useful this would be. Can you? No, you can't move a footprint. Unfortunately, yeah, that's just not built in. All right, I'm just going to slap these down and not worry about Viya placement. I will place the Viya's later. That seems like a more efficient use of my time and your time. So let me push this out of the way. That's interesting. It looks like that Viya wasn't actually connected to the trace. Thanks, KiCad. And RS15 comes down here, connects up to there. Okay. Are those all the wires that I need to connect up on this side? Except for RS16, there's shift left. I'll probably end up routing the control lines underneath the chip. That seems like a good thing to do. Do I need this RS9 somewhere? Probably. Okay. Let's stick some other chips down. Let's see. I did U11, 13, and 15. Well, that was kind of a dumb way of doing it. I should have done it in order. Oh, well, whatever. I have no idea what Altium's Auto Router is like, but I suspect it's better than Eagles. I have read some articles about some special algorithm that they use, like streaming, where you take a bunch of traces and you waft them down the PCB. It's kind of like a river metaphor where it carves its own path, and they claim it works pretty well, but I don't know. Couldn't all this be done in Verilog and laid out automatically? No, layout is actually separate from Verilog. Verilog is just describing the connections. That's basically your net list, so it says what pin connects to what. Laying them out is a completely separate problem, and it's a very hard problem. Yeah. I can't share my designs if I do them in Altium because then you're going to have to pay for Altium just to look at my designs or to modify my designs, and that's not the way I roll. Yes, EEV blog, yeah, well, he used to work for Altium, right? So he's used to Altium. His partner in crime loves KiCad, and there's a very specific reason for it is that Chris wants to share his designs as much as possible, and you just cannot do that with Altium. Okay, I was going to lay some chips down. Lay some fat chips down. Okay, so U12 maybe? Let me go check that. That's a schematic. Yeah, U12. Yeah, I'm a big believer in AI. I'm actually a singularitarian, so I do believe that the technological singularity is going to make us all immortal, and everything will be happy with princesses and rainbows by the year 2045. So yeah. What was I doing? Oh yeah, U12. I need U12. P U12. Okay, flip it, put it on a 0.5 grid, so that lines up nicely. Yeah, Dave doesn't really have a lot of patience for that. You can tell when his patience has run out because his voice goes all squeaky. He's so funny. Okay, so I need that chip and 14 and 16. Well, okay, yeah, it's not, okay, yeah, there's this whole thing. There's this meme going around that artificial intelligence is actually just statistical learning or statistical reasoning, and it is for the most part unless you get into neural networks. And then it's, you know, it is part statistical learning, but there is also evidence that our brains are neural networks as well. Well, I mean, obviously there are neural networks, but the performance is really close to the human brain. No, PCB routing is not too complex for AI. Again, I'm just gonna make that statement and then drop the mic on the floor. Why isn't this aligning to my grid? Hello. Oh, yeah, why is this aligning? How about this? What are you doing to me, kikad? Well, fine, be that way. I'll go to a finer grid then. That's what you want. Apparently, that's not what you want. Oh, that's interesting. I don't think this is actually, oh, it is lined up. I don't know why this chip is not lining up on its grid. Yeah, I don't get it. It's like, why? Or as Dave would say, why? The answer is 12. I have a list, 12 boards approximately. Some of those boards, so the boards are, there's a register file, there's an ALU, a shifter, which I'm working on now, a memory, an instruction decoder, and then this is optional, a display for the contents of the register, a display for the buses and for debugging, a terminal, and then there are two slots for special registers, and these are registers that the risk five, that risk five sets aside for things like processor capabilities and things like that. And then I have two slots left over for generic IO, so 12. Not all quite of this complexity. I think this is probably the most complex. Okay, I still can't figure out why this is not lining up to the grid. It seems to be that none of these chips are lined up to a grid. You know what I might have done? I know what happened. I grab these chips and I move them and I move them in the fine grid. Well, now I'm going to have to move them again. The pins should still be connected. And if they're not, DRC will warn me about that. Okay, great. I finally got my chips laid out. Okay, so there's U12, U14. And you always want, and for me, I always grab one of the pins because I want the pin to be aligned, not necessarily the center of the chip. I need one more. I think U16, U16, grab one, move, flip, rotate, rotate. So, and you typically want to choose the same pin that you grab every single time because it's not necessarily true that the pitch between the rows is going to be an even multiple. So like if I grab VCC here, you can see that it's not quite aligned. That's because the distance between rows is not an exact multiple of one millimeter. Okay. Now, is this where I should have put it or should I have put this on the other side? Let's pull up the rat nest and see where they go. I think they should have been on the other side. Right? Yeah. So let me move these to the other side, rat's nest. Yeah, that's better. I know, right? I would have liked to have been born, I think, 20 years earlier or 20 years later than I actually was. If I were born 20 years earlier, then I probably would have been at MIT in the Model Railroad Club, and I would have been working on the first, you know, the first hobbyist personal computers. I also would have been like to have born 20 years later, just so that there is a higher probability that I make it to the singularity. All right. RS18. All right. You go here and draw on boards. Yeah. Okay. And this is seven. And this is six. Now, here is where I can start using up this space again. RS5. And then just for fun, I'll take this and connect it up to its pin, which is down here somewhere. And this is the next pin over. So that just goes like that. Okay. So that's enough of that. I can do that later. Yeah, I'm pretty happy with the way that turned out. So that was a really good suggestion. And again, I'll figure out how to do the vias later. Again, these vias over here are just fine because none of these traces actually crosses this diagonal line. This diagonal line, I'm going to have to flip the other direction so that the vias go along this way. And I think, you know, there may be a trace or two that goes past that. These vias absolutely need to be separated. So yeah, in Altium, there are lots of nifty features. But hey, you can't put your files on GitHub. And if you do, you know, somebody's going to have to pay for Altium. Yeah, the other thing is that I really wanted to take this high speed design course by Federov, I think his name is. Why flip you 13 again? Oh, yeah, I'm putting them all on the same side, right? That seems like the right thing to do. Actually, no, I could put it on the other side. Fedevl, yeah. I could put you 13 on the other side, and then I wouldn't have these vias. I could do that. On the other hand, I kind of like the way this looks, you know, having it all in a line. I'm going to keep it all in a line just for fun. I don't think I'm lacking for space because these chips are surprisingly small. I mean, TS sops are really tiny. Let me get out an actual physical board. Here we go. This is the actual size of one of these boards. It's tiny, right? And if you look at the PCB, you can see that I've laid out six chips just along one slot. I've got plenty of space. This is why I love SMD. By the way, all of these, all of these are bad boards. These are all previous revisions of boards. Apparently, this was when I thought that I would have one card per register, so I ended up ordering like 50 of these because it wasn't that much more expensive than just 10. Yeah, right. Anyway, so getting back to Fedevl, he does it using Altium, right? And I'm like, dude, I'm paying for your course. Now I have to also pay for Altium, and I understand that your course is for quote professionals, but I'm a sort of, what do they call it between a hobbyist and a professional, a prosumer maybe, right? I'm not going to go to Altium. I'm just going to use KiCad, and I asked him, can I use your techniques on KiCad? And he's like, well, I don't know because I've never used KiCad. Why don't you buy the course and find out? And I'm like, no. Okay, well, I think this is probably a good place to stop, I think. I know I don't have to use Altium, but I asked him specifically, can I use KiCad? And he said that he did not know, and that there may be features in Altium that he uses that have, you know, that don't have an equivalent in KiCad, in which case his course would be kind of useless. I would learn the concept, but, you know, if he's like, oh, and here's how you do good signal integrity, you use this tool in Altium, well, that's of no use to me. So, yeah, I would have really liked to take his course, but I couldn't. So anyway, I think this is where I'm going to stop. It's been two and a half hours, so that's not so bad. This layout is, you know, I think I've pretty much shown, you know, what the layout is going to look like and how it's going to be laid out. And I'm pretty happy with the way this is turning out. So, you know, I'm just going to put another six chips on the other side, and then I'm going to have five rows of those. And because, you know, the buses are nice and laid out in, you know, orthogonal ways, I think this is going to work out pretty well. So, yeah, how about I take a look at that resistor pack that I made? Looks pretty good to me. Okay, well, that's pretty good. I don't think I'm going to stream the rest of the PCB. I would like to make streams, more streams about, you know, maybe designing more and definitely, you know, drawing out the schematic in KiCAD because that's where apparently I'm making most of my mistakes. So, yeah, so I think I hope you enjoyed that. It's been great to have all this early feedback. That was, you know, that I really did this to be selfish because I wanted the early feedback. But hey, it's great that you enjoyed yourself too. So, yeah, that's about it. I really, really appreciate it. And I will probably make another video about putting together the rest of the PCB and ordering it from China, and then actually putting it together. So, until then, see ya. Stop the stream, quick. Stop the stream.