← Back to team overview

kicad-developers team mailing list archive

Re: Fileformats and library

 

> Dear Khiraly,

Dear Dick,


First, I really appreciate you have took time to read my long proposal.

I try to answer all of your questions,
and elaborate my proposal here and there.

>
> This is good stuff. I am surprised that you have not gotten anybody
> else to respond. I was waiting for others to comment before I did, but
> none have yet so I thought at least I would tell you that your ideas are
> appreciated, and seem to be quite well thought out.
Thank you.

>
> Here is my understanding of your suggestions:
>
> You suggest a two phase transition.
>
> In the first phase, all we do is split the schematic symbols and
> footprints into individual files and teach eeschema and pcbnew how to
> scan a subdirectory tree (one or more such trees with different base
> directories would be nice) to find all the symbols and footprints. And
> commit each of these files to subversion.

Yes, exactly.

>
> In the second phase, and concurrent with support for first phase so a
> gradual migration can occur, you suggest moving to an integrated file
> per symbol, and that integrated file would have all the required pieces
> to describe a electronic component.
>
> The first phase seems reasonable. I am not sure about the second
> phase. It seems you might be suggesting that for example all SMT 0805
> footprints would point to (would be bundled with in phase II) the same
> 3d model? I think that train of thought needs more clarification and
> elaboration.
>

Yes, it needs some clarification, because it is not what I would like to
see.

>It seems you might be suggesting that for example all SMT 0805
> footprints would point to (would be bundled with in phase II) the same
> 3d model?

Nope. All I have wanted to say, that some footprints can have requirements,
which can be listed in the footprint file itself.
Something like:
<footprint>
<name>SMT 0805</name>
....
<filters>3dpackages/foo, 3dpackages/bar</filters>
</footprint>

Its really the same what we HAVE NOW in CvPcb. We have an icon:
"Display the filtered footprint list for the current component"
Which display the logical choices for a particular schematic symbol.

>you suggest moving to an integrated file
> per symbol, and that integrated file would have all the required pieces
> to describe a electronic component.

This integrated file thingy: I propose a file per physical device to easy
the SEARCHING. And not to replace any other file formats (schematic,
footprint, 3dpackage).

Let me take an example:
I want to switch 3 leds at once with my microprocessor.
My microprocessor cant feed enough current to drive directly my
leds, so I need a transistor. Lets suppose also, that im new to all these
electornic thingy and pcb design process.
So I google up for something usable, and I find out that I need an NPN
transistor (and a ~5k resistor).
I look in my local electronic store for the CHEAPEST transistor.
I have bought one for 3 cents. It is marked BC547B on it.
So this is the backround story;) Now I want to integrate my brand
new transistor into my kicad project.
I need the following information:
transistor type: NPN
packaging: TO92
3dmodel: TO92

There is two possibility:
1. there are already someone who have looked into this,
and collected the above informations for me (this the purpose
of the library/device/ folder, the "integrated file per symbol"
as you referred it)

2. I google all of these. I read the relevant datasheets and find out
the packaging. (note: I didnt even know that the packaging has
standard names! Who cares anyway?;)

Ok. Let take an another example:
I want an optoisolator, I find an smd model in
my local electronic store: TLP-281.
- Optoisolator schematic are not in Kicad right now.
- there is no packaging in Kicad.
- there is no 3d model.

I look in the datasheet, and
- draw the schematic
- find out the packaging name is: soic4,
and I draw the packaging with the *appropriate* name

For me it took more than 2 days initially figuring out all of these!
(like for a simple transistor what packaging should I choose?
For my first project I choosed a pinarray 3x1, because I only knew
that I need 3 legs.)

So for ease this process Im proposing a description file per device.
So each physical device would have one file which points to the right
informations. Something like
<device>
<name>BC547</name>
<description>General purpose NPN transistor</description>
<alias>BC546, BC547B, BC547B</alias>
<schematic>schematic/device/npn.dsch</schematic>
<footprint>footprints/discret/to-92.foot</footprint>
<package>packages3D/to-92.wrl<package>
<datasheet>
<url>http://www.alldatasheets.com/to-92.pdf</url>
<file>datasheet/to-92.pdf</file>
</device>

If a device has multiple packages(and footprints),
we can just list all the alternatives:

<device>
<name>TL71</name>
<description>JFET Op-amp</description>
<alias>TL071C, TL072C, TL074C, TL071AC, TL072AC</alias>
<schematic>schematic/device/opamp.dsch</schematic>
<footprint>footprints/device/pdip.foot</footprint>
<footprint>footprints/device/so8.foot</footprint>
<package>packages3D/so8.wrl<package>
<package>packages3D/pdip.wrl<package>
<datasheet>
<url>http://www.alldatasheets.com/tl72a.pdf</url>
<file>datasheet/tl72.pdf</file>
</device>

I hope you can get now a better idea what I want.

So to summerizing up:
* I want to separate all information into separate files.
* Introduce a new file which ease the searching
(map a particular device to its package(s), footprint(s), schematic)

If this reorganization happens, it ease:
* third party applications to grow, like library browser
* specialized wiki like website collecting the most used parts
* a standard exchanging fileformat for the above tools
(from the wiki we could generate the device files for offline searching)

There are so many comments in this thread, that I will answer to them in
an another mail.

Best regards,
Khiraly
 ------=_Part_3526_10197577.1207257287039 Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

<span style="font-family: courier new,monospace;">&gt; Dear Khiraly,<br><br><br>Dear Dick, <br><br><br></span><span style="font-family: courier new,monospace;">First, I really appreciate you have took time to read my long proposal.</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">I try to answer all of your questions, <br>and elaborate my proposal here and there.</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; This is good stuff. I am surprised that you have not gotten anybody </span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&gt; else to respond. I was waiting for others to comment before I did, but </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; none have yet so I thought at least I would tell you that your ideas are </span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&gt; appreciated, and seem to be quite well thought out.</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Thank you.<br>
<br>&gt; </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; Here is my understanding of your suggestions:</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; </span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&gt; You suggest a two phase transition. </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; </span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&gt; In the first phase, all we do is split the schematic symbols and </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; footprints into individual files and teach eeschema and pcbnew how to </span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&gt; scan a subdirectory tree (one or more such trees with different base </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; directories would be nice) to find all the symbols and footprints. And </span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&gt; commit each of these files to subversion.<br><br>Yes, exactly.<br><br style="font-family: courier new,monospace;"></span><span style="font-family: courier new,monospace;">&gt; </span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&gt; In the second phase, and concurrent with support for first phase so a </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; gradual migration can occur, you suggest moving to an integrated file </span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&gt; per symbol, and that integrated file would have all the required pieces </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; to describe a electronic component.</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&gt; </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; The first phase seems reasonable. I am not sure about the second </span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&gt; phase. It seems you might be suggesting that for example all SMT 0805 </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; footprints would point to (would be bundled with in phase II) the same </span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&gt; 3d model? I think that train of thought needs more clarification and </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; elaboration.</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&gt; <br><br>Yes, it needs some clarification, because it is not what I would like to see.<br><br></span><span style="font-family: courier new,monospace;">&gt;It seems you might be suggesting that for example all SMT 0805 </span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&gt; footprints would point to (would be bundled with in phase II) the same </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; 3d model?<br>
<br></span><span style="font-family: courier new,monospace;">Nope. All I have wanted to say, that some footprints can have requirements, which can be listed in the footprint file itself.<br>Something like:<br>&lt;footprint&gt;<br>
&nbsp;&lt;name&gt;SMT 0805&lt;/name&gt;<br>&nbsp;....<br>&nbsp;&lt;filters&gt;3dpackages/foo, 3dpackages/bar&lt;/filters&gt;<br>&lt;/footprint&gt;<br><br>Its really the same what we HAVE NOW in CvPcb. We have an icon:<br>&quot;Display the filtered footprint list for the current component&quot;<br>
Which display the logical choices for a particular schematic symbol.<br><br></span><span style="font-family: courier new,monospace;">&gt;you suggest moving to an integrated file </span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&gt; per symbol, and that integrated file would have all the required pieces </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; to describe a electronic component.</span><br>
<span style="font-family: courier new,monospace;"><br>This integrated file thingy: I propose a file per physical device to easy the SEARCHING. And not to replace any other file formats (schematic, footprint, 3dpackage).<br>
<br>Let me take an example:<br>I want to switch 3 leds at once with my microprocessor. <br>My microprocessor cant feed enough current to drive directly my <br>leds, so I need a transistor. Lets suppose also, that im new to all these<br>
electornic thingy and pcb design process.<br>So I google up for something usable, and I find out that I need an NPN <br>transistor (and a ~5k resistor).<br>I look in my local electronic store for the CHEAPEST transistor.<br>
I have bought one for 3 cents. It is marked BC547B on it.<br>So this is the backround story;) Now I want to integrate my brand <br>new transistor into my kicad project. <br>I need the following information:<br>transistor type: NPN<br>
packaging: TO92<br>3dmodel: TO92<br><br>There is two possibility:<br>1. there are already someone who have looked into this, <br>&nbsp;&nbsp; and collected the above informations for me (this the purpose<br>&nbsp;&nbsp; of the library/device/ folder, the &quot;</span><span style="font-family: courier new,monospace;">integrated file </span><span style="font-family: courier new,monospace;">per symbol&quot; <br>
&nbsp;&nbsp; as you referred it)<br><br>2. I google all of these. I read the relevant datasheets and find out <br>&nbsp;&nbsp; the packaging. (note: I didnt even know that the packaging has <br>&nbsp;&nbsp; standard names! Who cares anyway?;)<br></span><span style="font-family: courier new,monospace;"><br>
Ok. Let take an another example:<br>I want an optoisolator, I find an smd model in <br>my local electronic store: TLP-281.<br>- Optoisolator schematic are not in Kicad right now.<br>- there is no packaging in Kicad. <br>- there is no 3d model.<br>
<br>I look in the datasheet, and<br>- draw the schematic<br>- find out the packaging name is: soic4, <br>&nbsp; and I draw the packaging with the *appropriate* name<br><br>For me it took more than 2 days initially figuring out all of these!<br>
(like for a simple transistor what packaging should I choose?<br>For my first project I choosed a pinarray 3x1, because I only knew <br>that I need 3 legs.)<br><br>So for ease this process Im proposing a description file per device.<br>
So each physical device would have one file which points to the right informations. Something like<br>&lt;device&gt;<br>&nbsp;&lt;name&gt;BC547&lt;/name&gt;<br>&nbsp;&lt;description&gt;General purpose NPN transistor&lt;/description&gt;<br>
&nbsp;&lt;alias&gt;BC546, BC547B, BC547B&lt;/alias&gt;<br>&nbsp;&lt;schematic&gt;schematic/device/npn.dsch&lt;/schematic&gt;<br>&nbsp;&lt;footprint&gt;footprints/discret/to-92.foot&lt;/footprint&gt;<br>&nbsp;&lt;package&gt;packages3D/to-92.wrl&lt;package&gt;<br>
&nbsp;&lt;datasheet&gt;<br>&nbsp; &lt;url&gt;<a href="http://www.alldatasheets.com/to-92.pdf";>http://www.alldatasheets.com/to-92.pdf</a>&lt;/url&gt;<br>&nbsp; &lt;file&gt;datasheet/to-92.pdf&lt;/file&gt;<br>&lt;/device&gt;<br><br>If a device has multiple packages(and footprints), <br>
we can just list all the alternatives:<br><br></span><span style="font-family: courier new,monospace;">&lt;device&gt;<br>
&nbsp;&lt;name&gt;TL71&lt;/name&gt;<br>&nbsp;&lt;description&gt;JFET Op-amp&lt;/description&gt;<br>
&nbsp;&lt;alias&gt;TL071C, TL072C, TL074C, </span><span style="font-family: courier new,monospace;">TL071AC, TL072AC</span><span style="font-family: courier new,monospace;">&lt;/alias&gt;<br>
&nbsp;&lt;schematic&gt;schematic/device/opamp.dsch&lt;/schematic&gt;<br>
&nbsp;&lt;footprint&gt;footprints/device/pdip.foot&lt;/footprint&gt;<br></span><span style="font-family: courier new,monospace;">&nbsp; &lt;footprint&gt;footprints/device/so8.foot&lt;/footprint&gt;</span><br><span style="font-family: courier new,monospace;">
&nbsp;&lt;package&gt;packages3D/so8.wrl&lt;package&gt;<br></span><span style="font-family: courier new,monospace;">&nbsp; &lt;package&gt;packages3D/pdip.wrl&lt;package&gt;</span><br><span style="font-family: courier new,monospace;">
&nbsp;&lt;datasheet&gt;<br>
&nbsp; &lt;url&gt;<a href="http://www.alldatasheets.com/tl72a.pdf";>http://www.alldatasheets.com/tl72a.pdf</a>&lt;/url&gt;<br>
&nbsp; &lt;file&gt;datasheet/tl72.pdf&lt;/file&gt;<br>
&lt;/device&gt;</span><br><span style="font-family: courier new,monospace;"><br>I hope you can get now a better idea what I want.<br><br>So to summerizing up:<br>* I want to separate all information into separate files.<br>
* Introduce a new file which ease the searching <br>&nbsp; (map a particular device to its package(s), footprint(s), schematic)<br><br>If this reorganization happens, it ease:<br>* third party applications to grow, like library browser<br>
* specialized wiki like website collecting the most used parts<br>* a standard exchanging fileformat for the above tools<br>(from the wiki we could generate the device files for offline searching)<br><br>There are so many comments in this thread, that I will answer to them in <br>
an another mail.<br><br>Best regards, <br>&nbsp;Khiraly<br><br><br><br></span><span style="font-family: courier new,monospace;"></span><span style="font-family: courier new,monospace;"></span><br style="font-family: courier new,monospace;">
 ------=_Part_3526_10197577.1207257287039-- 




References