Answers Database
EDIF2XNF: LOC or other I/O properties lost (ENWrite net bundles)
Record #692
Product Family: Software
Product Line: Mentor
Problem Title:
EDIF2XNF: LOC or other I/O properties lost (ENWrite net bundles)
Problem Description:
Keywords: enwrite, edif2xnf, loc, property
Urgency: Standard
General Description:
ENWrite in some instances (generally with bussed I/O) implements a group of
inputs or outputs within a single net bundle. Although all the data for
the LOC properties is in the net bundle, EDIF2XNF expects a seperate cell
for each input and output instance. Therefore, when EDIF2XNF translates
the net bundles from the EDIF file, it leaves off the pin-location
constraints that were placed on the input and output pads. Typically, this
problem occurs when separate input signals are merged into a single bus
BEFORE they pass through an IBUFx, or when an output bus is bus-ripped into
separate signals AFTER it passes through an OBUFx.
Here is a portion of an example EDIF file which shows the LOC property and
input ports described within a net bundle:
(netBundle (rename XIRQ_40_23_58_0_41_ "XIRQ(23:0)")
(listOfNets
(net (rename XIRQ_40_23_41_ "XIRQ(23)")
(joined
(portRef I (instanceRef I_36_41))
(portRef (member XIRQ_40_23_58_0_41_ 0))
)
(property netflag (string "TS3"))
(property loc (string "P73"))
)
(net (rename XIRQ_40_22_41_ "XIRQ(22)")
(joined
(portRef I (instanceRef I_36_40))
(portRef (member XIRQ_40_23_58_0_41_ 1))
)
(property netflag (string "TS3"))
(property loc (string "P74"))
)
Solution 1:
Men2XNF8 creates an enwrite.cfg file in your project directory to influence
how ENWrite generates its EDIF netlist. (Please see the note below if you
run ENWrite and EDIF2XNF separately, outside of Men2XNF8.) The following
portion of code from Men2XNF8 5.2 shows what information is written into
this file:
###################################################################
create_config_file_5200() {
cat > enwrite.cfg <<!
SET PR M -E
SET SCOPE "$LCA/$tech" "osc5"
IGN PROP "DIVIDE1_BY"
IGN PROP "DIVIDE2_BY"
SET SCOPE "$LCA/$tech" "ck_div"
IGN PROP "DIVIDE1_BY"
IGN PROP "DIVIDE2_BY"
!
}
###################################################################
create_config_file() {
rm_run enwrite.cfg
if [ $tech = "xc5200" ]; then
create_config_file_5200
else
echo "SET PR M -E" > enwrite.cfg
fi
}
###################################################################
ENWrite can be forced to write out port cells independently rather than grouping
them into net bundles, so EDIF2XNF can interpret them properly. To disable net
bundles, this should be added to the enwrite.cfg file:
SETup NETBUNDLES -none
So, to affect the proper change to the design flow:
###################################################################
create_config_file_5200() {
cat > enwrite.cfg <<!
SET PR M -E
SET NETBUNDLES -none
SET SCOPE "$LCA/$tech" "osc5"
IGN PROP "DIVIDE1_BY"
IGN PROP "DIVIDE2_BY"
SET SCOPE "$LCA/$tech" "ck_div"
IGN PROP "DIVIDE1_BY"
IGN PROP "DIVIDE2_BY"
!
}
###################################################################
create_config_file() {
rm_run enwrite.cfg
if [ $tech = "xc5200" ]; then
create_config_file_5200
else
echo "SET PR M -E" > enwrite.cfg
echo "SET NETBUNDLES -none" >> enwrite.cfg
fi
}
###################################################################
NOTE: If you run ENWrite and EDIF2XNF separately (i.e., you do not run
Men2XNF8), you must create or modify the enwrite.cfg file in your project
directory to contain the above SETup NETBUNDLES line. Be certain to run
ENWrite with the -rcf (read command file) option:
enwrite design/xnf -wef design.edif -rcf enwrite.cfg
End of Record #692
For the latest news, design tips, and patch information on the Xilinx design environment, check out the Xilinx Expert Journals! |