In MBK (mvl) losig associated to locon on a lofig where not created.
* Bug: In <mbk>, in mvl_scomp_y.y, when the ENTITY PORT was parsed, pairs of losig/locon must be created on the lofig (one losig per locon). But in the case of a port 'out mux_bit|mux_vector bus', the signals *where* created but *not* connected to the locons. Instead, the previously created signal from former locons were connected. This was showing in flattenlofig() and causing wrong short circuits to be detected by lvx (tricky to diagnose). * Bug: In <mbk>, in mbk_lo_util.c, check the PRCN struct attribute to be NULL before trying to display it in mlodebug(). * Change: In <mbk>, more debug informations in various places.
This commit is contained in:
parent
6db3ad0bee
commit
db34ab91bb
|
@ -47,24 +47,23 @@ int main(argc, argv)
|
|||
int argc;
|
||||
char **argv;
|
||||
{
|
||||
lofig_list *p;
|
||||
lofig_list *p;
|
||||
|
||||
mbkenv();
|
||||
alliancebanner ("flatLO", "1.4", "FLATen LOgical figure", "1990", ALLIANCE_VERSION);
|
||||
|
||||
mbkenv();
|
||||
alliancebanner ("flatLO", "1.4", "FLATen LOgical figure", "1990", ALLIANCE_VERSION);
|
||||
if (argc != 4)
|
||||
usage(argv[0]);
|
||||
|
||||
if (argc != 4)
|
||||
usage(argv[0]);
|
||||
if (!strcmp(argv[1], "-r"))
|
||||
rflattenlofig(p = getlofig(argv[2],'A'), YES, YES);
|
||||
else if (!strcmp(argv[1], "-t"))
|
||||
rflattenlofig(p = getlofig(argv[2],'A'), YES, NO);
|
||||
else
|
||||
flattenlofig(p = getlofig(argv[1], 'A'), argv[2], YES);
|
||||
|
||||
if (!strcmp(argv[1], "-r"))
|
||||
rflattenlofig(p = getlofig(argv[2],'A'), YES, YES);
|
||||
else if (!strcmp(argv[1], "-t"))
|
||||
rflattenlofig(p = getlofig(argv[2],'A'), YES, NO);
|
||||
else
|
||||
flattenlofig(p = getlofig(argv[1], 'A'), argv[2], YES);
|
||||
|
||||
p->NAME=argv[3];
|
||||
savelofig(p);
|
||||
exit(0);
|
||||
return 0;
|
||||
p->NAME=argv[3];
|
||||
savelofig(p);
|
||||
exit(0);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -923,6 +923,8 @@ ptype_list *ptype = NULL;
|
|||
ptsig = ptcon->SIG;
|
||||
ptype = getptype(ptsig->USER, (long)LOFIGCHAIN);
|
||||
ptype->DATA = (void *)addchain((chain_list *)ptype->DATA, (void *)ptcon);
|
||||
if (DEBUG_MODE == 'Y')
|
||||
(void)printf("--- mbk --- lofigchain (lofig): on signal <%s> add con <%s>\n", getsigname(ptsig), ptcon->NAME);
|
||||
}
|
||||
|
||||
/* scan instance list */
|
||||
|
@ -930,8 +932,9 @@ ptype_list *ptype = NULL;
|
|||
for (ptcon=ptins->LOCON; ptcon; ptcon=ptcon->NEXT) {
|
||||
ptsig=ptcon->SIG;
|
||||
ptype = getptype(ptsig->USER, (long)LOFIGCHAIN);
|
||||
ptype->DATA = (void *)addchain((chain_list *)ptype->DATA,
|
||||
(void *)ptcon);
|
||||
ptype->DATA = (void *)addchain((chain_list *)ptype->DATA, (void *)ptcon);
|
||||
if (DEBUG_MODE == 'Y')
|
||||
(void)printf("--- mbk --- lofigchain (loins): on signal <%s> add con <%s>\n", getsigname(ptsig), ptcon->NAME);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -361,6 +361,9 @@ while(ptfig->LOINS != NULL)
|
|||
}
|
||||
else /* scanlosig->TYPE == EXTERNAL */
|
||||
{
|
||||
if (DEBUG_MODE == 'Y')
|
||||
(void)printf( "--- mbk --- scanlosig (EXTERNAL): %s\n", getsigname(scanlosig) );
|
||||
|
||||
/* cree la liste interf */
|
||||
interf = (struct st_interf*)mbkalloc( sizeof( struct st_interf ) );
|
||||
interf->base = 0;
|
||||
|
@ -376,6 +379,16 @@ while(ptfig->LOINS != NULL)
|
|||
)
|
||||
{
|
||||
ptcon = (locon_list*)(scanchain->DATA);
|
||||
if (DEBUG_MODE == 'Y') {
|
||||
(void)printf( "--- mbk --- scanchain: con:%s", ptcon->NAME );
|
||||
(void)printf( " sig:%s", getsigname(ptcon->SIG) );
|
||||
if (ptcon->TYPE == EXTERNAL) {
|
||||
(void)printf( " lofig:%s\n", ((lofig_list*)ptcon->ROOT)->NAME );
|
||||
} else {
|
||||
(void)printf( " loins:%s\n", ((loins_list*)ptcon->ROOT)->INSNAME );
|
||||
}
|
||||
}
|
||||
|
||||
if( ptcon->ROOT == figins )
|
||||
{
|
||||
for( scanlocon = ptins->LOCON ;
|
||||
|
@ -2800,7 +2813,10 @@ key[VHD_scon2DFN] = vhd_hash ("scon2");
|
|||
ptchain = ptchain->NEXT;
|
||||
}
|
||||
|
||||
(void)printf (" capa : %f\n",(losig_pnt->PRCN->CAPA?losig_pnt->PRCN->CAPA:0.0) );
|
||||
if (losig_pnt->PRCN)
|
||||
(void)printf (" capa : %f\n",(losig_pnt->PRCN->CAPA?losig_pnt->PRCN->CAPA:0.0) );
|
||||
else
|
||||
(void)printf (" capa : NULL\n" );
|
||||
(void)printf (" index : %ld\n",losig_pnt->INDEX);
|
||||
(void)printf (" type : %c\n",losig_pnt->TYPE);
|
||||
(void)printf ("-> user : %s\n",tab[VHD_userDFN]);
|
||||
|
|
|
@ -473,7 +473,7 @@ formal_port_element
|
|||
|
||||
case (MVL_OCNDFN + MVL_MUXDFN + MVL_BUSDFN) :
|
||||
case (MVL_OCNDFN + MVL_MXVDFN + MVL_BUSDFN) :
|
||||
mvl_addlosig (MVL_LOFPNT,MVL_SIGIDX,'E','M',
|
||||
losig_pnt = mvl_addlosig (MVL_LOFPNT,MVL_SIGIDX,'E','M',
|
||||
sig_name,$6.LEFT,$6.RIGHT);
|
||||
mvl_addlocon (MVL_LOFPNT,losig_pnt,'Z',
|
||||
sig_name,$6.LEFT,$6.RIGHT);
|
||||
|
|
Loading…
Reference in New Issue