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

📄 part.c

📁 主要进行大规模的电路综合
💻 C
字号:
/* * Revision Control Information * * $Source: /projects/mvsis/Repository/mvsis-1.3/src/sis/mincov/part.c,v $ * $Author: wjiang $ * $Revision: 1.1.1.1 $ * $Date: 2003/02/24 22:24:09 $ * */#include "mincov_int.h"static int visit_col();static voidcopy_row(A, prow)register sm_matrix *A;register sm_row *prow;{    register sm_element *p;    for(p = prow->first_col; p != 0; p = p->next_col) {	(void) sm_insert(A, p->row_num, p->col_num);    }}static intvisit_row(A, prow, rows_visited, cols_visited)sm_matrix *A;sm_row *prow;int *rows_visited;int *cols_visited;{    sm_element *p;    sm_col *pcol;    if (! prow->flag) {	prow->flag = 1;	(*rows_visited)++;	if (*rows_visited == A->nrows) {	    return 1;	}	for(p = prow->first_col; p != 0; p = p->next_col) {	    pcol = sm_get_col(A, p->col_num);	    if (! pcol->flag) {		if (visit_col(A, pcol, rows_visited, cols_visited)) {		    return 1;		}	    }	}    }    return 0;}static intvisit_col(A, pcol, rows_visited, cols_visited)sm_matrix *A;sm_col *pcol;int *rows_visited;int *cols_visited;{    sm_element *p;    sm_row *prow;    if (! pcol->flag) {	pcol->flag = 1;	(*cols_visited)++;	if (*cols_visited == A->ncols) {	    return 1;	}	for(p = pcol->first_row; p != 0; p = p->next_row) {	    prow = sm_get_row(A, p->row_num);	    if (! prow->flag) {		if (visit_row(A, prow, rows_visited, cols_visited)) {		    return 1;		}	    }	}    }    return 0;}intsm_block_partition(A, L, R)sm_matrix *A;sm_matrix **L, **R;{    int cols_visited, rows_visited;    register sm_row *prow;    register sm_col *pcol;    /* Avoid the trivial case */    if (A->nrows == 0) {	return 0;    }    /* Reset the visited flags for each row and column */    for(prow = A->first_row; prow != 0; prow = prow->next_row) {	prow->flag = 0;    }    for(pcol = A->first_col; pcol != 0; pcol = pcol->next_col) {	pcol->flag = 0;    }    cols_visited = rows_visited = 0;    if (visit_row(A, A->first_row, &rows_visited, &cols_visited)) {	/* we found all of the rows */	return 0;    } else {	*L = sm_alloc();	*R = sm_alloc();	for(prow = A->first_row; prow != 0; prow = prow->next_row) {	    if (prow->flag) {		copy_row(*L, prow);	    } else {		copy_row(*R, prow);	    }	}	return 1;    }}

⌨️ 快捷键说明

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