'Adding Library to VHDL Project

I am trying to use fixed point numbers in my VHDL project, but I keep having trouble implementing the library (found here http://www.eda-stds.org/fphdl/fixed_pkg_c.vhdl). The error I receive when trying to simulate is this

<ufixed> is not declared

My question is how exactly should a library be implemented so it can be used? As of now I have added it to the project in the IEEE_PROPOSED library, but it is not working. All source code can be found here https://github.com/srohrer32/beamformer/tree/fixed_num, under the hdl folder and libraries folder.



Solution 1:[1]

Are you using modelsim? Are you using a project? If not... I find the best way is to first compile the library on its own. Open your modelsim.ini file and make a path to the library. Like this:

lib_test = c:/test/source/lib_test

Finally, compile your own code and make sure you use the -modelsimini switch on vcom modelsim command.

If you are using a project (which I don't like, they are not as flexible) then you can point the project to the library.

More help about modelsim compiling with commands: http://www.tkt.cs.tut.fi/tools/public/tutorials/mentor/modelsim/getting_started/gsms.html#compiling

Solution 2:[2]

Not being an isim user myself, a search through the ISim User Guide implies you need to create a separate project to compile into a library, contrasting with how easy it is to target a library from the command line.

Presumably you'd also need to add the library as a resource in your project. Funny there are no complaints about that yet you have:

library ieee_proposed;

in delay_calculation.vhd, noting that a library declaration simply makes the name available. Somewhere the implementation dependent mapping for the library name to library needs to be made. This by default is in xilinxisim.ini, but I imagine your project management interface allows you to map the library into your project, and isim should know where to look for the library.

Nosing around the user guide may be worthwhile.

In Simulation Steps Overview

User Libraries

Depending upon how you launch ISim, there are different methods available to add user libraries:

  • When launching Project Navigator, define the user libraries in the ISE tool. See “Working with VHDL Libraries” in ISE Help for details.
  • When using ISim standalone, interactive command mode, or non-interactive mode, set the library mapping file (see Appendix A, Library Mapping File (xilinxisim.ini) to point to your logical or physical libraries.
  • When launching ISim from the PlanAhead tool, define the user libraries in that tool. See the PlanAhead User Guide (UG632) for more information. Appendix D, Additional Resources, contains a link to the document.

See Working with VHDL Libraries, see To Create a VHDL Library and To Add Files to a VHDL Library.

(The top level link to ISE Help).

You'd think there'd be a FAQ for those of us apostate - speed reading 'religious' tomes sucks even using Google to find them. Notice the explanations are in terms of menu pull down actions, analogous to command line entry. We're being bitten by what's available on the top menu bar. And when you do manage to add and use a library successfully you'll remember how until someone changes the menus around, and you could of course wonder about documentation lagging.

Solution 3:[3]

Presumably what you've tried to do is set up the library mapping for synthesis mode in the ISE GUI, which is straightforward but completely ignored by iSim since it has its own system for managing library mappings. I'm not an iSim user but after looking at the documentation and a little testing it looks like the easiest way to set up a library is from the command line:

# This creates an ieee_proposed directory with a partially compiled object.
vhpcomp --work ieee_proposed=ieee_proposed fixed_pkg_c.vhdl

# Add a mapping from the logical library to the physical path.
# *nix shown. Windows would be similar or just use a text editor.
#   <logical name>=<physical path>
echo ieee_proposed=`pwd`/ieee_proposed >> path/to/your/xilinxisim.ini

Make sure the xilinxisim.ini file is visible to iSim and it should pick up the mapping to your compiled library. You should be able to keep running vhpcomp from the parent of ieee_proposed to add more files to the library. You may have to manually copy the system default version to maintain the standard library mappings.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Russell
Solution 2
Solution 3 Kevin Thibedeau