FreeCalypso > hg > ueda-linux
annotate ueda/sverp/elaborate.c @ 139:bf188727e606
donl-rename-parts reader: no tEDAx-style escapes
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Mon, 07 Sep 2020 04:25:11 +0000 | 
| parents | 7b4f78fcca08 | 
| children | 
| rev | line source | 
|---|---|
| 0 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1 /* | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 2 * Here we elaborate the hierarchy and create our flat netlist. | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 3 */ | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 4 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 5 #include <stdio.h> | 
| 4 | 6 #include <stdlib.h> | 
| 7 #include <string.h> | |
| 0 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 8 #include <strings.h> | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 9 #include "struct.h" | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 10 #include "lexer.h" /* for MAXDIGITS */ | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 11 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 12 struct output_net *output_net_head; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 13 struct output_element *output_element_head; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 14 int total_good_nets, total_singular_nets, total_null_nets; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 15 int total_output_elements; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 16 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 17 static struct output_net **output_net_tail = &output_net_head; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 18 static struct output_element **output_element_tail = &output_element_head; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 19 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 20 static struct output_net ** | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 21 alloc_mod_net_array(mod) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 22 struct module_def *mod; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 23 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 24 int total_wires; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 25 unsigned alloc_size; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 26 register struct output_net **array; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 27 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 28 total_wires = mod->nwires_ports + mod->nwires_internal; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 29 alloc_size = sizeof(struct output_net *) * total_wires; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 30 array = (struct output_net **) malloc(alloc_size); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 31 if (!array) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 32 perror("malloc"); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 33 exit(1); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 34 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 35 return(array); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 36 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 37 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 38 static struct output_net ** | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 39 alloc_connect_net_array(mod) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 40 struct module_def *mod; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 41 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 42 register unsigned alloc_size; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 43 register struct output_net **array; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 44 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 45 alloc_size = sizeof(struct output_net *) * mod->nwires_ports; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 46 array = (struct output_net **) malloc(alloc_size); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 47 if (!array) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 48 perror("malloc"); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 49 exit(1); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 50 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 51 bzero(array, alloc_size); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 52 return(array); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 53 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 54 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 55 static struct output_net * | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 56 create_real_net(hier_prefix, base_name, is_bus, bus_pos) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 57 char *hier_prefix, *base_name; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 58 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 59 int len; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 60 register char *buf; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 61 register struct output_net *net; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 62 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 63 len = sizeof(struct output_net) + strlen(hier_prefix) + | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 64 strlen(base_name) + 1; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 65 if (is_bus) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 66 len += MAXDIGITS + 2; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 67 buf = malloc(len); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 68 if (!buf) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 69 perror("malloc"); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 70 exit(1); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 71 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 72 net = (struct output_net *) buf; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 73 bzero(net, sizeof(struct output_net)); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 74 buf += sizeof(struct output_net); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 75 if (is_bus) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 76 sprintf(buf, "%s%s[%d]", hier_prefix, base_name, bus_pos); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 77 else | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 78 sprintf(buf, "%s%s", hier_prefix, base_name); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 79 net->name = buf; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 80 *output_net_tail = net; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 81 output_net_tail = &net->next; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 82 return(net); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 83 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 84 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 85 static void | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 86 create_module_nets(mod, hier_prefix, fillp) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 87 struct module_def *mod; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 88 char *hier_prefix; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 89 register struct output_net **fillp; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 90 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 91 register struct module_net_def *nd; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 92 register int i, incr; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 93 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 94 for (nd = mod->nets; nd; nd = nd->next) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 95 if (nd->is_port) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 96 continue; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 97 if (!nd->is_bus) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 98 *fillp++ = create_real_net(hier_prefix, nd->name, 0); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 99 continue; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 100 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 101 if (nd->bus_msb < nd->bus_lsb) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 102 incr = 1; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 103 else | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 104 incr = -1; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 105 for (i = nd->bus_msb; i != nd->bus_lsb + incr; i += incr) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 106 *fillp++ = create_real_net(hier_prefix, nd->name, 1, i); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 107 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 108 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 109 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 110 elaborate_module(mod, inst_name, hier_prefix, in_conn_array) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 111 register struct module_def *mod; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 112 char *inst_name, *hier_prefix; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 113 struct output_net **in_conn_array; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 114 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 115 register struct output_net **mod_net_array; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 116 register struct module_def_subinst *sub; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 117 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 118 if (mod->nwires_internal) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 119 mod_net_array = alloc_mod_net_array(mod); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 120 if (mod->nwires_ports) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 121 bcopy(in_conn_array, mod_net_array, | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 122 sizeof(struct output_net *) * mod->nwires_ports); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 123 create_module_nets(mod, hier_prefix, | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 124 mod_net_array + mod->nwires_ports); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 125 } else | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 126 mod_net_array = in_conn_array; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 127 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 128 for (sub = mod->subinst; sub; sub = sub->next) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 129 elaborate_subinst(mod, inst_name, hier_prefix, mod_net_array, | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 130 sub); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 131 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 132 if (mod->nwires_internal) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 133 free(mod_net_array); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 134 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 135 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 136 static void | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 137 report_connect_conflict(new_inst, ce, offset) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 138 char *new_inst; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 139 struct connect_entry *ce; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 140 int offset; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 141 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 142 register struct module_net_def *port = ce->down_portdef; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 143 int bus_pos; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 144 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 145 if (port->is_bus) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 146 offset += ce->down_offset; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 147 if (port->bus_msb > port->bus_lsb) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 148 bus_pos = port->bus_msb - offset; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 149 else | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 150 bus_pos = port->bus_msb + offset; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 151 fprintf(stderr, | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 152 "elaborating %s: multiple connections to port %s[%d]\n", | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 153 new_inst, port->name, bus_pos); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 154 } else | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 155 fprintf(stderr, | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 156 "elaborating %s: multiple connections to port %s\n", | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 157 new_inst, port->name); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 158 exit(1); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 159 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 160 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 161 static void | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 162 check_connect_conflict(new_inst, ce, conn_array) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 163 char *new_inst; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 164 register struct connect_entry *ce; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 165 register struct output_net **conn_array; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 166 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 167 register int start, i; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 168 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 169 start = ce->down_portdef->array_index + ce->down_offset; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 170 for (i = 0; i < ce->down_width; i++) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 171 if (conn_array[start + i]) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 172 report_connect_conflict(new_inst, ce, i); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 173 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 174 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 175 static struct output_net * | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 176 create_nc_net(mup, old_inst, ce) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 177 struct module_def *mup; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 178 char *old_inst; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 179 struct connect_entry *ce; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 180 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 181 register struct output_net *net; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 182 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 183 net = (struct output_net *) malloc(sizeof(struct output_net)); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 184 if (!net) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 185 perror("malloc"); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 186 exit(1); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 187 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 188 bzero(net, sizeof(struct output_net)); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 189 net->nc_module_name = mup->name; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 190 net->nc_module_lineno = ce->src_lineno; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 191 net->nc_module_inst = old_inst; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 192 return(net); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 193 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 194 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 195 static struct output_net * | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 196 process_subinst_connect(mup, sub, old_inst, new_inst, mod_net_array, conn_array) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 197 struct module_def *mup; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 198 struct module_def_subinst *sub; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 199 char *old_inst, *new_inst; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 200 struct output_net **mod_net_array; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 201 register struct output_net **conn_array; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 202 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 203 struct output_net *nc_head = 0, **nc_tail = &nc_head; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 204 register struct connect_entry *ce; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 205 int start; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 206 register int i; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 207 register struct output_net *nc_net; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 208 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 209 for (ce = sub->connections; ce; ce = ce->next) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 210 check_connect_conflict(new_inst, ce, conn_array); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 211 if (ce->up_netdef) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 212 bcopy(mod_net_array + ce->up_netdef->array_index + | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 213 ce->up_offset, | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 214 conn_array + ce->down_portdef->array_index + | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 215 ce->down_offset, | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 216 sizeof(struct output_net *) * ce->up_width); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 217 continue; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 218 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 219 /* it's a no-connect */ | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 220 start = ce->down_portdef->array_index + ce->down_offset; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 221 for (i = 0; i < ce->down_width; i++) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 222 nc_net = create_nc_net(mup, old_inst, ce); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 223 conn_array[start + i] = nc_net; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 224 *nc_tail = nc_net; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 225 nc_tail = &nc_net->next; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 226 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 227 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 228 return(nc_head); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 229 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 230 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 231 static void | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 232 report_missing_connect(new_inst, port, offset) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 233 char *new_inst; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 234 register struct module_net_def *port; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 235 int offset; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 236 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 237 int bus_pos; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 238 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 239 if (port->is_bus) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 240 if (port->bus_msb > port->bus_lsb) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 241 bus_pos = port->bus_msb - offset; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 242 else | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 243 bus_pos = port->bus_msb + offset; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 244 fprintf(stderr, | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 245 "elaborating %s: missing connection to port %s[%d]\n", | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 246 new_inst, port->name, bus_pos); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 247 } else | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 248 fprintf(stderr, | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 249 "elaborating %s: missing connection to port %s\n", | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 250 new_inst, port->name); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 251 exit(1); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 252 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 253 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 254 static void | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 255 check_missing_connect(new_inst, mdown, conn_array) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 256 char *new_inst; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 257 struct module_def *mdown; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 258 struct output_net **conn_array; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 259 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 260 register struct module_net_def *port; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 261 register struct output_net **connp = conn_array; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 262 register int i; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 263 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 264 for (port = mdown->nets; port; port = port->next) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 265 if (!port->is_port) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 266 return; /* all ports are upfront */ | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 267 if (!port->is_bus) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 268 if (!*connp++) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 269 report_missing_connect(new_inst, port, 0); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 270 continue; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 271 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 272 for (i = 0; i < port->bus_width; i++) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 273 if (!*connp++) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 274 report_missing_connect(new_inst, port, i); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 275 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 276 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 277 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 278 static void | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 279 report_bad_nc_net(net) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 280 register struct output_net *net; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 281 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 282 fprintf(stderr, | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 283 "error: NC pseudo-net created at module %s line %d inst %s goes to more than one pin\n", | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 284 net->nc_module_name, net->nc_module_lineno, | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 285 net->nc_module_inst); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 286 exit(1); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 287 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 288 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 289 static void | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 290 check_nc_nets(head) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 291 struct output_net *head; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 292 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 293 register struct output_net *net; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 294 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 295 for (net = head; net; net = net->next) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 296 if (net->npoints > 1) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 297 report_bad_nc_net(net); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 298 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 299 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 300 elaborate_subinst(mup, inst_name, hier_prefix, mod_net_array, sub) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 301 struct module_def *mup; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 302 char *inst_name, *hier_prefix; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 303 struct output_net **mod_net_array; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 304 struct module_def_subinst *sub; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 305 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 306 char *new_inst, *new_prefix; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 307 struct module_def *mdown = sub->submod_def; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 308 struct output_net **conn_array, *nc_nets; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 309 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 310 new_inst = malloc(strlen(hier_prefix) + strlen(sub->inst_name) + 1); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 311 if (!new_inst) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 312 perror("malloc"); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 313 exit(1); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 314 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 315 sprintf(new_inst, "%s%s", hier_prefix, sub->inst_name); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 316 if (mdown->nports) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 317 conn_array = alloc_connect_net_array(mdown); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 318 nc_nets = process_subinst_connect(mup, sub, inst_name, new_inst, | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 319 mod_net_array, conn_array); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 320 check_missing_connect(new_inst, mdown, conn_array); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 321 } else { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 322 conn_array = 0; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 323 nc_nets = 0; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 324 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 325 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 326 if (mdown->is_primitive) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 327 elaborate_primitive(mdown, new_inst, conn_array); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 328 else { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 329 new_prefix = malloc(strlen(hier_prefix) + | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 330 strlen(sub->inst_name) + 2); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 331 if (!new_prefix) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 332 perror("malloc"); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 333 exit(1); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 334 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 335 sprintf(new_prefix, "%s%s.", hier_prefix, sub->inst_name); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 336 elaborate_module(mdown, new_inst, new_prefix, conn_array); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 337 free(new_prefix); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 338 if (conn_array) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 339 free(conn_array); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 340 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 341 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 342 if (nc_nets) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 343 check_nc_nets(nc_nets); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 344 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 345 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 346 static void | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 347 incr_net_points_for_output_element(elem) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 348 struct output_element *elem; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 349 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 350 register struct output_net **p, **endp; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 351 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 352 p = elem->connections; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 353 endp = p + elem->prim_def->nports; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 354 for (; p < endp; p++) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 355 (*p)->npoints++; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 356 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 357 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 358 elaborate_primitive(mod, inst_name, in_conn_array) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 359 struct module_def *mod; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 360 char *inst_name; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 361 struct output_net **in_conn_array; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 362 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 363 register struct output_element *elem; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 364 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 365 elem = (struct output_element *) malloc(sizeof(struct output_element)); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 366 if (!elem) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 367 perror("malloc"); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 368 exit(1); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 369 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 370 elem->prim_def = mod; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 371 elem->hier_inst_name = inst_name; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 372 elem->connections = in_conn_array; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 373 elem->next = 0; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 374 *output_element_tail = elem; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 375 output_element_tail = &elem->next; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 376 total_output_elements++; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 377 incr_net_points_for_output_element(elem); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 378 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 379 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 380 tally_output_nets() | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 381 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 382 register struct output_net *net; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 383 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 384 for (net = output_net_head; net; net = net->next) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 385 if (net->npoints > 1) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 386 total_good_nets++; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 387 else if (net->npoints == 1) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 388 total_singular_nets++; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 389 else | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 390 total_null_nets++; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 391 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 392 } | 
