Blind and buried Vias
A blind via is a copper plated hole, just like a regular via, except that it interconnects only one external layer of the PCB with one or more internal layers, but does not go all the way through the board. A buried via is a copper plated hole that interconnects one or more internal layers, but does not connect to an external layer, hence the hole is completely internal or buried within the board.
Why do we need blind/buried vias ?
Blind and buried vias are used in the pcb industry for over a decade now to save real estate on pcb layouts, so we can say that it's proven technology, which geda/pcb should have implemented years ago.
What do we need for implementation ?
geda/pcb should become aware of the layer stack order.
This can be done by one or more attributes on the board level stating the stacking order, this attribute would not need to break the current file format as attributes are already a part of the format specification.
Adding or changing the stacking order should lead to an action applying the new information on any existing blind/buried vias and check for clashes or shorts (DRC).
Vias are currently defined as a board level entity, existing on all layers, existing on all layer groups.
Blind/buried vias need to be defined on the board level.
Since two vias may be present at the same x,y-coordinate on different z-direction levels, this may give problems with the current DRC functionality.
For a blind via DRC functionality should allow for a pad on a surface layer at the same x,y-coordinate as the buried via.
Developer skills required:
- C coding skills.
- thorough understanding of the functionality of relevant parts of the code base:
-- knowledge of the DRC functionality.
-- knowledge of the autorouter functionality.
-- knowledge of gerber format.
-- knowledge of gcode format.
-- knowledge of postscript format.
-- knowledge of the GTK GUI code.
-- knowledge of the Lesstif GUI code.
More information on the geda-user list:
Implement formal layer stack : TODO
Test/check functionality formal layer stack: TODO
Adapt internal data structures: DONE
Test/check internal data structures: TODO
Implement/adapt GTK drawing routines: DONE
Test/check GTK drawing routines: DONE
Implement/adapt Lesstif drawing routines: DONE
Test/check Lesstif drawing routines: DONE
Adapt drill hole/via reporting function: DONE
Test/check drill hole/via reporting function: TODO
Adapt DRC functionality: TODO
Test/check DRC functionality: TODO
Adapt the Autorouter: TODO
Test/check the Autorouter: TODO
Adapt gerber exporter: DONE
Test/check gerber exporter: DONE
Adapt gcode exporter: TODO
Test/check gcode exporter: TODO
Adapt ps exporter: DONE
Test/check ps exporter: DONE
More work items to be identified: TODO
Merge into master: TODO