← Back to team overview

kicad-developers team mailing list archive

Re: Feedback and wishlist


Lorenzo wrote:
OK, now for my dose of feedback from colleagues (and me :P)

eeschema now is IMHO pretty good: compared to orcad capture 9 (the other eda I have used and pretty much prevailing around there, if only because it's relatively cheap. OK we're at release 16 but I don't have it) the only 'useful' things is missing are:

- Sheet folders (for 'flat hierarchies'), I can leave without them...
- MAYBE bus ports (only maybe)
- Better navigation (the 'find' in eeschema is just the minimum)

For example, navigating through offsheet connectors (our global ports). A VERY useful thing would be to have a cross reference shown beside the connector itself for following it in print (something like: Sheet 2/A3, 3/B3 ecc). And of course a click-trough like for hierarchical sheets. View bookmarks as a bonus for really large work.

Also the property grid is useful (and could replace cvpcb, as already proposed).

Other things concerning the system as a whole:

- Net names should be -stable- i.e. fixed once assigned. Otherwise things would change at every netlist generation. For example now you have to place a label on every net used for copper zones, otherwise the zones just disappear, because the net name changed. Also, it would be possible to implement the following thing...

- Net properties. Something like classes in Eagle. Things I missed in eeschema/pcbnew (net properties are mostly for use during layout):
= Default trace width, minimum trace width and via padstack to use. A 40A track should be obviously larger than a thermocouple signal one :D VERY useful for drc and during routing
= Trace clearance: a 230VAC has usually a 1.5mm clearance. SSOP have pad at 6-7mils distance... the absolute limit in drc is useful for process limits (i.e. they can't etch tracks smaller than 8mil or something similar). A REALLY GOOD function would be a matrix clearance (i.e. a 230VAC has a clearance of 1.5mm with another 230VAC track, but it needs to be 5-8mm with a SELV track). Maybe it's too much, but a per-net clearance would be really useful (shouldn't be too difficult to implement).
= Some package allows layer affinity (i.e., this net can go only to layer 1,2 and 3)... never used it. Maybe with a good autorouter... or maybe because I never done work with more than 4 copper layers...
= Naming the net without placing a label? could be useful for 'critical' track, like guard loops or high impedence amplifier feedbacks. A label on the sheet is only noise, but during routing I'd like to be warned that it's an important track. Actually, I simply route the important ones first of all, but in a complex board or during ripup everything can happen (real life story: the thermocouple signal above was routed beside the main MPU clock; that gave ehrm... interesting readings; luckily the PIC can do an A/D conversion with the main HSO turned off)

- Someone could be interested in more graphical flair... the orcad tutorial for example pastes a bmp containing a waveform in the sheet as comment; IIRC there's already someone working on this, with beziers and stuff. The same goes for font machinery. But it should handle at least PS plotting (which under Un*x is the main print facility). Just remember it doesn't need to be an Illustrator clone :D

- Some way to customize the title block... the reason because they ask us DXF plots is to paste it in a sheet with their personal title block :P:P. But that would mean to have a full CAD system, so maybe just a configuration with a list of field/line position would suffice (something like a metafile). In fact IIRC the internal title block is already table driven in this way :D

Now, for the layout stuff:

- A syntax for mixed unit input; now it works with the 'external' unit (inches or mils). It shouldn't be hard to add a parser to the 'reader' routine to handle a unit suffix. This is because the pcb industry is brain damages, in Italy at least :P it's usual to say: a 12mil track with 1,5mm clearance and a 0,6mm drill. So we could extend the input box parser to accept stuff like 0,012", 1,5mm and maybe 12mil. The grid dialog suffers for this because it's the ONLY place where you specify the unit for BOTH dimensions. And most SMD packages are designed in mm with imperial pitch (like I said, it's a braindead industry :P)

- A flag for nonplated hole and separate drill tape for these. I'm hacking around this with some external script.

- Track/padstack classes.
I want to code net classes. I cannot get to it soon however. I want them to work well with the specctra export/import. I have a plan to do this work, but am busy for the next few months.

The track width history is really inadequate (WHEN it works :P). Also I don't get why we have an alternate via drill without an alternate via size... I'd like a combo filled with a track 'style' specified in advance: ie, small tracks: 12mil,0.8mm via,drilled 0.5mm; big tracks: 200mil, 2mm via, drilled 1.5mm; and so one. This could be combined with net properties above to simplify routing (and have better DRC, too).

- A shove function... everybody has this today... similar to 'drag keeping slope' but pushing away tracks to clearance. We can live without it but it's VERY useful. Of course we could also route with red and blue ink on transparent paper :D

I question whether we could ever muster enough resources to come even close to what freerouter offers NOW. If the specctra export import to freerouter is seemless, complete with net classes, I will use freerouter. Kicad is unlikely to ever match freerouter's capabilities. Just ask Alfons what he has invested into it.


Other stuff that could be useful/interesting:
- Libraries fetched from a DB, like orcad CIS. I don't know if wx has standard DB access classes or if we need to choose between mysql/postgres/whatever. The important thing is that it has to be a NETWORK db. So we could avoid mailing colleagues new libraries and package :D (we keep them under svn, by the way) And of course there it would be a lot more manageable (aliases, order number and such things)

- Vertical component clearance. Felt the need for this one or two times only, I simply drawn on a layer the zone of interest and checked the components in it where not taller than the available space. IIRC orcad handles them as special obstructions.

- The fanout function could be useful (it routes power pins with stubs thru via to power planes). I have not done a lot of work with 4 layer boards, so I have no idea on how much time could save in routing.

Follow ups