⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 equiv.c

📁 主要进行大规模的电路综合
💻 C
字号:
/* * Revision Control Information * * $Source: /projects/mvsis/Repository/mvsis-1.3/src/sis/espresso/equiv.c,v $ * $Author: wjiang $ * $Revision: 1.1.1.1 $ * $Date: 2003/02/24 22:24:07 $ * */#include "espresso.h"find_equiv_outputs(PLA)pPLA PLA;{    int i, j, ipart, jpart, some_equiv;    pcover *R, *F;    some_equiv = FALSE;    makeup_labels(PLA);    F = ALLOC(pcover, cube.part_size[cube.output]);    R = ALLOC(pcover, cube.part_size[cube.output]);    for(i = 0; i < cube.part_size[cube.output]; i++) {	ipart = cube.first_part[cube.output] + i;	R[i] = cof_output(PLA->R, ipart);	F[i] = complement(cube1list(R[i]));    }	    for(i = 0; i < cube.part_size[cube.output]-1; i++) {	for(j = i+1; j < cube.part_size[cube.output]; j++) {	    ipart = cube.first_part[cube.output] + i;	    jpart = cube.first_part[cube.output] + j;	    if (check_equiv(F[i], F[j])) {		(void) printf("# Outputs %d and %d (%s and %s) are equivalent\n",		    i, j, PLA->label[ipart], PLA->label[jpart]);		some_equiv = TRUE;	    } else if (check_equiv(F[i], R[j])) {		(void) printf("# Outputs %d and NOT %d (%s and %s) are equivalent\n",		    i, j, PLA->label[ipart], PLA->label[jpart]);		some_equiv = TRUE;	    } else if (check_equiv(R[i], F[j])) {		(void) printf("# Outputs NOT %d and %d (%s and %s) are equivalent\n",		    i, j, PLA->label[ipart], PLA->label[jpart]);		some_equiv = TRUE;	    } else if (check_equiv(R[i], R[j])) {	    (void) printf("# Outputs NOT %d and NOT %d (%s and %s) are equivalent\n",		    i, j, PLA->label[ipart], PLA->label[jpart]);		some_equiv = TRUE;	    }	}    }    if (! some_equiv) {	(void) printf("# No outputs are equivalent\n");    }    for(i = 0; i < cube.part_size[cube.output]; i++) {	free_cover(F[i]);	free_cover(R[i]);    }    FREE(F);    FREE(R);}int check_equiv(f1, f2)pcover f1, f2;{    register pcube *f1list, *f2list;    register pcube p, last;    f1list = cube1list(f1);    foreach_set(f2, last, p) {	if (! cube_is_covered(f1list, p)) {	    return FALSE;	}    }    free_cubelist(f1list);    f2list = cube1list(f2);    foreach_set(f1, last, p) {	if (! cube_is_covered(f2list, p)) {	    return FALSE;	}    }    free_cubelist(f2list);    return TRUE;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -