4
\$\begingroup\$

This question is along the lines of What files/directories are needed to recreate a Xilinx PlanAhead project? but for an Actel/Microsemi FPGA design. I'm looking for a fairly standard design with Verilog and/or VHDL, project files, and a few cores. Their support said "You need .v/.vhd RTL file, .pdc files, and .sdc files." which doesn't even mention any needed for IP cores. These are cores that come with Libero software, but they are configured.

To limit the scope of the question, I'm not asking about simulation files since those may depend on tool used.

\$\endgroup\$
3
  • 1
    \$\begingroup\$ Do the IP cores come with the toolset, or are they purchased separately? \$\endgroup\$
    – Dave Tweed
    Feb 28 '14 at 17:47
  • 1
    \$\begingroup\$ They come with the toolset; they are auto-generated from some fairly small set of files but Actel/MicroSemi won't tell you which. It was a trial and error process to discover which : I'll check if I can make available any notes on the subject. \$\endgroup\$ Feb 28 '14 at 18:58
  • 1
    \$\begingroup\$ There are tools that monitor file access. I know they exist for Linux and I bet they exist for Windows. My Google search is as good as yours I'm afraid. wirespeed.xs4all.nl/mediawiki/index.php/Monitor_file_access \$\endgroup\$
    – jippie
    Mar 25 '14 at 18:11
2
+50
\$\begingroup\$

As there are no answers to your question yet, allow me to describe a hack that I would use myself. Hopefully it attracts attention to the question for other answers. I am a Linux user myself, but read on there are some Windows pointers once you read through the Linux part. Do browse through the Linux paragraph first though.

As a generic solution to this problem, here is how I would try to figure out what files are needed:

Linux

On Linux I'd run the program from command line as follows:

strace -fe trace=file programUnderTest > /tmp/logfile 2>&1

The strace program is tracing all system calls executed by programUnderTest. It filters for file events and the -f flag instructs to follow child processes too. The output is saved to /tmp/logfile

Very important, build the entire project while logging. Also after building the project save it under a unique file name; this will act as a marker in the logging, then quit the program. The contents of the logfile looks like this:

open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/dev/tty", O_RDWR|O_NONBLOCK)     = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open("/proc/meminfo", O_RDONLY|O_CLOEXEC) = 3
stat(".", {st_mode=S_IFDIR|0700, st_size=15104, ...}) = 0
open("/usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache", O_RDONLY) = 3
Process 3207 attached
[pid  3207] stat(".", {st_mode=S_IFDIR|0700, st_size=15104, ...}) = 0
[pid  3207] stat("/usr/lib/lightdm/lightdm/id", 0x7fff6fee1840) = -1 ENOENT (No such file or directory)
[pid  3207] stat("/usr/local/sbin/id", 0x7fff6fee1840) = -1 ENOENT (No such file or directory)
[pid  3207] stat("/usr/local/bin/id", 0x7fff6fee1840) = -1 ENOENT (No such file or directory)
[pid  3207] stat("/usr/sbin/id", 0x7fff6fee1840) = -1 ENOENT (No such file or directory)
...

I personally like to use vi if it is a one time job to search through the data.

Find the first occurrence of your project file and delete all lines before that.

/open(".*theProjectFile  # Find first occurrence of the project file being opened 
:1,. d                   # Delete all lines before that marker

Then find the first occurrence of the file you saved and remove all lines after that.

/\tmp\/bladibla          # Find first occurrence of the project file being saved
:.,$ d                   # Delete all lines after that marker

These are example commands to clean up the remaining data:

:1,$ ! grep '"'          # Filter lines that contain a string in quotes, a "filename"
:1,$ s/^[^"]*"//         # Remove leading characters for each line
:1,$ s/".*$//            # Remove trailing characters for each line
:1,$ ! sort -u           # Sort the file names, listing every occurrence once

Next is being amazed of which files are actually tested/accessed ...: device files, fonts, global system config files, ... and the actual files that you are interested are in between them ... libraries, source files, temporary files but also executables. If you are aware of a directory name where your files reside, you can search for that directory and filter on that.

Windows

When working on Windows, the concept would be the same, but the system will by default lack the tools that are pretty standard on Linux. I am not a Windows user myself so I haven't tested any of the tools below, but it looks like:

  • Moo0 FileMonitor seems to do the job you're looking for, but there are bound to be other options too if you search the Internet.
  • On a side note, cygwin can supply you with the powerful Linux commandline tools (sort, uniq, grep, vi, ...) like used above for filtering.

A sneaky hack would be to set up a Linux SAMBA server (Windows compatible file server) that hosts your project files and on which you trace SAMBA access. Then mount that share on the Windows box and off you go ...

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.