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"
|
#include "mbkgen.h"
|
||||||
#define __GENLIB__
|
#define __GENLIB__
|
||||||
#include "mgn.h"
|
#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 *
|
* global variables used in genlib *
|
||||||
|
@ -3394,6 +3394,11 @@ losig_list *ls0, *ls1, *ls2;
|
||||||
locon_list *c;
|
locon_list *c;
|
||||||
loins_list *i;
|
loins_list *i;
|
||||||
lotrs_list *t;
|
lotrs_list *t;
|
||||||
|
|
||||||
|
locap_list *cap = NULL ;
|
||||||
|
lores_list *res = NULL ;
|
||||||
|
loself_list *self = NULL ;
|
||||||
|
|
||||||
chain_list *chain;
|
chain_list *chain;
|
||||||
|
|
||||||
if (WORK_LOFIG == NULL) {
|
if (WORK_LOFIG == NULL) {
|
||||||
|
@ -3459,6 +3464,46 @@ chain_list *chain;
|
||||||
if (t->SOURCE->SIG == ls2)
|
if (t->SOURCE->SIG == ls2)
|
||||||
t->SOURCE->SIG = ls1;
|
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 0
|
||||||
if (ls2->PRCN) {
|
if (ls2->PRCN) {
|
||||||
if (!ls1->PRCN)
|
if (!ls1->PRCN)
|
||||||
|
@ -4286,3 +4331,181 @@ char *s;
|
||||||
return 1;
|
return 1;
|
||||||
return 0;
|
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 genSC_CON_CHANNEL();
|
||||||
extern void genLOGEN(char *, int, ...);;
|
extern void genLOGEN(char *, int, ...);;
|
||||||
extern void genSETLOGEN(char *, char *, ...);
|
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 *
|
* name forming functions, for both views *
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
@ -261,6 +271,15 @@ extern char *genNAME(char *, ...);
|
||||||
#define GENLIB_ELM(signame,number) genELM(signame,number)
|
#define GENLIB_ELM(signame,number) genELM(signame,number)
|
||||||
#define GENLIB_NAME genNAME
|
#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
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue