You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
5.1 KiB
167 lines
5.1 KiB
/**CFile**********************************************************************
|
|
|
|
FileName [dddmpDbg.c]
|
|
|
|
PackageName [dddmp]
|
|
|
|
Synopsis [Functions to display BDD files]
|
|
|
|
Description [Functions to display BDD files in binary format
|
|
]
|
|
|
|
Author [Gianpiero Cabodi and Stefano Quer]
|
|
|
|
Copyright [
|
|
Copyright (c) 2004 by Politecnico di Torino.
|
|
All Rights Reserved. This software is for educational purposes only.
|
|
Permission is given to academic institutions to use, copy, and modify
|
|
this software and its documentation provided that this introductory
|
|
message is not removed, that this software and its documentation is
|
|
used for the institutions' internal research and educational purposes,
|
|
and that no monies are exchanged. No guarantee is expressed or implied
|
|
by the distribution of this code.
|
|
Send bug-reports and/or questions to:
|
|
{gianpiero.cabodi,stefano.quer}@polito.it.
|
|
]
|
|
|
|
******************************************************************************/
|
|
|
|
#include "dddmpInt.h"
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* Stucture declarations */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* Type declarations */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* Variable declarations */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* Macro declarations */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
|
|
/**AutomaticStart*************************************************************/
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* Static function prototypes */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
|
|
/**AutomaticEnd***************************************************************/
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* Definition of exported functions */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
|
|
/**Function********************************************************************
|
|
|
|
Synopsis [Display a binary dump file in a text file]
|
|
|
|
Description [Display a binary dump file in a text file]
|
|
|
|
SideEffects [None]
|
|
|
|
SeeAlso [Dddmp_cuddBddStore , Dddmp_cuddBddLoad ]
|
|
|
|
******************************************************************************/
|
|
|
|
int
|
|
Dddmp_cuddBddDisplayBinary(
|
|
char *fileIn /* IN: name of binary file */,
|
|
char *fileOut /* IN: name of text file */
|
|
)
|
|
{
|
|
FILE *fp, *fpo;
|
|
int id, size;
|
|
struct binary_dd_code code;
|
|
char buf[1000];
|
|
int nnodes, i;
|
|
char *retval;
|
|
|
|
fp = fopen (fileIn, "rb");
|
|
if (fp == 0) {
|
|
return (0);
|
|
}
|
|
|
|
fpo = fopen (fileOut, "w");
|
|
if (fpo == 0) {
|
|
return (0);
|
|
}
|
|
|
|
while (fgets(buf, 999,fp)!=NULL) {
|
|
fprintf (fpo, "%s", buf);
|
|
if (strncmp(buf, ".nnodes", 7) == 0) {
|
|
sscanf (buf, "%*s %d", &nnodes);
|
|
}
|
|
if (strncmp(buf, ".rootids", 8) == 0) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
for (i=1; i<=nnodes; i++) {
|
|
if (feof(fp)) {
|
|
return (0);
|
|
}
|
|
if (DddmpReadCode(fp,&code) == 0) {
|
|
return (0);
|
|
}
|
|
fprintf (fpo, "c : v %d | T %d | E %d\n",
|
|
(int)code.V, (int)code.T,
|
|
(code.Ecompl ? -(int)(code.E) : (int)(code.E)));
|
|
if (code.V == DDDMP_TERMINAL) {
|
|
continue;
|
|
}
|
|
if (code.V <= DDDMP_RELATIVE_ID) {
|
|
size = DddmpReadInt(fp,&id);
|
|
if (size == 0) {
|
|
return (0);
|
|
}
|
|
fprintf(fpo, "v(%d): %d\n", size, id);
|
|
}
|
|
if (code.T <= DDDMP_RELATIVE_ID) {
|
|
size = DddmpReadInt(fp,&id);
|
|
if (size == 0) {
|
|
return (0);
|
|
}
|
|
fprintf(fpo, "T(%d): %d\n", size, id);
|
|
}
|
|
if (code.E <= DDDMP_RELATIVE_ID) {
|
|
size = DddmpReadInt(fp,&id);
|
|
if (size == 0) {
|
|
return (0);
|
|
}
|
|
fprintf(fpo, "E(%d): %d\n", size, id);
|
|
}
|
|
|
|
}
|
|
|
|
retval = fgets(buf, 999,fp);
|
|
if (!retval || strncmp(buf, ".end", 4) != 0) {
|
|
return (0);
|
|
}
|
|
|
|
fprintf(fpo, ".end");
|
|
|
|
fclose(fp);
|
|
fclose(fpo);
|
|
|
|
return (1);
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* Definition of internal functions */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* Definition of static functions */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
|