@@ -65,25 +65,24 @@ static bool warn_undriven(nnode_t* node, nnet_t* net) {
65
65
return false ;
66
66
}
67
67
68
- // TODO Uncomment this for In Outs
69
- // static void merge_with_inputs(nnode_t* node, long pin_idx) {
70
- // oassert(pin_idx < node->num_input_pins);
71
- // nnet_t* net = node->input_pins[pin_idx]->net;
72
- // warn_undriven(node, net);
73
- // // Merge node with all inputs with fanout of 1
74
- // if (net->num_fanout_pins <= 1) {
75
- // for (int i = 0; i < net->num_driver_pins; i++) {
76
- // npin_t* driver = net->driver_pins[i];
77
- // if (driver->name != NULL && ((driver->node->type == MULTIPLY) || (driver->node->type == HARD_IP) || (driver->node->type == MEMORY) || (driver->node->type == ADD) || (driver->node->type == MINUS))) {
78
- // vtr::free(driver->name);
79
- // driver->name = vtr::strdup(node->name);
80
- // } else {
81
- // vtr::free(driver->node->name);
82
- // driver->node->name = vtr::strdup(node->name);
83
- // }
84
- // }
85
- // }
86
- // }
68
+ static void merge_with_inputs (nnode_t * node, long pin_idx) {
69
+ oassert (pin_idx < node->num_input_pins );
70
+ nnet_t * net = node->input_pins [pin_idx]->net ;
71
+ warn_undriven (node, net);
72
+ // Merge node with all inputs with fanout of 1
73
+ if (net->num_fanout_pins <= 1 ) {
74
+ for (int i = 0 ; i < net->num_driver_pins ; i++) {
75
+ npin_t * driver = net->driver_pins [i];
76
+ if (driver->name != NULL && ((driver->node ->type == MULTIPLY) || (driver->node ->type == HARD_IP) || (driver->node ->type == MEMORY) || (driver->node ->type == ADD) || (driver->node ->type == MINUS))) {
77
+ vtr::free (driver->name );
78
+ driver->name = vtr::strdup (node->name );
79
+ } else {
80
+ vtr::free (driver->node ->name );
81
+ driver->node ->name = vtr::strdup (node->name );
82
+ }
83
+ }
84
+ }
85
+ }
87
86
88
87
static void print_net_driver (FILE* out, nnode_t * node, nnet_t * net, long driver_idx) {
89
88
oassert (driver_idx < net->num_driver_pins );
@@ -221,14 +220,13 @@ void output_blif(FILE* out, netlist_t* netlist) {
221
220
fprintf (out, " \n .names gnd\n .names unconn\n .names vcc\n 1\n " );
222
221
fprintf (out, " \n " );
223
222
224
- // TODO Uncomment this for In Outs
225
223
// connect all the outputs up to the last gate
226
- // for (long i = 0; i < netlist->num_top_output_nodes; i++) {
227
- // nnode_t* node = netlist->top_output_nodes[i];
228
- // for (int j = 0; j < node->num_input_pins; j++) {
229
- // merge_with_inputs(node, j);
230
- // }
231
- // }
224
+ for (long i = 0 ; i < netlist->num_top_output_nodes ; i++) {
225
+ nnode_t * node = netlist->top_output_nodes [i];
226
+ for (int j = 0 ; j < node->num_input_pins ; j++) {
227
+ merge_with_inputs (node, j);
228
+ }
229
+ }
232
230
233
231
/* traverse the internals of the flat net-list */
234
232
if (strcmp (configuration.output_type .c_str (), " blif" ) == 0 ) {
0 commit comments