Closed SchrodingersGat closed 6 years ago
How about display_matrix
(pixel based displays), display_segment
(bar, 7-seg, etc) then?
dot-matrix displays fall (for me) more in the same category as 7 segment (or better 14 segment) displays because the have a clear separation between there "letters"
I think "graphical" describes the capabilities better. Simple might not be the best name. But would you search dot matrix displays or bar displays under display_segment
?
Should we just leave it as display.lib
and then see where the categorization falls as the library grows?
TlDr: I would split the display libs along the line of graphical/non graphical
That would make it a bit more future proof. I would aim for something where we only need to split libs again when v6 comes out. (In other words, if we think this lib might be split as soon as more symbols are added we should split it now.) If @Misca1234 carries on as he does now we will shortly reach that point. (one display symbol, footprint 3d model a week -> that sums up over the next 2 to 3 years until v6 comes out. He might also stop tomorrow who knows.)
But i might be wrong. Your call. It is hard to predict where the contributors take us. (And i'm sure we will be forced to split a few libs during the lifetime of v5 while others stay "empty". I just hope to limit this as far as possible.) I understand why limiting libs might be a good idea. (Some people would like one large lib. I'm more the fine grained type. I don't think from a maintainance point of few there are problems as long as it is easy to see where a symbol should go. There is of course the danger that there exists a component that falls into multiple categories.)
Side note, (explains my stance a bit i think): I hope that the contribution frequency stays at the current rate or even increases further. (The last year saw much more activity then the year before that. That year saw more activity than the year before, ...) A large part of that is a reduced response time between initial PR opening and first feedback (even if it is only by travis) And i think the clear KLC also helps. A clear library structure might further increase interest by contributors. (Or everybody hates us for putting the bar too high and they stop contributing. God i hope not.)
@poeschlr I appreciate your points - if we can predict future use it is better to make the change now rather than later. I'll ponder over this one (it's way too late at night here already :) )
@poeschlr There actually are analog isolators (usually called isolation amplifiers, see e.g. http://www.analog.com/en/products/amplifiers/isolation-amplifiers/ad215.html ... and we even have some in the LIB) ... and there are parts that combine an LED and an LDR, which can also be used as an analog isolator (although slow).
@SchrodingersGat here are some I2C examples:
and for SPI:
@SchrodingersGat What about the name logiclevel_translator.lib
... level is maybe a bit generic?
About displays: I would like to see
display_character
(7seg, typical LCD-displays for text ...)display_graphic
(graphic displays maybe also LED DOT-matrix in here)One could think about splitting out the two special cases:
display_dotmatrix
(dot-matrix, bars, ...)display_segmented
(7-segment, ...)but not really sure ... what is best
Best, JAN
Ok I have updated graphic_
and added interface_i2c
and interface_spi
. Time for bed :) Thanks for the suggestions.
About displays: I would like to see display_character (7seg, typical LCD-displays for text ...) display_graphic (graphic displays maybe also LED DOT-matrix in here)
I like that. My only problem is where do led bar displays fit here. Maybe they should go into the led lib? (Can be seen as led array. Has similarities to a resistor array.) I would put typical dot matrix displays into the display_character lib. (they can not really display graphics.) As dot matrix i see a display where there are small fields with a specific number of dots. These fields are then repeated a number of times over the display with some space in between them. Each such field is typically reserved to display one character or symbol at a time. (Very similar to how a n-segment display is build)
Edit: make it more clear what i mean only two display libs
Sadly led bar "displays" would not fit in either lib. I would suggest to move them into a led lib because they can be seen as led arrays. Putting them int the character lib might be a bit of a stretch but i can see them fitting in there as well.
What about relay.lib
Maybe relay_mechanical
and relay_solid_state
? (The later is currently often in opto.lib, SSR are not really used for the same usecases as isolators.)
What is the difference between regulator_switching_module.lib
and power_module_dc-dc.lib
or power_module_ac-dc.lib
(I think this came out of a suggestion by @evanshultz but i can't really follow it.)
More questions:
transistor.lib
maybe into transistor_bipolar.lib
, transistor_fet.lib
, transistor_igbt.lib
, transistor_ujt.lib
device.lib
reside there, or should they be moved to the respective specialized libs? Maybe not, as they are no good bases for ALIASes, as they don't specify packages.Best, JAN
I still feel there's a level of classification missing. Libraries with ICs in them should start with ic_
, such as ic_comparator.lib
. Otherwise we will have libraries all spread out that are related. And it further clarifies the content of a library, so that it's clear to users that ICs are in this library.
Why not rename triac
to thyristor
? The explanation says it's for all thyristors, and these are pretty rare so lumping them all together should be fine. If not, it seems odd to put diacs, scrs, and other thyristors into a library named triac
?
Can we fill in the expected use of the transformer
libraries? We would have power transformers at the line frequency, high frequency power transformers (SMPS), gate drive transformers, audio bandwidth transformers (both high power and low power), ethernet/digital transformers, etc. How do all of those map to the libraries above? And also, how do we name transformers? If the transformer is a single-source part then we could use the MPN. But what if it's a custom or generic transformer?
I think we need audio_misc.lib
or ic_audio_misc.lib
. Where do SRCs go? DIRs and DITs? Audio volume control ICs? Mic preamps like THAT1583 and THAT5263. Those are parts in the market, some of them are in the library now, and it's unclear to me where they should live.
Where does a part like AD7533 go? This is an existing library part.
I would like to change amplifier.lib
to amplifier_operational.lib
or amplifier_opamp.lib
(but that sounds weird). Otherwise it's ambiguous to me what goes into that library. Audio power amplifiers would seem to fit. What about OTA? It's better than linear.lib
, but it's still not well-classified to me.
Does amplifier_audio.lib
encompass linear and switching power amplifiers? Like TPA3251 and TDA7577 and MAX9710 and MAX9715? And why is it not in the "Audio / Video" section?
What exactly is in power_conditioning.lib
? Is this some AC in, DC out PFC pre-regulator?
Here is your answer, @poeschlr. power_module*
libraries are complete, OTS power supplies. They do come in both varieties (AC in and DC in, with DC out) and I think a user would reasonably expect them to be segregated. That part is fine. I have no idea about regulator_switching_module.lib
. However, since we have regulator_switching_controller.lib
we should have regulator_switching_converter.lib
. These are external switch (not only FET) and internal switch parts, and they are grouped differently. Check out the part taxonomy at any IC vendor or distributor. But there is another group of parts: generic PWM controllers like SG3525 and TL494. Those could be separate from the parts in the libraries above which are generally relatively fixed-function DC-DC converters. So I think that's a third library, perhaps named regulator_smps_controller.lib
or regulator_pwm_controller.lib
. PFC controllers deserve, I think, their own library. Suggest regulator_pfc_controller.lib
. Is that too much?
Should adc-dac.lib
be adc_dac.lib
(note underscore?
I assume driver_gate.lib
here is only for ICs since transformers appear to be captured above. Another reason to preface IC libs with ic_
. Would this lib include audio-focused gate drivers like IRS20957 and IRS2092? Those are certainly not a general-purpose gate driver and we have broken out audio parts for other categories.
Why timer_oscillator.lib
if it only contains oscillators and crystals? Wouldn't crystal_oscillator.lib
or clock.lib
be a better name?
Since there's a lot of overlap, where many ICs will handle both protocols, how about interface_rs232_rs485.lib
to combine the two separate libs?
To @jkriege2
transistor_igbt.lib
and a ton of others. Lots of library management overhead for probably little benefit, from my perspective, since in many circuits I could use either. Would having transistor_array.lib
(for parts with multiple transistors) fall into the same category of being too much?If we mark libs that have ics in them with ic we have 80% of the libs starting with ic Not sure if that helps anyone. I see ic more as a technology than a function.
@jkriege2 - General question: Should the generic transistor/diode/... symbols from device.lib reside there, or should they be moved to the respective specialized libs? Maybe not, as they are no good bases for ALIASes, as they don't specify packages.
My thinking was the device.lib
contains generic transistor symbols without package association. transistor_x.lib
is for specific parts with footprints assigned.
@poeschlr - If we mark libs that have ics in them with ic we have 80% of the libs starting with ic Not sure if that helps anyone. I see ic more as a technology than a function.
Definitely agreed. ic_
is not the important functional qualification, and MOST devices will be ICs anyway.
@evanshultz - why not rename triac to thyristor? I think we need
audio_misc.lib
Ok, done! :+1:
@evanshultz - what exactly is in power_conditioning.lib? Is this some AC in, DC out PFC pre-regulator?
I was thinking PFC etc
Since there's a lot of overlap, where many ICs will handle both protocols, how about interface_rs232_rs485.lib to combine the two separate libs?
I have merged all RS232/422/485 into interface_uart.lib
@evanshultz - Why timer_oscillator.lib if it only contains oscillators and crystals? Wouldn't crystal_oscillator.lib or clock.lib be a better name?
Fair point, I see crystals and clock ICs as being similar but separate. Perhaps two separate libs?
General question: can we reduce the amount of acronyms here? I'm getting lost a bit. (This might be the reason why i still don't fully understand the description by @evanshultz. What is an OTS power supply?)
I think we should keep this discussion as clear as possible to help us and future contributors determine what symbol should go in what lib. (Remember: not everyone learned this stuff in english)
Question - where should things like SD-cards / SIM card live?
I was thinking PFC etc
@SchrodingersGat I still don't know what you mean. Can you give an example?
@poeschlr My apologies. OTS = off the shelf. Not custom-designed. My understanding is that if the lib name includes module
it would be for something like this. I don't know why there would be 3 module
libs, though.
on_semi.lib divestiture:
transistors.lib
? (these are like the load switches from infineon.lib
)All parts in allegro.lib
can go to sensor_current.lib
.
nxp.lib mapping:
interface_i2c.lib
interface_i2c.lib
I guessAll xicor.lib
can go to digital_pot.lib
.
Worldsemi.lib
(which doesn't need to be capital) are all integrated/smart LEDs. They don't fit into display*.lib
or driver_led.lib
, I don't think, and led.lib
is generic. So... anybody have ideas?
Well we put the smart transitors made by infineon into the transistor lib. By that logic smart leds can go into the led lib. Truly generic (led) symbols go into device lib or am i wrong about that?
supertex.lib break out:
reference_current.lib
(it's a general-purpose current regulator, even though they mention LEDs)power_distribution.lib
regulator_switching_converter.lib
regulator_linear.lib
The siliconi.lib
should really have been siliconix.lib
, and the parts inside should go:
driver_motor.lib
(seems like the best option to me)analog_switch.lib
That's a good chunk of the libraries, but texas.lib is huge and I didn't touch it. I'll tackle that one tomorrow if nobody else has done it.
I would not really list exactly which symbol will go where. A better way is to find out which libs will be needed in the new lib system for splitting the legacy lib. What symbol goes where is better determined while moving a lib to the new system. (otherwise we do double the work.)
They will need to move at some point, and I mentioned if there wasn't an obvious mapping to the libraries already created above. Isn't that the same goal?
Hi!
the analog multipliers are also a problem ... maybe we need something like analog_misc.lib
or linear_misc.lib
for such special function ICs or anything that doesn't fit anywhere else ...
JAN
@jkriege2 such libraries will become apparent as we reorganize and find symbols that need a home but don't have one.
Question - where should things like SD-cards / SIM card live?
Any ideas on this one?
About SD/SIM: Why not keep them in connectors? They are "just" connectors for such devices in the end ...
JAN
or a new lib under the connectors category? example: connector_card
(maybe a better name is needed.)
iff we split connectros.lib
... Has there been a consensus on that?
About SD/SIM: Why not keep them in connectors? They are "just" connectors for such devices in the end ...
Even if finally, it doesn't change anything, there is some "eSIM" card which should become available soon. These are SIM card which you'll solder directly on your PCB, so these won't be "just" a connector for a long time... But since it should be managed by the FP association, this isn't really important
I would vote for the connector_card
or even only card
since you'll be able to add some other cards readers (like smart cards). I don't know too if there is a lot of cards out there (i already saw some connectors allowing both sim and SD cards) and if it'll be worth adding a new lib just for that.
It's just a suggestion thought since i absolutely don't know how to handle these other cards...
what about simply adding a connectors_misc.lib
for things like sd-card-connectors?
This all looks great, my only comment so far is:
mcu.lib - Micros that don't fit anywhere else cpu.lib - Processors that don't fit anywhere else dsp.lib - DSP chips that don't fit anywhere else soc.lib - SOC chips that don't fit anywhere else
Whats actually in these now? It seems like future maintenance rot waiting to happen. Ie, If a Silicon Labs EFM32 gets contributed, it doesnt have anywhere to go, because there isnt a silabs_mcu_arm library. And its only one chip, so meh just stick it in mcu.lib
But then another gets contributed and so on, I think it would be better NOT to have generic mcu/cpu/dsp/soc libs and make specific libs for whatever is in there, even if that means they only have one part. Then in future if someone contributes a part, they dont have a dumping ground to stick it, and the process is to create a new library following the scheme already laid out.
@pointhi connector_misc only makes sense if we have specific connector libs for different connectors. (Which we don't really have) Currently the connector lib is the connector_misc lib.
Just a few part types to consider. I realize they all aren't in the library now, but where would we classify them?
I'm not really sure about the vactrol, but the rest may have no other place but a miscellaneous IC library which I still don't see above?
google tells me vactrols are isolators. Which would mean they go into isolator.lib? (or isolator_analog.lib)
@evanshultz good points - I'm not sure immediately where they should go.
I still think the regulator library names need some work. I was finally able to sort it out in my head.
The word "regulator" is used for the first term in these libraries. But it's also common to differentiate DC-DC ICs with the words "regulator" if the transistor (not necessarily a FET) is inside and "converter" if the transistor is external. That confluence of terms is what was bothering me. I think the first word in the library should change to "power", and then it's not awkward to use the name "regulator" elsewhere in the library name.
With that sorted out, I propose the following:
power_linear_regulator
: integrated linear reg like 7805 (as above)power_linear_controller
: linear reg IC that uses an external switch like LM723 (as above)power_switching_regulator
: predominantly DC-DC IC with internal switches like LM2574power_switching_controller
: predominantly DC-DC IC with external switches like TPS40200power_pwm_controller
: generic PWM ICs like UC3842power_pfc_controller
: PWM ICs for PFC supplies, like LT1248I scrolled up and realized there already was a Power Management section using power
as a prefix. Regardless of what section the above goes into, I still think this is a better way to go. Also, power_switching_module
could still be retained.
I went around the web to see how others had classified these types of parts, both as manufacturers and as sellers/organizers of these parts.
Here are Digi-Key's categories:
And Mouser's:
Farnell:
TI:
Linear Tech:
ST:
Breaking out the last of the old libraries (that I see haven't been divested):
bbd.lib
: all audio delay so I vote for audio_misc.lib
gennum.lib
: all video ICs that should go to video.lib
modules.lib
: all MCU board shields; can they be turned into templates?silabs.lib
: cp2xxx to interface_usb.lib
, si3210 to interface_telecom.lib
? [it's an analog phone interface], the rest to the newly created interface_am_fm.lib
worldsemi.lib
: to driver_led.lib
texas.lib
is huge so I'm giving it a section to itself (and using the names I proposed above):
driver_motor.lib
isolator.lib
soc_texas_arm.lib
power_switching_controller.lib
battery_management.lib
interface_i2c.lib
interface_i2c.lib
linear.lib
at https://github.com/KiCad/kicad-library/pull/1081driver_led.lib
digtal_pot.lib
driver_motor.lib
(since there's no generic driver lib) and interface_spi.lib
power_distribution.lib
power_switching_regulator.lib
analog_switch.lib
interface_usb.lib
logic_translator.lib
power_pwm_controller.lib
This is all that I see that needs to be mapped from the old to the new library. Please point out if you see any unmapped libraries or if you find parts which currently don't have a nice home.
A few more things:
power.lib
should be renamed to power_symbols.lib
or plumbing_symbols.lib
?EDIT: Changed power_management.lib
to power_distribution.lib
above, and finished writing out the 3rd bullet point above.
@evanshultz I have made your proposed changes to the power libs, they make sense.
power
could be renamed to power_symbols
, this makes the most sense.
power.lib
is a special Eeschema library. Its name can't be changed because this name is hardcoded in application. Remeber that, there are two component place command: first for devices, second for power ports. The second one uses power.lib
as an exclusive source of symbols.
Going too far in libraries rearrangement you are lost some Eeschema basics!
@keruseykaryu that is very good to point out. It was my understanding that the Place Power command searched all libraries and only displayed components marked as power. But it appears I am wrong on this.
So, power.lib
must remain unchanged.
Well. It seems we both have right.
The old Eeschema (pre 4.0) searches for power.lib
and display only components in this library when Place power command was used. New Eeschema indeed searches for power symbols in used libraries and allow to select any power port from any library.
So. If you need to be compatible with KiCad <4.0 you should stay with power.lib
. For KiCad >4.0 it really doesn't matter, because new component selector code is more flexible.
Thanks @SchrodingersGat and @keruseykaryu. I didn't realize the special nature of power.lib
.
Two things:
power_protection
is missing the .lib
partpower_pfc.lib
should be power_pfc_controller.lib
Following on from the work by @jkriege2 here
allegro.lib-sensor_current.lib
analog_devices.lib(AD623/AD8236/AD42x to amplifier.lib [all int amps], ADE7758 to ic_misc.lib, ADuM6000 to regulator_switching.lib, ADuM7758 to interface???.lib)bbd.lib(all audio delay lines so audio_misc.lib)bosch.lib- move tosensor_motion.lib
brooktre.lib- move tointerface_video.lib
contrib.libmove to aninterface_<x>.lib
ftdi.lib- mostly tointerface_usb
gennum.lib- (all to video.lib: gs9020 is video processor, gs9025 is cable driver, and gs9032 is video serializer)infineon.lib(all to transistors.lib since they're just FETs with some protection built in)intel.lib- moves to multiple libs,mcu_intel.lib
, oscillator, interfaceintersil.lib- moves todriver_gate
,driver_motor
, etcir.lib(AU* parts to sensors_current.lib and all others to gate_driver.lib)LEM.lib- move tosensor_current.lib
maxim.lib- split into many libs. A lot of temperature sensor partsmicrochip.lib- mostly interface chipsnordicsemi.lib- tointerface_bluetooth
nxp.lib(all to interface_i2c.lib)onsemi.lib-esd_protection
/transistor
philips.lib- mostlyinterface_<x>
powerint.lib(CAP* parts to ic_misc.lib and all others to regulator_switching.lib)silabs.lib(cp2xxx to interface_usb.lib, si3210 to interface_telecom.lib? [it's an analog phone interface], the rest to the newly created interface_am_fm.lib)siliconi.lib(actually Siliconix parts; driver_motor.lib and analog_switch.lib)supertex.lib(reference_current.lib, power_distribution.lib, regulator_switching_converter.lib, regulator_linear.lib; see below)texas.lib(too big to write out here; see post by @evanshultz on 22 Jul below)wiznet.lib(to interface_ethernet.lib)Worldsemi.lib(to driver_led.lib)Xicor.lib(all to digital_pot.lib)zetex.lib(move to gate_drivers.lib)Edits
microcontroller_
tomcu_
audio_adc_adc.lib
->audio_adc_dac.lib
processor_
tocpu_
amplifier.lib
into multiple librariespower_distribution
,power_conditioning
,battery_management
power_
librariesrf_
libraries