Trol73,
По поводу шаманства с выводами в Z-состоянии - кмк, это все слишком ненадежно
Внутренние элементы микросхем и дорожки на печатной плате имеют некоторую ёмкость, если этот конденсатор зарядить или разрядить, подтягивающих резисторов и открытых транзисторов с ним не связано, то своё состояние он будет сохранять достаточно долго, чтобы его можно было считать в следующем такте(DRAM кстати тоже на конденсаторах). Проблема только с большой ёмкостью, мы не можем выдать слишком длинный импульс для заряда, поскольку не знаем, нет ли там открытых транзисторов и не устроим ли мы КЗ.

До начала тестов и подключения микросхемы к земле и питанию можно просканировать все возможные пары выводов и составить матрицу в которой будет указано ведёт ли себя эта пара как диод. Сканирование выполняется следующим образом: все выводы находятся в режиме входов, на каждый вывод по очереди подаём высокий(низкий) уровень, а на все остальные(тоже поочерёдно) выдаём короткий импульс низким(высоким) уровнем, и сразу считываем, если вернулся обратно, значит там что-то похожее на диод. Если подав на вход A высокий уровень, мы его наблюдаем на входе B, а подав на вход B низкий уровень мы его наблюдаем на входе A, то значит точно похоже на диод. Для КМОП-микросхем с защитными диодами матрицы скорее всего будут одинаковые, но строки и столбцы соответствующие питанию должны быть видны явно, а вот ТТЛ-микросхемы скорее всего будут от КМОП и друг друга отличаться. На равенство сравнивать полученную матрицу с матрицами в базе данных конечно нельзя, но можно искать наиболее похожую.

достаточно конечного количества тестов. В любом случае, этот вопрос решается добавлением новых команд в язык описания тестов.
Конечного количества тестов может быть достаточно для распознавания микросхемы, но полноценным тестированием это назвать сложно. К примеру память, достаточно ли записать/прочитать 1, 10, 100 ячеек? Ясное дело что всех комбинаций тут не перебрать, но проверить что все ячейки способны сохранять различную информацию, что она не стирается вдруг при особой комбинации адреса/данных, очень желательно.
Хотя если в описание тестов добавить команды организации циклов, переменные, арифметические операции, возможность присваивания разрядов переменной "списку ног" и наоборот, то можно будет счётчики, сдвиговые регистры и память более полноценно проверять. Z-состояние тоже желательно проверять, микросхемы такие используются, да и сделать несложно.