Получается есть два рабочих варианта
unsigned __bits(16) MS(unsigned __bits(3) A,
unsigned __bits(16) X0,
unsigned __bits(16) X1,
unsigned __bits(16) X2
...
)
...
if (A==0) MS = X0;
if (A==1) MS = X1;
if (A==2) MS = X2;
...
и когда X передаётся как 2^A-битный вектор (с выделением сдвигами отдельных элементов).
Наверно первый удобнее.
для арифметических схем нужно ещё реализовать
x16=CBW(x8)
x32=CWD(x16)
s16=SUM(A16,B16)
s16=ISUB(A16,B16)
p32=iMUL(A16,B16)
d16=iDIV(A32,B16)
x16=x32 // скорей всего уже правильно работает
R16=MS(A1,X16_0,X16_1)
Тогда схема условного арифметического выражения реализуется в С-МПА
как последовательность этих операторов
в порядке вычислений
и с правильными названиями переменных, чтобы передавать сигналы
с верхних блоков в нижние (в программе)
как с левых на правые (в схеме)
Для реализации всех остальных схем нужно
сделать также блоки
DC
CD
MS
(Матафонов Юра, ПИ-21 уже занимается)
Тогда для того, чтобы добиться от ИИ помощи в генерации схем для HLCCAD,
достаточно научить его писать С-МПА программы, вызывающие такие блоки
в нужной последовательности и правильно называя переменные.
Программы можно будет проверять, автоматически генерируя схемы
и отправляя их на тестирование.
Рисовать схему в HLCCAD можно глядя на текст такой программы.
Нарисованную схему тоже потом можно отправлять на тестирование.
Совсем круто, чтобы ИИ писал такую программу прямо с условия задачи.