Re: [Kicad-developers] layer based constraints

2013-05-14 Thread Simon Huwyler
I have uploaded a branch. It’s still the version with simple constraints for 
layers which won’t probably be what we want.

But if you feel like getting a hands-on-experience of how the 
however-layer-dependent constraints could “look and feel” like, feel free to 
try it out.
Select the option to show clearances for all tracks. I really like it this way.

Unfortunately I haven’t had much time to do more investigations of how the 
constraints should and could look like (5 months old twins, Mummy is out of 
house, Daddy has to look after...) 
But I will have a look at it asap!

Best regards
Simon

From: Dick Hollenbeck 
Sent: Wednesday, May 08, 2013 2:42 PM
To: Simon Huwyler 
Cc: KiCad Developers ; Lorenzo Marcantonio 
Subject: Re: [Kicad-developers] layer based constraints


On May 8, 2013 7:31 AM, Dick Hollenbeck d...@softplc.com wrote:


 On May 8, 2013 7:24 AM, Simon Huwyler simon.huwy...@bluewin.ch wrote:
 
  Kicad  evolves based on individual need.  Try and stay close to your
  individual use cases, else you may end up creating something few will use.
  Einstein: as simple as possible, but not simpler.
 
 
  So, if I get you right, the whole KiCad repository is merely a huge 
  collection of branches each one created for personal needs (as in my case 
  the very special need to deal with _fabrication_ layer constraints), and 
  only time will show what turns out to be a feature that should be taken 
  into the main branch?
 
  So, my approch was not that bad, indeed! :-) Therefore, I should upload 
  this branch, even knowing that it is useful for _me_ and probably no one 
  else?
  Sorry for these newbie-ish questions. But this is really a whole new world 
  for me. :-) I was quite reluctant doing so, because I thought I should only 
  contribute things that are really useful to others and have a chance to 
  eventually make it to the main branch.

 This approach is now common in launchpad hosted projects and at github.

 Your blueprint idea is worth a try.  I don't know how good its UI is. 

A forum with topic specific threads might be more useful.  Rate of improvement 
in launchpad is slow at this point.  Shuttleworth is chasing bigger fish.  No 
sign of the $100, 000, 000 investment at github either.  They still cannot even 
display source lines wider than about 80 characters.  But free only buys you so 
much.



But often great ideas are lost in the  stream of the mailing list.

 
 
 
  -Ursprüngliche Nachricht- From: Lorenzo Marcantonio
  Sent: Wednesday, May 08, 2013 2:12 PM
 
  To: Kicad Developers
  Subject: Re: [Kicad-developers] layer based constraints
 
  On Wed, May 08, 2013 at 07:03:48AM -0500, Dick Hollenbeck wrote:
 
  Alfons, in munich, worked for zucken (spelling), an eda company, for 15
  years, well bfore writing freerouter.  His UI includes netclass features.
  It is not obvious that they merely mimic the specctra spec.  If not, is
  this his experience being injected to trump something he thought was
  imperfect?
 
 
  I can't say... SPECCTRA was a pre-existing product, and simply became the
  defacto interface. Maybe it's simply well engineered for the things it
  needs to do, but then every company will 'personalize' it depending on
  the requirements (so they can say our specctra is better than yours!).
  The same freerouter AFAIK don't implement it in full (no arcs, for
  example, seeing the kicad code).
 
  Or maybe the author of freerouter simply added the extra features
  because they were convenient (and to hell with the specctra standard).
 
  Kicad  evolves based on individual need.  Try and stay close to your
  individual use cases, else you may end up creating something few will use.
  Einstein: as simple as possible, but not simpler.
 
 
  That's why we are discussing if/how enhanced rules can be applied.
 
  -- 
  Lorenzo Marcantonio
  Logos Srl
 
  ___
  Mailing list: https://launchpad.net/~kicad-developers
  Post to : kicad-developers@lists.launchpad.net
  Unsubscribe : https://launchpad.net/~kicad-developers
  More help   : https://help.launchpad.net/ListHelp 
 
  ___
  Mailing list: https://launchpad.net/~kicad-developers
  Post to : kicad-developers@lists.launchpad.net
  Unsubscribe : https://launchpad.net/~kicad-developers
  More help   : https://help.launchpad.net/ListHelp

wlEmoticon-smile[1].png___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] layer based constraints

2013-05-14 Thread Simon Huwyler
bzr branch lp:~simon-huwyler/kicad/layerConstraints

From: Simon Huwyler 
Sent: Tuesday, May 14, 2013 11:48 AM
To: Dick Hollenbeck 
Cc: KiCad Developers 
Subject: Re: [Kicad-developers] layer based constraints

I have uploaded a branch. It’s still the version with simple constraints for 
layers which won’t probably be what we want.

But if you feel like getting a hands-on-experience of how the 
however-layer-dependent constraints could “look and feel” like, feel free to 
try it out.
Select the option to show clearances for all tracks. I really like it this way.

Unfortunately I haven’t had much time to do more investigations of how the 
constraints should and could look like (5 months old twins, Mummy is out of 
house, Daddy has to look after...) 
But I will have a look at it asap!

Best regards
Simon

From: Dick Hollenbeck 
Sent: Wednesday, May 08, 2013 2:42 PM
To: Simon Huwyler 
Cc: KiCad Developers ; Lorenzo Marcantonio 
Subject: Re: [Kicad-developers] layer based constraints


On May 8, 2013 7:31 AM, Dick Hollenbeck d...@softplc.com wrote:


 On May 8, 2013 7:24 AM, Simon Huwyler simon.huwy...@bluewin.ch wrote:
 
  Kicad  evolves based on individual need.  Try and stay close to your
  individual use cases, else you may end up creating something few will use.
  Einstein: as simple as possible, but not simpler.
 
 
  So, if I get you right, the whole KiCad repository is merely a huge 
  collection of branches each one created for personal needs (as in my case 
  the very special need to deal with _fabrication_ layer constraints), and 
  only time will show what turns out to be a feature that should be taken 
  into the main branch?
 
  So, my approch was not that bad, indeed! :-) Therefore, I should upload 
  this branch, even knowing that it is useful for _me_ and probably no one 
  else?
  Sorry for these newbie-ish questions. But this is really a whole new world 
  for me. :-) I was quite reluctant doing so, because I thought I should only 
  contribute things that are really useful to others and have a chance to 
  eventually make it to the main branch.

 This approach is now common in launchpad hosted projects and at github.

 Your blueprint idea is worth a try.  I don't know how good its UI is. 

A forum with topic specific threads might be more useful.  Rate of improvement 
in launchpad is slow at this point.  Shuttleworth is chasing bigger fish.  No 
sign of the $100, 000, 000 investment at github either.  They still cannot even 
display source lines wider than about 80 characters.  But free only buys you so 
much.



But often great ideas are lost in the  stream of the mailing list.

 
 
 
  -Ursprüngliche Nachricht- From: Lorenzo Marcantonio
  Sent: Wednesday, May 08, 2013 2:12 PM
 
  To: Kicad Developers
  Subject: Re: [Kicad-developers] layer based constraints
 
  On Wed, May 08, 2013 at 07:03:48AM -0500, Dick Hollenbeck wrote:
 
  Alfons, in munich, worked for zucken (spelling), an eda company, for 15
  years, well bfore writing freerouter.  His UI includes netclass features.
  It is not obvious that they merely mimic the specctra spec.  If not, is
  this his experience being injected to trump something he thought was
  imperfect?
 
 
  I can't say... SPECCTRA was a pre-existing product, and simply became the
  defacto interface. Maybe it's simply well engineered for the things it
  needs to do, but then every company will 'personalize' it depending on
  the requirements (so they can say our specctra is better than yours!).
  The same freerouter AFAIK don't implement it in full (no arcs, for
  example, seeing the kicad code).
 
  Or maybe the author of freerouter simply added the extra features
  because they were convenient (and to hell with the specctra standard).
 
  Kicad  evolves based on individual need.  Try and stay close to your
  individual use cases, else you may end up creating something few will use.
  Einstein: as simple as possible, but not simpler.
 
 
  That's why we are discussing if/how enhanced rules can be applied.
 
  -- 
  Lorenzo Marcantonio
  Logos Srl
 
  ___
  Mailing list: https://launchpad.net/~kicad-developers
  Post to : kicad-developers@lists.launchpad.net
  Unsubscribe : https://launchpad.net/~kicad-developers
  More help   : https://help.launchpad.net/ListHelp 
 
  ___
  Mailing list: https://launchpad.net/~kicad-developers
  Post to : kicad-developers@lists.launchpad.net
  Unsubscribe : https://launchpad.net/~kicad-developers
  More help   : https://help.launchpad.net/ListHelp





___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp
wlEmoticon-smile[1

Re: [Kicad-developers] layer based constraints

2013-05-08 Thread Simon Huwyler
After sleeping over it, I see the whole thing a little bit differently. In 
contrast to what I always said about how layer-based constraints should work 
(in terms of UI), I now think, that, while my approach is perfect for my 
problem to solve, it may, as you folks said, not be perfect for other users. I 
learned that these layer-dependent manufacturing constraints are quite unusual, 
and the well-known way to handle layer-based constraints, the way specctra does 
it, appears to be more complicated to solf my problem, but is on the other hand 
WAY more flexible. And it appears to be the standard.
Then, a layer based constraint is often motivated by impedance matching. And 
from this point of view, it must be connected to the net class, of course.

Now, still another thing: It’s been a while when I was working with Protel (now 
Altium designer), but I mean to remember that there you could enter three 
different widths: A minimal, a maximal and “standard”. This seems to be a good 
thing to me, because it is normally a bad idea to always stress the constraints 
to the limit, because of the yield.

So, why not implement this also? And how about clearance? Standard vs minimal 
clearance (max doesn’t make sense). Normally KiCad guides you to keep the 
standard clearance, but you may reduce the clearance. This is not quite as easy 
as the “standard width—minimal width” feature in terms of how to present the 
feature to the user, but, it may still bee very cool.

From the technical point of view, I was quite surprised how easy it was to 
implement what I implemented. Of course I know about the 80-20 roule, but I 
certainly have 80% of functionality implemented, therefore 20% time effort. – 
Very cool things are very well achievable!

Maybe “layer based constraints” is not any more a good term, but I would really 
like to start a blueprint on this. Maybe called something like “constraint 
system” or so...?

I just think that now that There will be the push-n-shove router, KiCad becomes 
even more sophisticated, and I think the constraint possibilities become too 
limited compared to the overall project features.

uh, another thing, I think this has also been mentioned before: It should be an 
absolute must to be able to define net classes in eeschema. I think, from the 
technical point of view, this should be easy.


But I’m still not quite sure about where I, you, we stand about the motivation 
to do something like this. I have the impression that there is a reluctance in 
accepting new features at the moment because the main effort is based on 
getting/keeping the whole package stable and consistent. I myself woul be very 
eager to help implementing such a thing, but if it is just the wrong time now, 
I would understand that, of course.
On the other hand, if you folks don’t think there should be an improvement on 
the constraint system at all, then I disagree but – of course – accept that, 
too.  Even so, KiCad is great!

And then, I must admit, that I have absolutely no “hands-on-experience” in 
working for an open-source project and I have no clue about the “work-flow”. I 
had the somewhat naïve impression that everyone could just contribute something 
and everyone was happy to take it. Of course this would lead to a complete 
mess.  

Greets
Simon

From: Dick Hollenbeck 
Sent: Wednesday, May 08, 2013 4:09 AM
To: Simon Huwyler 
Cc: KiCad Developers 
Subject: Re: [Kicad-developers] layer based constraints

Load source specctra_import.cpp.

In the comments near the top, look for specctra.pdf.  tells where.

On May 7, 2013 6:20 PM, Simon Huwyler simon.huwy...@bluewin.ch wrote:

  A short google consultation showed me this:

  SPECCTRA FOR ORCAD AUTOROUTER
  SPECCTRA for OrCAD is well known for its
  comprehensive feature set. The extensive rule
  set can control a wide range of constraints
  from default board-level rules to rules by net
  and net class.


  default board-level rules sounds to me like something like this.
  But unfortunately I didn't find anything yet, and since it's twenty past one 
I'll call it a day for now. :-)

  Dick, could you tell me where I can find this pdf? Thanks!

  -Ursprüngliche Nachricht- From: Simon Huwyler
  Sent: Wednesday, May 08, 2013 1:09 AM
  To: Dick Hollenbeck
  Cc: kicad-developers@lists.launchpad.net
  Subject: Re: [Kicad-developers] layer based constraints


Page 17 of the specctra.pdf file I sent you a couple of weeks ago shows the
class_descriptor.


  What PDF file? I didn't get any. But of course I should find some
  information about this.


  ___
  Mailing list: https://launchpad.net/~kicad-developers
  Post to : kicad-developers@lists.launchpad.net
  Unsubscribe : https://launchpad.net/~kicad-developers
  More help   : https://help.launchpad.net/ListHelp 
wlEmoticon-smile[1].png___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad

Re: [Kicad-developers] layer based constraints

2013-05-08 Thread Simon Huwyler
uh, another thing, I think this has also been mentioned before: It should 
be an absolute must to be able to define net classes in eeschema. I 
think, from the technical point of view, this should be easy.


At least netnames without polluting the sheet with label should be the
minimum. Netname to netname association would be useful but not truly
essential. It's more or less shifting the dialog from pcbnew to eeschema
and extending the netlist, anyway.


What about (I'm just brain-storming now) some graphical way? For example 
right click on a wire, then add to net class..., remove from 
netclass... - something like that?



-Ursprüngliche Nachricht- 
From: Lorenzo Marcantonio

Sent: Wednesday, May 08, 2013 10:17 AM
To: Kicad Developers
Subject: Re: [Kicad-developers] layer based constraints

On Wed, May 08, 2013 at 09:37:53AM +0200, Simon Huwyler wrote:
Now, still another thing: It’s been a while when I was working with Protel 
(now Altium designer), but I mean to remember that there you could enter 
three different widths: A minimal, a maximal and “standard”. This seems to 
be a good thing to me, because it is normally a bad idea to always stress 
the constraints to the limit, because of the yield.


For impedance matching too... however checking 'maximum' distance would
be a little complex/expensive. Maybe only if explicity requested.

I just think that now that There will be the push-n-shove router, KiCad 
becomes even more sophisticated, and I think the constraint possibilities 
become too limited compared to the overall project features.


Layer constraint *could* be useful for some applications; the
'programmable' constraint interface could also be considered (either in
table or in python call form).

uh, another thing, I think this has also been mentioned before: It should 
be an absolute must to be able to define net classes in eeschema. I think, 
from the technical point of view, this should be easy.


At least netnames without polluting the sheet with label should be the
minimum. Netname to netname association would be useful but not truly
essential. It's more or less shifting the dialog from pcbnew to eeschema
and extending the netlist, anyway.

--
Lorenzo Marcantonio
Logos Srl

___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp 



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] layer based constraints

2013-05-08 Thread Simon Huwyler

Kicad  evolves based on individual need.  Try and stay close to your
individual use cases, else you may end up creating something few will use.
Einstein: as simple as possible, but not simpler.


So, if I get you right, the whole KiCad repository is merely a huge 
collection of branches each one created for personal needs (as in my case 
the very special need to deal with _fabrication_ layer constraints), and 
only time will show what turns out to be a feature that should be taken into 
the main branch?


So, my approch was not that bad, indeed! :-) Therefore, I should upload this 
branch, even knowing that it is useful for _me_ and probably no one else?
Sorry for these newbie-ish questions. But this is really a whole new world 
for me. :-) I was quite reluctant doing so, because I thought I should only 
contribute things that are really useful to others and have a chance to 
eventually make it to the main branch.



-Ursprüngliche Nachricht- 
From: Lorenzo Marcantonio

Sent: Wednesday, May 08, 2013 2:12 PM
To: Kicad Developers
Subject: Re: [Kicad-developers] layer based constraints

On Wed, May 08, 2013 at 07:03:48AM -0500, Dick Hollenbeck wrote:

Alfons, in munich, worked for zucken (spelling), an eda company, for 15
years, well bfore writing freerouter.  His UI includes netclass features.
It is not obvious that they merely mimic the specctra spec.  If not, is
this his experience being injected to trump something he thought was
imperfect?


I can't say... SPECCTRA was a pre-existing product, and simply became the
defacto interface. Maybe it's simply well engineered for the things it
needs to do, but then every company will 'personalize' it depending on
the requirements (so they can say our specctra is better than yours!).
The same freerouter AFAIK don't implement it in full (no arcs, for
example, seeing the kicad code).

Or maybe the author of freerouter simply added the extra features
because they were convenient (and to hell with the specctra standard).


Kicad  evolves based on individual need.  Try and stay close to your
individual use cases, else you may end up creating something few will use.
Einstein: as simple as possible, but not simpler.


That's why we are discussing if/how enhanced rules can be applied.

--
Lorenzo Marcantonio
Logos Srl

___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp 



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] layer based constraints

2013-05-07 Thread Simon Huwyler
I have worked a bit more on the idea of the “layer based constraints”. We 
have already argued quite a bit about how one should tell KiCad about 
different constraints on different layers. But I think, we all more or less 
agree that there are realistic use cases where a constraint is not only 
dependent on the net, but also on the layer (and maybe other things).


So, the routine getConstraint() (with or without an ‘other’ item passed as 
argument) should get another argument: LAYER_NUM aLayer, because, as soon as 
the layer, in one way or the other, influences the minimal acceptable 
clearance between different nets, I have to distinguish between these nets. 
For all these connectedItems that are only on one layer (like tracks), the 
item can just check on which layer it is, and return the appropriate value. 
But there are also pads and vias. And here, it is not sufficient anymore to 
just ask “what is the miminal clearance around you”? Instead, I have to ask: 
What is the minimal clearance around you on layer two?” That’s why I 
inserted the additional argument aLayer. Of course, I included it on all 
connectedItems because of subtyping. A track, for example, just ignores it 
and takes its own layer as a reference.


Ok, then, I did another thing: ConnectedItems can show their clearance as a 
line around the item, which is one of the best features of KiCad, if you ask 
me. I LOVE this feature! But now, I had a problem with it. Again, if an item 
is on only one layer, it’s fine. Just show the clearance according to the 
layer of the track. But what about a pad? A pad can “sit” on all layers. So, 
which clearance to show? Possible anwers:


- none
- the net-based clearance (only feasable if we ARE separating net-based and 
layer-based clearances, and not mixing them in any way)

- all clearances, in the respective color
- the clearance according to the layer that is currently active, if it is a 
copper layer, and none if it is a non-copper layer.


I, for my personal branch, decided to pick the last solution. But this 
confronted me with another question: If I am on layer two, and there is a 
multi-layer pad, a track on layer two and a track on layer one. What do I 
expect to see?
I decided that I would like to see the clearances on layer two. Nothing 
else. So, the pad shows me the clearance it has on layer two. And the pad, 
that is on layer two, shows me its clearance, and the track on layer shows 
no clearance line.
I hacked this behavior and must say that I like it. I never checkt “always” 
at “show tracks clearances”, because it was just too much information. But 
with my patch, I now think I’m going to stay at this option. It shows my all 
clearances I have to respect on the layer that is currentla active (a.e. the 
layer on which I am placing tracks at the moment). After all, I don’t care 
about a layer two’s clearance if I’m on layer one.


I will upload a branch eventually so you guys can have a look at it. Not so 
much to press my implementation of it into a release (there's no chance for 
it, either ;-), but more to let you get a feeling of it, because I really 
think this is an issue. I think, a good CAE tool should take the layer into 
account when it comes to constraints. And as KiCad IS a very good tool, it 
is proven by induction, that KiCad should be able to handle this! :-) Just 
kidding


Now, there are still other things, like, for example, constraints between 
two defined nets, area based constraints... all the fancy stuff. Of course, 
we could add also these things as additional parameters... or we could pass 
an object containing all important parameters an item has to know to 
calculate the clearance. Or... hmmm... just a reference to the caller item:
- Item xy, tell me, please, how much clearance I have to keep to you. I am 
item yz.

- Item yz, on what layer are you? And what’s your net?
- Ok, Item xy, please stay 2mm away from me.

Oh, I almost forgot: There is another thing that, as I suppose, is quite 
connected to this issue: Pads with defined pad-stacks. Say, I want to insert 
a pad on the outer layers, but on the inner layers, there should be no 
copper (or less copper). This surely influences the clearance. Again, the 
clearance strongly depends on the layer on which I am approaching the pad.



What do you think? Is this worth a blue-print?
I really really like the idea of implementing such a thing. I am, actually, 
now starting to work productively with my patch (but only as a hobbyist) and 
up to now, I really like also the slightly changed look-and-feel as 
described above.


- I can define clearance and width constraints for every layer (which is, as 
I said, very useful to me because of manufactuer’s constraints)
- I am shown all clearances (max of net-based and layer based) on the active 
layer
- when I place a track with the “standard” thickness setting, it gets me the 
actual thickness of the net on the layer I am.
- When I switch layers (a.e. place a via) 

Re: [Kicad-developers] layer based constraints

2013-05-07 Thread Simon Huwyler


If this feature would work neither with freerouter, nor Cern's push and 
shove router, then

it would be useless to me.


fair enough. Of course it has to be consistent with the whole package!


I currently use freerouter in ps mode exclusively, never route in kicad.


what? Actually, I've always seen freerouter just as an autorouter (and I 
don't like autorouters). I never had the idea to manually route with it. 
Will try this eventually.
I think I have seen that freerouter doesn't know layer constraints, but you 
can tell net classes to be valid on certain layers. I personally still 
think, my way is the better one. :-) But that's not the point. Because also 
in this way, as I said, Kicad's constraint handler should be aware of the 
different layers implement what freerouter does.


Tom, if he had time might comment on the likelihood of support for 
something like this in

his ps work for internal pcbnew.


Looking forward to that. But acually I don't think there will be a problem. 
I think, Tom will just ask about clearances and do some (very complex) 
stuff to avoid violations. How these clearances are calculated, I's suppose, 
is not of interest to Tom's PS router. Or am I wrong?




On 05/07/2013 11:30 AM, Simon Huwyler wrote:

I have worked a bit more on the idea of the “layer based constraints”. We
have already argued quite a bit about how one should tell KiCad about
different constraints on different layers. But I think, we all more or 
less

agree that there are realistic use cases where a constraint is not only
dependent on the net, but also on the layer (and maybe other things).

So, the routine getConstraint() (with or without an ‘other’ item passed as
argument) should get another argument: LAYER_NUM aLayer, because, as soon 
as

the layer, in one way or the other, influences the minimal acceptable
clearance between different nets, I have to distinguish between these 
nets.

For all these connectedItems that are only on one layer (like tracks), the
item can just check on which layer it is, and return the appropriate 
value.
But there are also pads and vias. And here, it is not sufficient anymore 
to
just ask “what is the miminal clearance around you”? Instead, I have to 
ask:

What is the minimal clearance around you on layer two?” That’s why I
inserted the additional argument aLayer. Of course, I included it on all
connectedItems because of subtyping. A track, for example, just ignores it
and takes its own layer as a reference.

Ok, then, I did another thing: ConnectedItems can show their clearance as 
a
line around the item, which is one of the best features of KiCad, if you 
ask
me. I LOVE this feature! But now, I had a problem with it. Again, if an 
item

is on only one layer, it’s fine. Just show the clearance according to the
layer of the track. But what about a pad? A pad can “sit” on all layers. 
So,

which clearance to show? Possible anwers:

- none
- the net-based clearance (only feasable if we ARE separating net-based 
and

layer-based clearances, and not mixing them in any way)
- all clearances, in the respective color
- the clearance according to the layer that is currently active, if it is 
a

copper layer, and none if it is a non-copper layer.

I, for my personal branch, decided to pick the last solution. But this
confronted me with another question: If I am on layer two, and there is a
multi-layer pad, a track on layer two and a track on layer one. What do I
expect to see?
I decided that I would like to see the clearances on layer two. Nothing
else. So, the pad shows me the clearance it has on layer two. And the pad,
that is on layer two, shows me its clearance, and the track on layer shows
no clearance line.
I hacked this behavior and must say that I like it. I never checkt 
 “always”

at “show tracks clearances”, because it was just too much information. But
with my patch, I now think I’m going to stay at this option. It shows my 
all
clearances I have to respect on the layer that is currentla active (a.e. 
the

layer on which I am placing tracks at the moment). After all, I don’t care
about a layer two’s clearance if I’m on layer one.

I will upload a branch eventually so you guys can have a look at it. Not 
so
much to press my implementation of it into a release (there's no chance 
for

it, either ;-), but more to let you get a feeling of it, because I really
think this is an issue. I think, a good CAE tool should take the layer 
into

account when it comes to constraints. And as KiCad IS a very good tool, it
is proven by induction, that KiCad should be able to handle this! :-) Just
kidding

Now, there are still other things, like, for example, constraints between
two defined nets, area based constraints... all the fancy stuff. Of 
course,
we could add also these things as additional parameters... or we could 
pass

an object containing all important parameters an item has to know to
calculate the clearance. Or... hmmm... just a reference to the caller 
item:

- Item

Re: [Kicad-developers] layer based constraints

2013-05-07 Thread Simon Huwyler

A short google consultation showed me this:

SPECCTRA FOR ORCAD AUTOROUTER
SPECCTRA for OrCAD is well known for its
comprehensive feature set. The extensive rule
set can control a wide range of constraints
from default board-level rules to rules by net
and net class.


default board-level rules sounds to me like something like this.
But unfortunately I didn't find anything yet, and since it's twenty past one 
I'll call it a day for now. :-)


Dick, could you tell me where I can find this pdf? Thanks!

-Ursprüngliche Nachricht- 
From: Simon Huwyler

Sent: Wednesday, May 08, 2013 1:09 AM
To: Dick Hollenbeck
Cc: kicad-developers@lists.launchpad.net
Subject: Re: [Kicad-developers] layer based constraints


Page 17 of the specctra.pdf file I sent you a couple of weeks ago shows the
class_descriptor.


What PDF file? I didn't get any. But of course I should find some
information about this.


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp 



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


[Kicad-developers] Select layer pair

2013-05-01 Thread Simon Huwyler
Hi all,

I’ve got another spontanous idea I would like to ask about your oppinion before 
implementing it.

There is the button to select a layer pair, which is a good thing. But I find 
that it is always a bit tedious to select a layer pair this way when routing. 
It’s just not as fluent as all the other steps in the workflow of layouting. 
So, my  proposal is an easier way to change the layer pair (if not existant 
already – I haven’t noticed).

I would suggest, for example, to have another indicator at the layer managment 
toolbar. Maybe another blue triangle like the one that indicates the active 
layer? Maybe one that is just outlined? And right-clicking on where you have to 
left-click to select the active layer selects the “alternative” layer.

What do you think?___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Select layer pair

2013-05-01 Thread Simon Huwyler

I must admit that I hardly use the hotkeys for direct layer selection. I use
the VIA button a lot.
Of course you should keep layer switching to a minimum But you always have
to start at an outer layer. Now, normally, where you want to go, depends on
what you route (in 4 layer PCB): Signal: Go to Bottom, if needed. GND: Go to
GND, Power: Go to power.

I like keeping my hands where they are. Left index finger on the VIA button,
right hand on the mouse. I don't like searching for the layer hotkeys.
For two layers, everything is great. You're on the wrong layer? Hit the VIA
button and go on. Just switched layer and find out you did something wrong
and want to start all over again? Cancel, hit VIA button to get back to TOP,
start over again. This is very fast. So fast, that I don't care about the
layer toolbar.

Now there's four layers. I found that I often switch the layer pairs,
because I want to work as described above. I still don't often manually
change the layer in the manager because I want to keep this feature of just
hitting the VIA header and getting to the right layer.

But it is tedious. I found myself being reluctant in doing many such pair
changes because it's not done with a click. No big deal, I know, but it's
all soo easy, and this dialog just contrasts to it. And it's not very
intuive, as well, I think.

A bit more concrete, what I suggest:

If you have only two layers, nothing changes.
If you have four layers, and the active layer is a copper layer, there is a
very fine, small, discrete little triangle showing the alternative layer.
If you're on a non-copper layer, there's only the one active layer triangle.
If you select another active copper layer, the alternative layer stays.
If you select the alternative layer as active layer (a.e. left-click on the
small triangle) the active and alternative switch vice-versa.
If you right-click on a copper layer, the alternative layer changes.
If you right click on a non-copper layer, nothing happens.
If you rigth-click on the active layer, maybe this also switches active
--- alternative or does nothing.

I know, this sounds a bit complicated, but think about it twice. I really
think, this is intuitive and fast. The select layer pair dialog is neither
intuitive nor fast, I think.
And it doesn't make it more complicated. Two layer print: Nothing changes.
Four layer print: I would bet some money that the main reaction would be:
What's this second triangle? .. try a bit  and then That's cool!
:-)

Don't you think?


About the redesign of the toolbar: I haven't heard of (I'm a freshman here).
I'll have a look at it. But I think, this would be a small thing and very
useful.




-Ursprünliche Nachricht- 
From: Lorenzo Marcantonio

Sent: Wednesday, May 01, 2013 1:07 PM
To: Kicad Developers
Subject: Re: [Kicad-developers] Select layer pair

On Wed, May 01, 2013 at 12:59:39PM +0200, Simon Huwyler wrote:

I would suggest, for example, to have another indicator at the layer
managment toolbar. Maybe another blue triangle like the one that indicates
the active layer? Maybe one that is just outlined? And right-clicking on
where you have to left-click to select the active layer selects the
“alternative” layer.


I find that the 'best' layer selectors are the hot keys. However the
layer pair is most useful with the Via key. I think that another
indicator in the layer bar would be confusing unless really clear.
Probably it would be better an hotkey to pop up the pair selector:P

However it mostly depends on your tracking style (and how your layers
are organized). I often try to keep layer transitions to a minimum (for
obvious reasons) and try to keep the same kind of signal on the same
layer (this mostly apply for more than 4 layers, of course).

A 'different click' to choose the secondary layer could be handy but
I personally don't feel is missing. It could be added to the layer bar
reworking proposed a while ago (if somebody actually want to do it)

--
Lorenzo Marcantonio
Logos Srl

___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp 



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Select layer pair

2013-05-01 Thread Simon Huwyler
I forgot: Of course, if you hit the VIA button, there is also the visible 
switch between active and alternative layer.


You said that this is too complicated. I say: It's much easier and clearer 
then the actual status quo with the switch layer pairs button chanigng 
colors.


-Ursprüngliche Nachricht- 
From: Lorenzo Marcantonio

Sent: Wednesday, May 01, 2013 1:07 PM
To: Kicad Developers
Subject: Re: [Kicad-developers] Select layer pair

On Wed, May 01, 2013 at 12:59:39PM +0200, Simon Huwyler wrote:
I would suggest, for example, to have another indicator at the layer 
managment toolbar. Maybe another blue triangle like the one that indicates 
the active layer? Maybe one that is just outlined? And right-clicking on 
where you have to left-click to select the active layer selects the 
“alternative” layer.


I find that the 'best' layer selectors are the hot keys. However the
layer pair is most useful with the Via key. I think that another
indicator in the layer bar would be confusing unless really clear.
Probably it would be better an hotkey to pop up the pair selector:P

However it mostly depends on your tracking style (and how your layers
are organized). I often try to keep layer transitions to a minimum (for
obvious reasons) and try to keep the same kind of signal on the same
layer (this mostly apply for more than 4 layers, of course).

A 'different click' to choose the secondary layer could be handy but
I personally don't feel is missing. It could be added to the layer bar
reworking proposed a while ago (if somebody actually want to do it)

--
Lorenzo Marcantonio
Logos Srl

___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp 



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Highlithing components with a certain value

2013-04-29 Thread Simon Huwyler

Hi Piotr (and others)

please find the patch attached, as requested. I've redesigned the find 
dialog a bit and removed the find next marker in the DRC dialog again, as 
I found it's not necessery, as on the same dialog, there is the list of 
markers available.


Have fun
Simon



-Ursprüngliche Nachricht- 
From: Simon Huwyler

Sent: Sunday, April 28, 2013 11:57 AM
To: Lorenzo Marcantonio ; Kicad Developers
Subject: Re: [Kicad-developers] Highlithing components with a certain value

I have only now noticed  that naming the checkbox mark all components is
not so good because there is a button called find marker, and here,
marker means something completely different (DRC marker)

But I think, the find dialog is not a good place for this. Yes, I want to
find a marker. But, as far I can see, this button only finds the next
marker, and the search field is ignored. So, it's not a ctrl-f function at
all.

Ok, here's what I suggest:
- Move this function to the DCR dialog. Honestly, this is where you would
suppose the button that shows you the next DRC marker. And it's near the
remove all markers then.

- add a button to the find dialog saying remove all marks

- maybe find a new word for mark for this purpose we are discussing about
here that is not so near the DRC marker. highligtht? I still think, just
highlighting is not enough...


This way, everything is where you would expect it.


-Ursprüngliche Nachricht- 
From: Simon Huwyler

Sent: Saturday, April 27, 2013 11:46 PM
To: Lorenzo Marcantonio ; Kicad Developers
Subject: Re: [Kicad-developers] Highlithing components with a certain value

Ok, I was experimenting a little bit. Please see the attached picture. I
searched for all components valued with 470 and afterwards supp40. As
the marks are not (yet) removed before a new search, you can see both
results.

The highlighting alone is only visible in high contrast mode. Maybe I did
something wrong. But nevertheless, I like the circles. They are very well
visible also for small components and show well, where the component is (in
the center of the circle. I just decided to set the radius to the arithmetic
mean of the x- and y size of the bounding box. Of course, the shape as well
as the size can still be optimized.

BTW: due to these circles, I named the checkbox mark all matches instead
of highlight all matches.

What do you think?

And then: How do we get rid of the marks again? A button named unmark all?
Where? On the search dialog? I have no clue at the moment...

-Ursprüngliche Nachricht- 
From: Simon Huwyler

Sent: Saturday, April 27, 2013 6:44 PM
To: Lorenzo Marcantonio ; Kicad Developers
Subject: Re: [Kicad-developers] Highlithing components with a certain value

I don't know. That's why I wanted to experimen. I don't know if you cann see
a 0603 footprint on a 100mmx100mm board, if it's highlighted. Maybe yes,
then it's fine. But I just looked at a highlighted net. It's perfect for
showing a net, but I think, if it was only a tiny 0603 footprint, I would
hardly see it.

-Ursprüngliche Nachricht- 
From: Lorenzo Marcantonio

Sent: Saturday, April 27, 2013 6:40 PM
To: Kicad Developers
Subject: Re: [Kicad-developers] Highlithing components with a certain value

On Sat, Apr 27, 2013 at 06:30:47PM +0200, Simon Huwyler wrote:

board. Maybe something completely differen would be better? A circle
around the component? ... what do you think?


We already have highlighting code *and* the extended palette to support
it. Why invent something else?

--
Lorenzo Marcantonio
Logos Srl

___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp






___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp 


find_and_mark_items.patch
Description: Binary data
___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Highlithing components with a certain value

2013-04-28 Thread Simon Huwyler
I have only now noticed  that naming the checkbox mark all components is 
not so good because there is a button called find marker, and here, 
marker means something completely different (DRC marker)


But I think, the find dialog is not a good place for this. Yes, I want to 
find a marker. But, as far I can see, this button only finds the next 
marker, and the search field is ignored. So, it's not a ctrl-f function at 
all.


Ok, here's what I suggest:
- Move this function to the DCR dialog. Honestly, this is where you would 
suppose the button that shows you the next DRC marker. And it's near the 
remove all markers then.


- add a button to the find dialog saying remove all marks

- maybe find a new word for mark for this purpose we are discussing about 
here that is not so near the DRC marker. highligtht? I still think, just 
highlighting is not enough...



This way, everything is where you would expect it.


-Ursprüngliche Nachricht- 
From: Simon Huwyler

Sent: Saturday, April 27, 2013 11:46 PM
To: Lorenzo Marcantonio ; Kicad Developers
Subject: Re: [Kicad-developers] Highlithing components with a certain value

Ok, I was experimenting a little bit. Please see the attached picture. I
searched for all components valued with 470 and afterwards supp40. As
the marks are not (yet) removed before a new search, you can see both
results.

The highlighting alone is only visible in high contrast mode. Maybe I did
something wrong. But nevertheless, I like the circles. They are very well
visible also for small components and show well, where the component is (in
the center of the circle. I just decided to set the radius to the arithmetic
mean of the x- and y size of the bounding box. Of course, the shape as well
as the size can still be optimized.

BTW: due to these circles, I named the checkbox mark all matches instead
of highlight all matches.

What do you think?

And then: How do we get rid of the marks again? A button named unmark all?
Where? On the search dialog? I have no clue at the moment...

-Ursprüngliche Nachricht- 
From: Simon Huwyler

Sent: Saturday, April 27, 2013 6:44 PM
To: Lorenzo Marcantonio ; Kicad Developers
Subject: Re: [Kicad-developers] Highlithing components with a certain value

I don't know. That's why I wanted to experimen. I don't know if you cann see
a 0603 footprint on a 100mmx100mm board, if it's highlighted. Maybe yes,
then it's fine. But I just looked at a highlighted net. It's perfect for
showing a net, but I think, if it was only a tiny 0603 footprint, I would
hardly see it.

-Ursprüngliche Nachricht- 
From: Lorenzo Marcantonio

Sent: Saturday, April 27, 2013 6:40 PM
To: Kicad Developers
Subject: Re: [Kicad-developers] Highlithing components with a certain value

On Sat, Apr 27, 2013 at 06:30:47PM +0200, Simon Huwyler wrote:

board. Maybe something completely differen would be better? A circle
around the component? ... what do you think?


We already have highlighting code *and* the extended palette to support
it. Why invent something else?

--
Lorenzo Marcantonio
Logos Srl

___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp






___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp 



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] layer based constraints

2013-04-27 Thread Simon Huwyler
I think I do something wrong, since my responses are only seen in the date 
view, but not in the thread view. Maybe it has something to do with the 
fact that I don't see any response depth level greater than 
response-to-response-to-response? So, I just once try responding at a 
higher level. Sorry for being an absolute noob in mailing lists! :)


As I said in the response that is not visible here, I made a patch which 
I'll attach to this mail. It's based on the stable_2013-03-31_BZR4008 
release and it's far from finished (no saving of the constraints, no 
intializing, DRC doesn't care abot layer width constraints yet).


But it gives you a nice look-and-feel of how this helps layouting, if you 
have different constraints on different layers. I kinda like it, I am very 
sure it will save me a LOT of time layouting, because it always switches to 
the right width and clearance whenever I place a via to switch the layer. 
Therefore I will patch new versions of kicad, when they arrive, for my 
personal use. After I fininished the job, of course.


When finished, I would like (uhm - no, I MUST, that's GPL ;-) ) to 
contribute my work, although I understand that you guys don't quite like 
either layer based constraints at all or at least my approach to 
implementing them. Because I REALLY believe that it can be very helpful.
But I don't wan to be importunate. So what do you suggest? I am a noob not 
only in mailing lists, but also in contributing to open source projects. 
Can/should I create a branch, send you a patch or just shut up and keep my 
work at my place? I seriously ask because I just don't know.


One more word about how to handle different constraint types, say: 
Constraints on nets, layers, (area, net-pairs): I think it's very 
important to think extremely carefully about how to combine them. And I 
think overriding constraints are very dangerous and/or difficult to 
handle. I think Dick's Question about which constraint overrides which 
one, is not the right question to ask. At least as long as we don't have 
very complex constraint structures which must be coded and for which one has 
to really think a lot not to screw something up.


I really think, constraints should be seen as: They MUST be satisfied! Each 
of them. So, for width and clearance constraints, it's always the one with 
the highest number of all applicable constraints. No matter what type they 
are. I stress this again because I really think this is VERY important.


Regards
Simon



-Ursprüngliche Nachricht- 
From: Dick Hollenbeck

Sent: Friday, April 26, 2013 3:22 PM
To: kicad-developers@lists.launchpad.net
Subject: Re: [Kicad-developers] layer based constraints

On 04/26/2013 03:02 AM, Dimitris Lampridis wrote:

On 04/25/2013 02:22 AM, Simon Huwyler wrote:

As some PCB manufacturers (i.e. seeedstudio) have different clearance-
an width constraints for outer- and inner layer, I had the idea to teach
Kicad to manage “layer based” constraints.

 

Ok, for the moment, I chatted enough. What do you think about it?


Hi Simon,

We use Kicad at work and we would like to get involved in the
development process, not only as a means to return something to this
excellent community, but also to actively improve the tools we are using.

To this end, I've also just subscribed to this list (hi everyone!), and
I'm keeping a list of features/fixes that I would like to start
proposing for implementation. I'm responding to your idea because it was
already on our list.

Now, back to your suggestion, here's my two pennies' worth:

a) in my opinion, this should not be tied to layers. Instead it should
be part of a net class in the design rules. This would allow the user
to keep separate inner/outer constraints per net class. When
creating/modifying a net class, the user will be able to specify the
applicable layers (eg. [2-4,7,12]). This approach is also cleaner, since
all constraints will be in the same dialog window.

b) why don't you make a blueprint in launchpad for this? I'm no expert
in how launchpad works, but it looks like the right tool for submitting
ideas and technical details.

Cheers,
Dimitris



Hi Simon,

I was thinking what Dimitris is thinking, before I read his post.  Clearly 
you took the
path that allowed you to get it working.  And usually that is the best path. 
But in this
case I think we can all see a certain discomfort in blurring what the layer 
setup dialog

is for.

The first question I have is this:

*) is the benefit of using the smallest clearance and spacing on the outer 
copper layers
worth the this trouble in general?  Are your boards really that busy on 
these outer
layers?  Seeqstudio is forcing you down a path that you do not have to take. 
You can use
them by using the wider spacing in the inner layers, on all layers.  What 
are you gaining
really?  Or is it just one part with narrow pad spacing pushing you down 
this path?



*) next question is, who else needs this?


*) the documentation would

Re: [Kicad-developers] layer based constraints

2013-04-27 Thread Simon Huwyler

Hi Jean-Pierre,

see my responses below.

-Ursprüngliche Nachricht- 
From: jp charras

Sent: Saturday, April 27, 2013 10:49 AM
To: kicad-developers@lists.launchpad.net
Subject: Re: [Kicad-developers] layer based constraints




Therefore, response-to-response-to-response is not surprising.
Which could be surprising is a lack of response-to-response-to-response!


Actually, I was just wundering why I canNOT see more than 
response-to-respone-to-response This is the deepest level my browser shows 
me. This has nothing to do with the topic, but with the way, the messages 
show up - at least on my browser (chrome).




In this case, having layers constraints is not bad.
But remember your issue come from SeedStudio, and my board house do not 
have these constraints.


right. -But - don't get me wrong, i consider Kicad a tool that can easily 
compete with professional tools - but it is used by many hobbyists. An 
without wanting to do some advertising, seeedstudio (among with another 
supplyer having exactly the same constraints - actually the same fabs, I 
suppose) is by far the cheapest provider of prototype PCBs I know.



The first question I am thinking is:
Why a by layer constraints.
Why do not have only 2 min clearance values: one for outer layers, one for 
inner layers.


I also thought about that. Would also be good, yes.

The answer (remember : having both power and easy to use features is not 
easy: you often should choose between them) is very important:
In Design Rules we have already one constraint. Just a second constraint 
will fix your issue.


yup.


Remember we have constraints for minimal values for:
clearances, tracks, vias, microvias, and should have also minimal annular 
ring for pads and vias.
Having values for each layer in a 16 layer board is a serious constraint... 
for users.


agree. In most cases, you just repeat numbers. Max flexibility, at a price.



I know you said: leave these values to 0 when not used.
Yes, but I am not convinced: For the user, they are in a major dialog, For 
the user, the Design rule dialog have already these constraints.

when these values are not to 0, which value is used ?


well, here a disagree. For me it's clear that it must be the one that is 
more restrictive. And a very short pop up explainer (don't know the term) 
could tell you this.



Remember also the calculation time is a major constraint in DRC.


I know. That's why I wanted to keep it simple.

By the way I had a look to your patch, and i believe the minimal track 
width defined in layers silently overrides the track width set in net 
classes.


Very well possible. As I said, it's just something to get the look and 
feel for it. Not tested, hacked somwhere between midnight and morning... 
:-)



This is not good. You can just set a DRC error.

yup. I'd say, it's even very bad! :-)

In some cases (namely for tracks having a specific impedance) you should 
have to use the defined width.


Yes. But in these cases, the constraints for these must be greater than the 
layer constraint. Why? Because the layer constraint is intended to represent 
a manufacturing limint. So, I can not place a 0.05mm track on a PCB with 
width constraint of 0.15mm just because it has to match the impedance.


That's why I keep stressing that I stongly believe that always the most 
restrictive constraint should be taken.



Actually, no need to say thank you for working on Kicad! I honestly did this 
thing for myself. And I can use it very well. It's me who must not only say 
thank you for providing kicad, but to enable me as user to enhance it for my 
(special) needs by providing it open source!
I agree with you that it's not a good idea to just pack anything on the 
release branch without discussing about alternatives.



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp 



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] layer based constraints

2013-04-27 Thread Simon Huwyler

The first question I am thinking is:
Why a by layer constraints.
Why do not have only 2 min clearance values: one for outer layers, one
for inner layers.


I also thought about that. Would also be good, yes.

It could fix some of issues created by multiple constraints.
Because there is no more multiple constraints.


ok, I see that I didn't understand what you meant. Am i right that you mean 
that your idea is constraints for NETxxx on outer layers, NET xxx on inner 
layers, NETyyy on outer layer, NETyyy on inner layers... ?
This I think is not a good idea. I thought about just removing all numbers 
for each layer an having just a set for outer and one for inner layers.
When you say that it fixes the issue of multiple constrains i completely 
disagree. In this context, having multiple constrains is NOT an issue, but 
a feature. Or, put differently, it's in the nature of the physics behind it. 
I think, Lorenzo has also written about it.
We have to distinguish between the sources of the constrains, and we MUST 
NOT mix them.
Why do you place a net constraint? Because you want a NET to have certain 
constraints. Why? Because this net carries much current, has high voltage, 
whatsoever.
Now, why do you have layer constraints? Because your manufacturer wants 
them.


Therefore, it is a fact that we have to deal with multiple constraints. 
This is in most cases not an issue, because we can create a net constraint 
for all the rest. But actually, calling this a net constraint is wrong. 
It works well, but it's wrong. It's not a net constrain, but it's a 
physical constraint. Why does it work most of the time? Because there is 
only one set for all layers. But what if it's not? Then, trying to model 
this physical constraint by a set of net constraints (which are applicable 
to outer, or inner, or both layers) is not the right way to go, I think. 
That's why I put it in the layer stack dialog. The constraint dialog is 
really a net constraint dialog. And the layer stack dialog tells about 
the PCB itself. And therefore, the layer constraints are not so wrongly 
placed there, are they?





Good programmers never sleep.
(I am not a good programmer)


:-) so, neither am I.


This is a DRC error.
You have to match the impedance (otherwise the signal integrity is broken).
Therefore you have to fix this issue:
change PCB width constraint and board price (i.e. manufacturing limit), or 
the track width and epoxy thickness ...

but only the designer knows what is good or can be made.
Pcbnew just should set a DRC error.


Right. It should (and does, when I have finished it) set a DRC error if one 
of the following is true:

1. the width or clearance is lower than the constrain on that layer.
-- The manufacturer will reject your design.
2. The width (or clearance) is lower (hmmm... or higher???) than it must be.
-- your impedance will be wrong



Perhaps this is a good idea: you can show a demo or a proof of your idea.
This is very important.
With a demo, discussing about alternatives or enhancements is more 
productive.

More work, and more benefit.


I'm a bit reluctant sending a built pcbnew.exe, because it's huge, and it's 
only working on Windows.

So, I think, the patch is better.
Actually, the one I attached should be fine for this purpose. It's not 
finished yet, as I said, but you can try what the idea is.
I must say again, for my particular problem with different constraints on 
inner layers, this is the most intuitive and elegant way I could imagine. 
Mixing these constraints with layer constraints would seem couner-intuitive 
to me because it wouldn't reflect the problem to be solfed. 



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] layer based constraints

2013-04-27 Thread Simon Huwyler
Thinking about it, I think, there are, indeed situation, when it makes sense 
to define constraints for NETxxx on layer yyy. This would be, for example, 
impedance controlled tracks. They have to have a defined width which is 
different on each layer and only applicable to certain nets. But now, that 
we're talking about keeping it simple, we must ask ourselves:

- How many impedance controlled lines are there?
- On how many different layers do I place them?

So, the most flexible way, would indeed be sort of a matrix. Each net has a 
set of constrains for each layer.


I'm still not quite sure, if this is, what you want to do, simplified to 
outer and inner layer instead as for each layer. But even then, you have to 
define a set of constraints for each net twice. And I think, the strange 
cases emerge much more if you're doing it this way. What if you forget to 
define the high curren net constraint on inner layers? Then you're routing 
this net and switch to the inner layer. Which is to take? default?


See what I mean? Actually, I think the really clean way would be that you 
HAVE TO defin net constraints. And only for the nets you want to apply 
ADDITIONAL constraints, you add a net constraint.


But as we have the default constraint, we can prevent us from forcing the 
user to do it that way, which is of course a good thing. But as soon as 
there ARE different layer constraints, we can't handle this any more with 
net constraints in an elegant way. The logical step would be the matrix I 
mentioned above. But this is pain in the a** to configure. And in most cases 
it would be again copying numbers. And, I can't imagine a simple user 
interface for that. That's why I said to myself: Instead of a matrix, I want 
these two indipendent constraints. Because most of the time, (and in my 
particular case) this is, what I want to model.




-Ursprüngliche Nachricht- 
From: jp charras

Sent: Saturday, April 27, 2013 12:57 PM
To: Simon Huwyler
Cc: kicad-developers@lists.launchpad.net
Subject: Re: [Kicad-developers] layer based constraints

Le 27/04/2013 11:40, Simon Huwyler a écrit :

Hi Jean-Pierre,

see my responses below.

...


right. -But - don't get me wrong, i consider Kicad a tool that can
easily compete with professional tools - but it is used by many
hobbyists. An without wanting to do some advertising, seeedstudio (among
with another supplyer having exactly the same constraints - actually the
same fabs, I suppose) is by far the cheapest provider of prototype PCBs
I know.


The first question I am thinking is:
Why a by layer constraints.
Why do not have only 2 min clearance values: one for outer layers, one
for inner layers.


I also thought about that. Would also be good, yes.

It could fix some of issues created by multiple constraints.
Because there is no more multiple constraints.



The answer (remember : having both power and easy to use features is
not easy: you often should choose between them) is very important:
In Design Rules we have already one constraint. Just a second
constraint will fix your issue.


yup.


Remember we have constraints for minimal values for:
clearances, tracks, vias, microvias, and should have also minimal
annular ring for pads and vias.
Having values for each layer in a 16 layer board is a serious
constraint... for users.


agree. In most cases, you just repeat numbers. Max flexibility, at a 
price.


This is the kind of decision we should always take:
Max flexibility or price.




I know you said: leave these values to 0 when not used.
Yes, but I am not convinced: For the user, they are in a major dialog,
For the user, the Design rule dialog have already these constraints.
when these values are not to 0, which value is used ?


well, here a disagree. For me it's clear that it must be the one that is
more restrictive. And a very short pop up explainer (don't know the
term) could tell you this.


Remember also the calculation time is a major constraint in DRC.


I know. That's why I wanted to keep it simple.


By the way I had a look to your patch, and i believe the minimal track
width defined in layers silently overrides the track width set in net
classes.


Very well possible. As I said, it's just something to get the look and
feel for it. Not tested, hacked somwhere between midnight and
morning... :-)

Good programmers never sleep.
(I am not a good programmer)



This is not good. You can just set a DRC error.

yup. I'd say, it's even very bad! :-)


In some cases (namely for tracks having a specific impedance) you
should have to use the defined width.


Yes. But in these cases, the constraints for these must be greater than
the layer constraint. Why? Because the layer constraint is intended to
represent a manufacturing limint. So, I can not place a 0.05mm track on
a PCB with width constraint of 0.15mm just because it has to match the
impedance.


This is a DRC error.
You have to match the impedance (otherwise the signal integrity is broken).
Therefore you

[Kicad-developers] Highlithing components with a certain value

2013-04-27 Thread Simon Huwyler
Hi folks,

while still being in the discussion about the layer based constraints, I would 
like to propose some other small feature. I will create that for sure, because 
I will need it eventually, but I’m not sure if it makes sense to give it back 
to the project, and if, how to implement it so that it “fits” into the project. 
(even less than the layer based constraints  ) 

First: The motivation:
The other day, I did a manual “pick and place” on a PCB, after putting the 
solder paste via a stencil. To do it more efficiently, I placed the components 
type by type. Means: I pickt the bag containing the 34 10k-resistors, looked, 
where they are, placed them on the board, and took the next bag out of the box.

Kicad helped me finding the places for the components. But it turned out not to 
be so easy. I searched for R12 an saw a screen with R12 in the center – but I 
had no clue where it was. Then are there these banks of 20 times a 10k 
resistor. In one row. So, I don’t need to search for each and every one. But 
somewhere, there was another 10k resistor. So how to find it? Search as long as 
you found the one that is not in this bank you already knew.

To finally come to the point: What I missed was a feature that marked all 10k 
resistors at a time. Very simple, actually. “pleas highlight all components 
with the value “10k”. Of course, if there are 0603 types of 10k resistors and 
1206 types of 10k resistors, both types would show up. But normally I think 
this is no big deal. These I just have to distinguish from each other – after 
all, they’re different in size. 

So, a short thing explained complicated. Really nothing more than “highlight 
all components with value xxx (where xxx could, preferably include wildcards)

What do you think? Does it make sense? As I said, I urgently need it, so I will 
implement it.. But is it worth an additional menu entry in the release branch?wlEmoticon-winkingsmile[1].pngwlEmoticon-smile[1].png___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Highlithing components with a certain value

2013-04-27 Thread Simon Huwyler

Hi Lorenzo, Hi Andreas,

I like your ideas! I will somewhen this weekend look into the code (I am 
completely new to developing for kicad), especially concerning the multiple 
highlighting.


The 0603 were on tapes, but the tapes were in bags.  :-)

BTW: Andreas, where are you from? I'm from zug.

BR
Simon

-Ursprüngliche Nachricht- 
From: Lorenzo Marcantonio

Sent: Saturday, April 27, 2013 5:11 PM
To: Kicad Developers
Subject: Re: [Kicad-developers] Highlithing components with a certain value

On Sat, Apr 27, 2013 at 04:03:16PM +0200, Simon Huwyler wrote:
So, a short thing explained complicated. Really nothing more than 
“highlight all components with value xxx (where xxx could, preferably 
include wildcards)


Could be useful and should not be intrusive. I see nothing bad in that.

What do you think? Does it make sense? As I said, I urgently need it, so I 
will implement it.. But is it worth an additional menu entry in the 
release branch?


IIRC someone already asked for it. You could extend the 'search' dialog
for that (something like a button 'Highlight All'). But I don't know if
pcbnew handles multiple component highlighting at the moment (I fear for
a g_currentComponent variable or such...)

Wildcarding is easy to do, since wx has all the needed functions. Look
in the eeschema search routines.

PS: resistor *bag*? I hope you're talking about THT resistors, a bag of
EIA chips would be awful to handle:D

--
Lorenzo Marcantonio
Logos Srl

___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp 



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] layer based constraints

2013-04-27 Thread Simon Huwyler


On Sat, Apr 27, 2013 at 03:36:17PM +0200, Simon Huwyler wrote:

- How many impedance controlled lines are there?
- On how many different layers do I place them?



Stop there. *If* you do impedance controlled lines then you *need*
different constraint for each layer, because: a)


I know, and that's what I wanted to say. This WOULD be a case. But I don't 
care about this one because it gets too complicated.




So, the most flexible way, would indeed be sort of a matrix. Each
net has a set of constrains for each layer.



Actually each class would have a constraint with each other class and
this for each layer. And I hope you don't want to do cross layer DRC


No, that's what I said. Again. This would be the ultimate freedom - and the 
ultimate pain. :-)


With these examples I wanted to point out why I chose for my personal patch 
this way. It does what is used mostly, and it does it easily. 



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Highlithing components with a certain value

2013-04-27 Thread Simon Huwyler
I will try to get some spare time tonight and experiment a bit with this 
highlighting thing. After all, we're not talking about a net spreadin 
accross the board, but about components spotted around the board. Maybe 
something completely differen would be better? A circle around the 
component? ... what do you think?


-Ursprüngliche Nachricht- 
From: Lorenzo Marcantonio

Sent: Saturday, April 27, 2013 5:50 PM
To: Kicad Developers
Subject: Re: [Kicad-developers] Highlithing components with a certain value

On Sat, Apr 27, 2013 at 05:33:12PM +0200, Tomasz Wlostowski wrote:

@Lorenzo: You will probably need adding a per-item HIGHLIGTHED flag
(no globals, please).


I never *meant* to suggest a global. I only feared there was one in
there...

In fact, looking closely, there is *no* component level highlighting in
pcbnew; it only has net highlighting (in... highlight.cpp, obviously :D)

BOARD::DrawHighLight would be a good site to look for how to do the
'highlight' effect (it's simply a flag in the colour type... but it's
tricky to pass it correctly to the compositing object draw functions).
However storing the parts to be highlighted will require either a) some
container in the board or b) a flag in the MODULE object).

Don't ask me now what is better... a flag would have no lifecycle issues
but a container would be more elegant. Some pondering required on this.

--
Lorenzo Marcantonio
Logos Srl

___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp 



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Highlithing components with a certain value

2013-04-27 Thread Simon Huwyler
I don't know. That's why I wanted to experimen. I don't know if you cann see 
a 0603 footprint on a 100mmx100mm board, if it's highlighted. Maybe yes, 
then it's fine. But I just looked at a highlighted net. It's perfect for 
showing a net, but I think, if it was only a tiny 0603 footprint, I would 
hardly see it.


-Ursprüngliche Nachricht- 
From: Lorenzo Marcantonio

Sent: Saturday, April 27, 2013 6:40 PM
To: Kicad Developers
Subject: Re: [Kicad-developers] Highlithing components with a certain value

On Sat, Apr 27, 2013 at 06:30:47PM +0200, Simon Huwyler wrote:

board. Maybe something completely differen would be better? A circle
around the component? ... what do you think?


We already have highlighting code *and* the extended palette to support
it. Why invent something else?

--
Lorenzo Marcantonio
Logos Srl

___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp 



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Highlithing components with a certain value

2013-04-27 Thread Simon Huwyler
Ok, I was experimenting a little bit. Please see the attached picture. I 
searched for all components valued with 470 and afterwards supp40. As 
the marks are not (yet) removed before a new search, you can see both 
results.


The highlighting alone is only visible in high contrast mode. Maybe I did 
something wrong. But nevertheless, I like the circles. They are very well 
visible also for small components and show well, where the component is (in 
the center of the circle. I just decided to set the radius to the arithmetic 
mean of the x- and y size of the bounding box. Of course, the shape as well 
as the size can still be optimized.


BTW: due to these circles, I named the checkbox mark all matches instead 
of highlight all matches.


What do you think?

And then: How do we get rid of the marks again? A button named unmark all? 
Where? On the search dialog? I have no clue at the moment...


-Ursprüngliche Nachricht- 
From: Simon Huwyler

Sent: Saturday, April 27, 2013 6:44 PM
To: Lorenzo Marcantonio ; Kicad Developers
Subject: Re: [Kicad-developers] Highlithing components with a certain value

I don't know. That's why I wanted to experimen. I don't know if you cann see
a 0603 footprint on a 100mmx100mm board, if it's highlighted. Maybe yes,
then it's fine. But I just looked at a highlighted net. It's perfect for
showing a net, but I think, if it was only a tiny 0603 footprint, I would
hardly see it.

-Ursprüngliche Nachricht- 
From: Lorenzo Marcantonio

Sent: Saturday, April 27, 2013 6:40 PM
To: Kicad Developers
Subject: Re: [Kicad-developers] Highlithing components with a certain value

On Sat, Apr 27, 2013 at 06:30:47PM +0200, Simon Huwyler wrote:

board. Maybe something completely differen would be better? A circle
around the component? ... what do you think?


We already have highlighting code *and* the extended palette to support
it. Why invent something else?

--
Lorenzo Marcantonio
Logos Srl

___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp 
attachment: searchandmark.png___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] layer based constraints

2013-04-26 Thread Simon Huwyler

Hi!

Only a quite short anwer for the moment - maybe I have more time this 
evening...



a) in my opinion, this should not be tied to layers. Instead it should
be part of a net class in the design rules. This would allow the user
to keep separate inner/outer constraints per net class. When
creating/modifying a net class, the user will be able to specify the
applicable layers (eg. [2-4,7,12]). This approach is also cleaner, since
all constraints will be in the same dialog window.


I'm not so sure about that, but maybe I just have to think again. The thing 
is that we're NOT talking about NET constraints. Let's suppose I have the 
following netclasses:


Power
50Ohm_Transmission_line
default

Now, in addition to the constraints based on these nets, we must apply 
constraints based on the layers. So, what should we do?



default_inner: 8 mils, applicable to layers 2 and 3
default_outer: 6 mils, applicable to layers 1 and 4

What about Power? Say, we have (unrealistically) set this to 6 mils. What 
now, if we place a power track on layer 3? What is the right constraint?

I still think, it's much more obvious to just say:

We have NET constraints.
We have LAYER constraints.

We must satisfy BOTH of them
The logical consequence is: They must be defined separately.

But as I said: Maybe I just have to think again.


b) why don't you make a blueprint in launchpad for this? I'm no expert
in how launchpad works, but it looks like the right tool for submitting
ideas and technical details.


Neither am I! :-) but I try to do it this week-end!


*) is the benefit of using the smallest clearance and spacing on the outer 
copper layers
worth the this trouble in general?  Are your boards really that busy on 
these outer
layers?  Seeqstudio is forcing you down a path that you do not have to 
take.  You can use
them by using the wider spacing in the inner layers, on all layers.  What 
are you gaining
really?  Or is it just one part with narrow pad spacing pushing you down 
this path?


In fact, the idea rised upon an urge! Yes, it's definitively a HUGE issue. 
Not that I have such a dense design, but I have a fine pitch device! Nothing 
special, just a 0.5mm QFP. But it won't fit into the inner constraints for 
seeedstudio. So I could set the constraints to 8mils and live with the 
errors. And with the fact that I don't use what I pay for.
An what is the trouble? As in C++ vs C: You don't pay for what you don't 
need. Don't care about layer constrants? Leave them at 0. And, after all, 
that's in the tradition of Kicad: Don't care about individual solder paste 
clearance? Just leave it at 0.



*) next question is, who else needs this?


everyone that places a QFP device on a 4 layer print produced by 
seeedstudio. :-)


*) the documentation would need to be updated if we were to go down this 
path.  Otherwise
we might get bug reports when somebody sees a different spacing on a 
different layer for

the same net.


The beauty about my approach would be, that, if you don't acively insert a 
number, nothing changes.
But I agree, this would need an update of the documenation. But I could do 
this, too. And - after all - most additional features need to be documented, 
aren't they? :-) And


To finish this response, I just want to stress again, that this was not just 
an idea after thinking about what may bee a cool feature, but really the 
result of some frustration that my real problem could not be solved 
satisfactionally by the actual version of kicad.


Greets
Simon


-Ursprüngliche Nachricht- 
From: Dick Hollenbeck

Sent: Friday, April 26, 2013 3:22 PM
To: kicad-developers@lists.launchpad.net
Subject: Re: [Kicad-developers] layer based constraints

On 04/26/2013 03:02 AM, Dimitris Lampridis wrote:

On 04/25/2013 02:22 AM, Simon Huwyler wrote:

As some PCB manufacturers (i.e. seeedstudio) have different clearance-
an width constraints for outer- and inner layer, I had the idea to teach
Kicad to manage “layer based” constraints.

 

Ok, for the moment, I chatted enough. What do you think about it?


Hi Simon,

We use Kicad at work and we would like to get involved in the
development process, not only as a means to return something to this
excellent community, but also to actively improve the tools we are using.

To this end, I've also just subscribed to this list (hi everyone!), and
I'm keeping a list of features/fixes that I would like to start
proposing for implementation. I'm responding to your idea because it was
already on our list.

Now, back to your suggestion, here's my two pennies' worth:

a) in my opinion, this should not be tied to layers. Instead it should
be part of a net class in the design rules. This would allow the user
to keep separate inner/outer constraints per net class. When
creating/modifying a net class, the user will be able to specify the
applicable layers (eg. [2-4,7,12]). This approach is also cleaner, since
all constraints will be in the same dialog window.

b) why don't you make

Re: [Kicad-developers] layer based constraints

2013-04-26 Thread Simon Huwyler
One more thing: I agree that the additional numbers may confuse a bit. So, 
why not just insert a check box named: Use layer based constraints?


Still one more thing (I'm a bit sarcastic now, but I don't mean it bad, 
don't get me wrong): Why is the layer stack in the menu constraints? ;-)


-Ursprüngliche Nachricht- 
From: Simon Huwyler

Sent: Friday, April 26, 2013 4:01 PM
To: Dick Hollenbeck ; kicad-developers@lists.launchpad.net
Subject: Re: [Kicad-developers] layer based constraints

Hi!

Only a quite short anwer for the moment - maybe I have more time this
evening...


a) in my opinion, this should not be tied to layers. Instead it should
be part of a net class in the design rules. This would allow the user
to keep separate inner/outer constraints per net class. When
creating/modifying a net class, the user will be able to specify the
applicable layers (eg. [2-4,7,12]). This approach is also cleaner, since
all constraints will be in the same dialog window.


I'm not so sure about that, but maybe I just have to think again. The thing
is that we're NOT talking about NET constraints. Let's suppose I have the
following netclasses:

Power
50Ohm_Transmission_line
default

Now, in addition to the constraints based on these nets, we must apply
constraints based on the layers. So, what should we do?


default_inner: 8 mils, applicable to layers 2 and 3
default_outer: 6 mils, applicable to layers 1 and 4

What about Power? Say, we have (unrealistically) set this to 6 mils. What
now, if we place a power track on layer 3? What is the right constraint?
I still think, it's much more obvious to just say:

We have NET constraints.
We have LAYER constraints.

We must satisfy BOTH of them
The logical consequence is: They must be defined separately.

But as I said: Maybe I just have to think again.


b) why don't you make a blueprint in launchpad for this? I'm no expert
in how launchpad works, but it looks like the right tool for submitting
ideas and technical details.


Neither am I! :-) but I try to do it this week-end!


*) is the benefit of using the smallest clearance and spacing on the outer 
copper layers
worth the this trouble in general?  Are your boards really that busy on 
these outer
layers?  Seeqstudio is forcing you down a path that you do not have to 
take.  You can use
them by using the wider spacing in the inner layers, on all layers.  What 
are you gaining
really?  Or is it just one part with narrow pad spacing pushing you down 
this path?


In fact, the idea rised upon an urge! Yes, it's definitively a HUGE issue.
Not that I have such a dense design, but I have a fine pitch device! Nothing
special, just a 0.5mm QFP. But it won't fit into the inner constraints for
seeedstudio. So I could set the constraints to 8mils and live with the
errors. And with the fact that I don't use what I pay for.
An what is the trouble? As in C++ vs C: You don't pay for what you don't
need. Don't care about layer constrants? Leave them at 0. And, after all,
that's in the tradition of Kicad: Don't care about individual solder paste
clearance? Just leave it at 0.


*) next question is, who else needs this?


everyone that places a QFP device on a 4 layer print produced by
seeedstudio. :-)

*) the documentation would need to be updated if we were to go down this 
path.  Otherwise
we might get bug reports when somebody sees a different spacing on a 
different layer for

the same net.


The beauty about my approach would be, that, if you don't acively insert a
number, nothing changes.
But I agree, this would need an update of the documenation. But I could do
this, too. And - after all - most additional features need to be documented,
aren't they? :-) And

To finish this response, I just want to stress again, that this was not just
an idea after thinking about what may bee a cool feature, but really the
result of some frustration that my real problem could not be solved
satisfactionally by the actual version of kicad.

Greets
Simon


-Ursprüngliche Nachricht- 
From: Dick Hollenbeck

Sent: Friday, April 26, 2013 3:22 PM
To: kicad-developers@lists.launchpad.net
Subject: Re: [Kicad-developers] layer based constraints

On 04/26/2013 03:02 AM, Dimitris Lampridis wrote:

On 04/25/2013 02:22 AM, Simon Huwyler wrote:

As some PCB manufacturers (i.e. seeedstudio) have different clearance-
an width constraints for outer- and inner layer, I had the idea to teach
Kicad to manage “layer based” constraints.

 

Ok, for the moment, I chatted enough. What do you think about it?


Hi Simon,

We use Kicad at work and we would like to get involved in the
development process, not only as a means to return something to this
excellent community, but also to actively improve the tools we are using.

To this end, I've also just subscribed to this list (hi everyone!), and
I'm keeping a list of features/fixes that I would like to start
proposing for implementation. I'm responding to your idea because it was
already on our list.

Now

Re: [Kicad-developers] layer based constraints

2013-04-26 Thread Simon Huwyler
hm... me again! Sorry about that, but I just had another thought I would 
like to tell you:


Taking the layer constraints into the (net) constrain dialog would mean that 
somehow, I have to tell for each constraint, to which layer it is 
applicable.
One problem with this approach I have already mentioned: How is the logic 
behind? What, if I am on a layer, to which no constrain is applicable to? I 
think, I could tell a dozen other configuration, that would make us all 
scratch our head and think: So, WHAT is no the actual with constraint for 
THIS net on THAT layer?
In my approch: Simple. Net says: 6 mil. Layer says: 8 mil. Without thinking, 
it's clear that it's 8 mils.


But there is another thing. Applicable to what? layer number? layer name? 
What, if I change this? What if I (and i DID this in this very project) 
decide to rename the layers, in a way that the naming increades from top to 
bottom instead of from bottom to top (or vice versa, I don't know anymore). 
What if I remove some layers? What happens to the entries already done?
Of course, these are all issues that can be managed. But I as a user then 
asks myself: Hmmm. What about a net constraint applicable to a layer that 
doesn't exist?


See what I mean? You can explain hot it is to be understood. But i think 
it's WAY more difficult than just say:


Both net and layer constraint must be satisfied. Remove a layer? So, that 
layer constraint is not used anymore. And therefore, it is removed from the 
dialog. Very intuitive.


-Ursprüngliche Nachricht- 
From: Simon Huwyler

Sent: Friday, April 26, 2013 4:08 PM
To: Dick Hollenbeck ; kicad-developers@lists.launchpad.net
Subject: Re: [Kicad-developers] layer based constraints

One more thing: I agree that the additional numbers may confuse a bit. So,
why not just insert a check box named: Use layer based constraints?

Still one more thing (I'm a bit sarcastic now, but I don't mean it bad,
don't get me wrong): Why is the layer stack in the menu constraints? ;-)

-Ursprüngliche Nachricht- 
From: Simon Huwyler

Sent: Friday, April 26, 2013 4:01 PM
To: Dick Hollenbeck ; kicad-developers@lists.launchpad.net
Subject: Re: [Kicad-developers] layer based constraints

Hi!

Only a quite short anwer for the moment - maybe I have more time this
evening...


a) in my opinion, this should not be tied to layers. Instead it should
be part of a net class in the design rules. This would allow the user
to keep separate inner/outer constraints per net class. When
creating/modifying a net class, the user will be able to specify the
applicable layers (eg. [2-4,7,12]). This approach is also cleaner, since
all constraints will be in the same dialog window.


I'm not so sure about that, but maybe I just have to think again. The thing
is that we're NOT talking about NET constraints. Let's suppose I have the
following netclasses:

Power
50Ohm_Transmission_line
default

Now, in addition to the constraints based on these nets, we must apply
constraints based on the layers. So, what should we do?


default_inner: 8 mils, applicable to layers 2 and 3
default_outer: 6 mils, applicable to layers 1 and 4

What about Power? Say, we have (unrealistically) set this to 6 mils. What
now, if we place a power track on layer 3? What is the right constraint?
I still think, it's much more obvious to just say:

We have NET constraints.
We have LAYER constraints.

We must satisfy BOTH of them
The logical consequence is: They must be defined separately.

But as I said: Maybe I just have to think again.


b) why don't you make a blueprint in launchpad for this? I'm no expert
in how launchpad works, but it looks like the right tool for submitting
ideas and technical details.


Neither am I! :-) but I try to do it this week-end!


*) is the benefit of using the smallest clearance and spacing on the outer 
copper layers
worth the this trouble in general?  Are your boards really that busy on 
these outer
layers?  Seeqstudio is forcing you down a path that you do not have to 
take.  You can use
them by using the wider spacing in the inner layers, on all layers.  What 
are you gaining
really?  Or is it just one part with narrow pad spacing pushing you down 
this path?


In fact, the idea rised upon an urge! Yes, it's definitively a HUGE issue.
Not that I have such a dense design, but I have a fine pitch device! Nothing
special, just a 0.5mm QFP. But it won't fit into the inner constraints for
seeedstudio. So I could set the constraints to 8mils and live with the
errors. And with the fact that I don't use what I pay for.
An what is the trouble? As in C++ vs C: You don't pay for what you don't
need. Don't care about layer constrants? Leave them at 0. And, after all,
that's in the tradition of Kicad: Don't care about individual solder paste
clearance? Just leave it at 0.


*) next question is, who else needs this?


everyone that places a QFP device on a 4 layer print produced by
seeedstudio. :-)

*) the documentation would need

Re: [Kicad-developers] layer based constraints

2013-04-26 Thread Simon Huwyler

Very cool idea!

Concerning the potential mess in the pcb file, I absolutely agree.
Concerning the potential mess I partly agree. Of course, this check-box 
would be in the layer stack dialog, not in the constraint dialog.


I really like your idea of an arbitrary list of constraints of any sort. 
And I like the thought that complex constraint sets could be scripted.
But I still think that for the normal user it has to be kept simple. I 
could imagine a gui based helper for the simpler constraints.


add constraint -- dialog with - how are they called? folder indexes on 
top of the dialog for: Layer constaint, net constraint, area constraint,...


and for more complex constraints: Just script them. :-) Or load them from a 
normal text file produced for a similar project.


Hmmm... Is it realistic? I really kinda like this idea! I also like mine ;-) 
but this would be even better!





-Ursprüngliche Nachricht- 
From: Tomasz Wlostowski

Sent: Friday, April 26, 2013 4:43 PM
To: Simon Huwyler
Cc: Dick Hollenbeck ; kicad-developers@lists.launchpad.net
Subject: Re: [Kicad-developers] layer based constraints

On 04/26/2013 04:08 PM, Simon Huwyler wrote:

One more thing: I agree that the additional numbers may confuse a bit.
So, why not just insert a check box named: Use layer based constraints?


Hi Simon,

I agree that such constraints are very useful, I use them frequently in
Altium, but this is only a small piece of the whole DRC machinery that
needs to be rewritten. A makeshift patch to the current DRC code will
only make it more difficult to fix properly in the future, for instance
by keeping these extra rules hardcoded in PCB files (that any newer
release will have to parse to keep compatibility).

For example, what about area-bound clearance/width constraints (i.e.
different clearance values for different parts of the PCB?). Why not
just insert another checkbox named Use area based constraints next to
yours and store a few more parameters in the .kicad_pcb file? Then
someone else comes up with yet another specialized constraint, and we'll
end up with bloated GUI and mess in code.

What about simply letting users specify a set of boolean expressions
that return the clearance for a pair of objects to be checked. For example:

1. both.GetLayer() in ['Top', 'Bottom']: 10 mil
2. not both.GetLayer() in ['Top', 'Bottom']: 14 mil
3. first.InArea ('My area'): 20 mil else: 10 mil
4. any.InComponent ('Some BGA that needs smaller clearance'): 5 mil
5. default: 10 mil

 and so on, and so forth, for any DRC check.

These can be python expressions, evaluated through the scripting engine
for each item before starting the DRC.

The advantages are:
- no need to change DRC's C++ code and/or GUI whenever somebody requests
a fancy constraint configuration
- rule expressions can be stored in .kicad_pcb files without risk of
being deprecated (unless somebody changes the API of the scripting engine).
- PS must follow design rules as well. I would prefer get the clearance
value for any pair of objects directly via scripting engine  instead of
parsing and analyzing all specialized constraints again in PS code.
- automatic trace impedance calculation via python expressions:

both.IsDiffPair()  both.GetLayer() == 'Top'  :
DifferentialMicrostrip(first, second).Gap

Regards,
Tom










___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] layer based constraints

2013-04-26 Thread Simon Huwyler

Hi,

in case  you are interested, you can find a diff attached. It's of course a 
very basic version, the constraints are neither saved nor initialized at 
startup, and only track width and track clearance are handled yet.


But imagine being in the position where you have such different layer 
constraints as with seeedstudio and want to make use of the finer 
constraints on the outer laysers - then you must admit that this little 
helper will make one's life much easier! To try, just open an example, set 
i.e. front/back width/clearance constraints to some numbers and 
create/extend a track, swiching from front to back and vice versa.


I like it much and I will finish this little helper to get my PCB done. And 
of course I will provide the code (after all, this is mandatory, as told by 
the GPL :-) ).


I must admit that I am happy as can be about this very first success of mine 
in improving open source software at least for myself! :-D Until now I 
really thought that the advantage of open source SW of enabling personal 
enhancments was just a theoretical one, because in real life, this would not 
be realistic for normal people without having kneeled into the code for 
months - but this seems not to be true!


But as you don't seem to like (this realization of) layer based constraints 
that much, I think I will just keep this diff an patch the new kicad 
versions as they arrive for my personal use. :-)


Best regards
Simon

-Ursprüngliche Nachricht- 
From: Simon Huwyler

Sent: Friday, April 26, 2013 5:30 PM
To: Wayne Stambaugh ; kicad-developers@lists.launchpad.net
Subject: Re: [Kicad-developers] layer based constraints


It's not quite that clear.  Which constraint has precedence?


The one that is more restrictive. I think it doesn't make sense to give one
constraint precedence over the other. They're separate.
It's like:

The voltage over the resistor must not be higher than 100 Volts because of
the power dissipation. And the voltage of the resistor must not be higher
than 1000 volts because of break-through. Both have the same weight.

Same here: The clearance must not be less than 6 mils because i want this
NET not be closer to anythin other (h... here, we could again do fancy
things with python :-) ) than this. And it must not be less than 8 mils
becauls the manufacturer of the board can not handle less clearance on this
layer. They are independent and I never-ever want a constraint to disable
any other constraint. That's the point about constraints: they ara
mandatory. If I am able to allow exceptions to constraints by other
constraints (as the mentioned BGA from Tomasz) then it gets more complicated
and must be handled in a script, as he proposed.


-Ursprüngliche Nachricht- 
From: Wayne Stambaugh

Sent: Friday, April 26, 2013 5:06 PM
To: kicad-developers@lists.launchpad.net
Subject: Re: [Kicad-developers] layer based constraints

On 4/26/2013 10:41 AM, Simon Huwyler wrote:

hm... me again! Sorry about that, but I just had another thought I
would like to tell you:

Taking the layer constraints into the (net) constrain dialog would mean
that somehow, I have to tell for each constraint, to which layer it is
applicable.
One problem with this approach I have already mentioned: How is the
logic behind? What, if I am on a layer, to which no constrain is
applicable to? I think, I could tell a dozen other configuration, that
would make us all scratch our head and think: So, WHAT is no the actual
with constraint for THIS net on THAT layer?
In my approch: Simple. Net says: 6 mil. Layer says: 8 mil. Without
thinking, it's clear that it's 8 mils.


It's not quite that clear.  Which constraint has precedence?  If memory
serves (someone correct me if I'm wrong), currently all constraints are
superseded as you go down the stack.  In other words:

global - zone - net class - footprint - pad

where each item below the previous one takes precedence.

In your proposal we end up with:

global - layer - zone - net class - footprint - pad
|  ^
|  |
+--+

where the layer constraints bypass the zone and net class constraints.

Maybe a cleaner solution would be to extend the net classes to have
separate constraints for inner layers and outer layers.  The only
remaining question is would there ever be a need for a net class to have
different constraints for different inner layers.

Wayne



But there is another thing. Applicable to what? layer number? layer
name? What, if I change this? What if I (and i DID this in this very
project) decide to rename the layers, in a way that the naming increades
from top to bottom instead of from bottom to top (or vice versa, I don't
know anymore). What if I remove some layers? What happens to the entries
already done?
Of course, these are all issues that can be managed. But I as a user
then asks myself: Hmmm. What about a net constraint applicable to a
layer that doesn't exist