Introduction des objets logiques capacite, resistance et inductance.
Nouvelles fonctions de genlib: GENLIB_LOCAP(type,capa,tcon,bcon,name) GENLIB_LORES(type,resi,rcon1,rcon2,name) GENLIB_LOSELF(type,self,scon1,scon2,name) Pour GENLIB_LOCAP, type = CAPMIM ou CAPPNWELL capa = valeur de la capacite tcon,bcon = nom des connecteurs name = nom de la capacite Pour GENLIB_LORES, type = RESMIM resi = valeur de la resistance rcon1,rcon2 = nom des connecteurs name = nom de la resistance Pour GENLIB_LOSELF, type = SELFMIM self = valeur de l'inductance scon1,scon2 = nom des connecteurs name = nom de l'inductance Note: le parser/driver al fonctionne pour ces objets le driver spice seul fonctionne pour ces objets
This commit is contained in:
parent
c0982fd8a3
commit
fae460bb3c
|
@ -71,7 +71,7 @@
|
|||
#include "mbkgen.h"
|
||||
#define __GENLIB__
|
||||
#include "mgn.h"
|
||||
static char rcsid[] = "$Id: genlib.c,v 1.7 2002/06/07 13:04:42 fred Exp $";
|
||||
static char rcsid[] = "$Id: genlib.c,v 1.8 2002/08/14 19:18:24 pnt Exp $";
|
||||
|
||||
/*******************************************************************************
|
||||
* global variables used in genlib *
|
||||
|
@ -3394,6 +3394,11 @@ losig_list *ls0, *ls1, *ls2;
|
|||
locon_list *c;
|
||||
loins_list *i;
|
||||
lotrs_list *t;
|
||||
|
||||
locap_list *cap = NULL ;
|
||||
lores_list *res = NULL ;
|
||||
loself_list *self = NULL ;
|
||||
|
||||
chain_list *chain;
|
||||
|
||||
if (WORK_LOFIG == NULL) {
|
||||
|
@ -3459,6 +3464,46 @@ chain_list *chain;
|
|||
if (t->SOURCE->SIG == ls2)
|
||||
t->SOURCE->SIG = ls1;
|
||||
}
|
||||
|
||||
for(cap = WORK_LOFIG -> LOCAP ; cap != NULL ; cap = cap -> NEXT)
|
||||
{
|
||||
if(cap -> TCON -> SIG == ls2)
|
||||
{
|
||||
cap -> TCON -> SIG = ls1 ;
|
||||
}
|
||||
|
||||
if(cap -> BCON -> SIG == ls2)
|
||||
{
|
||||
cap -> BCON ->SIG = ls1 ;
|
||||
}
|
||||
}
|
||||
|
||||
for(res = WORK_LOFIG -> LORES ; res != NULL ; res = res -> NEXT)
|
||||
{
|
||||
if(res -> RCON1 -> SIG == ls2)
|
||||
{
|
||||
res -> RCON1 -> SIG = ls1 ;
|
||||
}
|
||||
|
||||
if(res -> RCON2 -> SIG == ls2)
|
||||
{
|
||||
res -> RCON2 ->SIG = ls1 ;
|
||||
}
|
||||
}
|
||||
|
||||
for(self = WORK_LOFIG -> LOSELF ; self != NULL ; self = self -> NEXT)
|
||||
{
|
||||
if(self -> SCON1 -> SIG == ls2)
|
||||
{
|
||||
self -> SCON1 -> SIG = ls1 ;
|
||||
}
|
||||
|
||||
if(self -> SCON2 -> SIG == ls2)
|
||||
{
|
||||
self -> SCON2 ->SIG = ls1 ;
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
if (ls2->PRCN) {
|
||||
if (!ls1->PRCN)
|
||||
|
@ -4286,3 +4331,181 @@ char *s;
|
|||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* function LOCAP *
|
||||
*******************************************************************************/
|
||||
|
||||
void genLOCAP(char type,double capa,char *tcon,char *bcon,char *name)
|
||||
{
|
||||
int i = 0 ;
|
||||
losig_list *s_tcon = NULL ;
|
||||
losig_list *s_bcon = NULL ;
|
||||
losig_list *ptsig = NULL ;
|
||||
chain_list *ptchain = NULL ;
|
||||
char *signame = NULL ;
|
||||
|
||||
for(i = 0 ; i < 2 ; i++)
|
||||
{
|
||||
switch(i)
|
||||
{
|
||||
case 0 :
|
||||
signame = namealloc(checkname(tcon)) ;
|
||||
break ;
|
||||
case 1 :
|
||||
signame = namealloc(checkname(bcon)) ;
|
||||
break ;
|
||||
}
|
||||
|
||||
for(ptsig = WORK_LOFIG -> LOSIG; ptsig; ptsig = ptsig -> NEXT)
|
||||
{
|
||||
for(ptchain = ptsig -> NAMECHAIN; ptchain; ptchain = ptchain -> NEXT)
|
||||
{
|
||||
if(ptchain -> DATA == (void *)signame)
|
||||
break ;
|
||||
}
|
||||
|
||||
if (ptchain)
|
||||
break ;
|
||||
}
|
||||
|
||||
if(!ptsig)
|
||||
{
|
||||
num_index++ ;
|
||||
|
||||
ptsig = addlosig(WORK_LOFIG,num_index,addchain((chain_list *)NULL,
|
||||
(void *)signame),INTERNAL) ;
|
||||
}
|
||||
|
||||
switch (i)
|
||||
{
|
||||
case 0 :
|
||||
s_tcon = ptsig ;
|
||||
break ;
|
||||
case 1 :
|
||||
s_bcon = ptsig ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
|
||||
(void)addlocap(WORK_LOFIG,type,capa,s_tcon,s_bcon,name) ;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* function LORES *
|
||||
*******************************************************************************/
|
||||
|
||||
void genLORES(char type,double resi,char *rcon1,char *rcon2,char *name)
|
||||
{
|
||||
int i = 0 ;
|
||||
losig_list *s_rcon1 = NULL ;
|
||||
losig_list *s_rcon2 = NULL ;
|
||||
losig_list *ptsig = NULL ;
|
||||
chain_list *ptchain = NULL ;
|
||||
char *signame = NULL ;
|
||||
|
||||
for(i = 0 ; i < 2 ; i++)
|
||||
{
|
||||
switch(i)
|
||||
{
|
||||
case 0 :
|
||||
signame = namealloc(checkname(rcon1)) ;
|
||||
break ;
|
||||
case 1 :
|
||||
signame = namealloc(checkname(rcon2)) ;
|
||||
break ;
|
||||
}
|
||||
|
||||
for(ptsig = WORK_LOFIG -> LOSIG; ptsig; ptsig = ptsig -> NEXT)
|
||||
{
|
||||
for(ptchain = ptsig -> NAMECHAIN; ptchain; ptchain = ptchain -> NEXT)
|
||||
{
|
||||
if(ptchain -> DATA == (void *)signame)
|
||||
break ;
|
||||
}
|
||||
|
||||
if (ptchain)
|
||||
break ;
|
||||
}
|
||||
|
||||
if(!ptsig)
|
||||
{
|
||||
num_index++ ;
|
||||
|
||||
ptsig = addlosig(WORK_LOFIG,num_index,addchain((chain_list *)NULL,
|
||||
(void *)signame),INTERNAL) ;
|
||||
}
|
||||
|
||||
switch (i)
|
||||
{
|
||||
case 0 :
|
||||
s_rcon1 = ptsig ;
|
||||
break ;
|
||||
case 1 :
|
||||
s_rcon2 = ptsig ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
|
||||
(void)addlores(WORK_LOFIG,type,resi,s_rcon1,s_rcon2,name) ;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* function LOSELF *
|
||||
*******************************************************************************/
|
||||
|
||||
void genLOSELF(char type,double self,char *scon1,char *scon2,char *name)
|
||||
{
|
||||
int i = 0 ;
|
||||
losig_list *s_scon1 = NULL ;
|
||||
losig_list *s_scon2 = NULL ;
|
||||
losig_list *ptsig = NULL ;
|
||||
chain_list *ptchain = NULL ;
|
||||
char *signame = NULL ;
|
||||
|
||||
for(i = 0 ; i < 2 ; i++)
|
||||
{
|
||||
switch(i)
|
||||
{
|
||||
case 0 :
|
||||
signame = namealloc(checkname(scon1)) ;
|
||||
break ;
|
||||
case 1 :
|
||||
signame = namealloc(checkname(scon2)) ;
|
||||
break ;
|
||||
}
|
||||
|
||||
for(ptsig = WORK_LOFIG -> LOSIG; ptsig; ptsig = ptsig -> NEXT)
|
||||
{
|
||||
for(ptchain = ptsig -> NAMECHAIN; ptchain; ptchain = ptchain -> NEXT)
|
||||
{
|
||||
if(ptchain -> DATA == (void *)signame)
|
||||
break ;
|
||||
}
|
||||
|
||||
if (ptchain)
|
||||
break ;
|
||||
}
|
||||
|
||||
if(!ptsig)
|
||||
{
|
||||
num_index++ ;
|
||||
|
||||
ptsig = addlosig(WORK_LOFIG,num_index,addchain((chain_list *)NULL,
|
||||
(void *)signame),INTERNAL) ;
|
||||
}
|
||||
|
||||
switch (i)
|
||||
{
|
||||
case 0 :
|
||||
s_scon1 = ptsig ;
|
||||
break ;
|
||||
case 1 :
|
||||
s_scon2 = ptsig ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
|
||||
(void)addloself(WORK_LOFIG,type,self,s_scon1,s_scon2,name) ;
|
||||
}
|
||||
|
|
|
@ -110,6 +110,16 @@ extern void genSC_CHANNEL();
|
|||
extern void genSC_CON_CHANNEL();
|
||||
extern void genLOGEN(char *, int, ...);;
|
||||
extern void genSETLOGEN(char *, char *, ...);
|
||||
|
||||
/********************************* Analogical world ************************************/
|
||||
|
||||
extern void genLOCAP(char type,double capa,char *tcon,char *bcon,char *name) ;
|
||||
extern void genLORES(char type,double resi,char *rcon1,char *rcon2,char *name) ;
|
||||
extern void genLOSELF(char type,double self,char *scon1,char *scon2,char *name) ;
|
||||
|
||||
/***************************************************************************************/
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* name forming functions, for both views *
|
||||
*******************************************************************************/
|
||||
|
@ -261,6 +271,15 @@ extern char *genNAME(char *, ...);
|
|||
#define GENLIB_ELM(signame,number) genELM(signame,number)
|
||||
#define GENLIB_NAME genNAME
|
||||
|
||||
|
||||
/********************************* Analogical world ************************************/
|
||||
|
||||
#define GENLIB_LOCAP(type,capa,tcon,bcon,name) genLOCAP(type,capa,tcon,bcon,name)
|
||||
#define GENLIB_LORES(type,resi,rcon1,rcon2,name) genLORES(type,resi,rcon1,rcon2,name)
|
||||
#define GENLIB_LOSELF(type,self,scon1,scon2,name) genLOSELF(type,self,scon1,scon2,name)
|
||||
|
||||
/***************************************************************************************/
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue