/*--------------------------------------------------------------------------------------------- * (function: make_output_pins_for_existing_node) * Looks at a node and extracts the output pins into a signal list so they can be accessed * in this form *-------------------------------------------------------------------------------------------*/ signal_list_t *make_output_pins_for_existing_node(nnode_t* node, int width) { signal_list_t *return_list = init_signal_list(); int i; oassert(node->num_output_pins == width); for (i = 0; i < width; i++) { npin_t *new_pin1; npin_t *new_pin2; nnet_t *new_net; new_pin1 = allocate_npin(); new_pin2 = allocate_npin(); new_net = allocate_nnet(); new_net->name = node->name; /* hook the output pin into the node */ add_output_pin_to_node(node, new_pin1, i); /* hook up new pin 1 into the new net */ add_driver_pin_to_net(new_net, new_pin1); /* hook up the new pin 2 to this new net */ add_fanout_pin_to_net(new_net, new_pin2); /* add the new_pin2 to the list of pins */ add_pin_to_signal_list(return_list, new_pin2); } return return_list; }
signal_list_t *copy_output_signals(signal_list_t *signalsvar) { signal_list_t *duplicate_signals = init_signal_list(); int i; for (i = 0; i < signalsvar->count; i++) { npin_t *pin = signalsvar->pins[i]; add_pin_to_signal_list(duplicate_signals, copy_output_npin(pin)); } return duplicate_signals; }
signal_list_t *copy_input_signals(signal_list_t *signals) { signal_list_t *duplicate_signals = init_signal_list(); int i; for (i = 0; i < signals->count; i++) { npin_t *pin = signals->pins[i]; pin = copy_input_npin(pin); add_pin_to_signal_list(duplicate_signals, pin); } return duplicate_signals; }
/*--------------------------------------------------------------------------------------------- * (function: combine_lists_without_freeing_originals) *-------------------------------------------------------------------------------------------*/ signal_list_t *combine_lists_without_freeing_originals(signal_list_t **signal_lists, int num_signal_lists) { signal_list_t *return_list = init_signal_list(); int i; for (i = 0; i < num_signal_lists; i++) { int j; for (j = 0; j < signal_lists[i]->count; j++) add_pin_to_signal_list(return_list, signal_lists[i]->pins[j]); } return return_list; }