Define V-score vs milling?


#1

Running 5.1.0

I have small (25mmx25mm) simple 2 layer boards, and I am wanting to panelize them.

I just make an array of the entire board, and it puts them nicely in a panel.

But my question: is there a way to specify milling vs V-Score inbetween the panels? I only see 1 layer for such things (Edge.cuts) and no apparent way to differentiate between milling and V-Score.

Also, is there a “preferred” way to make panels in KiCad? I know a lot changed with version 5, and a lot of the info out there really doesn’t apply anymore.


#2

Did the same size some time ago. I did not bother with any kind of penalization. JLCPCB did the rest and delivered them at the specified size.


#3

Part Answer: It would be better to first check with the PCB fab what they accept. If there is “impedance mismatch”, you can expect a lot of reflections…:grin:

For example, Seeed Studio expects VScores in Edge.Cuts layer (i.e .GML). The actual edge (milled) would be one or more closed path(s) whereas VScores are expected to be line paths (open) with textual annotation marking them out as such.

(Ofcourse, you should provide clearances required for the VScore tool path).

Eagle has a layer (no.102) specially for indicating VScore/VGroove. Some other tools (e.g. Mentor PADS) can generate whatever layer number you like, and you can place your VSCore lines in that.

If your fab accepts VScore in Edge.Cuts, the answer is obvious but also like to hear from other KiCad users what they do, and what their fabs expect.


#4

I have a Python script that does the panelization and draws VScore in the layer Eco1_User. At gerber export the script also exports that layer but then proceeds to change the gerber file to VCut according to the gerber X2 spec. I suppose one could just change the FileFunction line in the gerber file with a text editor, but scripting does it right every time. My fab accepted this without question. The relevant code is

##### Generate gerbers for Vcut
if Eco1_as_Vcut:
  pctl.SetLayer(pcbnew.Eco1_User)
  pctl.OpenPlotfile("Vcut", pcbnew.PLOT_FORMAT_GERBER, "Vcut")
  pctl.PlotLayer()
  pctl.ClosePlot()
  retval.append(pctl.GetPlotFileName())
  # Change Eco1.User to Vcut inside Gerber X2 file, see
  # https://www.ucamco.com/files/downloads/file/81/the_gerber_file_format_specification.pdf
  with open(pctl.GetPlotFileName(), "r+") as f: 
    contents=f.readlines()
    for i,line in enumerate(contents):
      if line=="%TF.FileFunction,Other,ECO1*%\n":
        contents[i]="%TF.FileFunction,Vcut*%\n"
    f.seek(0)
    f.truncate()
    f.write("".join(contents))

#5

I contacted my normal fab house (PCB Way) and they will also will just panelize them for me at no additional charge.

Easy enough I suppose!


#6

I don’t even mention panelization for any size unless explicitly reqired. Apart from that I roughly gauge the most efficient quantiy for small boards in accordance with the fab houses preferred raw board sizes. For the those 1"x1" board 50 pieces was a good number.