AR# 3036: M1.3 Map - Map will not push buffer (or logic optimized to buffer) forward into closed FMAP (MAP=PUC or PLC)
AR# 3036
|
M1.3 Map - Map will not push buffer (or logic optimized to buffer) forward into closed FMAP (MAP=PUC or PLC)
説明
Map will not push buffer (or logic optimized to buffer) forward into closed FMAP (MAP=PUC).The result is an extra level of logic as a LUT is used to implement the buffer. In additionto the extra level of logic, sub-optimal placement and routing has been reported related to this issue.
Reference # 101674
ソリューション
Change request 101674 has been logged to request buffer pushing into closed FMAPs for future releases. Meanwhile, this problem can be worked around by globally opening all FMAPs in the design using the following constraint in the .ncf file:
inst "$*" MAP=PUO;
This constraint will not work in the .ucf file because a "CLOSED" flag is already set for the FMAP by the time the MAP attribute is overridden by the .ucf file.
The .ncf file is processed during netlist translation (edif2ngd, xnf2ngd, etc), so this process needs to be re-run to implement the change. To do this, create a .ncf file with the same name as the netlist, remove the .ngo file with the same name, thenre-run the mapping process.
NOTE: When doing wild card matching of instances in .ncf/.ucf files, it is important to note that "*" will not match strings beginning with "$" or cross "/" hierarchy dividers. For example, to match the strings $1I0/xyz and $1I0/$1I1 requires two matching strings in the .ncf file:
inst "$*/*" MAP=PUO; inst "$*/$*" MAP=PUO;
To match all possible cases, the following strings are needed:
This gets more complicated as the number of hierarchy levels increases. It may be easier to do a string substitution in the input netlist, replacing "MAP=PUC" with "MAP=PUO".