Giter Club home page Giter Club logo

Comments (14)

zignig avatar zignig commented on June 11, 2024 1

good work so far ;) , I think a general clever solver to start ( http://alumni.media.mit.edu/~jorkin/goap.html ) and then a specific cortex ( https://en.wikipedia.org/wiki/Neuroevolution_of_augmenting_topologies ) to solve internal kinks.

make a archetypal first an then specify.

from pcbflow.

xesscorp avatar xesscorp commented on June 11, 2024 1

Thank you!

Let me know if there are SKiDL modifications you would find useful. I can make a separate branch for any pcbflow-specific modifications.

from pcbflow.

michaelgale avatar michaelgale commented on June 11, 2024

I was thinking about integration with skidl--it seems like a logical mashup. However, it would be a non-trivial amount of work. Taking this experiment into a full EDA tool with netlist consistency between "schematic" and PCB would like need a clean sheet redesign. I view this tool as a convenient way of making trivial/quickie PCBs--things like breakout boards, test jigs, simple MCUs, etc.--without requiring the use of a full EDA tool. I also see how a single python script can also generate mechanical assets (like a enclosure) using CadQuery and the PCB using pcbflow. I guess that's where I'm coming from with this experiment--to see if I can generate simple items which include a PCB, using pure python scripting.

from pcbflow.

zignig avatar zignig commented on June 11, 2024

@jamesbowman @xesscorp how about it?

from pcbflow.

jamesbowman avatar jamesbowman commented on June 11, 2024

I'm tending to agree with @michaelgale -- for example these boards, which do have arbitrary hookups, yet still have no routing.

https://tinyletter.com/jamesbowman/letters/crossbars-in-cuflow

image

A next stepping stone would be a top-level script that specified 2 components (e.g. an MCU and a header), their connections, and it would generate everything from that.

from pcbflow.

xesscorp avatar xesscorp commented on June 11, 2024

I know a bit about CuFlow, but not the details about how to actually specify a layout. I assume pcbflow is some framework around that which adds functionality, although I don't know what. I can see SKiDL used for generating part/net connectivity, but not how easy/hard that would be to integrate into CuFlow. nmigen is used for designing digital systems, typically for FPGAs, but how does that relate to the PCB design? Does the board routing flow back to the I/O pin assignments? Then there's evolutionary generative design and multi-agents which I have no idea what their involvement is. Some kind of optimization?

Is there a description of what such a system would do and how it would be used? What are the inputs from the designer and what are the outputs from the system? I'm lost.

from pcbflow.

michaelgale avatar michaelgale commented on June 11, 2024

@xesscorp I think @zignig is simply looking at blue-sky possibilities for a python based EDA system which combine strengths from several projects. As it applies to PCB design, the use of optimization algorithms/AI techniques has been a holy-grail of EDA tools for as long as I can remember!

My goals for pcbflow are very modest. I have taken @jamesbowman 's CuFlow and have modularized and extended it, with the goal to make it more general purpose and accessible. As I dig under the hood of CuFlow/pcbflow, I recognize that there is a basic representation of nets and physical pin/pad assignments; however, it is not strictly enforced, or even necessary to specify for the purposes of making a simple PCB. However, skidl's mature, robust, and general purpose framework for capturing circuit design/nets/component attributes etc. is VERY tempting to integrate with pcbflow. I can imagine the following workflow:

  1. Use skidl's semantics to add components and make net connections
  2. Adapt pcbflow to natively use a skidl object as its data source.
  3. pcbflow is used to define the physical attributes of the PCB (size, layer-stack, annotations, logos, holes, cutouts, design rules, etc.)
  4. Users place available skidl components physically on the PCB (location, orientation, etc.)
  5. Users can optionally assign global network fills to any layers or polygon "patches" (e.g. GND on layer 2, etc.)
  6. Users then describe routing actions to connect nets, e.g. fanout to vias tied to plane layers, turtle style point to point routing of single nets or entire "bus/river" wide nets, and eventually semi/fully-automated routing tools (if developed)
  7. Finally, pcbflow can export whatever design assets are required, e.g. SVG previews, Gerbers for fab, etc.

from pcbflow.

xesscorp avatar xesscorp commented on June 11, 2024

OK, I understand.

You might want to look at this KiCon 2019 talk about programmatic creation of PCBs. It's done with C# but it may have some ideas you could use.

from pcbflow.

michaelgale avatar michaelgale commented on June 11, 2024

@xesscorp Cool! Thanks for the link--I'm sure there's some good nuggets of wisdom in there. If anything it will be interesting to hear about how other folks attempt to solve the same problems.

FYI, I'm digging into skidl to understand how it works and how it might be adapted to feed scripted PCB generation. Kudos for making such a clever and useful tool and nicely documented code!

from pcbflow.

zignig avatar zignig commented on June 11, 2024

Blue sky is exactly right, I've wanted to make a declarative system that will ask for solutions if it can't find one. Skidl, kicad, cadquery, cqparts, nmigen etc.... with a single front end. Anyway.. carry on.

from pcbflow.

xesscorp avatar xesscorp commented on June 11, 2024

I wasn't aware of cadquery/cqparts. Looks interesting.

On the nmigen end of the design spectrum, you might want to look at pymtl. Then there's jitx which is a commercial offering that sits somewhere near SKiDL.

Weaving all these pieces together to do generalized electronic/mechanical design seems "challenging".

from pcbflow.

zignig avatar zignig commented on June 11, 2024

I'm not sure if this is a thing. But sleep deprivation is cheap.

I did not expect to get any answers from the internet awesome.

I would like to make a python interface that takes a keyword tree and attempts to build a physibal.

declare a struct

::box
::pcb
48V:: -> 5v

AND the system builds a thing/

I should probably start a new repo.

from pcbflow.

zignig avatar zignig commented on June 11, 2024

As much as this is awseome,We are going to start a new thread. zignig/artifex#1 . WE need a declarative interface for all things physible.

from pcbflow.

michaelgale avatar michaelgale commented on June 11, 2024

Closing this issue since discussion has now moved to @zignig / artifex

from pcbflow.

Related Issues (6)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.