1# Copyright (c) 2009 Advanced Micro Devices, Inc. 2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions are 6# met: redistributions of source code must retain the above copyright 7# notice, this list of conditions and the following disclaimer; 8# redistributions in binary form must reproduce the above copyright --- 56 unchanged lines hidden (view full) --- 65 num_int_nodes=len(nodes)+1) 66 67def makeMesh(nodes, num_routers, num_rows): 68 # 69 # There must be an evenly divisible number of cntrls to routers 70 # Also, obviously the number or rows must be <= the number of routers 71 # 72 cntrls_per_router, remainder = divmod(len(nodes), num_routers) |
73 assert(num_rows <= num_routers) 74 num_columns = int(num_routers / num_rows) 75 assert(num_columns * num_rows == num_routers) 76 77 # |
78 # Add all but the remainder nodes to the list of nodes to be uniformly 79 # distributed across the network. 80 # 81 network_nodes = [] 82 remainder_nodes = [] 83 for node_index in xrange(len(nodes)): 84 if node_index < (len(nodes) - remainder): 85 network_nodes.append(nodes[node_index]) 86 else: 87 remainder_nodes.append(nodes[node_index]) 88 89 # |
90 # Connect each node to the appropriate router 91 # 92 ext_links = [] |
93 for (i, n) in enumerate(network_nodes): |
94 cntrl_level, router_id = divmod(i, num_routers) 95 assert(cntrl_level < cntrls_per_router) 96 ext_links.append(ExtLink(ext_node=n, int_node=router_id)) 97 98 # |
99 # Connect the remainding nodes to router 0. These should only be DMA nodes. 100 # 101 for (i, node) in enumerate(remainder_nodes): 102 assert(node.type == 'DMA_Controller') 103 assert(i < remainder) 104 ext_links.append(ExtLink(ext_node=node, int_node=0)) 105 106 # |
107 # Create the mesh links. First row (east-west) links then column 108 # (north-south) links 109 # 110 int_links = [] 111 for row in xrange(num_rows): 112 for col in xrange(num_columns): 113 if (col + 1 < num_columns): 114 east_id = col + (row * num_columns) --- 30 unchanged lines hidden --- |