00001 #include "types.h"
00002
00003
00004
00005
00006
00007
00008 nnode_t* allocate_nnode();
00009 npin_t* allocate_npin();
00010 void free_npin(npin_t *to_free);
00011 npin_t *get_a_zero_pin(netlist_t *netlist);
00012 npin_t *get_a_pad_pin(netlist_t *netlist);
00013 npin_t *get_a_one_pin(netlist_t *netlist);
00014 npin_t* copy_input_npin(npin_t* copy_pin);
00015 npin_t* copy_output_npin(npin_t* copy_pin);
00016 nnet_t* allocate_nnet();
00017 void free_nnode(nnode_t *to_free);
00018 void free_npin(npin_t *to_free);
00019 void free_nnet(nnet_t *to_free);
00020
00021 void allocate_more_node_input_pins(nnode_t *node, int width);
00022 void allocate_more_node_output_pins(nnode_t *node, int width);
00023
00024 void move_a_input_pin(nnode_t *node, int old_idx, int new_idx);
00025 void move_a_output_pin(nnode_t *node, int old_idx, int new_idx);
00026 void add_a_input_pin_to_node_spot_idx(nnode_t *node, npin_t *pin, int pin_idx);
00027 void add_a_fanout_pin_to_net(nnet_t *net, npin_t *pin);
00028 void add_a_output_pin_to_node_spot_idx(nnode_t *node, npin_t *pin, int pin_idx);
00029 void add_a_driver_pin_to_net(nnet_t *net, npin_t *pin);
00030 void add_output_port_information(nnode_t *node, int port_width);
00031 void add_input_port_information(nnode_t *node, int port_width);
00032
00033 void combine_nets(nnet_t *output_net, nnet_t* input_net, netlist_t *netlist);
00034 void join_nets(nnet_t *net, nnet_t* input_net);
00035
00036 void remap_pin_to_new_net(npin_t *pin, nnet_t *new_net);
00037 void remap_pin_to_new_node(npin_t *pin, nnode_t *new_node, int pin_idx);
00038
00039 signal_list_t *init_signal_list_structure();
00040 void add_pin_to_signal_list(signal_list_t *list, npin_t* pin);
00041 void sort_signal_list_alphabetically(signal_list_t *list);
00042 signal_list_t *combine_lists(signal_list_t **signal_lists, int num_signal_lists);
00043 signal_list_t *combine_lists_without_freeing_originals(signal_list_t **signal_lists, int num_signal_lists);
00044 void clean_signal_list_structure(signal_list_t *list);
00045
00046 void hookup_hb_input_pins_from_signal_list(nnode_t *node, int n_start_idx, signal_list_t* input_list, int il_start_idx, int width, netlist_t *netlist) ;
00047 void hookup_input_pins_from_signal_list(nnode_t *node, int n_start_idx, signal_list_t* input_list, int il_start_idx, int width, netlist_t *netlist) ;
00048 void hookup_output_pins_from_signal_list(nnode_t *node, int n_start_idx, signal_list_t* output_list, int ol_start_idx, int width);
00049
00050 signal_list_t *make_output_pins_for_existing_node(nnode_t* node, int width);
00051 void connect_nodes(nnode_t *out_node, int out_idx, nnode_t *in_node, int in_idx);
00052
00053 int count_nodes_in_netlist(netlist_t *netlist);
00054
00055 netlist_t* allocate_netlist();
00056 void free_netlist(netlist_t *to_free);
00057 void add_node_to_netlist(netlist_t *netlist, nnode_t *node, short special_node);
00058 void mark_clock_node ( netlist_t *netlist, char *clock_name);