michaelgale / pcbflow

Python based Printed Circuit Board (PCB) layout and design package based on CuFlow.
BSD 3-Clause "New" or "Revised" License
128 stars 15 forks source link

Questions About the Project #8

Closed jmwright closed 7 months ago

jmwright commented 7 months ago

@michaelgale I noticed your name on this and thought I would take a look at this since you are also a member of the CadQuery community. It seems like this Python-based workflow could be a nice complement to mechanical design in CadQuery. I do have a couple of questions which I do not think were answered in the readme.

  1. The readme states that this library is experimental/alpha. Is it being used in production anywhere?
  2. I am assuming that it should be possible to create a design that can be configured to toggle between thru-hole and surface-mount parts. Is that a correct assumption? I do have a reason for asking this.
michaelgale commented 7 months ago
  1. I would say that this project is still 'beta' at best. It is not maintained sufficiently to declare it production-ready with confidence. Having said that, I have made functional PCBs with its output and I am aware of other folks using it such as this project featured on Hackaday.
  2. It would be theoretically possible to have a design with components which would have different footprints, e.g. between surface-mount and through-hole. However, there are two key considerations that will determine the success of this scheme:
    • The component has both flavours of footprint with same pinout. Components which share the same pinout between SMD/THT variants are likely in the minority. If your circuit definition/routing uses signal names rather than absolute pin numbers, then differences in pinout mapping will be less of an issue.
    • Different pin-out geometries. Even with components with identical pinouts among SMD and THT variants will almost always have different geometries. If the pcbflow design is routed using its typical "absolute" coordinate offsets and paths, then signals which used to connect for SMD might be routed incorrectly or with unexpected geometry using the THT variant.

Its definitely a YMMV scenario. If you set up your design with the goal of substituting footprints, you can ensure a better result by carefully choosing components and using signal/pin name references as much as possible when defining signal nets and corresponding routing. Lastly, I would strongly suggest using SKiDL for defining both the components and netlist of the circuit. SKiDL connects natively with KiCAD for the component libraries and will allow you to easily change footprint references for any part. The resulting SKiDL circuit can then provide pcbflow with a sound data source for part footprint geometries and circuit netlist.

Lastly, to be honest, I pretty much use KiCAD for almost all my circuit/PCB design projects. I have used pcbflow for small PCBs, but for more complex circuits where robust design rule checking and nuanced design geometry is required, KiCAD is the better tool.

jmwright commented 7 months ago

Thanks @michaelgale