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

📄 ntki.c

📁 主要进行大规模的电路综合
💻 C
📖 第 1 页 / 共 5 页
字号:
/**CFile****************************************************************  FileName    [ntki.c]  PackageName [MVSIS 2.0: Multi-valued logic synthesis system.]  Synopsis    [Command file of the network package.]  Author      [MVSIS Group]    Affiliation [UC Berkeley]  Date        [Ver. 1.0. Started - February 1, 2003.]  Revision    [$Id: ntki.c,v 1.5 2003/05/27 23:14:29 alanmi Exp $]***********************************************************************/#include "ntkInt.h"#include "ntkiInt.h"#include "sh.h"#include "wn.h"///////////////////////////////////////////////////////////////////////////                        DECLARATIONS                              /////////////////////////////////////////////////////////////////////////// static int Ntk_CommandPrint            ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandPrintIo          ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandPrintStats       ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandPrintRange       ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandPrintValue       ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandPrintFactor      ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandPrintLevel       ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandPrintNd          ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandPrintSpec        ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandPrintClauses     ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandPrintSat         ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandResetName        ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandRename           ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandChangeNameMode   ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkPower     ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkNDize     ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkDize      ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkReorder   ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkCopy      ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkFree      ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkDefault   ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkWindow    ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkSweep     ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkEliminate ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkCollapse  ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkMerge     ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkFxu       ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkDecomp    ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkStrash    ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkResetDef  ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkFfResetDef( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkResub     ( Mv_Frame_t * pMvsis, int argc, char ** argv );static int Ntk_CommandNetworkVerify    ( Mv_Frame_t * pMvsis, int argc, char ** argv );///////////////////////////////////////////////////////////////////////////                     FUNCTION DEFITIONS                           ////////////////////////////////////////////////////////////////////////////**Function********************************************************************  Synopsis    [Initializes the I/O package.]  SideEffects []  SeeAlso     [Io_End]******************************************************************************/void Ntki_Init( Mv_Frame_t * pMvsis ){    Cmd_CommandAdd( pMvsis, "Printing",  "print_stats",   Ntk_CommandPrintStats,       0 );     Cmd_CommandAdd( pMvsis, "Printing",  "print",         Ntk_CommandPrint,            0 );     Cmd_CommandAdd( pMvsis, "Printing",  "print_io",      Ntk_CommandPrintIo,          0 );    Cmd_CommandAdd( pMvsis, "Printing",  "print_range",   Ntk_CommandPrintRange,       0 );     Cmd_CommandAdd( pMvsis, "Printing",  "print_value",   Ntk_CommandPrintValue,       0 );     Cmd_CommandAdd( pMvsis, "Printing",  "print_factor",  Ntk_CommandPrintFactor,      0 );     Cmd_CommandAdd( pMvsis, "Printing",  "print_level",   Ntk_CommandPrintLevel,       0 );     Cmd_CommandAdd( pMvsis, "Printing",  "print_nd",      Ntk_CommandPrintNd,          0 );     Cmd_CommandAdd( pMvsis, "Printing",  "print_spec",    Ntk_CommandPrintSpec,        0 );     Cmd_CommandAdd( pMvsis, "Printing",  "_print_clauses", Ntk_CommandPrintClauses,     0 );     Cmd_CommandAdd( pMvsis, "Printing",  "_print_sat",     Ntk_CommandPrintSat,         0 );     Cmd_CommandAdd( pMvsis, "Naming",    "reset_name",    Ntk_CommandResetName,        0 );     Cmd_CommandAdd( pMvsis, "Naming",    "rename",        Ntk_CommandRename,           0 );     Cmd_CommandAdd( pMvsis, "Naming",    "chng_name",     Ntk_CommandChangeNameMode,   0 );     Cmd_CommandAdd( pMvsis, "Various",   "_power",         Ntk_CommandNetworkPower,     1 );     Cmd_CommandAdd( pMvsis, "Various",   "_ndize",         Ntk_CommandNetworkNDize,     1 );     Cmd_CommandAdd( pMvsis, "Various",   "dize",          Ntk_CommandNetworkDize,      1 );     Cmd_CommandAdd( pMvsis, "Various",   "reorder",       Ntk_CommandNetworkReorder,   1 );     Cmd_CommandAdd( pMvsis, "Various",   "_copy",          Ntk_CommandNetworkCopy,      1 );     Cmd_CommandAdd( pMvsis, "Various",   "free",          Ntk_CommandNetworkFree,      1 );     Cmd_CommandAdd( pMvsis, "Various",   "default",       Ntk_CommandNetworkDefault,   1 );     Cmd_CommandAdd( pMvsis, "Various",   "window",        Ntk_CommandNetworkWindow,    0 );     Cmd_CommandAdd( pMvsis, "Synthesis", "sweep",         Ntk_CommandNetworkSweep,     1 );     Cmd_CommandAdd( pMvsis, "Synthesis", "eliminate",     Ntk_CommandNetworkEliminate, 1 );     Cmd_CommandAdd( pMvsis, "Synthesis", "collapse",      Ntk_CommandNetworkCollapse,  1 );     Cmd_CommandAdd( pMvsis, "Synthesis", "merge",         Ntk_CommandNetworkMerge,     1 );     Cmd_CommandAdd( pMvsis, "Synthesis", "fxu",           Ntk_CommandNetworkFxu,       1 );     Cmd_CommandAdd( pMvsis, "Synthesis", "decomp",        Ntk_CommandNetworkDecomp,    1 );     Cmd_CommandAdd( pMvsis, "Synthesis", "strash",        Ntk_CommandNetworkStrash,    1 );     Cmd_CommandAdd( pMvsis, "Synthesis", "reset_default", Ntk_CommandNetworkResetDef,  1 );     Cmd_CommandAdd( pMvsis, "Synthesis", "_ffrsd",         Ntk_CommandNetworkFfResetDef,1 );     Cmd_CommandAdd( pMvsis, "Synthesis", "resub",         Ntk_CommandNetworkResub,     1 );     Cmd_CommandAdd( pMvsis, "Verification", "verify",     Ntk_CommandNetworkVerify,    0 ); }/**Function********************************************************************  Synopsis    [Ends the I/O package.]  SideEffects []  SeeAlso     [Io_Init]******************************************************************************/void Ntki_End( Mv_Frame_t * pMvsis ){}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/int Ntk_CommandPrintStats( Mv_Frame_t * pMvsis, int argc, char ** argv ){    FILE * pOut, * pErr;    Ntk_Network_t * pNet;    Ntk_Node_t * pNode;    bool fComputeCvr;    bool fComputeMvr;    bool fShort;    int nNodes, c;    pNet = Mv_FrameReadNet(pMvsis);    pOut = Mv_FrameReadOut(pMvsis);    pErr = Mv_FrameReadErr(pMvsis);    // set the defaults    fComputeCvr = 0;    fComputeMvr = 0;    fShort      = 1;    nNodes = 0;    util_getopt_reset();    while ( ( c = util_getopt( argc, argv, "scmh" ) ) != EOF )    {        switch ( c )        {        case 's':            fShort ^= 1;            break;        case 'c':            fComputeCvr ^= 1;            break;        case 'm':            fComputeMvr ^= 1;            break;        case 'h':            goto usage;        default:            goto usage;        }    }    if ( pNet == NULL )    {        fprintf( Mv_FrameReadErr(pMvsis), "Empty network\n" );        return 1;    }    // collect the nodes (if any)    if ( argc - util_optind > 0 )	    nNodes = Cmd_CommandGetNodes( pMvsis, argc-util_optind+1, argv+util_optind-1, 0 );    if ( nNodes == 0 )     {	    Ntk_NetworkPrintStats( pOut, pNet, fComputeCvr, fComputeMvr, fShort );        return 0;    }    // print the nodes    Ntk_NetworkForEachNodeSpecial( pNet, pNode )	    Ntk_NodePrintStats( pOut, pNode, fComputeCvr, fComputeMvr );    return 0;usage:    fprintf( pErr, "usage: print_stats [-c] [-m] [-h]\n" );    fprintf( pErr, "\t           prints the network statistics and\n" );    fprintf( pErr, "\t           reports the percentage of nodes having each representation\n" );    fprintf( pErr, "\t-s       : output statistics in a shortened form [default = %s]\n", fShort? "yes": "no" );    fprintf( pErr, "\t-c       : derives covers (MV SOPs) if not present [default = %s]\n", fComputeCvr? "yes": "no" );    fprintf( pErr, "\t-m       : derives local MV relations if not present [default = %s]\n", fComputeMvr? "yes": "no" );    fprintf( pErr, "\t-h       : print the command usage\n");    return 1;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/int Ntk_CommandPrint( Mv_Frame_t * pMvsis, int argc, char ** argv ){    FILE * pOut, * pErr;    Ntk_Network_t * pNet;    Ntk_Node_t * pNode;    int nNodes;    int fPrintDefault;    int fPrintPositional;    int fPrintKmap;    int c;     pNet = Mv_FrameReadNet(pMvsis);    pOut = Mv_FrameReadOut(pMvsis);    pErr = Mv_FrameReadErr(pMvsis);    fPrintDefault    = 0;    fPrintPositional = 0;    fPrintKmap       = 0;    util_getopt_reset();    while ( ( c = util_getopt( argc, argv, "dpmh" ) ) != EOF )    {        switch ( c )        {        case 'd':            fPrintDefault ^= 1;            break;        case 'p':            fPrintPositional ^= 1;            break;        case 'm':            fPrintKmap ^= 1;            break;        case 'h':            goto usage;            break;        default:            goto usage;        }    }    if ( pNet == NULL )    {        fprintf( pErr, "Empty network.\n" );        return 1;     }    // collect the nodes    nNodes = Cmd_CommandGetNodes( pMvsis, argc-util_optind+1, argv+util_optind-1, 0 );    if ( nNodes == 0 )    {        fprintf( Mv_FrameReadErr(pMvsis), "The list of nodes to print is empty.\n" );        return 1;    }    // print the nodes    Ntk_NetworkForEachNodeSpecial( pNet, pNode )        if ( fPrintKmap )            Ntk_NodePrintMvr( pOut, pNode );        else            Ntk_NodePrintCvr( pOut, pNode, fPrintDefault, fPrintPositional );    return 0;usage:    fprintf( pErr, "usage: print [-d] [-p] [-m] <node_list>\n" );    fprintf( pErr, "\t               print MV SOP representation of the nodes.\n" );    fprintf( pErr, "\t-d           : print default i-set [default = %s]\n", fPrintDefault? "yes": "no" );    fprintf( pErr, "\t-p           : print cubes in positional notation [default = %s]\n", fPrintPositional? "yes": "no" );    fprintf( pErr, "\t-m           : print Karnaugh maps for the relation [default = %s]\n", fPrintKmap? "yes": "no" );    fprintf( pErr, "\t<node_list>  : if empty, print all nodes in the network\n" );    fprintf( pErr, "\t-h           : print the command usage\n");    return 1;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/int Ntk_CommandPrintIo( Mv_Frame_t * pMvsis, int argc, char ** argv ){    FILE * pOut, * pErr;    Ntk_Network_t * pNet;    int nNodes, c;    pNet = Mv_FrameReadNet(pMvsis);    pOut = Mv_FrameReadOut(pMvsis);    pErr = Mv_FrameReadErr(pMvsis);    // set defaults    util_getopt_reset();    while ( ( c = util_getopt( argc, argv, "h" ) ) != EOF )    {        switch ( c )        {        case 'h':            goto usage;        default:            goto usage;        }    }    if ( pNet == NULL )    {        fprintf( pErr, "Empty network.\n" );        return 1;    }    // collect the nodes    if ( argc == util_optind )        nNodes = 0;    else        nNodes = Cmd_CommandGetNodes( pMvsis, argc-util_optind+1, argv+util_optind-1, 1 );    // print the nodes    Ntk_NetworkPrintIo( pOut, pNet, nNodes );    return 0;usage:    fprintf( pErr, "usage: print_io [-h] <node_list>\n" );    fprintf( pErr, "\t               prints the fanins/fanouts of nodes in the list\n" );    fprintf( pErr, "\t<node_list>  : if empty, print CIs/COs of the network\n" );    fprintf( pErr, "\t-h           : print the command usage\n");    return 1;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/int Ntk_CommandPrintRange( Mv_Frame_t * pMvsis, int argc, char **argv ){    FILE * pOut, * pErr;    Ntk_Network_t * pNet;    int nNodes, c;    pNet = Mv_FrameReadNet(pMvsis);    pOut = Mv_FrameReadOut(pMvsis);    pErr = Mv_FrameReadErr(pMvsis);    // set defaults    util_getopt_reset();    while ( ( c = util_getopt( argc, argv, "h" ) ) != EOF )    {        switch ( c )        {        case 'h':            goto usage;        default:            goto usage;        }    }    if ( pNet == NULL )    {        fprintf( pErr, "Empty network.\n" );        return 1;    }    // collect the nodes    nNodes = Cmd_CommandGetNodes( pMvsis, argc-util_optind+1, argv+util_optind-1, 1 );    if ( nNodes == 0 )    {        fprintf( pErr, "The list of nodes to print is empty.\n" );        return 1;    }    // print the nodes    Ntk_NetworkPrintRange( pOut, pNet, nNodes );    return 0;usage:    fprintf( pErr, "usage: print_range [-h] <node_list>\n" );    fprintf( pErr, "\t               prints the number of values of nodes in the list\n" );    fprintf( pErr, "\t <node_list> : if empty, prints values for all nodes in the network\n" );    fprintf( pErr, "\t-h           : print the command usage\n");    return 1;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/int Ntk_CommandPrintValue( Mv_Frame_t * pMvsis, int argc, char **argv ){    FILE * pOut, * pErr;    Ntk_Network_t * pNet;    int nNodes, c;    pNet = Mv_FrameReadNet(pMvsis);    pOut = Mv_FrameReadOut(pMvsis);    pErr = Mv_FrameReadErr(pMvsis);    // set defaults    util_getopt_reset();    while ( ( c = util_getopt( argc, argv, "h" ) ) != EOF )    {        switch ( c )        {        case 'h':            goto usage;        default:            goto usage;        }    }    if ( pNet == NULL )    {        fprintf( pErr, "Empty network.\n" );        return 1;    }    // collect the nodes    nNodes = Cmd_CommandGetNodes( pMvsis, argc-util_optind+1, argv+util_optind-1, 0 );    if ( nNodes == 0 )    {        fprintf( pErr, "The list of nodes to print is empty.\n" );        return 1;    }

⌨️ 快捷键说明

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