Осознал и понял как оно там всё. С этим ясно, получилось такое:
Код:
bool bAXY[16], bOXY[16], bC[16], bF[16], bH[16]; //битовые массивы
data2bita(oxy, bOXY, 16); //разворачиваем слово в битовый массив
data2bita(axy, bAXY, 16); //и это
data2bita(h, bH, 16); //и это тоже, их значения вычислены ранее
bool cn, cl = curr_reg.cl; //начальная инициализация C
for (int i = 0; i < 16; i++) //цикл по всем битам
{
bC[i] = cn = (cl || (!cl && bAXY[i])) && bOXY[i]; //вычисляем текущий бит C
bF[i] = curr_reg.alu_e ? bH[i] : !(cl ^ bH[i]); //вычисляем текущий бит F
cl = cn; //следующий бит будет такой
}
WORD f; //F нам понадобится потом как слово
bita2data(f, bF, 16); //поэтому сворачиваем битовый массив обратно в слово
//а С нам всё равно нужно только в виде отдельных битов потом
Тут начал прикидывать как получившуюся модель использовать, и получается что и материнскую плату надо в таком же виде моделировать, всё вплоть до отдельных сигналов и проводников. Как-то очень низкоуровнево и муторно получается. Пока что-то нет идей как проверить работоспособность того, что наваялось, кроме как примерно таким же образом сконвертировать нужные кусочки из tbench.v