This week’s post is relatively short, as I spent most of the time doing the actual routing, so nothing much to talk about here! However, I will highlight some of the concepts and considerations that are important while routing. First let me say that all the board connections have been routed and most of the 3D models have been assigned to the components. Only the oscillator, and the memory card socket don’t have 3D models yet. Well, that’s not the most important thing to start with, so let’s jump to the beginning.

Routing the signals

It is said that PCB routing is 90% component placements, and 10% actual routing. While these figures might be a bit exaggerated, the meaning holds true that component placement is crucial. Luckily, the components locations of last week did not change much and actually they were good enough that I was able route all connections without any problems. Also, last week I connected the important power and ground connections as well as the decoupling capacitors. After that, come the sensitive signals first. These include the oscillator and  Ethernet differential pairs.

In the case of the oscillator, the important things are to keep the tracks short, and in our case, match the lengths of the two tracks (to the FPGA, and to the PIC18). Also, it is better to avoid routing high speed signals near the oscillator signal. That was not a problem for our board. The oscillator is located at the middle between the FPGA and the PIC18, and no signals are routed next to it.

The differential pair also need some attentions. The important considerations are to be routed as close to each other as possible, and their length should be matched. Sending and receiving pairs should also be separated from each other to limit cross talk, and it is recommended not to put reference plains underneath the tracks (to decrease the capacitance between the plain and the tracks). Well, the last recommendation is not that strict, and when it is not possible, it is better to leave the plain as it is that to route a signal over a split plain. Finally, the filters connected to the pairs should be placed as close as possible to the jack.

Next, the FPGA configuration signals were routed followed by the rest of the FPGA to PIC18 connections. The thing to keep in mind when routing non-critical signals is that the shortest path most of the time is not the best route to take! The added benefit of less inductance (compared to a longer path) is not much but it might complicate the design greatly. So before routing any signal I had to form a general picture of were each signal should go and what is the best route to take. Moreover, I had to change some  of the general FPGA pins so routing will be easier.

Finally, I connected everything else. These connections were the user I/O pins on the board, as well as the SD card. The SD card, although should have higher priority than the I/O pins, was routed at the end as nothing else is routed at its locations. So all its connections were simply straight lines.

Splitting the power plain

Although we have 5 voltage levels on the board, yet, two of them (1.2V and 2.5V) are connected to the FPGA solely! So the regulators were placed next to the FPGA, while connecting the power to the FPGA through the internal power plain. The plain was split to contain two islands, one for each voltage level, while maintaining the 3.3V for the rest of the board.

Assigning 3D models to components

I am starting to enter the last part of the PCB design. Now I should add the silkscreen to the board, double check everything, and well, add the 3D models to the components. I started with the latter. Strangely, KiCAD does not accept the common 3d file formats, i.e. obj, 3ds, etc, nor the formats that the components providers have in their websites, such as STL and IGES! The only format it accepts is WRL. And in order to export this format, I had to download and install Wings3D just to convert stl to wrl! That’s not the most enjoyable work flow, but at least now I can see the components on the board.

That’s it for now. The board is almost finished, and hopefully you can get your hands on it soon. Till next time.



Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.