Multisim PLD Design Fails to Compile When Exporting to a Xilinx Spartan™ FPGA

Updated Apr 6, 2023

Reported In

Hardware

  • Digilent CMOD S6 FGPA Module

Software

  • FPGA Xilinx Compilation Tools
  • Multisim Education

Operating System

  • Windows

Issue Details

I am working with NI Multisim on a Windows 10 machine and I am having issues when I try to export my PLD design to deploy it to a Digilent CMOD S6 Board (or any other board that uses Xilinx Spartan 6 chip).

I have tried to compile the same PLD design using the same NI Multisim and Xilinx Compilation Tools on a Windows 7 (or a Windows 10 machine with an OS build prior to 15063) and I successfully obtain the bitfile.

Solution

There is a manual modification that can be done to the Xilinx Compilation Tools dependencies files in order to make the tool work properly on Windows 10.
 
First, proceed to install LabVIEW 2014 FPGA Module Xilinx Tools 14.7 (download link attached below). Once the installation finishes reboot your computer and then follow the steps below: 
  1. Navigate to the following ISE install directory: <install_path>\Xilinx\14.7\ISE_DS\ISE\lib\nt64\ 
  2. Rename the file "libPortability.dll" to "libPortability.dll.orig".
  3. Copy the "libPortabilityNOSH.dll" file to the same folder, and rename it to "libPortability.dll".
  4. Repeat steps 1-3 in the following folder: <install_path>\Xilinx\14.7\ISE_DS\common\lib\nt64\. If "libPortabilityNOSH.dll" does not exist in this folder, you can use the same file renamed on step 3.
  5. Finally, reboot the computer and then export the PLD design following the corresponding procedure.

Additional Information

This is because the Xilinx tool Multisim uses to compile PLD designs for some FPGA chips is not officially and originally supported on Windows 10.
 
Code that will be targeted to Xilinx Spartan FPGAs needs to be compiled by Xilinx ISE Tools which are not supported on Windows 10.

The above steps were obtained from Xilinx's Support article "AR# 62380" attached below. The steps specifically are in the section of the article called "ISE 14.7 64-bit - Turning off SmartHeap".

These steps substitute the original "libPortability.dll" with a "libPortability.dll" file that has SmartHeap disabled, the NOSmartHeap (NOSH) version. It does not negatively impact the operation of the tools, and should successfully work around the ISE 14.7 crash.