Table View for IC Pin Mapping

I'm reworking the "pin table" feature of KiCad. Currently, this table allows users to quickly verify that the definitions for the pins on an IC match those in the datasheet, by providing a read-only, sortable view on the list of pins currently defined:

Current state of Pin Table

This table combines entries with the same value in one column (by default, the second) into a summary entry that can be expanded; in addition, the normal table sorting still works.

I'd like to extend this now to cover additional use cases:

  • there are different package variants that use different pins for the same function.
  • there are different functions that can be assigned to a single pin

So, the physical reality is that the actual IC has different connection points that are not necessarily connected to the outside, and there is a list of functions that modify the behavior of one or a group of pins.

Sometimes the functions are nonsensical in a particular package (e.g. if two connection points together form a differential output, but only one of these is wired to the outside, the "differential output" configuration for this pin is invalid, but generally the list of functions is independent from the packaging option, as the actual innards of the IC are identical.

Ideally the new table should be intuitive to use for amateurs (this is free software after all, and the vast majority of users have no formal training), but still usable for professionals. I have a few ideas, and need help deciding which is best, or, as they all have issues, if there are better ways to present this in a UI and/or if I'm overthinking this.

One user expressed that the table on page 55 of the KL27P64M48SF6 datasheet is pretty much optimal, and I would agree for a read-only layout, but I also need to provide editing functions.

Ideas so far:

1. Separate Tables

One table defines "internal" connection points, another table maps these onto external pins, and a third maps internal connection points to alternative functions.

Annoying details:

  • the list of internal connection points is just a list. There is usually no need for a second column, except in some cases where there is a "bank number" or a "reference voltage group", because multiple pins share supply voltage for the output amplifier or the reference voltage for the input comparators.

  • entering all the information in one go doesn't work, so if the datasheet has a large table (which most of them do), then users will have to do multiple passes, increasing the potential for error.

2. Large table, similar to the one in the example datasheet

This would be a single table with three column groups (external pins, internal connections, functions). That solves entry as one big table, but I feel that there is no way to make this truly intuitive because I'd have to invent non-standard UI paradigms such as insertion of columns in the middle of a table, or a way to group columns like

+----------------------------+----------------+-----
|            Pins            |                |
+-----+------+-----+---------+----------------+-----
| DIP | TQFP | BGA | Add...  | Name           | Func
+-----+------+-----+---------+----------------+-----

which is not readily available in standard widget sets.

Other ideas:

  • I could use a slightly different background color to highlight the separate parts of the table

  • I could move the "Add..." button outside of the table

Anything I have overlooked?