From @ouabache on Sun Nov 11 2018 19:00:26 GMT+0000 (UTC)
If you compare LibrePCB’s pin attributes with Kicads you see that we have
Pin Name
Position x,y
Length
Rotation
Kicad has
Pin Name
Position x,y
Length
Rotation
Pin Number
Pin Name text size
Pin Number text size
Unit
Convert
Etype (in,out bidi etc)
Shape clocked,inverted etc
Pin number is handled in the device so we do not need it and the Unit,Convert are handled in the component so we don’t need them either.
Invisibility is also handled in the component while kicad does it in the Shape.
Kicad can only do three things that we can’t and those are:
Resizing Pin Name text
Attaching an Etype attribute
Using an alternate graphic
LibrePCB should consider adding these if we want to be able to share designs with kicad.
There are also some attributes that neither one has that would be really useful to add.
-
Pin Name Position. You always want to have the option to move the Pin Name in respect to its origin. This should not be on the snap grid.
-
Display Name. The Pin Name is used by about half a dozen different engineering groups and they all have their own pin naming requirements. The Pin Name must meet all of them. It is impossible to meet that requirement. When I worked for HP our board designers got tired of hearing that they couldn’t use a certain pin name that they wanted because it was also also a VHDL keyword that they gave up and implemented a display name.
The pin names that you saw on our schematics were simply graphics that the board designers wanted and were not connected in any way with the actual pin name.
We did a lot of chips with 3 or 4 different functions on each pin that were used in 3 or 4 different products. Display Names meant that each design could display the name that was important to them and did not have to compromise because some other group using the chip had other needs.
-
Indexes Low and High. When you implement signal vectors and hierarchy then you will need these.
-
Hierarchy. All pins connect to a different level in the hierarchy. Some go up and others go down. You need an attribute for this. Sometimes the same pin will do both in different components. A pin on a FPGA will connect down the hierarchy while the same pin on an off board connector will connect up. An attribute lets you use one pin for both cases.
-
??? Don’t kid yourselves into thinking that you can predict all the attributes that the users will need in the future. Provide a method so that the user can add their own attributes and set them from an attribute in the component. You do not want the make the user wait until the next release for a feature that they need today
John Eaton
Copied from original issue: https://github.com/LibrePCB/librepcb-rfcs/issues/38