I haven’t needed to do this myself in KiCad (have had people help me on other platforms). However, I believe user @madworm has done this before (he posted a picture here)
There is also a video about doing it from someone else here:
And a tutorial using Python, which is easier on the newer versions of KiCad: http://blog.borg.ch/?p=12
For what it’s worth, the latest revision of the development branch just added in capability to “Append Board” for a very basic attempt at panelization. It only works if PCBNew is started outside of a project. I haven’t tried it yet so I’m not sure how well it works, or if it would automatically propagate changes to the source board forward to the panel, or if you would need to constantly recreate it.
Obviously using the latest code requires compiling KiCad yourself, which can be a bit of a challenge, but KiCad WinBuilder works well on Windows for that.
It’s a very tedious task, especially so if the board shape is not square. Essentially you have to do everything by hand. The new openGL mode makes this quite a lot easier, as you can drag lines and arcs as needed.
My most “professional” panel is this one:
It’s got a frame, fiducials and tooling holes. I made the panel as an exercise and would only do it gain, if I absolutely had to (P & P assembly + paste stencil etc). For hand-assembled boards I would let the PCB manufacturer take care of everything and get individual boards. Some of them for some reason even charge you a “self-panelization” fee.
Unfortunately kicad doesn’t support cloning of boards. You will have to redo the whole panel if the design has changed, which is painful if there are a lot of small boards on the panel.
TLDR: simple panels are quite easy, anything else gets tedious very quickly.
It would probably be relatively straightforward to use the python scripting code in the latest source version(s) to make a command line program to generate a basic mxn panel from a source board. There are methods for cloning board, creating new board, adding lines for cutouts, etc. I’ve used it to make a program for adding rounded corner outlines to a board with good results, but obviously that’s a bit simpler task. There’s not much doc on-line, but pydoc works well.
Just for the ones wondering… you need to start pcbnew in stand alone, that is by opening it directly not from kicad, to get the Append board option in the menu.