In some cases, the mapper error can be due to tool limitations. In such cases, it can be
useful to provide guidance to the tool.
- Turn off automatic AI Engine
compiler floorplanning using the command line
switch.
-–Xmapper=disableFloorplanning - Create your own floorplanning by using either bounding box
constraints in the graph or
areaGroupconstraints in the constraints file. This is particularly useful if there are multiple disjoint graphs in the design.You can constrain each of these separate graphs to a particular region of the array. This technique not only helps design convergence but can also help improve performance by minimizing interference between different graph buffers. The following diagram shows an example using a 16 antenna transmit chain design. The highlighted kernels in blue belong to antenna 4.
Figure 1. Kernels in Antenna 4
The constraints file syntax to achieve this is as follows.
{ "GlobalConstraints": { "areaGroup": { "name": "ant4_cores", "nodeGroup": ["tx_chain4.*"], "tileGroup": ["(16,0):(19,3)"] } } }The bounding box syntax to achieve this is as follows.
location<graph>(tx_chain4) = bounding_box(16,0,19,3); - Add co-location or absolute location constraints if necessary.
If this guidance does not get the design to converge, you can try adding
co-location or absolute location constraints. You can add co-location
constraints between kernels and buffers or system memory that you expect to be
mapped to the same tile. The following example shows
this.
You can also add absolute location constraints to certain key kernels or buffers. These act as anchors and guide the mapper's placement of other components. The following example shows this.location<buffer>(kernel_1.out[0]) = location<kernel>(kernel_1); location<stack>(kernel_1) = location<kernel>(kernel_1);location<kernel>(kernel_1) = tile(20, 0); location<buffer>(kernel_1.in[0]) = { address(19, 0, 0x0), address(19, 0, 0x2000) }; // double buffer needs two locations