|
48 | 48 | #include "vib_inf.h"
|
49 | 49 |
|
50 | 50 | #include "scatter_gather_types.h"
|
| 51 | +#include "interposer_types.h" |
51 | 52 |
|
52 | 53 | //Forward declarations
|
53 | 54 | struct t_clock_network;
|
@@ -249,117 +250,6 @@ typedef enum e_power_estimation_method_ t_power_estimation_method;
|
249 | 250 | /*************************************************************************************************/
|
250 | 251 | /* FPGA grid layout data types */
|
251 | 252 | /*************************************************************************************************/
|
252 |
| -/* Grid location specification |
253 |
| - * Each member is a formula evaluated in terms of 'W' (device width), |
254 |
| - * and 'H' (device height). Formulas can be evaluated using parse_formula() |
255 |
| - * from expr_eval.h. |
256 |
| - */ |
257 |
| -struct t_grid_loc_spec { |
258 |
| - std::string start_expr; //Starting position (inclusive) |
259 |
| - std::string end_expr; //Ending position (inclusive) |
260 |
| - |
261 |
| - std::string repeat_expr; //Distance between repeated |
262 |
| - // region instances |
263 |
| - |
264 |
| - std::string incr_expr; //Distance between block instantiations |
265 |
| - // with the region |
266 |
| -}; |
267 |
| - |
268 |
| -/* Definition of how to place physical logic block in the grid. |
269 |
| - * This defines a region of the grid to be set to a specific type |
270 |
| - * (provided its priority is high enough to override other blocks). |
271 |
| - * |
272 |
| - * The diagram below illustrates the layout specification. |
273 |
| - * |
274 |
| - * +----+ +----+ +----+ |
275 |
| - * | | | | | | |
276 |
| - * | | | | ... | | |
277 |
| - * | | | | | | |
278 |
| - * +----+ +----+ +----+ |
279 |
| - * |
280 |
| - * . . . |
281 |
| - * . . . |
282 |
| - * . . . |
283 |
| - * |
284 |
| - * +----+ +----+ +----+ |
285 |
| - * | | | | | | |
286 |
| - * | | | | ... | | |
287 |
| - * | | | | | | |
288 |
| - * +----+ +----+ +----+ |
289 |
| - * ^ |
290 |
| - * | |
291 |
| - * repeaty | |
292 |
| - * | |
293 |
| - * v (endx,endy) |
294 |
| - * +----+ +----+ +----+ |
295 |
| - * | | | | | | |
296 |
| - * | | | | ... | | |
297 |
| - * | | | | | | |
298 |
| - * +----+ +----+ +----+ |
299 |
| - * (startx,starty) |
300 |
| - * <--------------> |
301 |
| - * repeatx |
302 |
| - * |
303 |
| - * startx/endx and endx/endy define a rectangular region instances dimensions. |
304 |
| - * The region instance is then repeated every repeatx/repeaty (if specified). |
305 |
| - * |
306 |
| - * Within a particular region instance a block of block_type is laid down every |
307 |
| - * incrx/incry units (if not specified defaults to block width/height): |
308 |
| - * |
309 |
| - * |
310 |
| - * * = an instance of block_type within the region |
311 |
| - * |
312 |
| - * +------------------------------+ |
313 |
| - * |* * * *| |
314 |
| - * | | |
315 |
| - * | | |
316 |
| - * | | |
317 |
| - * | | |
318 |
| - * | | |
319 |
| - * |* * * *| |
320 |
| - * ^ | | |
321 |
| - * | | | |
322 |
| - * incry | | | |
323 |
| - * | | | |
324 |
| - * v | | |
325 |
| - * |* * * *| |
326 |
| - * +------------------------------+ |
327 |
| - * |
328 |
| - * <-------> |
329 |
| - * incrx |
330 |
| - * |
331 |
| - * In the above diagram incrx = 10, and incry = 6 |
332 |
| - */ |
333 |
| -struct t_grid_loc_def { |
334 |
| - t_grid_loc_def(std::string block_type_val, int priority_val) |
335 |
| - : block_type(std::move(block_type_val)) |
336 |
| - , priority(priority_val) |
337 |
| - , x("0", "W-1", "max(w+1,W)", "w") //Fill in x direction, no repeat, incr by block width |
338 |
| - , y("0", "H-1", "max(h+1,H)", "h") //Fill in y direction, no repeat, incr by block height |
339 |
| - {} |
340 |
| - |
341 |
| - std::string block_type; //The block type name |
342 |
| - |
343 |
| - int priority = 0; //Priority of the specification. |
344 |
| - // In case of conflicting specifications |
345 |
| - // the largest priority wins. |
346 |
| - |
347 |
| - t_grid_loc_spec x; //Horizontal location specification |
348 |
| - t_grid_loc_spec y; //Vertical location specification |
349 |
| - |
350 |
| - // When 1 metadata tag is split among multiple t_grid_loc_def, one |
351 |
| - // t_grid_loc_def is arbitrarily chosen to own the metadata, and the other |
352 |
| - // t_grid_loc_def point to the owned version. |
353 |
| - std::unique_ptr<t_metadata_dict> owned_meta; |
354 |
| - t_metadata_dict* meta = nullptr; // Metadata for this location definition. This |
355 |
| - // metadata may be shared with multiple grid_locs |
356 |
| - // that come from a common definition. |
357 |
| -}; |
358 |
| - |
359 |
| -enum class GridDefType { |
360 |
| - AUTO, |
361 |
| - FIXED |
362 |
| -}; |
363 | 253 |
|
364 | 254 | struct t_layer_def {
|
365 | 255 | std::vector<t_grid_loc_def> loc_defs; ///< List of block location definitions for this layer specification
|
|
0 commit comments