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

📄 fmwapi.c

📁 主要进行大规模的电路综合
💻 C
字号:
/**CFile****************************************************************  FileName    [fmwApi.c]  PackageName [MVSIS 2.0: Multi-valued logic synthesis system.]  Synopsis    [Interface functions of the flexibility manager.]  Author      [MVSIS Group]    Affiliation [UC Berkeley]  Date        [Ver. 1.0. Started - February 1, 2003.]  Revision    [$Id: fmwApi.c,v 1.2 2003/05/27 23:15:36 alanmi Exp $]***********************************************************************/#include "fmInt.h"///////////////////////////////////////////////////////////////////////////                        DECLARATIONS                              //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////                     FUNCTION DEFITIONS                           ////////////////////////////////////////////////////////////////////////////**Function*************************************************************  Synopsis    [Trivial APIs.]  Description []                 SideEffects []  SeeAlso     []***********************************************************************/bool Fmw_ManagerIsBinary    ( Fmw_Manager_t * pFm )    { return pFm->fBinary; }bool Fmw_ManagerIsSetInputs ( Fmw_Manager_t * pFm )    { return pFm->fSetInputs; }bool Fmw_ManagerIsSetOutputs( Fmw_Manager_t * pFm )    { return pFm->fSetOutputs; }bool Fmw_ManagerIsVerbose   ( Fmw_Manager_t * pFm )    { return pFm->fVerbose; }void Fmw_ManagerSetBinary    ( Fmw_Manager_t * pFm, bool fFlag )    { pFm->fBinary     = fFlag; }void Fmw_ManagerSetSetInputs ( Fmw_Manager_t * pFm, bool fFlag )    { pFm->fSetInputs  = fFlag; }void Fmw_ManagerSetSetOutputs( Fmw_Manager_t * pFm, bool fFlag )    { pFm->fSetOutputs = fFlag; }void Fmw_ManagerSetVerbose   ( Fmw_Manager_t * pFm, bool fFlag )    { pFm->fVerbose    = fFlag; }/**Function*************************************************************  Synopsis    [Starts the flexibility manager.]  Description []                 SideEffects []  SeeAlso     []***********************************************************************/Fmw_Manager_t * Fmw_ManagerAlloc( Vm_Manager_t * pManVm, Vmx_Manager_t * pManVmx, Mvr_Manager_t * pManMvr ){    Fmw_Manager_t * p;    int i;    p = ALLOC( Fmw_Manager_t, 1 );    memset( p, 0, sizeof(Fmw_Manager_t) );    p->pManVm  = pManVm;    p->pManVmx = pManVmx;    p->pManMvr = pManMvr;    // start the manager, in which the global MDDs will be stored    p->dd = Cudd_Init( 100, 0, CUDD_UNIQUE_SLOTS, CUDD_CACHE_SLOTS, 0 );//    Cudd_AutodynEnable( p->dd, CUDD_REORDER_SYMM_SIFT );    p->nVarsAlloc = 100;    p->pbVars0 = ALLOC( DdNode *, p->nVarsAlloc );    p->pbVars1 = ALLOC( DdNode *, p->nVarsAlloc );    for ( i = 0; i < 50; i++ )    {        p->pbVars0[i] = p->dd->vars[i];        p->pbVars1[i] = p->dd->vars[50 + i];    }    return p;}/**Function*************************************************************  Synopsis    [Stops the flexibility manager.]  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fmw_ManagerFree( Fmw_Manager_t * p ){//printf( "Start freeing flexibility manager\n" );    Extra_StopManager( p->dd );//printf( "Stop freeing flexibility manager\n" );    free( p->pbVars0 );    free( p->pbVars1 );    free( p );}/**Function*************************************************************  Synopsis    [Resizes the flexibility manager.]  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fmw_ManagerResize( Fmw_Manager_t * p, int nBinVars ){    int nVarsAdd, i;    if ( p->dd->size >= 2 * nBinVars )        return;    // create new variables    nVarsAdd = 2 * nBinVars - p->dd->size;    for ( i = 0; i < nVarsAdd; i++ )        Cudd_bddNewVar( p->dd );    // reallocate variable arrays    if ( p->nVarsAlloc < nBinVars )    {        FREE( p->pbVars0 );        FREE( p->pbVars1 );        p->nVarsAlloc = 2 * nBinVars;        p->pbVars0 = ALLOC( DdNode *, p->nVarsAlloc );        p->pbVars1 = ALLOC( DdNode *, p->nVarsAlloc );    }    // reassign the basic variables    assert( p->dd->size == 2 * nBinVars );    for ( i = 0; i < nBinVars; i++ )    {        p->pbVars0[i] = p->dd->vars[i];        p->pbVars1[i] = p->dd->vars[nBinVars + i];    }}///////////////////////////////////////////////////////////////////////////                       END OF FILE                                ///////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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