Subversion Repositories Vertical

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * $Header: C:/cvsroot/Vert03/vertlib/routing.h,v 1.2 2004/06/22 21:44:15 mjames Exp $
  3.  *
  4.  * $Log: routing.h,v $
  5.  * Revision 1.2  2004/06/22 21:44:15  mjames
  6.  * Firrst build most files
  7.  *
  8.  * Revision 1.6  2002/09/09 09:53:39  mjames
  9.  * Moved pin remapping function to pin ident editing function from
  10.  * sorting pin name routine.
  11.  *
  12.  * Revision 1.5  2001/12/24 21:18:12  mjames
  13.  * Declare ensure_reservation externally
  14.  *
  15.  * Revision 1.4  2001/10/31 22:20:17  mjames
  16.  * Tidying up problematical comments caused by CVS
  17.  * 'intelligent' comment guessing
  18.  *
  19.  * Revision 1.3  2001/07/20 10:47:43  mjames
  20.  * Allowed setting of pin routing group properties on pins on nets
  21.  * by the
  22.  * "set pin" command
  23.  *
  24.  * Revision 1.2  2001/06/06 12:10:17  mjames
  25.  * Move from HPUX
  26.  *
  27.  * Revision 1.1.1.1  2000/10/19 21:58:40  mjames
  28.  * Mike put it here
  29.  *
  30.  *
  31.  * Revision 1.41  2000/10/04  10:37:11  10:37:11  mjames (Mike James)
  32.  * Modified for Vertical2 : support COMPONENTS and SIGNALS
  33.  *
  34.  * Revision 1.41  2000/10/04  10:37:11  10:37:11  mjames (Mike James)
  35.  * Part of Release PSAVAT01
  36.  *
  37.  * Revision 1.40  2000/10/02  11:04:20  11:04:20  mjames (Mike James)
  38.  * new_vhdl
  39.  *
  40.  
  41.  * Revision 1.39  2000/09/27  14:42:24  14:42:24  mjames (Mike James)
  42.  
  43.  * Part of Release Sep_27_ST_2000
  44.  
  45.  *
  46.  
  47.  * Revision 1.38  2000/09/21  10:15:54  10:15:54  mjames (Mike James)
  48.  
  49.  * Part of Release Sep21Alpha
  50.  
  51.  *
  52.  
  53.  * Revision 1.37  2000/08/25  09:57:19  09:57:19  mjames (Mike James)
  54.  
  55.  * Part of Release Aug25_alpha
  56.  
  57.  *
  58.  
  59.  * Revision 1.36  2000/08/16  08:57:36  08:57:36  mjames (Mike James)
  60.  
  61.  * Part of Release CD01_Aug2000
  62.  
  63.  *
  64.  
  65.  * Revision 1.35  2000/08/14  14:45:16  14:45:16  mjames (Mike James)
  66.  
  67.  * Part of Release Aug_14_2000
  68.  
  69.  *
  70.  
  71.  * Revision 1.34  2000/08/11  08:30:36  08:30:36  mjames (Mike James)
  72.  
  73.  * Part of Release Aug_11_2000
  74.  
  75.  *
  76.  
  77.  * Revision 1.33  2000/08/09  10:31:53  10:31:53  mjames (Mike James)
  78.  
  79.  * Part of Release Aug__9_2000
  80.  
  81.  *
  82.  
  83.  * Revision 1.32  2000/05/31  11:43:05  11:43:05  mjames (Mike James)
  84.  
  85.  * Part of Release May_31_2000
  86.  
  87.  *
  88.  
  89.  * Revision 1.31  2000/05/08  17:01:43  17:01:43  mjames (Mike James)
  90.  
  91.  * Part of Release May__8_2000
  92.  
  93.  *
  94.  
  95.  * Revision 1.30  2000/05/08  16:59:36  16:59:36  mjames (Mike James)
  96.  
  97.  * Part of Release May__8_2000
  98.  
  99.  *
  100.  
  101.  * Revision 1.29  2000/05/08  16:57:12  16:57:12  mjames (Mike James)
  102.  
  103.  * Part of Release May__8_2000
  104.  
  105.  *
  106.  
  107.  * Revision 1.28  2000/03/08  16:19:30  16:19:30  mjames (Mike James)
  108.  
  109.  * New version including PC
  110.  
  111.  *
  112.  
  113.  * Revision 1.25  2000/01/20  15:58:53  15:58:53  mjames (Mike James)
  114.  
  115.  * Part of Release R22
  116.  
  117.  *
  118.  
  119.  * Revision 1.24  99/12/22  11:15:34  11:15:34  mjames (Mike James)
  120.  
  121.  * Part of Release Dec_22_1999
  122.  
  123.  *
  124.  
  125.  * Revision 1.23  99/05/04  09:52:50  09:52:50  mjames (Mike James)
  126.  
  127.  * General checkin
  128.  
  129.  *
  130.  
  131.  * Revision 1.21  98/06/15  14:20:44  14:20:44  mjames (Mike James)
  132.  
  133.  * Removed and added Route Create from general routing algorithm.
  134.  
  135.  * Added routing routing groups
  136.  
  137.  *
  138.  
  139.  * Revision 1.20  98/02/11  11:27:17  11:27:17  mjames (Mike James)
  140.  
  141.  * Checked in for version 6.2a
  142.  
  143.  *
  144.  
  145.  * Revision 1.19  97/04/23  08:44:45  08:44:45  mjames (Mike James)
  146.  
  147.  * CHecked in for release rel23041997
  148.  
  149.  *
  150.  
  151.  * Revision 1.18  97/01/03  13:41:12  13:41:12  mjames (Mike James)
  152.  
  153.  * Added the force_route() function to set/clear the
  154.  
  155.  * how_routed field of the net to enable/disable
  156.  
  157.  * usability of a routed net.
  158.  
  159.  *
  160.  
  161.  * Revision 1.17  96/12/13  08:44:14  08:44:14  mjames (Mike James)
  162.  
  163.  * Update to v5.1, added Write ID , exact routing
  164.  
  165.  *
  166.  
  167.  * Revision 1.16  96/08/06  13:40:48  13:40:48  mjames (Mike James)
  168.  
  169.  * Added FIX_LOCATION attribute
  170.  
  171.  *
  172.  
  173.  * Revision 1.15  96/07/19  14:38:57  14:38:57  mjames (Mike James)
  174.  
  175.  * Update to give to PRL
  176.  
  177.  *
  178.  
  179.  * Revision 1.14  1996/07/12  15:52:12  mjames
  180.  
  181.  * Sorted out things like Alias and Jumpers
  182.  
  183.  * Work Correctly
  184.  
  185.  * Print COrrectly
  186.  
  187.  *
  188.  
  189.  * Revision 1.13  96/06/17  13:02:29  13:02:29  mjames (Mike James)
  190.  
  191.  * Added fix_pins function to try and sort out internal/external
  192.  
  193.  * connections being fixed to external pins by name
  194.  
  195.  *
  196.  
  197.  * Revision 1.12  96/06/11  14:11:58  14:11:58  mjames (Mike James)
  198.  
  199.  * Added hierarchical jumpering
  200.  
  201.  *
  202.  
  203.  * Revision 1.11  96/06/04  11:58:15  11:58:15  mjames (Mike James)
  204.  
  205.  * Added a lot of stuff to do with internal/external sockets,
  206.  
  207.  * Net renaming. Net jumpering by node ID as well as net name
  208.  
  209.  *
  210.  
  211.  * Revision 1.10  96/03/29  14:47:16  14:47:16  mjames (Mike James)
  212.  
  213.  * Added VHDL netlist writing to the capabilities of ACFREAD
  214.  
  215.  *
  216.  
  217.  * Revision 1.9  96/03/26  07:22:18  07:22:18  mjames (Mike James)
  218.  
  219.  *
  220.  
  221.  * Revision 1.8  96/03/18  13:51:26  13:51:26  mjames (Mike James)
  222.  
  223.  * Real Revision 2.1
  224.  
  225.  *
  226.  
  227.  * Revision 1.5  96/02/13  09:13:34  09:13:34  mjames (Mike James)
  228.  
  229.  * Updated to be version 2.0 with net joining
  230.  
  231.  *
  232.  
  233.  * Revision 1.4  96/02/08  15:28:36  15:28:36  mjames (Mike James)
  234.  
  235.  * First release
  236.  
  237.  *
  238.  
  239.  * Revision 1.3  96/02/07  16:01:37  16:01:37  mjames (Mike James)
  240.  
  241.  * Added correct RCS header
  242.  
  243.  *
  244.  
  245.  * Revision 1.2  96/02/07  15:50:51  15:50:51  mjames (Mike James)
  246.  
  247.  * Added RCS ident message
  248.  
  249.  *
  250.  
  251.  * Revision 1.1  96/01/10  13:15:09  13:15:09  mjames (Mike James)
  252.  * Initial revision
  253.  
  254.  *  */
  255.  
  256.  
  257.  
  258. /* the number of nodes that will be accepted on a net while trying to find
  259.    if a connection exists between two EPLDs */
  260. #define MAX_NODES_FOR_PATH_SEARCH 100
  261.  
  262.  
  263.  
  264. /* used in search for pre-existing path */
  265. extern int MaxNodesForSearch;
  266.  
  267.  
  268.  
  269. /* if this is =1 then all nets connected must be in the same groups on EPLDs */
  270. extern int global_group_flag;
  271.  
  272.  
  273.  
  274.  
  275.  
  276. /* these define the head and tail of a dummy net identifier rsvXXXXXz */
  277.  
  278. /* which is ignored on net input */
  279. #define RES_FMT  "rsv%05dz"
  280.  
  281. /* 3 + 5 + 1 character */
  282. #define RES_NAMLEN 9
  283.  
  284.  
  285.  
  286. /* format of created jumpered nets */
  287. #define JUMP_FMT "jmp%s%05d"
  288.  
  289.  
  290.  
  291. #define JUMP_NAMLEN (MAXIDLEN)
  292.  
  293.  
  294.  
  295.  
  296.  
  297. extern noderef_t * search_net_for_socket (noderef_t * wanted_ref,
  298.                                    noderef_t * net_nodes,
  299.                                    int use_group_mask);
  300.  
  301.  
  302.  
  303. extern void clear_routing_flags(noderef_t * net_nodes);
  304.  
  305.  
  306.  
  307. extern void count_nets (char *message);
  308.  
  309.  
  310.  
  311. /* normal routing */
  312. extern void perform_routing(HowRouted_t how);
  313.  
  314.  
  315.  
  316. extern void perform_trial_naming(void);
  317.  
  318.  
  319.  
  320. /* routing utilities used in jumpering */
  321. extern net_t * remove_net (net_t ** list, net_t * net);
  322.  
  323.  
  324.  
  325. extern void combine_routed_and_unrouted (net_t * routed_net,
  326.                              net_t * unrouted_net);
  327.  
  328.  
  329.  
  330. extern void transfer_net_to_named (net_t ** from_list,
  331.                        net_t * net);
  332.  
  333.                        
  334.  
  335. /* alter whether or not a net is routable */
  336. extern void force_route(char * netname,HowRouted_t flag);
  337.  
  338.  
  339.  
  340. /* set the group routing flags on a given socket */
  341. extern void set_group_route_flags(char * template,int flag);
  342.  
  343.  
  344. /* set the group routing flags on pins on a given socket */
  345. extern void set_pin_group_flags(char * template,int flag);
  346.  
  347.  
  348.  
  349. extern void ensure_reservation(void);
  350.