← Back to team overview

kicad-developers team mailing list archive

Re: [RFC] Symbols and Pin mapping in v6 - Proposal


> On Sep 16, 2019, at 6:12 AM, Clemens Koller <cko@xxxxxxxxx> wrote:
> Hello, Tim!
> I agree that in the near future, the demand for (I'd call it) "Table Based Design Entry" will rise tremendously,
> when we reach pincounts in the high hundreds and thousands.
> It is a lot of work to draw and maintain complex MCUs/SoCs/FPGAs in some schematic when pins can have 8 different functions which might change during product development. A current example: i.MX8 [1] with i.e. 625 pins.
> So, it might not even be sufficient to be able to import (and export) .CSVs. It might be a good idea to prepare for some automatism to be able to update and version control pin multiplexing changes!

How about this?

We can all agree that grouping MCU pins by peripheral makes the most sense. So rather than having a big box symbol (or symbols) with pins in a default order, why not have each part of a component be a peripheral? Instead of having a multisymbol part with one or two or three boxes for my EFM32GG11B820F2408GL192 in the library, instead of EFM32GG11B820F2048GL192 as the part name and within the part have all of the valid peripherals for that device? 

Here’s the cool thing. This device has, say, I2C0, I2C1, I2C2, UART0, UART1, USART0, USART1, TIMER0, TIMER1, all of it, and there are a fixed number of peripherals for a given device. Each peripheral is a symbol (a sub-part of the device) you can place on your schematic. Need a UART? Place the EFM32GG11_UART0 symbol on the schematic. Since this particular chip family gives you several choices for each pin, the symbols are “Smart” and have a drop-down menu you use to assign the pin. Those assignments also automatically set pin direction and the other ERC stuff. For peripherals which have one location for their pins obviously this drop-down doesn’t exist.

Cool, right? It can be better. Any pin not explicitly designated for a peripheral that can be used as GPIO gets enabled in the GPIO symbol. In that symbol then you set the direction, etc after you place it on the schematic.

Since all of the ARM vendors these days have some kind of software tool that handles peripheral setup including pin assignments, having the ability to read that output (whatever it is) and then parse it and set up the individual blocks would be very cool.

Right now I just rely on sensible net names to keep my MCU pinouts straight. I used to make a custom symbol for each MCU in a design but that got to be too much.

FPGAs are a different can of worms.


Follow ups