@@ -3140,26 +3140,36 @@ void terminate_registered_assignment(ast_node_t* always_node, signal_list_t* ass
31403140 }
31413141 }
31423142
3143- #warning "Oops broke come back fix this"
3144- // for (i = 0; i < assignment->count; i++) {
3145- // npin_t* pin = assignment->pins[i];
3146- // int dependence_variable_position = -1;
3147- //
3148- // if (pin->net->driver_pin) {
3149- // ref_string = pin->net->driver_pin->node->name;
3150- //
3151- // for (j = i - 1; j >= 0; j--) {
3152- // if (list_dependence_pin[j] && list_dependence_pin[j]->net->driver_pin && list_dependence_type[j] && list_dependence_type[j] == BLOCKING_STATEMENT && strcmp(ref_string, assignment->pins[j]->node->name) == 0) {
3153- // dependence_variable_position = j;
3154- // ref_string = list_dependence_pin[j]->net->driver_pin->node->name;
3155- // }
3156- // }
3157- //
3158- // if (dependence_variable_position > -1) {
3159- // pin->net = list_dependence_pin[dependence_variable_position]->net;
3160- // }
3161- // }
3162- // }
3143+ #warning "Oops this be broke come fix"
3144+ for (i = 0 ; i < assignment->count ; i++) {
3145+ npin_t * pin = assignment->pins [i];
3146+ int dependence_variable_position = -1 ;
3147+
3148+ if (pin->net ->num_driver_pins > 1 ) {
3149+ // TODO Come make this warning actually correct when I know what is happening
3150+ error_message ( NETLIST, pin->node ->line_number , pin->node ->file_number , " Multiple drivers not supported for assignment to %s" , pin->name );
3151+ }
3152+ if (pin->net ->num_driver_pins ) {
3153+ ref_string = pin->net ->driver_pins [0 ]->node ->name ;
3154+
3155+ for (j = i - 1 ; j >= 0 ; j--) {
3156+ if (list_dependence_pin[j] && list_dependence_pin[j]->net ->num_driver_pins > 1 )
3157+ {
3158+ // TODO Come make this warning actually correct when I know what is happening
3159+ error_message ( NETLIST, list_dependence_pin[j]->node ->line_number , list_dependence_pin[j]->node ->file_number , " Cannot have multiple drivers for dependant variable %s" , list_dependence_pin[j]);
3160+ }
3161+ if (list_dependence_pin[j] && list_dependence_pin[j]->net ->num_driver_pins && list_dependence_type[j] && list_dependence_type[j] == BLOCKING_STATEMENT && strcmp (ref_string, assignment->pins [j]->node ->name ) == 0 ) {
3162+ dependence_variable_position = j;
3163+ ref_string = list_dependence_pin[j]->net ->driver_pins [0 ]->node ->name ;
3164+ }
3165+ }
3166+
3167+ // TODO Does this variable need reset on each loop
3168+ if (dependence_variable_position > -1 ) {
3169+ pin->net = list_dependence_pin[dependence_variable_position]->net ;
3170+ }
3171+ }
3172+ }
31633173 vtr::free (list_dependence_pin);
31643174 vtr::free (list_dependence_type);
31653175 for (i = 0 ; i < memory_inputs->count ; i++) {
0 commit comments