diff ueda/uschem-netlist/nlcomp.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/nlcomp.c	Mon Jul 20 00:24:37 2015 +0000
@@ -0,0 +1,63 @@
+#include <sys/types.h>
+#include <stdio.h>
+#include "../libueda/mcl.h"
+#include "netlist.h"
+
+extern char *malloc();
+
+extern struct component components[];
+extern int ncomponents;
+
+extern char *get_comp_attr();
+
+struct nlcomp *netlist_comps;
+
+alloc_nlcomp_array()
+{
+	register int i;
+
+	netlist_comps = (struct nlcomp *)
+				malloc(sizeof(struct nlcomp) * ncomponents);
+	if (!netlist_comps) {
+		perror("malloc");
+		exit(1);
+	}
+	bzero(netlist_comps, sizeof(struct nlcomp) * ncomponents);
+	for (i = 0; i < ncomponents; i++) {
+		netlist_comps[i].mclcomp = components + i;
+		fill_nlcomp(netlist_comps + i);
+	}
+}
+
+fill_nlcomp(nlc)
+	register struct nlcomp *nlc;
+{
+	char *npins_attr;
+	register int n;
+	register struct pinconn **pintab;
+
+	npins_attr = get_comp_attr(nlc->mclcomp, "npins");
+	if (!npins_attr)
+		return;
+	n = atoi(npins_attr);
+	if (n <= 0) {
+		fprintf(stderr, "%s: invalid npins attribute\n",
+			nlc->mclcomp->name);
+		exit(1);
+	}
+	nlc->npins = n;
+	pintab = (struct pinconn **) malloc(sizeof(struct pinconn *) * n);
+	if (!pintab) {
+		perror("malloc");
+		exit(1);
+	}
+	bzero(pintab, sizeof(struct pinconn *) * n);
+	nlc->pintab = pintab;
+}
+
+struct nlcomp *
+mclcomp_to_nlcomp(comp)
+	struct component *comp;
+{
+	return(netlist_comps + (comp - components));
+}