KiCad / kicad-library

The schematic and 3D libraries for KiCad 4.0. Note that the footprint libraries are the *.pretty repos themselves. This is an orphaned repo, the news about the v5 libs, http://kicad.org/post/kicad-official-libraries/.
Other
749 stars 950 forks source link

RFC - Rearranging Symbol Libraries #1402

Closed SchrodingersGat closed 6 years ago

SchrodingersGat commented 7 years ago

Following on from the work by @jkriege2 here

Library Name Description Previous Name Notes
Basic Devices
device.lib Symbols for simple devices e.g. Resistors / Capacitors / etc. device.lib
elec-unifil.lib ???
led.lib LED device.lib
motor.lib Electric motors
power.lib Power symbols (global) special symbols library
pspice.lib Spice symbols
relay.lib relays
switch.lib Buttons and switches
Connectors
connector.lib Connectors, general purpose conn.lib Could be expanded in future e.g. connector_usb.lib / connector_JST.lib
Virtual
graphical_symbol.lib
logo.lib
mechanical.lib
Semiconductors (simple)
diode.lib Diodes
transistor.lib Transistors infineon.lib
thyristor.lib Triacs, thyristors, SCR, etc
valve.lib Valves
Displays
display_character.lib Character displays e.g. 16x2 text display display.lib
display_dot-matrix.lib
display_graphic.lib Pixel-based displays, etc display.lib
display_segment.lib 7-segment, LED bar displays, etc display.lib
Transformers
transformer.lib General purpose transformer
transformer_power.lib Power transformers
transformer_pulse.lib Pulse transformers
transformer_signal.lib Small signal transformers
Sensors
sensor.lib Sensors that do not fit other categories sensors.lib
sensor_audio.lib
sensor_current.lib Current shunts / transducers / etc sensors.lib / ir.lib / allegro.lib
sensor_gas.lib Gas sensors, various sensors.lib
sensor_humidity.lib Humidity sensors sensors.lib
sensor_magnetic.lib Hall effect, etc sensors.lib
sensor_motion.lib Accelerometers / gyro sensors.lib
sensor_multi-function.lib Sensors that sense multiple things e.g. temperature / pressure sensors.lib
sensor_photo.lib Light sensors, RGB, photoresistors sensors.lib
sensor_pressure.lib sensors.lib
sensor_temperature.lib sensors.lib
sensor_voltage.lib
sensor_touch.lib
Audio / Video
audio_adc_dac.lib digital_audio.lib
audio_codec.lib Audio Codec IC
audio_misc.lib Miscellaneous audio parts
video.lib gennum.lib
Linear Devices
amplifier_operational.lib Amplifiers (general purpose) linear.lib / analog_devices.lib
amplifier_audio.lib Audio amplifiers
amplifier_current_sense.lib Current sense amplifiers (separate to e.g. hall-effect current sensors)
amplifier_difference.lib Difference amplifiers linear.lib
amplifier_instrumentation.lib Instrumentation amplifiers linear.lib
amplifier_rf.lib RF amplifiers
amplifier_video.lib Video amplifiers
comparator.lib Comparators linear.lib
References
reference_current.lib Precise current reference references.lib
reference_voltage.lib Precise voltage reference references.lib
Power Management
battery_management.lib Chargers, etc texas.lib
power_distribution.lib e.g. load switch, ideal diode controller, hot-swap controllers, etc power_management.lib, texas.lib
power_supervisor.lib Reset monitor ICs, etc power_management.lib
power_monitor.lib Power monitoring devices
power_protection TVS, ESD protection, etc
Regulators
regulator_module_ac-dc.lib Modular ac-dc devices ac-dc.lib
regulator_module_dc-dc.lib Modular dc-dc devices dc-dc.lib
regulator_linear.lib Linear regulators
regulator_linear_controller.lib Linear regulator controller
regulator_switching.lib Switching regulators
regulator_switching_controller.lib Switching regulator controller
regulator_switching_module.lib Stand-alone switching modules
regulator_pwm_controller.lib PWM ICs
regulator_pfc.lib Power factor correction
Mixed Signal
analog_switch.lib Analog switches
adc.lib Analog -> Digital adc-dac.lib
dac.lib Digital -> Analog adc-dac.lib
digital_pot.lib Digital potentiometers xicor.lib, texas.lib
adc_dac.lib Devices with both ADC and DAC
Drivers
driver_led.lib LED drivers worldsemi.lib
driver_gate.lib FET gate drivers, half / full bridge drivers zetex.lib / ir.lib / power_management.lib
driver_motor.lib Motor control ICs texas.lib (?)
Timers
timer_oscillator.lib Timers / oscillators / crystals Oscillators.lib
timer.lib linear.lib e.g. NE555 linear.lib
timer_pll.lib PLL ICs linear.lib e.g. NE567 linear.lib
timer_rtc.lib Real time clock
Logic
logic.lib Generic logic symbols for gates / inverters / etc
logic_cmos40xx.lib 4000 series logic cmos4000.lib / cmos_iee.lib Previously split into IEC / IEEE variants. New library format could allow different graphical representation for each symbol, so users can choose which symbol they want
logic_74xx.lib 74 series logic
logic_translator.lib Level converters, shifters, etc texas.lib
isolator.lib Optocouplers / capacitive isolation / etc opto.lib, texas.lib
isolator_analog.lib Analog isolators If needed
CPLD / FPGA
cpld_xilinx.lib xilinx.lib
cpld_altera_intel.lib Altera.lib
fpga_xilinx.lib xilinx.lib
fpga_altera_intel.lib Altera.lib
fpga_actel.lib actel.lib
fpga_atmel.lib atmel.lib
Microcontrollers / Processors / DSP
mcu_8048.lib
mcu_8051.lib
mcu_atmel_avr Atmel AVR series atmel.lib
mcu_atmel_avr32 Atmel 32-bit AVR series atmel.lib
mcu_atmel_arm.lib Atmel ARM micro atmel.lib
mcu_cypress.lib cypress.lib
mcu_cypress_arm.lib cypress.lib
mcu_microchip_pic10 PIC10 series microchip_pic10mcu.lib
mcu_microchip_pic12 PIC12 series microchip_pic12mcu.lib
mcu_microchip_pic16 PIC16 series microchip_pic16mcu.lib
mcu_microchip_pic18 PIC18 series microchip_pic18mcu.lib
mcu_microchip_pic24 PIC24 series microchip_pic24mcu.lib
mcu_microchip_pic32 PIC32 series microchip_pic32mcu.lib
mcu_freescale_hc.lib Freescale HC series
mcu_freescale_coldfire.lib Freescale coldfire motorola.lib
mcu_infineon_c166.lib
mcu_nxp_arm.lib NXP microcontrollers nxp_armmcu.lib
mcu_parallax.lib
mcu_renesas.lib
mcu_st_stm32.lib STM32 micro stm32.lib
mcu_st_stm8.lib STM8 micro stm8.lib
mcu_texas_msp340.lib MSP340 micro msp430.lib
cpu_intel_x86.lib
cpu_amd_x86.lib
cpu_motorola_68000.lib motorola.lib
cpu_motorola_powerpc.lib motorola.lib
cpu_zilog_z80.lib Zilog.lib
dsp_microchip_dspic33 DSPIC33 series microchip_dspic33dsc.lib
dsp_texas.lib Texas DSP (digital signal processors) dsp.lib
dsp_freescale.lib Freescale DSP dsp.lib
soc_texas_arm.lib Texas ARM SOC (system on chip) texas.lib
Memory
memory_card.lib SD card, etc
memory_vram.lib Volatile RAM (DRAM / SRAM) memory.lib
memory_nvram.lib Nonvolatile RAM (MRAM / FRAM) memory.lib
memory_eeprom.lib EPROM / EEPROM memory.lib
memory_flash.lib FLASH memory memory.lib
memory_controller.lib Memory controller ICs memory.lib
Interface (Comms)
interface_can_lin.lib CAN / LIN interface.lib
interface_ethernet.lib Ethernet interface.lib / wiznet.lib
interface_i2c.lib I2C interface - expanders, isolators, etc nxp.lib, texas.lib
interface_lvds.lib LVDS interface.lib
interface_spi.lib SPI interface
interface_telecom Telecom interface interface.lib, silabs.lib
interface_uart.lib RS232/422/485 interface interface.lib
interface_usb.lib USB silabs.lib, texas.lib
interface_video.lib Video interface broktree.lib
RF Interface
rf_am_fm.lib AM / FM transceivers rfcom.lib
rf_bluetooth.lib Bluetooth ICs etc rfcom.lib
rf_antenna.lib RF antenna
rf_misc.lib Miscellaneous RF parts that don't fit elsewhere
rf_frontend.lib RF front-end paraphenalia
rf_wifi.lib WiFi
rf_zigbee.lib Zigbee / XBee

Edits

  1. @schrodingersgat changed library names to singular
  2. @schrodingersgat changed microcontroller_ to mcu_
  3. @schrodingersgat renamed audio_adc_adc.lib -> audio_adc_dac.lib
  4. @schrodingersgat renamed processor_ to cpu_
  5. @schrodingersgat split amplifier.lib into multiple libraries
  6. @schrodingersgat added power_distribution, power_conditioning, battery_management
  7. @schrodingersgat added more amplifier categories, added transformer categories, improved regulator categories
  8. @schrodingersgat added suggestions by @poeschlr
  9. @evanshultz divested modules.lib, gennum.lib, bbd.lib, silabs.lib, texas.lib, worldsemi.lib; noted reset ICs in power_management.lib; fixed a few typos
  10. @schrodingersgat updated power_ libraries
  11. @schrodingersgat added rf_ libraries
seppestas commented 7 years ago

If we move the leds out of device.lib, wouldn't it make sense to rename device.lib to passive.lib indicating it contains passive components? Device is a pretty generic term imho.

seppestas commented 7 years ago

Wouldn't the sensors placed in sensor_multi-function.lib also fit in the sensor.lib library?

poeschlr commented 7 years ago

@seppestas wrote:

If we move the leds out of device.lib, wouldn't it make sense to rename device.lib to passive.lib indicating it contains passive components? Device is a pretty generic term imho.

The generic led symbol is not removed from device lib. The led lib will hold specialized symbols. (An example would be an atomic symbols for one special led that has the footprint pre assigned.)

In other words: the device lib holds only generic devices that are not intended to represent any specialized part. Maybe device.lib is not the best name but having a passive lib would not make it better. (some passive devices will be in a specialized lib with a footprint assigned)

suzizecat commented 7 years ago

Maybe device.lib is not the best name but having a passive lib would not make it better. (some passive devices will be in a specialized lib with a footprint assigned)

Maybe something like generic_device.lib would be better ?

seppestas commented 7 years ago

Maybe device.lib is not the best name but having a passive lib would not make it better. (some passive devices will be in a specialized lib with a footprint assigned)

What about the transformer.lib and sensors.lib both containing more generic components compared to the more specialized libs ("General purpose transformer" and "Sensors that do not fit other categories" respectively). Wouldn't having a library called passive.lib that contains "Generic / General purpose passive components" be consistent with this?

Of course doing this only makes sense if passive.lib only contains passive components, so there should not be leds in there. Personally I think having the generic led symbol in led.lib makes a lot more sense than having it in device.lib.

stevenj commented 7 years ago

Of course doing this only makes sense if passive.lib only contains passive components, so there should not be leds in there. Personally I think having the generic led symbol in led.lib makes a lot more sense than having it in device.lib.

As a standard diode is a Passive component, arguably a LED is also a passive component, because electrically it behaves the same as a not light emitting diode. Just Saying.

suzizecat commented 7 years ago

As a standard diode is a Passive component, arguably a LED is also a passive component, because electrically it behaves the same as a not light emitting diode. Just Saying.

Is a standard diode even considered as a passive component ? (since on Farnell website, there is the "Discrete Semiconductor" (with diodes) and "Passive Components" with capacitors, resistors, etc)

poeschlr commented 7 years ago

I think currently the device lib is the only lib that by design contains only generic symbols. All other libs do not really contain generic symbols but atomic or quasi atomic symbols. (or better: the goal for all other libs is to be atomic. Old symbols might not yet be atomic.)

The device lib also has transistors in there which are definitely not passive. It has generic photo diodes which are not passive either. (specialized photo diodes are currently in opto.lib will be in sensor_photo in the new scheme.) And a lot of other stuff. The only general symbols in the current sensor.lib are the pt1000 and pt100 symbols. We could move them to the generic lib. The opto lib does not contain such generic symbols. (feel free to check other libs. But i think this will be an ongoing process.)

I would be ok with splitting the generic lib. But it makes our live easier if we have clear libs where very generic symbols go. It makes it easy to define the look and feel of symbols in just one lib (or a specific set of libs) and tell everyone to use symbols that look similar to that lib. (currently we use the device lib for that.)

seppestas commented 7 years ago

As a standard diode is a Passive component, arguably a LED is also a passive component, because electrically it behaves the same as a not light emitting diode. Just Saying.

Is a standard diode even considered as a passive component ? (since on Farnell website, there is the "Discrete Semiconductor" (with diodes) and "Passive Components" with capacitors, resistors, etc)

According to Wikipedia an LED (and all other type of diodes and semiconductors) is as active well, however I don't have a reference to a more authoritative source. My rule of thumb: if the function on the current and/or voltage is linear, it's passive. This of course only holds true for ideal devices.

SchrodingersGat commented 7 years ago

@poeschlr I agree with your direction for device.lib - independent of whether we keep this name or decide on something else, this is exactly the purpose of this library.

suzizecat commented 7 years ago

@seppestas

According to Wikipedia an LED (and all other type of diodes and semiconductors) is as active well, however I don't have a reference to a more authoritative source. My rule of thumb: if the function on the current and/or voltage is linear, it's passive. This of course only holds true for ideal devices.

Well, in this case, a capacitor and an inductance (choke ?) aren't passive since the only component which i know to have a linear function between voltage and current is the resistor (U=RI) (capacitor and inductance got differential terms)

According to the same good old Wikipedia

Components incapable of controlling current by means of another electrical signal are called passive devices. Resistors, capacitors, inductors, and transformers are all considered passive devices.

In this case it's a little bit tricky with the diode, but i guess the point is that the behavior of the LED isn't the same if the current flow through anode-cathode direction or cathode-anode direction...

evanshultz commented 7 years ago

One other thing to mention is that Infineon makes former International Rectifier parts like IRS2092. This is a gate driver, yes, but it's specifically intended for audio applications. Is it best to put this kind of part with other gate drivers, or in audio_misc.lib?

poeschlr commented 7 years ago

Back to the device lib discussion. (sorry)

We could name the current device lib something like basic_device. (would make it clearer what to expect in this lib.)


I noticed that the switches lib currently only holds generic switch symbols. (It seems in the current master all switches finally moved from device into switches lib. Therefore the latest patch for 4.x that adds this lib by default is really needed) This means the switches and connectors lib currently only hold generic devices. (I would argue the logic family libs are also generic)


To clearly mark which libs hold generic devices we could also add generic as prefix/suffix. This might make it easier to write the klc for the new naming convention and use of default footprint field.

We could then simply state that all symbols added to any lib that is not marked as generic needs the footprint field assigned and they also need to be named by the manufacturer part number. (or mpn base for devices produced by different manufacturers using different conventions for option fields.) We could then even use travis to help checking this. (simply have a rule that is deactivated for libs having the generic prefix/suffix.)

Yes this would deviate from splitting the lib purely by function but a clearer KLC might be worth this tradeoff.

evanshultz commented 7 years ago

transistors.lib is massive. Almost 6000 lines as of now. Would it be good to split this up? I would think we would want to keep parts with the same symbol together so we can use ALIAS and for better maintenance, so perhaps we split by transistor type. transistor_fet.lib, transistor_bipolar.lib or transistor_bjt.lib, transistor_igbt.lib, etc. What do you think?

evanshultz commented 7 years ago

The transistor library could even be split more than I mentioned above, if desired. We could separate single and multiple transistor parts. This could result in transistor_fet.lib and transistor_fet_array.lib, or something. The core symbols would need to stay in sync fir visual purposes, but then it wouldn't be such a maintenance issue since the final symbols would still be unique in each library. Just an idea.

jcassette commented 6 years ago

In this repository, the connector symbol library has been renamed from conn to Connector (refer to first post) However in kicad-footprints the libraries have been renamed from Connectors_*.pretty to to Conn_*.pretty What is the logic behind this?.. I think it should be better to keep the same name everywhere. Edit: I realize this should rather be addressed in kicad-footprints maybe