Then essentially you want to write an autorouter. Modern autorouting is incredibly powerful, but it's also incredibly stupid. You really need to know exactly when to use it and how to set it up so that it fulfills all your design requirements.
Part of the point of PCB design is that it's a _design_ process. You need to make executive decisions about where you can place those components. Things like connectors and interfaces absolutely need to be manually placed (or at least have defined locations).
In principle what you're asking is simple - you pass in the netlist and manually place important components and then let the autorouter do the rest. In practice you have to think about:
- Grounding schemes
- Differential traces
- Thermal management
- Isolation
- Analog/Digital separation
- Grounding/stitch vias
- Potential room for expansion in the future so board revisions have minimal impact
Don't forget that at least some of PCB design is 'artistic'. Your boards should be beautiful!
Part of the point of PCB design is that it's a _design_ process. You need to make executive decisions about where you can place those components. Things like connectors and interfaces absolutely need to be manually placed (or at least have defined locations).
In principle what you're asking is simple - you pass in the netlist and manually place important components and then let the autorouter do the rest. In practice you have to think about:
- Grounding schemes - Differential traces - Thermal management - Isolation - Analog/Digital separation - Grounding/stitch vias - Potential room for expansion in the future so board revisions have minimal impact
Don't forget that at least some of PCB design is 'artistic'. Your boards should be beautiful!