Skip to content
This repository has been archived by the owner. It is now read-only.

Add interactive push and shove router from CERN/kicad/horizon #1

Closed
kliment opened this issue Feb 9, 2018 · 18 comments

Comments

@kliment
Copy link

commented Feb 9, 2018

Having reviewed the code and horizon's integration, this should be quite easy to add and gives a lot of useful functionality. If nobody objects, I'd like to start work on it as soon as the board editor is in a usable state.

@ubruhin

This comment has been minimized.

Copy link
Member

commented Feb 10, 2018

Yes, that would be great. Do you know if the router also supports a very simple routing mode which just creates the traces where the user clicks, without any obstacle detection and so on? I mean, similar to the "router" which is currently implemented in LibrePCB. If so, we could completely remove our own router and replace it by the kicad router.

Btw, If you have some links to code and/or documentation of the kicad router, could you post them here so we have quick access to the most important information?

@dbrgn

This comment has been minimized.

Copy link
Member

commented Feb 15, 2018

Do you know if the router also supports a very simple routing mode which just creates the traces where the user clicks, without any obstacle detection and so on?

Yes, I think so. The interactive router has three modes:

screenshot

If you use "highlight collisions", then no obstacle avoidance is being done.

@ubruhin

This comment has been minimized.

Copy link
Member

commented Aug 8, 2018

I started a first attempt with KiCads PNS router, just to get a first impression how much effort is required to integrate it. Still hard to say, but at least I already had a first "hurray"-effect 😃

peek 2018-08-08 23-06

The code is hacky and buggy like hell, and it doesn't work at all (nothing gets really connected), but I still like it already 😁

@ubruhin

This comment has been minimized.

Copy link
Member

commented Aug 8, 2018

Oh, I just (re?)read your comment @kliment

If nobody objects, I'd like to start work on it as soon as the board editor is in a usable state.

What do you mean with "usable state"? And are you still interested in working on this?

Actually I wonder whether I should properly implement the current routing tool to make it usable or it's better to completely replace the current routing tool with the PNS router. If the PNS router also supports a simple routing mode, and the effort to integrate it is similar to the effort needed for improving the current router, then it would make sense to directly integrate the PNS router...

@dbrgn

This comment has been minimized.

Copy link
Member

commented Aug 9, 2018

Woahh, that is fantastic! I didn't expect an initial integration attempt that fast 🎉

Actually I wonder whether I should properly implement the current routing tool to make it usable or it's better to completely replace the current routing tool with the PNS router. If the PNS router also supports a simple routing mode, and the effort to integrate it is similar to the effort needed for improving the current router, then it would make sense to directly integrate the PNS router...

I really like the Kicad router, so I'd be 👍 for that.

@rnestler

This comment has been minimized.

Copy link
Member

commented Aug 13, 2018

I started a first attempt with KiCads PNS router, just to get a first impression how much effort is required to integrate it. Still hard to say, but at least I already had a first "hurray"-effect smiley

Do you have this initial version on some branch?

@ubruhin

This comment has been minimized.

Copy link
Member

commented Aug 13, 2018

Do you have this initial version on some branch?

Yes: https://github.com/LibrePCB/LibrePCB/tree/add-pns-router

@dbrgn

This comment has been minimized.

Copy link
Member

commented Aug 13, 2018

Since at least 3 projects use this router now (KiCAD, Horizon, LibrePCB) it might be interesting to extract it into a separate repository.

Maybe we could suggest this to the original authors once the PoC is done.

@ubruhin

This comment has been minimized.

Copy link
Member

commented Aug 13, 2018

Since at least 3 projects use this router now (KiCAD, Horizon, LibrePCB) it might be interesting to extract it into a separate repository.

Yes, that would really be great! 👍

Maybe we could suggest this to the original authors once the PoC is done.

Or even now, I don't see a reason why to wait ;)

Someone interested to do it? @kliment?

@kliment

This comment has been minimized.

Copy link
Author

commented Aug 13, 2018

The original authors are CERN, as part of the KiCad project. Since they're in the middle of their most important release ever I doubt this is a good time to ask them to do major code base restructuring.

@dbrgn

This comment has been minimized.

Copy link
Member

commented Aug 13, 2018

That's not a major code base restructuring. The router is quite standalone, so it shouldn't be too hard to extract it into a separate repository.

I'll take a look if I find a developer forum or mailing list to ask :)

@kliment

This comment has been minimized.

Copy link
Author

commented Aug 13, 2018

The people in charge of the PnR are Tomasz Wlostowski tomasz.wlostowski@cern.ch and Maciej Suminski maciej.suminski@cern.ch

@dbrgn

This comment has been minimized.

Copy link
Member

commented Aug 13, 2018

@kliment thanks! :)

@dbrgn

This comment has been minimized.

Copy link
Member

commented Aug 15, 2018

Reply: At the moment they're not interested in extracting the code into a standalone library. That's fine, we can simply copy the router (it's GPLv3+ licensed).

@ubruhin

This comment has been minimized.

Copy link
Member

commented Aug 16, 2018

IMHO it was pretty clear that they are not interested in extracting the code 😉 Horizon and LibrePCB would have much more benefit, so basically it's our job to create such a library. And if we do it well (I think about CI with many compilers, and even unit/integration tests for the router), KiCad developers may still be interested some time in future to use the standalone library instead of their own copy.

So it would be great if someone would start creating such a standalone library :)

@rnestler

This comment has been minimized.

Copy link
Member

commented Oct 29, 2018

So it would be great if someone would start creating such a standalone library :)

I can give it a try. I'll do it in my personal GitHub account first, we can then still move it to some organization if needed.

@rnestler rnestler self-assigned this Oct 29, 2018

@ubruhin

This comment has been minimized.

Copy link
Member

commented Oct 29, 2018

I can give it a try. I'll do it in my personal GitHub account first, we can then still move it to some organization if needed.

Nice! 👍 😃

@ubruhin

This comment has been minimized.

@ubruhin ubruhin closed this Dec 14, 2018

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
4 participants
You can’t perform that action at this time.