After a 20 year hiatus from designing boards, I’m teaching myself KiCAD. So far, so good except that its terminology is different from what i remember. “front and back” vs “top and bottom”. For now I am concentrating only on two-layer boards, typically with a ground plane on what i would call top.
So let me begin with what i want and what i call it. I want a two side board with components placed, through-hole, from the “top” and traces where they are soldered on the “bottom”. The ground plane/fill is on the “top” with clearance around all non-grounded holes.
The silkscreen is also on the top, over the ground plane, so one can see where to place components are later, what they are.
At this point of development all boards should be considered prototypes/demos and will be made in ~ 10, not 100s or 1000s.
If i read my files properly KiCAD began my traces and the main ratsnest, on what it calls the “front”. Is that what i would call trace layer (bottom) or component layer (top)?
Either way, unless i am missing something traces and silk ought to be on opposite sides for through-hole assembly.
Assuming my suspicions are correct (are they?) is there an easy way for me to reverse top and bottom, and move the silk to the top? I guess if i reverse top and bottom the silk can stay where it is
Through holes are per definition on all layers. And it does not matter on which side you make the traces assuming you have this layer available in your manufacturing process.
Silk is typically on the side where the component itself will end up. (Depends on how you make your footprint. Official footprints are build this way.)
You can select the layer where traces are placed by clicking onto the layer name. The little blue triangle next to the layer color indicator will then move to that other layer. (There are also keyboard shortcuts to switch to other layers. Check the hotkey list for details)
On the right side you choose which layer you want things placed on when routing. Since I’ve never had an issue placing through hole components and never gave it any thought I guess they all must go on top by default. The F key will ‘flip’ things to the other side.
I don’t think you need to do anything apart from remember to select the bottom layer when laying tracks. If you like, you can rename “top” to “component” and “bottom” to “trace”.
Otherwise the defaults work. The ratsnest doesn’t have a layer. The silk layer will appear on the top/front/component by default, unless you “Flip” a component so that it appears on the bottom.
First, thanks to all for the prompt answers - nice reception
I see inferences, but no clear answer to my fist question though: "Is KiCAD’s “back’ what I call “Bottom”.” Because it certainly does matter where the components go relative to traces when one is hand soldering, and, as noted, these are all prototypes that will be hand soldered and likely reworked.
I now have good info on how to select the right layers in the future. But my question remains, with a complex (>100 parts) PCB basically done, is there a simple way for me to reverse the layers on which the ground fill, traces and silkscreen reside?
TIA,
It would be saver if you assume front=top and back=bottom. PCB fab interpret standard file names that way, I think.
Two layer PCBs nowadays have metallized holes so connections can be at any side you like.
KiCad has front and bottom silk layers. It is your choice which one (or may be both) you wont at PCB.
Simply changing the layer will not suffice unless you have only non polarized symmetrical parts. (putting something on the other side will mirror its features on the pcb.)
In my opinion as you described how you would like your PCB to be done you need not reverse anything.
I think you should specify exactly what makes you think you need to reverse layers to make us understand you.
When you get netlist to PCB all elements will be at front as you need them. Then just place a GND zone on front layer and make your connections at bottom layer and it will be as you described it.
Since more than 20 years I use SMD elements so I would use front(=top) layer for connections and back (=bottom) for GND, probably even with trough-hole elements. Specially for prototype boards - it is easier to see where the signal from this pin is going when you are searching what is working wrong (you don’t need to look at backside many times).
In my opinion as you described how you would like your PCB to be done you need not reverse anything. I think you should specify exactly what makes you think you need to reverse layers to make us understand you.
OK, let me try again. When i view my board, the silkscreen and the traces appear on the F.CU and F.SilkS layers. I am inferring that KiCAD places the silk on the same layer the component goes. Otherwise, why bother …?
I certainly know the traces are on the front (=top) because it says so. If i turn off “F.Cu” they vanish. If i turn off “B.Cu” the ground plane vanishes. QED.
Whether i can easily rectify this or not, you all have helped me with nomenclature and how to avoid this in the future. Since its a learning / test, if I must re-do its not the end of the world.
G
BTW - good idea from Rene to use 3D view to confirm. I have never tried it but coincidentally just learned about it in a tutorial vid I’ve been watching…
Also, yes, i understand that flipping each component will not work and no many are not symmetric in the least.
Quick note - i am playing with 3D viewer. This is just too cool It does appear that the components are on the top (good!), along with the traces (not so good, though it might work). I’ll confirm after flipping and checking a few things.
Just another “thanks” - i’m shocked how quickly i received answers. And helpful ones
Yes, of course. (In general, there are exceptions). Was that the question? It’s hard to give answers when the question is not clear.
I’m still not clear what exactly you think needs rectifying…?
I think all that is happened is that you placed the traces and ground fill on the wrong side. Rather than redo the board, you could just rename the gerbers layers when you generate them.
You could also edit the the pcb file directly with a text editor to swap copper layers. It should be possible to do it with a script.
I am concluding the same, thanks for confirmation.
As to “was that a question?” The question remained “is it correct that the components are on the bottom” and the explanation and my inference was to answer why i thought so, which you asked above.
3D view suggests they are NOT, which also suggests that KiCAD, by default, placed the components and silk on different layer, which is just weird.
But I’ll not make this error again, and if i feel like it i think i can make the boards as-is. Still triple checking on 3D view (thanks again Rene).
I didn’t understood previously that you have that PCB already designed. I supposed that you are just planning to do it, and till now have only did some experiments (like me - I am looking at KiCad since 4.0.6 and till now I have only did one experiment board with 4.0.7).
Consider to have connections at top (I have written arguments for it previously).
Just change gerber files names (in gerber there is no information what layer it is, but gerber format changes so …).
There are some standards of gerber file names and it is easiest just to use them to limit the chance for mistake, but in general you need not to use that standard. You can write to PCB manufacturer the information which file is what layer. We (since 30 years) don’t use standard silk layer for silkscreen. If we need something to be painted at PCB we always used for it a mechanic 3 layer (.gm3) and just written in order that .gm3 is silkscreen (without renaming filename).
Thanks for the tips. And yes, the big problem is that i have a complete board, with > 100 components – all done. And while my traces and ground plane are on the opposite sides compared to how i would typically want them, a 3D look says I can make this work. lesson learned!
In my old Protel 3 (program from 1997) to update such PCB I would have to (I’m not at the computer with that Protel so no 100% sure):
remove GND zone from bottom,
double click any track segment - edit box opens,
change its layer from top to bottom,
click the button in right bottom corner of that box (don’t remember the name) to extend my action,
as I wont to extend my action to all tracks I don’t need to specify anything (like the same width, the same selection, …), or may be I have to check check-box “The same layer” to not move lines (there is no difference between lines and tracks there) from other layers. Not sure now, but when that dialog is opened everything is clear what to check.
click OK button - all tracks are on bottom.
place GND zone at top.
Edit - at first I missed top and bottom like it would be as you need and change to as you have.
The whole operation is less then a minute.
I don’t know how to do it in KiCad, but I don’t know KiCad well yet.
I suppose (not sure) I will fill lack of global operations when I switch to use KiCad.
Impossible to answer. What components? In what circumstances? Do you mean general best practice, KiCad defaults, or on your board specifically?
In practice, you can put components where ever you like. I think it should be obvious that KiCad has sensible defaults, if it did not, people would be screaming in pain. It doesn’t do anything “weird” like put the silkscreen on the opposite side that the component is mounted, that would be perverse.
A screen shot of your board would probably help a lot…
Anyway, my last contribution here will be a script to swap tracks to the “other side”:
import pcbnew
"""
To run from KiCad script console in pcbnew
1. Open the console, Tools->Scripting Console
2. type the following command in the console window
execfile ("c:/python_progs/test_pcb/move_tracks.py")
change "c:/python_progs/test_pcb/" to where you stored "move_tracks.py".
"""
def MoveTracks(Filename = None):
if Filename:
my_board = pcbnew.LoadBoard (Filename)
else:
my_board = pcbnew.GetBoard()
for track in my_board.GetTracks():
p = track.GetStart()
# swap layer
if track.IsOnLayer (pcbnew.F_Cu):
track.SetLayer (pcbnew.B_Cu)
else:
track.SetLayer (pcbnew.F_Cu)
pcbnew.Refresh()
# MoveTracks("C:\\git_bobc\\bobc_hardware_live\\Smart_RGB_LED_AT85\\rgb_led.kicad_pcb")
MoveTracks()
Not to worry - all answered.
I was asking about my completed design, after providing the hints i had that they were not where i wanted them.
Winning comment - use 3D viewer to see.
The script looks very useful - I’ll have to spend some time and figure out how/where to apply it… I can barely use the UI yet, so applying scripts sounds dangerous… but i may.