Very impressive! Really love the clean and professional style of your project documentation. Thanks for this video and sharing the templates and other resources!
Just delightful. Although really involved, but with such care you showed the results out of KiCAD are really impressive. Incredible work, thank you for sharing it!
Absolutely love it, I wish you made a tutorial for complete beginners so I can convince my friends to join Kicad as well.. your explanations are superb and you highlight so well that the limits of Kicad 8 are much further away than most projects complexity is. Greetings to Lausanne!
Thank you very much for sharing. I have been suffering from the abnormal chaos of my project structure before, and now I finally have an excellent example.
Excellent video, thanks for sharing your workflow! I'm working on a reasonably complex design in KiCad for my undergraduate thesis; definitely going to use your template as a reference for making my documentation more professional.
This looks amazing. If only this was possible to automate. The amount of manual work needed to achieve this is crazy. I can't justify it for small personal projects and for my work - I can't imagine doing it without automatic workflow with validations and tests.
It's certainly involved and could be automated with something like KiBot (but doing so would require quite a lot of work). Personally, it takes me ~ 1 hour to set up / generate fabrication and assembly documents for a new project
@@vincentnguyen8083 That's amazing that you manage to keep track of everything and not make mistakes. I would make errors if I had to do this manually. I am releasing devices at least once every 2-3 weeks and I would just give up on the 3rd project :) kudos for your patience.
As inspiring as it is impressive. Will have to strategically replay parts of this demo several times to grab it all because there is really a lot to discover here
Thank you! The process is still quite involved though, it might be interesting to try to make a script to automate all of this, maybe even integrated with KiBot
Thank you so much for such a detailed video; very helpful! One thing I am super interested in is your vibrant colours for Net classes. Is it done individually, or is there a semi-automatic procedure for that, mate? I know Altinum has this feature, but I did not know you can do it in Kicad as well :-)
For the schematic, I define Netclasses and colors in the schematic options and assign them to the nets either manually or with the Net class directive. Unfortunately in KiCAD 8, colors of netclasses in the schematic or not synchronised with the PCB net colors, so I set the colors manually on the PCB for each net. KiCAD 9 will have synchronisation of netclass colors between schematic and PCB
For 4-layer stackups, I recommend using 2 solid ground planes on the inner layers, and route the power on the outer layers. In a PCB, energy flows in the dielectric space between your signal and reference plane. Consequently, you want your reference planes to be as close as possible to your signals to have a good return path. An important thing to note is that as a signal transitions from the top to the bottom layer, the signal will change its reference plane (from In1 to In2). To provide a shorter return path along the z-axis, it is good practice to place one or more "transfer vias" (connected to GND) near the signal vias. A SIG PWR GND SIG stackup can also work in many cases, but will not provide EMC performance as good as SIG GND GND SIG. If you use an internal power plane, you need to make sure that it can serve as a reference to the signals above it (i.e. that the driver voltage source is the same as the power plane). This is because at high frequencies, the impedance between your power plane and your ground plane will be low if you have enough bypass capacitors. Finally, an okay compromise would be to have a SIG PWR/GND GND SIG stackup, where the PWR/GND layer is carefully designed to provide good return paths with a solid ground plane under the fastest signals (the ones with the shortest rising time). You just need to make sure to never cross a split in your reference plane with a signal. When doing this type of stackup, some people also like to "bridge" the GND and PWR planes with bypass capacitors, again to provide a return path for fast signals. But again, I wouldn't recommend this stackup. Personally, I always go with 2 inner ground planes, and if I don't have enough routing space, I go straight for 6 layers
@@Prabagaran-s3b for more complex shapes like this one, I use a MCAD tool (e.g. Fusion360, Inventor) to sketch the outline. You can then export the sketch as a .dxf file and import it in KiCad on the Edge.Cut layer with Files->Import->Graphics
@@simonbaxter8001 you could yes, I just like to have a transparent background as it's more versatile (e.g. adding the pictures in a presentation/GitHub repo). I think the default KiCad sheet color is not perfectly white too (but it should be with the provided color theme)
Bonjour, je vois que tu es à l'EPFL, pourrais-tu faire la même vidéo en français ? Cela me simplifierait énormément la vie ! Sinon merci quand même, très bon tuto ! Et magnifique doc !
I am sorry, but I find this process really tedious and error-prone. I spent quite some time on automating KiCad outputs using KiBot, git, teamcity, etc... And even though it may have been more work than doing it manually and even though the outputs are not so well organized and pretty, I still do prefer to do it automatically. The reason is that being automatic, it is always up to date. I would have nightmares from exporting test points positions and then "reimporting" them back to schematic as list... Even for my small projects, when I need to update something last minute, I just hit "run build" and after few minutes all the outputs are generated. Pardon me if I may not say it quite right (English is not my native language) and I certainly do not mean to offend you, but computers were designed to work better/smarter, not only faster. It kinda reminds me when I was learning AutoCad in school (cca 2000), it had a new great feature - hatch autofill. But instead of setting some shape to be hatch filled, it created a bunch of lines in the shape - exactly like if you used a ruler to draw the hatch fill. And your process looks very similar to me. Instead of using automation and other "modern" means, you just use the computer to do the "old way" faster. For example, if you would need to change one output from I2C to i.e. serial, how much work would it be? At how many places would you need to change it manually?
Just as example, I recently designed a board with like 6 different buses. I know it is a small project but still, there is a lot of opportunities to swap TX/RX, connect wrong things together. So I made a script, that takes the netlist/schematic in and has a definition of required buses. And it will check if they are correctly connected and produce an output of them, so you can use it when debugging. So for example I have serial console. That is a simple thing. So first thing, I need to define the serial "bus". Then I define classes that corresponds to TX and RX. And that should be all that I need to define. The script then will check that there is always at most 1 TX pin on the bus line and that there are some RX pins. In the simple case it will find that the MCU TX is connected to the connector RX and vice versa.
@@radekhladik7895 im not sure I understand. I know that the process can be automated (e.g. with Kibot) but once everything is set up correctly, you don't really need to change anything to produce good fabrication and assembly outputs. Let's take your example of swapping an I2C output to serial. 1) You would just change it on the schematic, then plot the schematic to PDF 2) On the PCB, you would need to reroute the signal if necessary 3) then you just plot the assembly and fabrication documents with Board2PDF (a few clicks) One of the tedious parts are the 3d renders, which need to be redone if the PCB changes substantially. However, they are not critical to the documents and could be automated with KiCad CLI in version 9 Another tedious part which can be hardly automated are the fabrication notes, assembly notes and dimensions, these need to be set once on a case by case basis depending on the project/manufacturer. For the testpoints, yes this is also quite tedious, there are easy ways to automate it (for example github.com/snhobbs/kicad-testpoints ), and it would certainly be possible to have a script extract the locations and populate a table on the correct page of the fabrication output If you manage to automate the entire process with good quality fabrication and assembly documents, feel free to share a tutorial (e.g. KiBot). I would be very happy if there are ways to streamline the workflow and am planning to investigate it, but I just don't have the time and energy to do it yet In general, for small changes (e.g. rerouting a signal) it takes me ~2min to regenerate assembly/fabrication outputs which are up to date. For large changes (completely change the PCB shape, and location of components), maybe around 10 minutes if I need to redraw the dimensions layer (indications on diameter, etc., a process which can be hardly automated) and regenerate 3d renders
@@vincentnguyen8083 Of course that you would need to do "the basic KiCad stuff with rerouting, etc,... " but on top of that you would need to change the Block Diagrams, Test point lists, Page title in the table of contents, etc.... I know that it is only a few clicks, but you need to remember all the places you need to click... For me, the best number of clicks required to do something is 0 🙂 What I meant is that I prefer to define 1 piece of information exactly once and let the computer do the rest - a lot of times it does not work like that, but that does not mean that we should not aim for it. So for example if I have the serial connection I mentioned, it should be entered only once in some form of "serial connection between A and B". And the rest should be done automatically or at least checked automatically. Your documentation looks beautiful, and no automation can match that, but for me the cost of manually keeping track of everything is not acceptable. For example I've had some issues with USB connector with JLCPCB (I've mixed two parts and used footprint from another part while in the BOM I've had the other one). Unfortunatelly the other connector was not in stock, so I had to change the footprint and regenerate all the fabrication outputs. And because of automation, I knew that the quality of the hot-fixed outputs will be the same as the quality of the outputs I've generated before.
@@radekhladik7895of course the table of contents and so on need to be changed manually right now. There are again probably ways to automate it but I usually make these types of "non-important" schematic sections when the design reaches a more mature phase where there are only small incremental changes left. It would take a significant effort to automate every part of the schematic/fabrication/assembly documents, something that even high-end tools like altium do not provide yet, at least not at the quality of the documents I present here. But I agree that in a fast-paced design/prototype phase where you would need all necessary "bare-bones" documents delivered on a regular basis like standard schematic and Gerbers, automation is important
@@vincentnguyen8083 you are right. And all I am saying us that I will trade that visual quality and organisation for being up to date and automated as much as possible. Actually I ruined my first PCB (trivial breakout board) by forgetting to refill zones before exporting gerbers. And I still do not refill my zones before exporting gerbers but I have the computer to do it for me....
It's great to see a production caliber workflow and set of deliverables using KiCAD. I've struggled finding such examples. Thanks for sharing!
Stumble on this video in youtube recommendation. Thank you very much for sharing this professional documentation using KiCad.
Amazing workflow, it's a super templete for me, and i'll tell my friends the best way to did a good job. Thanks, you are an great engineer.
Very impressive! Really love the clean and professional style of your project documentation. Thanks for this video and sharing the templates and other resources!
Just delightful. Although really involved, but with such care you showed the results out of KiCAD are really impressive.
Incredible work, thank you for sharing it!
Absolutely love it, I wish you made a tutorial for complete beginners so I can convince my friends to join Kicad as well.. your explanations are superb and you highlight so well that the limits of Kicad 8 are much further away than most projects complexity is. Greetings to Lausanne!
Thanks! I highly recommend Phil's Lab's STM32 Bluetooth series for beginners in KiCAD, I wish I had that when I was starting
Wow, this is mind-blowing. Thank you Vincent. coming from LinkedIn
Thanks! Much appreciated
That looks really good and professional!
Looks more like Altium style (which I really like).
Thank you very much for sharing. I have been suffering from the abnormal chaos of my project structure before, and now I finally have an excellent example.
A very well presentation, I learned a lot and will try to implement.
Thank you very much.
Merci tres bien 🙂
Really impressive what can be achieved with Kicad. I have only seen such nice fabrication output with Altium Designer
Excellent video, thanks for sharing your workflow! I'm working on a reasonably complex design in KiCad for my undergraduate thesis; definitely going to use your template as a reference for making my documentation more professional.
This looks amazing. If only this was possible to automate. The amount of manual work needed to achieve this is crazy. I can't justify it for small personal projects and for my work - I can't imagine doing it without automatic workflow with validations and tests.
It's certainly involved and could be automated with something like KiBot (but doing so would require quite a lot of work). Personally, it takes me ~ 1 hour to set up / generate fabrication and assembly documents for a new project
@@vincentnguyen8083 That's amazing that you manage to keep track of everything and not make mistakes. I would make errors if I had to do this manually. I am releasing devices at least once every 2-3 weeks and I would just give up on the 3rd project :) kudos for your patience.
A fantastic presentation! Saving this for further re-viewing.
thank you this is mind-blowing
Wow! Great design and documentation!
This video is gold
Great walkthrough video. Some of these features I've had installed but never used. Thank you for sharing
Thank you! KiCad has so many features but most of them are not really covered much in tutorials. Hope this helped :)
@@vincentnguyen8083 Did you make the Altium theme or did you find this elsewhere?
Very valuable information, become a permanent part of my reference library data, thank you very much for this hi-level info.
As inspiring as it is impressive. Will have to strategically replay parts of this demo several times to grab it all because there is really a lot to discover here
This is so beautiful, thank you so much for this amazing video ! Looking forward to more content like this if possible.
Hello Vincent, you have done really good job. Thank you for sharing your knowledge.
Thank you for this amazing guide. Much appreciated
Thank you! The process is still quite involved though, it might be interesting to try to make a script to automate all of this, maybe even integrated with KiBot
@@vincentnguyen8083 Seems like another tutorial is on its way 😁
this video is godsend
THIS is the way :)
Really cool content and top quality. I like videos about KiCad. Thanks for that.
This is fantastic! Thank you for sharing
Thank you for your efforts!!!
Thank you so much for such a detailed video; very helpful!
One thing I am super interested in is your vibrant colours for Net classes. Is it done individually, or is there a semi-automatic procedure for that, mate?
I know Altinum has this feature, but I did not know you can do it in Kicad as well :-)
For the schematic, I define Netclasses and colors in the schematic options and assign them to the nets either manually or with the Net class directive. Unfortunately in KiCAD 8, colors of netclasses in the schematic or not synchronised with the PCB net colors, so I set the colors manually on the PCB for each net. KiCAD 9 will have synchronisation of netclass colors between schematic and PCB
Awesome !
This such huge help. ❤
this is so cool !
Thanks for this video, This inspired.
Amazing! Thank you
This presentation is excellent but I wish the volume wasn't so low...
I will upload a video with higher volume and give you a link shortly :)
th-cam.com/video/GQZmCI1rjnE/w-d-xo.html this should be better
Amazing content
Really well documented video! could you do the same thing on Altium Designer...
I have a fairly similar template on Altium but unfortunately can't share it. You can probably get the same results or better with draftsman
In 4 layer pcb witch layer is suitable for ground plane in1.cu or 1n2.cu and power plane
For 4-layer stackups, I recommend using 2 solid ground planes on the inner layers, and route the power on the outer layers. In a PCB, energy flows in the dielectric space between your signal and reference plane. Consequently, you want your reference planes to be as close as possible to your signals to have a good return path. An important thing to note is that as a signal transitions from the top to the bottom layer, the signal will change its reference plane (from In1 to In2). To provide a shorter return path along the z-axis, it is good practice to place one or more "transfer vias" (connected to GND) near the signal vias.
A SIG PWR GND SIG stackup can also work in many cases, but will not provide EMC performance as good as SIG GND GND SIG. If you use an internal power plane, you need to make sure that it can serve as a reference to the signals above it (i.e. that the driver voltage source is the same as the power plane). This is because at high frequencies, the impedance between your power plane and your ground plane will be low if you have enough bypass capacitors.
Finally, an okay compromise would be to have a SIG PWR/GND GND SIG stackup, where the PWR/GND layer is carefully designed to provide good return paths with a solid ground plane under the fastest signals (the ones with the shortest rising time). You just need to make sure to never cross a split in your reference plane with a signal. When doing this type of stackup, some people also like to "bridge" the GND and PWR planes with bypass capacitors, again to provide a return path for fast signals. But again, I wouldn't recommend this stackup. Personally, I always go with 2 inner ground planes, and if I don't have enough routing space, I go straight for 6 layers
how to drew pcb shape like these and edge cuts?
@@Prabagaran-s3b for more complex shapes like this one, I use a MCAD tool (e.g. Fusion360, Inventor) to sketch the outline. You can then export the sketch as a .dxf file and import it in KiCad on the Edge.Cut layer with Files->Import->Graphics
Why not just set the background of your render to white, which will be the same colour as the background on the schematic sheet?
@@simonbaxter8001 you could yes, I just like to have a transparent background as it's more versatile (e.g. adding the pictures in a presentation/GitHub repo). I think the default KiCad sheet color is not perfectly white too (but it should be with the provided color theme)
I am very impressed with your project. May I ask if you are Vietnamese?
Thanks! I was born and raised in Switzerland in a vietnamese family
@@vincentnguyen8083 nice to meet you
Bonjour, je vois que tu es à l'EPFL, pourrais-tu faire la même vidéo en français ? Cela me simplifierait énormément la vie !
Sinon merci quand même, très bon tuto ! Et magnifique doc !
Salut, malheureusement je ne compte pas faire de vidéo en français sur cette chaîne
Nice video, keep it up, thanks :)
Thanks!
I am sorry, but I find this process really tedious and error-prone. I spent quite some time on automating KiCad outputs using KiBot, git, teamcity, etc... And even though it may have been more work than doing it manually and even though the outputs are not so well organized and pretty, I still do prefer to do it automatically.
The reason is that being automatic, it is always up to date. I would have nightmares from exporting test points positions and then "reimporting" them back to schematic as list...
Even for my small projects, when I need to update something last minute, I just hit "run build" and after few minutes all the outputs are generated.
Pardon me if I may not say it quite right (English is not my native language) and I certainly do not mean to offend you, but computers were designed to work better/smarter, not only faster. It kinda reminds me when I was learning AutoCad in school (cca 2000), it had a new great feature - hatch autofill. But instead of setting some shape to be hatch filled, it created a bunch of lines in the shape - exactly like if you used a ruler to draw the hatch fill. And your process looks very similar to me. Instead of using automation and other "modern" means, you just use the computer to do the "old way" faster. For example, if you would need to change one output from I2C to i.e. serial, how much work would it be? At how many places would you need to change it manually?
Just as example, I recently designed a board with like 6 different buses. I know it is a small project but still, there is a lot of opportunities to swap TX/RX, connect wrong things together. So I made a script, that takes the netlist/schematic in and has a definition of required buses. And it will check if they are correctly connected and produce an output of them, so you can use it when debugging.
So for example I have serial console. That is a simple thing. So first thing, I need to define the serial "bus". Then I define classes that corresponds to TX and RX. And that should be all that I need to define. The script then will check that there is always at most 1 TX pin on the bus line and that there are some RX pins. In the simple case it will find that the MCU TX is connected to the connector RX and vice versa.
@@radekhladik7895 im not sure I understand. I know that the process can be automated (e.g. with Kibot) but once everything is set up correctly, you don't really need to change anything to produce good fabrication and assembly outputs. Let's take your example of swapping an I2C output to serial.
1) You would just change it on the schematic, then plot the schematic to PDF
2) On the PCB, you would need to reroute the signal if necessary
3) then you just plot the assembly and fabrication documents with Board2PDF (a few clicks)
One of the tedious parts are the 3d renders, which need to be redone if the PCB changes substantially. However, they are not critical to the documents and could be automated with KiCad CLI in version 9
Another tedious part which can be hardly automated are the fabrication notes, assembly notes and dimensions, these need to be set once on a case by case basis depending on the project/manufacturer.
For the testpoints, yes this is also quite tedious, there are easy ways to automate it (for example github.com/snhobbs/kicad-testpoints ), and it would certainly be possible to have a script extract the locations and populate a table on the correct page of the fabrication output
If you manage to automate the entire process with good quality fabrication and assembly documents, feel free to share a tutorial (e.g. KiBot). I would be very happy if there are ways to streamline the workflow and am planning to investigate it, but I just don't have the time and energy to do it yet
In general, for small changes (e.g. rerouting a signal) it takes me ~2min to regenerate assembly/fabrication outputs which are up to date. For large changes (completely change the PCB shape, and location of components), maybe around 10 minutes if I need to redraw the dimensions layer (indications on diameter, etc., a process which can be hardly automated) and regenerate 3d renders
@@vincentnguyen8083
Of course that you would need to do "the basic KiCad stuff with rerouting, etc,... " but on top of that you would need to change the Block Diagrams, Test point lists, Page title in the table of contents, etc....
I know that it is only a few clicks, but you need to remember all the places you need to click... For me, the best number of clicks required to do something is 0 🙂
What I meant is that I prefer to define 1 piece of information exactly once and let the computer do the rest - a lot of times it does not work like that, but that does not mean that we should not aim for it. So for example if I have the serial connection I mentioned, it should be entered only once in some form of "serial connection between A and B". And the rest should be done automatically or at least checked automatically.
Your documentation looks beautiful, and no automation can match that, but for me the cost of manually keeping track of everything is not acceptable.
For example I've had some issues with USB connector with JLCPCB (I've mixed two parts and used footprint from another part while in the BOM I've had the other one). Unfortunatelly the other connector was not in stock, so I had to change the footprint and regenerate all the fabrication outputs. And because of automation, I knew that the quality of the hot-fixed outputs will be the same as the quality of the outputs I've generated before.
@@radekhladik7895of course the table of contents and so on need to be changed manually right now. There are again probably ways to automate it but I usually make these types of "non-important" schematic sections when the design reaches a more mature phase where there are only small incremental changes left. It would take a significant effort to automate every part of the schematic/fabrication/assembly documents, something that even high-end tools like altium do not provide yet, at least not at the quality of the documents I present here. But I agree that in a fast-paced design/prototype phase where you would need all necessary "bare-bones" documents delivered on a regular basis like standard schematic and Gerbers, automation is important
@@vincentnguyen8083 you are right. And all I am saying us that I will trade that visual quality and organisation for being up to date and automated as much as possible.
Actually I ruined my first PCB (trivial breakout board) by forgetting to refill zones before exporting gerbers. And I still do not refill my zones before exporting gerbers but I have the computer to do it for me....