Ура, получилось!
fill правильно засомневался, что ранее предложенный вариант не будет работать с CDB.
Решение следующее:
- в базе данных создаются столбцы ID, DEVICE и P/D_NUM. ID хранит уникальный ID каждой строки (по-науке).
DEVICE хранит партнамбер компонента по каталогу производителя. P/D_NUM хранит отличительную характеристику
компонента, в нашем случае место его установки (J4 или rJ4).
Получается структура:
Код
ID DEVICE P/D_NUM HETERO
1 17211102102 cPCI_per_J1 CPCI_PER_J1_A,CPCI_PER_J1_B,CPCI_PER_J1_C,CPCI_PER_J1_D,CPCI_PER_J1_E,CPCI_PER_J
1_F
2 17211102102 cPCI_rJ4 CPCI_RJ4_A,CPCI_RJ4_B,CPCI_RJ4_C,CPCI_RJ4_D,CPCI_RJ4_E,CPCI_RJ4_F
- в PDB для CDB (Library Manager) создается _один_ компонент с партнамбером 17211102102. В Pin mapping ему прописываются пины от всех символов.
Количество слотов пока сделал = 1, т.к. нормаьно назначать Pin Swap не умею/боюсь.
Это предназначается для работы с EXPEDITION через CDB.
- для работы с EXPEDITION и Allegro через нетлист меняются конфигурационные файлы expedition.cfg и allegro.cfg. В них ищется раздел
BeginAlsRules. В аллегровском файле там стоит строка DEV P/D_NUM PART_NUMBER, которая заменяется на DEV P/D_NUM DEVICE. В файл для экспедишена
эта строка добавляется, т.к. ее там изначально нет.
Это означает, что генератор нетлиста будет использовать P/D_NUM вместо DEVICE при генерации, а он-то (P/D_NUM) как раз у нас уникальный.
- чтобы не было ошибок "Duplicate attribute DEVICE" в настроках таблицы, которая отвечает за аннотацию компонентов в DxDataBook
снимается галочки "Load" и "Annotate" с атрибута DEVICE (возможно, нужно снимать только "Annotate", чтобы в DxDataBook правильно грузилось, не проверял).
- наслаждаемся работой!
Проверено, работает и через CDB, и через нетлист, как в Expedition, так и в Allegro.
Но остались вопросы:
1. Все-таки не до конца ясно предназначение атрибута P/D_NUM, в том смысле, который ему придумал ментор.
2. Ясно, что из-за выключенных галочек в DxDataBook, придется хранить все подобные разъемы в отдельной таблице, не повредит ли это общей организации базы и библиотек
3. Ясно, что для нормальной работы нетлистера в базе данных для _всех_ компонентов во _всех_ таблицах должно иметься заполненное поле P/D_NUM. Нет ли возможности как-то указать нетлистеру, что
если P/D_NUM в базе не заполнено, то брать его все-таки из DEVICE?
PS: Если кому-то надо, то могу выложить результаты труда, когда доделаю остальные разъемы.