在某些情况下,可能由于工具限制而导致发生映射器错误。在此类情况下,向工具提供指南可能很有用。
- 使用命令行开关关闭自动 AI 引擎编译器布局规划。
-–Xmapper=disableFloorplanning
- 在 graph 中使用边界框约束或者在约束文件中使用
areaGroup
约束来创建您自己的布局规划。如果设计中有多个非连续 graph,那么这尤其有效。其中每个分离的 graph 都能约束到阵列中的特定区域。此技巧最大程度减少了不同 graph 缓冲器之间的干扰,故而不仅有助于设计收敛,也有助于改善性能。下图显示了使用 16 天线发射链的设计示例。蓝色高亮内核属于天线 4。图 1. 天线 4 中的内核
用于达成此结果的约束文件语法如下所示。
{ "GlobalConstraints": { "areaGroup": { "name": "ant4_cores", "nodeGroup": ["tx_chain4.*"], "tileGroup": ["(16,0):(19,3)"] } } }
用于达成此结果的边界框语法如下所示。
location<graph>(tx_chain4) = bounding_box(16,0,19,3);
- 按需添加并置约束或绝对位置约束。如果此项指南无法完成设计收敛,您可尝试添加并置约束或绝对位置约束。您可在预计将映射到同一个拼块的内核与缓冲器或系统存储器之间添加并置约束,如以下示例所示。
绝对位置约束也可以添加到某些关键内核或缓冲器中,以充当锚点并指引映射器完成其它组件的布局,如以下示例所示。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