When an ISE Multiplier IP NGC file is added to a design, I see an encrypted EDIF in the extracted design checkpoint (.dcp).
This is not the case for all ISE IP NGC files.
For example, if a Block Memory Generator IP NGC is involved, the EDIF file in the extracted DCP is plain text.
However, if I either do "ngc2edif" for the multiplier NGC or open its Vivado design checkpoint and do "write_edif", the output EDIF is un-encrypted.
What is the reason for this difference?
The ISE Multiplier IP core is protected by Xilinx security attributes.
If you open the NGC file in ISE, you will see a block inside the IP hierarchy which is secured, as shown in the following figure.
When the ISE IP cores are encoded with security attributes, the "ngc2edif" command will strip out all INIT strings (and the attributes) and just produce a structural EDIF.
As a result, only the structure is output, but not the LUT contents (logic).
Vivado's "write_edif" command actually produces multiple files.
One is a plain text wrapper file, the other will contain encrypted EDIF for areas protected by security attributes.
Vivado's checkpoint EDIF behaves differently than either ngc2edif or "write_edif".
For checkpoint EDIF, we have to pass the logic.
So, when we encounter security attributes, we encrypt the output and include INITs in the encrypted area.