-
Notifications
You must be signed in to change notification settings - Fork 114
KLC: S4.4: Clarify electrical pin type for I2C busses #342
Comments
I don't want to get the KLC to that level of hand-holding to be honest. We might want to add a bit more specialized wording but if we list what type some pins with a particular functionality should have then we will end up with a very long list in after a while. Maybe something like this should be specific enough and still generic:
We can in addition link to further documentation:
|
I also just noticed that the last point does not really fit into this section:
Has nothing to do with electrical type. (Should maybe be moved to S4.1) |
I understand your position. Maybe going to that level of detail is not a good way to proceed. In any case, there has been a history of non-agreement about the issue and there is a number of non-consistent symbols in the library so I feel the need to unify them for better library quality. Given that you are the one coordinating the librarians at the moment I would ask you to evaluate the arguments available and to please provide a recommendation in favour of one of the solutions. I would even try to check this with the library check scripts in order to avoid future quality degradation of the symbols. In this sense, checking for a rule that doesn't exist as such is not a very good way to proceed... Can you guide me in a way fordward to unlock those stuck contributions and to improve quality? Thank you and sorry for the push on the situation |
My main point is that the KLC should not be a place to look for documentation. It might be a better approach to improve the official documentation instead.
I read the full thread you linked. It is a bit of a trainwreck to be honest. There was a lot of talk about unrelated stuff in there which makes it extremely hard to follow. And the discussion really went in circles. I think the reason behind this is that ERC is not really flexible enough to deal with pins like I2C clocks of slave devices with clock stretching. I would think that such a pin is a combination of an input pin plus a open collector. But such a pin type does not exist in kicad. So the next best thing is either choose more "restrictive" and go with input (will be the correct choice when you see the pin type as only used for ERC) or go more generalized and use Bi-directional. (this might be the choice if you want to see the pin type as also informing the user about information flow) I think the rule-set i posted above will force the choice of input as it is the most specialized type that does not result in false positives. (The pin never is a output on its own so bi directional would be too generalized making ERC practically unusable) The current rule set does indeed not specify anything that would be of use here as it simply gives a few examples without giving the reason behind their choice.
I really like the general idea behind it but i fear it might be a bit naive to think that simply adding more and more checks will improve the overall quality of the lib. I really see the danger of getting to a stage where travis basically throws more false positives than useful results. (Even the current pin type checks are more often than not simply wrong. Without context the pin name it self is simply not enough to make a decision.) |
For further guidance we could also give an ordering of pin type "specialization" (or restrictiveness) Here my interpretation of the order from most general to most specialized:
|
I think that's a generally good way to abstract pin types instead of listing pin types bus-by-bus or case-by-case, but there are a few thoughts:
I'd like to contribute an idea instead of only complain and play devil's advocate, but I don't have any better suggestions right now. |
Regarding your points: 1: I thought my description made it clear that i try to find simple rules to make ERC as useful as possible (with generic symbols) 2: Yes the priority list should probably be more like a tree. (Is however hard to show with text only. So this will need a graphic) 3: It would actually. (at least my intended interpretation of the algorithm) The algorithm would stop at input as it is the most specialized that does not give a false positive. (It would go over bi directional as input still fulfills all requirements.) 4: From my priority list: power input (If common for power output and power input side then input takes precedence) -> meaning if a pin can be both then it is to be defined as the worst case. In this case power input. (Generic symbols that encompass all possible usecases have limitations. More useful definitions require usecase or project specific symbols. These are however the responsibility of the user) 5: Another problem of having a linear representation. I think a more detailed tree view (or even forest view) would solve that. |
There has been a long ongoing discussion about electrical pin types in particular cases. A clear example is I2C clock lines as they can be defined as multiple types depending on the criteria used.
I don't know if we can come up with a rule to cover all the possible cases. For that reason I think that those particular cases that we don't agree on, a decission must be taken and documented for the sake of consitency.
An example and I think the longest discussion about I2C clock pin types I have found:
KiCad/kicad-symbols#350
The text was updated successfully, but these errors were encountered: