MCPcopy Create free account
hub / github.com/NVlabs/AutoDMP / PlaceDataCollection

Class PlaceDataCollection

dreamplace/BasicPlace.py:80–322  ·  view source on GitHub ↗

@brief A wraper for all data tensors on device for building ops

Source from the content-addressed store, hash-verified

78
79
80class PlaceDataCollection(object):
81 """
82 @brief A wraper for all data tensors on device for building ops
83 """
84
85 def __init__(self, pos, params, placedb, device):
86 """
87 @brief initialization
88 @param pos locations of cells
89 @param params parameters
90 @param placedb placement database
91 @param device cpu or cuda
92 """
93 self.device = device
94 # position should be parameter
95 self.pos = pos
96
97 with torch.no_grad():
98 # other tensors required to build ops
99
100 self.node_size_x = torch.from_numpy(placedb.node_size_x).to(device)
101 self.node_size_y = torch.from_numpy(placedb.node_size_y).to(device)
102 # original node size for legalization, since they will be adjusted in global placement
103 if params.routability_opt_flag:
104 self.original_node_size_x = self.node_size_x.clone()
105 self.original_node_size_y = self.node_size_y.clone()
106
107 self.pin_offset_x = torch.tensor(
108 placedb.pin_offset_x, dtype=self.pos[0].dtype, device=device
109 )
110 self.pin_offset_y = torch.tensor(
111 placedb.pin_offset_y, dtype=self.pos[0].dtype, device=device
112 )
113 # original pin offset for legalization, since they will be adjusted in global placement
114 if params.routability_opt_flag:
115 self.original_pin_offset_x = self.pin_offset_x.clone()
116 self.original_pin_offset_y = self.pin_offset_y.clone()
117
118 self.target_density = torch.empty(1, dtype=self.pos[0].dtype, device=device)
119 self.target_density.data.fill_(params.target_density)
120
121 self.node_areas = self.node_size_x * self.node_size_y
122 self.movable_macro_mask = torch.from_numpy(placedb.movable_macro_mask).to(
123 device
124 )
125 self.fixed_macro_mask = torch.from_numpy(placedb.fixed_macro_mask).to(
126 device
127 )
128
129 self.pin2node_map = torch.from_numpy(placedb.pin2node_map).to(device)
130 self.flat_node2pin_map = torch.from_numpy(placedb.flat_node2pin_map).to(
131 device
132 )
133 self.flat_node2pin_start_map = torch.from_numpy(
134 placedb.flat_node2pin_start_map
135 ).to(device)
136 # number of pins for each cell
137 self.pin_weights = (

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected