FreeCalypso > hg > ueda-linux
diff ueda/uschem-netlist/netobj.c @ 0:cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 20 Jul 2015 00:24:37 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ueda/uschem-netlist/netobj.c Mon Jul 20 00:24:37 2015 +0000 @@ -0,0 +1,61 @@ +#include <sys/types.h> +#include <stdio.h> +#include "netlist.h" +#include "../libuschem/schemstruct.h" + +extern struct net *alloc_nethead(); +extern struct net *get_nethead_for_netname(); + +extern struct schem *curschem; +extern int global_errflag; + +static struct net *curnet; +static struct schemobj *cur_grouphead; + +process_netobj(obj) + register struct schemobj *obj; +{ + register struct netpoint *netpt; + + if (!obj->netobj_grouphead || obj->netobj_grouphead != cur_grouphead) { + curnet = NULL; + cur_grouphead = obj->netobj_grouphead; + } + if (!curnet && obj->netobj_netname) + curnet = get_nethead_for_netname(obj->netobj_netname); + for (netpt = obj->netobj_points; netpt; netpt = netpt->netpt_next) + if (netpt->netpt_type == NETPT_TYPE_PIN) + process_netpoint(obj, netpt); +} + +process_netpoint(netobj, netpt) + struct schemobj *netobj; + register struct netpoint *netpt; +{ + struct schemobj *comp; + char *soughtpin; + int bynum; + + if (!netpt->netpt_pin_nameref) { + fprintf(stderr, +"%s: line %d: Pin connection specified by coordinates only not netlistable\n", + curschem->orig_filename, netobj->obj_lineno); + fprintf(stderr, "Run uschem-rewrite -g %s to fix\n", + curschem->orig_filename); + global_errflag++; + return; + } + if (parse_pin_nameref(curschem, netobj->obj_lineno, + netpt->netpt_pin_nameref, &comp, &soughtpin, + &bynum) < 0) { + /* error msg already printed */ + global_errflag++; + return; + } + /* handle unnamed nets -- point of no return */ + if (!curnet) { + curnet = alloc_nethead(); + add_unnamed_net(curnet); + } + do_connect(curnet, comp, soughtpin, bynum, netobj->obj_lineno); +}