← Back to team overview

kicad-developers team mailing list archive

My thoughts on what would make Kicad the ideal program.


I haven't used Kicad much, but I'd like to talk a little about what I'd consider to be the ultimate program. I suspect that Kicad could be changed fairly quickly to meet most of these specifications.

These changes could be incorporated into Kicad, or if they don't want to, someone could create a branch off of Kicad to incorporate these changes, or Kicad could be modified to have a dual user interface, if they want to keepthe old one.

It is very important to reduce the amount of clicks a person needs to do. One way to do that is to make assumptions. FreePCB has an advantage in that area, 'cause it doesn't ask you to clearify clicks. FreePCB allows you to disable or mask things, which allows you to clearify your clicks, without the loss of time of a annoying popup menu. The program needs to be smart enough to know what is the most likely thing you are asking for.

Zooming in should clearify what you are asking for, but it doesn't in FreePCB. As far as I can tell, it doesn't seem to in Kicad either. There needs to be a way of adjusting (for the user to adjust) the mouse click accuracy, or how far from the actual click to look for something to select. That sizeneeds to change as you zoom in and out.

Click and drag, needs to be the most common function. It is rare to want toselect a whole block of stuff to move. That needs to be done with a menu command. The click and drag command needs to be reserved for moving trace segments, specifically "drag segment keep slope".

Kicad has an autorouter, and I don't know a lot about it, but many autorouters are useless, and others are only mildly helpful. With a little help, anautorouter could be extremely useful, that is, if it is changed to assist manual routing.

I would like to see an autorouter that routes a single trace, and responds to mouse clicks to change that trace path. Each time you click, it'll try to route close to where you clicked, changing the path accordingly. You'd then define a path with just a few clicks. Three or four clicks along the path you'd like, and it should route it right where you want it, finding the shortest path that hits those click marks.

There also needs to be a few options for the autorouting, with an easy way to switch between them. Does the autorouter move other traces out of the way? That needs to be an option. If you click between traces, it might ask permission to move those traces to make room, or it might simply do so without asking, depending on the options you choose.

If it is going to ask permission to move traces, it'd be nice if it showed the proposed new placement in draft style with the old placement in filled style, so you know what it'll do.

When you get done with the important traces, then the autorouter can do therest, but it must not move previoiusly placed traces, unless the user asked it to. The default setting should be not to move traces.

If you select a bunch of traces, you should get a few options that you can do with them. Drag or "drag segment keep slope" should be one option, whichwould drag one segment from each trace, keeping the distance between them the same as before. Segment Equal Distance should be another option, which would equally space the inner trace segments between the outer two trace segments. If the segments are not perfectly parallel, but close, they should be adjusted to be all parallel, if close to horizontal, vertical, or 45, they should all be set to exactly horizontal, vertical, or 45. Another optionwould be parallel, which would simply make them all parallel and if close also set to exactly horizontal, vertical, or 45.

If there's two segments that are colinear, drag segment keep slope should move them together, or combine them into one. Don't give an error message for that, either combine them into one or move them together. I saw that message earlier, and it struck me as odd. The program knows they are colinear, but it doesn't combine them.

Ideally individual nets should have their own clearance settings. Lots of other net settings too. Rats nest color, Trace color (which would probably add slash lines on the regular color or something), trace width (individual traces or segments could still have their own width). A manual routing flag. A short trace flag. A high freqency flag (which in future would tell the autorouter to keep a ground return path very close). Maybe some notes, that'd popup when you attempt to route a trace (existance of notes would automatically select the manual routing flag). 

The working layer should be on top of all other layers on the display, so you can see what you are doing.

Well, that's enough for now.


Follow ups