亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cuddgroup.c

?? 主要進(jìn)行大規(guī)模的電路綜合
?? C
?? 第 1 頁 / 共 5 頁
字號:
/**CFile***********************************************************************  FileName    [cuddGroup.c]  PackageName [cudd]  Synopsis    [Functions for group sifting.]  Description [External procedures included in this file:		<ul>		<li> Cudd_MakeTreeNode()		</ul>	Internal procedures included in this file:		<ul>		<li> cuddTreeSifting()		</ul>	Static procedures included in this module:		<ul>		<li> ddTreeSiftingAux()		<li> ddCountInternalMtrNodes()		<li> ddReorderChildren()		<li> ddFindNodeHiLo()		<li> ddUniqueCompareGroup()		<li> ddGroupSifting()		<li> ddCreateGroup()		<li> ddGroupSiftingAux()		<li> ddGroupSiftingUp()		<li> ddGroupSiftingDown()		<li> ddGroupMove()		<li> ddGroupMoveBackward()		<li> ddGroupSiftingBackward()		<li> ddMergeGroups()		<li> ddDissolveGroup()		<li> ddNoCheck()		<li> ddSecDiffCheck()		<li> ddExtSymmCheck()		<li> ddVarGroupCheck()		<li> ddSetVarHandled()		<li> ddResetVarHandled()		<li> ddIsVarHandled()		</ul>]  Author      [Shipra Panda, Fabio Somenzi]  Copyright   [This file was created at the University of Colorado at  Boulder.  The University of Colorado at Boulder makes no warranty  about the suitability of this software for any purpose.  It is  presented on an AS IS basis.]******************************************************************************/#include "util.h"#include "cuddInt.h"/*---------------------------------------------------------------------------*//* Constant declarations                                                     *//*---------------------------------------------------------------------------*//* Constants for lazy sifting */#define	DD_NORMAL_SIFT	0#define	DD_LAZY_SIFT	1/* Constants for sifting up and down */#define	DD_SIFT_DOWN	0#define	DD_SIFT_UP	1/*---------------------------------------------------------------------------*//* Stucture declarations                                                     *//*---------------------------------------------------------------------------*//*---------------------------------------------------------------------------*//* Type declarations                                                         *//*---------------------------------------------------------------------------*//*---------------------------------------------------------------------------*//* Variable declarations                                                     *//*---------------------------------------------------------------------------*/#ifndef lintstatic char rcsid[] DD_UNUSED = "$Id: cuddGroup.c,v 1.1.1.1 2003/02/24 22:23:52 wjiang Exp $";#endifstatic	int	*entry;extern	int	ddTotalNumberSwapping;#ifdef DD_STATSextern	int	ddTotalNISwaps;static  int     extsymmcalls;static  int     extsymm;static  int     secdiffcalls;static  int     secdiff;static  int     secdiffmisfire;#endif#ifdef DD_DEBUGstatic	int	pr = 0;	/* flag to enable printing while debugging */			/* by depositing a 1 into it */#endifstatic int originalSize;static int originalLevel;/*---------------------------------------------------------------------------*//* Macro declarations                                                        *//*---------------------------------------------------------------------------*//**AutomaticStart*************************************************************//*---------------------------------------------------------------------------*//* Static function prototypes                                                *//*---------------------------------------------------------------------------*/static int ddTreeSiftingAux ARGS((DdManager *table, MtrNode *treenode, Cudd_ReorderingType method));#ifdef DD_STATSstatic int ddCountInternalMtrNodes ARGS((DdManager *table, MtrNode *treenode));#endifstatic int ddReorderChildren ARGS((DdManager *table, MtrNode *treenode, Cudd_ReorderingType method));static void ddFindNodeHiLo ARGS((DdManager *table, MtrNode *treenode, int *lower, int *upper));static int ddUniqueCompareGroup ARGS((int *ptrX, int *ptrY));static int ddGroupSifting ARGS((DdManager *table, int lower, int upper, int (*checkFunction)(DdManager *, int, int), int lazyFlag));static void ddCreateGroup ARGS((DdManager *table, int x, int y));static int ddGroupSiftingAux ARGS((DdManager *table, int x, int xLow, int xHigh, int (*checkFunction)(DdManager *, int, int), int lazyFlag));static int ddGroupSiftingUp ARGS((DdManager *table, int y, int xLow, int (*checkFunction)(DdManager *, int, int), Move **moves));static int ddGroupSiftingDown ARGS((DdManager *table, int x, int xHigh, int (*checkFunction)(DdManager *, int, int), Move **moves));static int ddGroupMove ARGS((DdManager *table, int x, int y, Move **moves));static int ddGroupMoveBackward ARGS((DdManager *table, int x, int y));static int ddGroupSiftingBackward ARGS((DdManager *table, Move *moves, int size, int upFlag, int lazyFlag));static void ddMergeGroups ARGS((DdManager *table, MtrNode *treenode, int low, int high));static void ddDissolveGroup ARGS((DdManager *table, int x, int y));static int ddNoCheck ARGS((DdManager *table, int x, int y));static int ddSecDiffCheck ARGS((DdManager *table, int x, int y));static int ddExtSymmCheck ARGS((DdManager *table, int x, int y));static int ddVarGroupCheck ARGS((DdManager * table, int x, int y)); static int ddSetVarHandled ARGS((DdManager *dd, int index));static int ddResetVarHandled ARGS((DdManager *dd, int index));static int ddIsVarHandled ARGS((DdManager *dd, int index));/**AutomaticEnd***************************************************************//*---------------------------------------------------------------------------*//* Definition of exported functions                                          *//*---------------------------------------------------------------------------*//**Function********************************************************************  Synopsis    [Creates a new variable group.]  Description [Creates a new variable group. The group starts at  variable and contains size variables. The parameter low is the index  of the first variable. If the variable already exists, its current  position in the order is known to the manager. If the variable does  not exist yet, the position is assumed to be the same as the index.  The group tree is created if it does not exist yet.  Returns a pointer to the group if successful; NULL otherwise.]  SideEffects [The variable tree is changed.]  SeeAlso     [Cudd_MakeZddTreeNode]******************************************************************************/MtrNode *Cudd_MakeTreeNode(  DdManager * dd /* manager */,  unsigned int  low /* index of the first group variable */,  unsigned int  size /* number of variables in the group */,  unsigned int  type /* MTR_DEFAULT or MTR_FIXED */){    MtrNode *group;    MtrNode *tree;    unsigned int level;    /* If the variable does not exist yet, the position is assumed to be    ** the same as the index. Therefore, applications that rely on    ** Cudd_bddNewVarAtLevel or Cudd_addNewVarAtLevel to create new    ** variables have to create the variables before they group them.    */    level = (low < (unsigned int) dd->size) ? dd->perm[low] : low;    if (level + size - 1> (int) MTR_MAXHIGH)	return(NULL);    /* If the tree does not exist yet, create it. */    tree = dd->tree;    if (tree == NULL) {	dd->tree = tree = Mtr_InitGroupTree(0, dd->size);	if (tree == NULL)	    return(NULL);	tree->index = dd->invperm[0];    }    /* Extend the upper bound of the tree if necessary. This allows the    ** application to create groups even before the variables are created.    */    tree->size = ddMax(tree->size, ddMax(level + size, (unsigned) dd->size));    /* Create the group. */    group = Mtr_MakeGroup(tree, level, size, type);    if (group == NULL)	return(NULL);    /* Initialize the index field to the index of the variable currently    ** in position low. This field will be updated by the reordering    ** procedure to provide a handle to the group once it has been moved.    */    group->index = (MtrHalfWord) low;    return(group);} /* end of Cudd_MakeTreeNode *//*---------------------------------------------------------------------------*//* Definition of internal functions                                          *//*---------------------------------------------------------------------------*//**Function********************************************************************  Synopsis    [Tree sifting algorithm.]  Description [Tree sifting algorithm. Assumes that a tree representing  a group hierarchy is passed as a parameter. It then reorders each  group in postorder fashion by calling ddTreeSiftingAux.  Assumes that  no dead nodes are present.  Returns 1 if successful; 0 otherwise.]  SideEffects [None]******************************************************************************/intcuddTreeSifting(  DdManager * table /* DD table */,  Cudd_ReorderingType method /* reordering method for the groups of leaves */){    int i;    int nvars;    int result;    int tempTree;    /* If no tree is provided we create a temporary one in which all    ** variables are in a single group. After reordering this tree is    ** destroyed.    */    tempTree = table->tree == NULL;    if (tempTree) {	table->tree = Mtr_InitGroupTree(0,table->size);	table->tree->index = table->invperm[0];    }    nvars = table->size;#ifdef DD_DEBUG    if (pr > 0 && !tempTree) (void) fprintf(table->out,"cuddTreeSifting:");    Mtr_PrintGroups(table->tree,pr <= 0);#endif#ifdef DD_STATS    extsymmcalls = 0;    extsymm = 0;    secdiffcalls = 0;    secdiff = 0;    secdiffmisfire = 0;    (void) fprintf(table->out,"\n");    if (!tempTree)	(void) fprintf(table->out,"#:IM_NODES  %8d: group tree nodes\n",		       ddCountInternalMtrNodes(table,table->tree));#endif    /* Initialize the group of each subtable to itself. Initially    ** there are no groups. Groups are created according to the tree    ** structure in postorder fashion.    */    for (i = 0; i < nvars; i++)        table->subtables[i].next = i;    /* Reorder. */    result = ddTreeSiftingAux(table, table->tree, method);#ifdef DD_STATS		/* print stats */    if (!tempTree && method == CUDD_REORDER_GROUP_SIFT &&	(table->groupcheck == CUDD_GROUP_CHECK7 ||	 table->groupcheck == CUDD_GROUP_CHECK5)) {	(void) fprintf(table->out,"\nextsymmcalls = %d\n",extsymmcalls);	(void) fprintf(table->out,"extsymm = %d",extsymm);    }    if (!tempTree && method == CUDD_REORDER_GROUP_SIFT &&	table->groupcheck == CUDD_GROUP_CHECK7) {	(void) fprintf(table->out,"\nsecdiffcalls = %d\n",secdiffcalls);	(void) fprintf(table->out,"secdiff = %d\n",secdiff);	(void) fprintf(table->out,"secdiffmisfire = %d",secdiffmisfire);    }#endif    if (tempTree)	Cudd_FreeTree(table);    return(result);} /* end of cuddTreeSifting *//*---------------------------------------------------------------------------*//* Definition of static functions                                            *//*---------------------------------------------------------------------------*//**Function********************************************************************  Synopsis    [Visits the group tree and reorders each group.]  Description [Recursively visits the group tree and reorders each  group in postorder fashion.  Returns 1 if successful; 0 otherwise.]  SideEffects [None]******************************************************************************/static intddTreeSiftingAux(  DdManager * table,  MtrNode * treenode,  Cudd_ReorderingType method){    MtrNode  *auxnode;    int res;    Cudd_AggregationType saveCheck;#ifdef DD_DEBUG    Mtr_PrintGroups(treenode,1);#endif    auxnode = treenode;    while (auxnode != NULL) {	if (auxnode->child != NULL) {	    if (!ddTreeSiftingAux(table, auxnode->child, method))		return(0);	    saveCheck = table->groupcheck;	    table->groupcheck = CUDD_NO_CHECK;	    if (method != CUDD_REORDER_LAZY_SIFT)	      res = ddReorderChildren(table, auxnode, CUDD_REORDER_GROUP_SIFT);	    else	      res = ddReorderChildren(table, auxnode, CUDD_REORDER_LAZY_SIFT);	    table->groupcheck = saveCheck;	    if (res == 0)		return(0);	} else if (auxnode->size > 1) {	    if (!ddReorderChildren(table, auxnode, method))		return(0);	}	auxnode = auxnode->younger;    }    return(1);} /* end of ddTreeSiftingAux */#ifdef DD_STATS/**Function********************************************************************  Synopsis    [Counts the number of internal nodes of the group tree.]  Description [Counts the number of internal nodes of the group tree.  Returns the count.]  SideEffects [None]******************************************************************************/static intddCountInternalMtrNodes(  DdManager * table,  MtrNode * treenode){    MtrNode *auxnode;    int     count,nodeCount;    nodeCount = 0;    auxnode = treenode;    while (auxnode != NULL) {	if (!(MTR_TEST(auxnode,MTR_TERMINAL))) {	    nodeCount++;	    count = ddCountInternalMtrNodes(table,auxnode->child);	    nodeCount += count;	}	auxnode = auxnode->younger;    }    return(nodeCount);} /* end of ddCountInternalMtrNodes */#endif/**Function********************************************************************  Synopsis    [Reorders the children of a group tree node according to  the options.]  Description [Reorders the children of a group tree node according to  the options. After reordering puts all the variables in the group  and/or its descendents in a single group. This allows hierarchical  reordering.  If the variables in the group do not exist yet, simply  does nothing. Returns 1 if successful; 0 otherwise.]  SideEffects [None]******************************************************************************/static intddReorderChildren(  DdManager * table,  MtrNode * treenode,  Cudd_ReorderingType method){    int lower;    int upper;    int result;    unsigned int initialSize;    ddFindNodeHiLo(table,treenode,&lower,&upper);    /* If upper == -1 these variables do not exist yet. */    if (upper == -1)	return(1);    if (treenode->flags == MTR_FIXED) {	result = 1;    } else {#ifdef DD_STATS	(void) fprintf(table->out," ");#endif	switch (method) {

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷久久久久swag精品| 91黄色小视频| 亚洲国产成人av| 2023国产精品| 欧美亚洲一区二区三区四区| 国产一区视频网站| 亚洲国产婷婷综合在线精品| 欧美激情资源网| 欧美成人性福生活免费看| 91免费看视频| 国产精品白丝jk白祙喷水网站| 天堂蜜桃一区二区三区| 亚洲免费在线电影| 国产亚洲一二三区| 日韩欧美一级二级三级| 欧美日韩一区视频| 欧美亚洲尤物久久| 色综合天天天天做夜夜夜夜做| 国产精品一区在线观看你懂的| 日韩精彩视频在线观看| 亚洲宅男天堂在线观看无病毒| 国产精品视频一二| 中文欧美字幕免费| 久久婷婷一区二区三区| 欧美一级日韩免费不卡| 欧美日韩精品一区二区三区四区| 色婷婷久久久久swag精品| 97精品国产97久久久久久久久久久久| 国产精品一区二区久激情瑜伽| 免费人成在线不卡| 日韩不卡在线观看日韩不卡视频| 夜夜嗨av一区二区三区中文字幕| 亚洲特级片在线| ㊣最新国产の精品bt伙计久久| 中文字幕欧美区| 国产精品乱子久久久久| 国产人成亚洲第一网站在线播放| 欧美精品一区二| 精品精品欲导航| 久久久久久亚洲综合影院红桃| 欧美va在线播放| 精品免费视频一区二区| 日韩一卡二卡三卡国产欧美| 7777精品久久久大香线蕉| 欧美剧情片在线观看| 欧美日韩国产免费| 3751色影院一区二区三区| 7777精品伊人久久久大香线蕉超级流畅| 欧美日本在线播放| 在线成人免费观看| 欧美一区二区三区四区在线观看| 91精品国产91综合久久蜜臀| 在线播放91灌醉迷j高跟美女| 欧美人妖巨大在线| 日韩三级在线免费观看| 欧美精品一区二区三| 久久精品视频在线看| 国产亚洲污的网站| 久久久久97国产精华液好用吗| 国产欧美一区二区三区沐欲| 91精品国产综合久久婷婷香蕉| 欧美日韩第一区日日骚| 99麻豆久久久国产精品免费优播| 午夜久久久久久久久久一区二区| 一区二区视频免费在线观看| 久久久精品一品道一区| 欧美一卡在线观看| 久久久蜜桃精品| 亚洲欧洲综合另类在线| 日韩二区三区四区| 国产精品77777| 欧美影视一区二区三区| 精品国产乱码久久久久久免费| 久久久久久久久久看片| 一区二区三区欧美久久| 亚洲6080在线| 国产夫妻精品视频| 欧美在线色视频| 精品久久99ma| 亚洲一区在线电影| 极品美女销魂一区二区三区免费| kk眼镜猥琐国模调教系列一区二区| 色婷婷精品大在线视频| 精品国产髙清在线看国产毛片| 国产欧美日韩卡一| 天天色天天爱天天射综合| 国产成人高清视频| 欧美在线观看一二区| 欧美白人最猛性xxxxx69交| 亚洲欧洲另类国产综合| 奇米色一区二区三区四区| 成人午夜精品一区二区三区| 欧美久久高跟鞋激| 中文字幕免费不卡| 蓝色福利精品导航| 91福利社在线观看| 久久久噜噜噜久噜久久综合| 午夜精品视频在线观看| 丰满白嫩尤物一区二区| 91精品国产综合久久久久久久| 国产精品三级久久久久三级| 日韩av成人高清| 在线免费av一区| 国产精品欧美综合在线| 久久99日本精品| 在线播放中文一区| 亚洲精品成人精品456| 成人性生交大片免费| 欧美一级日韩免费不卡| 亚洲国产日产av| 99精品视频在线免费观看| 精品国产一区二区精华| 亚洲高清免费在线| 91在线观看美女| 中文字幕欧美激情| 风间由美中文字幕在线看视频国产欧美| 555www色欧美视频| 亚洲一区二区三区国产| 不卡视频一二三四| 久久久久久久av麻豆果冻| 男女男精品视频网| 欧美日韩国产电影| 一区二区三区久久| 色呦呦日韩精品| 亚洲色图欧美在线| www.色精品| 国产精品久久久久影院| 成人综合婷婷国产精品久久蜜臀| 日韩欧美亚洲另类制服综合在线| 亚洲成人黄色影院| 欧美性受极品xxxx喷水| 亚洲自拍偷拍av| 欧美日韩免费观看一区二区三区| 亚洲欧美另类久久久精品| 不卡在线观看av| 国产精品久久久久久久久免费桃花| 久久精品国产一区二区三| 91精品综合久久久久久| 秋霞午夜av一区二区三区| 欧美一区二区三区的| 午夜成人免费视频| 7777精品伊人久久久大香线蕉的| 亚洲成人久久影院| 欧美一区二区三区免费| 久久99国产精品免费网站| 精品三级在线观看| 韩国女主播成人在线观看| 精品少妇一区二区三区在线播放| 国内精品久久久久影院薰衣草| 2019国产精品| 国产成人免费视频网站| 国产精品色眯眯| 色婷婷国产精品| 天天射综合影视| 欧美电视剧免费全集观看| 激情都市一区二区| 日本一区二区三区高清不卡 | 中文幕一区二区三区久久蜜桃| 国产v综合v亚洲欧| 1区2区3区精品视频| 99国产精品99久久久久久| 亚洲一区免费视频| 欧美一区二区三区播放老司机| 久久超碰97人人做人人爱| 久久午夜色播影院免费高清| 懂色av噜噜一区二区三区av| 亚洲欧洲日韩av| 欧美老女人在线| 国产最新精品免费| 亚洲女女做受ⅹxx高潮| 欧美一区二区三区成人| 高清在线观看日韩| 亚洲一二三四在线观看| 欧美一级高清大全免费观看| 国产精品一区二区x88av| 亚洲欧美激情插 | 日本久久精品电影| 免费成人av在线| 国产精品久久毛片av大全日韩| 欧美中文字幕一区二区三区亚洲| 美女视频第一区二区三区免费观看网站| 久久综合久久久久88| 91久久精品网| 国内外成人在线视频| 一区二区三国产精华液| 日韩三级视频在线观看| 91在线播放网址| 国产一区二区在线电影| 一区二区在线观看视频在线观看| 精品免费一区二区三区| 91久久国产综合久久| 久久99精品久久久久久动态图| 日韩毛片一二三区| 欧美一二三在线| 欧美在线影院一区二区| 国产成人免费视频网站| 日本视频一区二区| 一区二区三区毛片| 国产精品久久毛片a| 精品国产乱码久久久久久久|