4-layer board design and Freerouting setup

Hello everyone,

I am planning to create my first 4-layer PCB using KiCad.
I’m using KiCad v8.0.4 and Freeroting v1.9.0.

I have a few questions regarding the setup of each layer and how to integrate it with Freeroute.

If you have any tips on configuring KiCad and Freerouting or any useful tutorials on multi-layer boards, I would greatly appreciate your help.

[Background]
I have completed the schematic and laid out the components.
Some of the wiring, specifically for power-related connections that need to be short and thick, has been done manually.
I would like to leave the remaining routing to Freerouting.

[Desired Operation]
Here’s what I want Freerouting to achieve:

I don’t want any traces other than the GND line on the 3rd layer (In2.Cu).
Eventually, I plan to turn this layer into a solid GND plane.

If possible, I would like Layer 1 (F.Cu) and Layer 4 (R.Cu) to be prioritized for signal routing.

Layer 2 (In1.Cu) should only be used when it’s not possible to route using just Layer 1, Layer 4, and Layer 3 (GND layer).

Please automatically place the vias necessary to connect the layers.

[Steps Taken]

a. In KiCad’s board settings, I opened the “Board Edit Layers” and set:

F.Cu as Signal
In1.Cu as Mixed
In2.Cu as Power Plane
B.Cu as Signal
b. In KiCad’s board settings, I opened the “Net Classes” and:

Added a GND-Class.
Assigned the GND net to the GND-Class.
c. In the PCB editor, I created a zone on Layer 3 (In2.Cu), connected it to the “GND Net,” and filled it.

[Results]

After running Freerouting, I encountered the following issues:

The GND lines of components on Layer 1 (F.Cu) and Layer 4 (R.Cu) were not routed at all.
I expected the vias to be placed correctly, connecting to the 3rd layer (In2.Cu), but this didn’t happen.

Layers 1 (F.Cu), 2 (In1.Cu), and 4 (R.Cu) were used equally.
This is likely because I didn’t set any priority for the layers, but I would like to prioritize routing on Layer 1 and Layer 4, and avoid using Layer 2.

Many long topics have been written on this blog over autorouters. At the moment I am still not convinced that FreeRouter is worth it’s money. I might give it a try when it’s capable of routing only a small section of a PCB which I mentioned n more detail in: An alternative freerouting plugin

That is what I expected. FreeRouter is not a very smart autorouter, it just does signals and treats everything equally. Is it even possible to set priorities or limits?

Reserving at least one layer for GND is a decent strategy for a 4-layer PCB. 2-layer PCB’s are cheaper, but much more difficult to design properly. Usually there is no room left for a proper GND plane. Such a PCB usually “works” but fails EMC tests.

If you have a GND plane then placing the vias manually is not such a big deal. Just start a track from an SMT pin, then press v to attach a via to the cursor, and [End] to place it. (A bit annoying those keys are so far apart on the keyboard).

1 Like

Hello,

Thank you for your advice.

Based on your suggestions, I manually connected all GND traces by using the third layer (In2.Cu) as a GND plane. As you mentioned, connecting the GND was surprisingly simple.

Afterwards, I adjusted the FreeRouting settings by assigning a higher cost only to the second layer (In1.Cu), while keeping the costs of the first layer (F.Cu) and fourth layer (B.Cu) the same. Additionally, I prohibited the use of the third layer (In2.Cu) in FreeRouting.

With these settings, I ran the autorouter and achieved results that were mostly in line with what I was aiming for. The majority of the traces were routed on F.Cu and B.Cu, with only a few difficult traces being placed on In1.Cu.

While two-layer boards are convenient, I find it challenging to achieve stable performance with high-density designs. Furthermore, the manufacturing costs of four-layer and six-layer boards have recently become almost comparable to two-layer boards. Based on this experience, I plan to continue exploring multilayer boards in the future.

Thank you very much.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.