Intel® High Level Synthesis Compiler Pro Edition: Reference Manual

ID 683349
Date 10/04/2021

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

11.4.2. Creating a Static-Object File from an RTL Module

Before an RTL module can be included in a library intended for use in an Intel® HLS Compiler design, create a platform-specific object (.o files on Linux, .obj files on Windows) from the RTL module. Use the fpga_crossgen command to create the object.

For instructions on creating an OpenCL* library object file from RTL, see " Packaging an RTL Component for an OpenCL Library " in the Intel® FPGA SDK for OpenCL™ Pro Edition Programming Guide.

Before you can create an HLS library object from an RTL module, ensure that the functions in your RTL module are functionally correct and that you have the following files ready:
  • RTL module source files

    These files are the Verilog (.v), System Verilog (.sv), or VHDL (.vhdl) files and the accompanying memory initialization files (.mif or .hex) that define the RTL modules.

  • RTL object manifest file

    This XML file describes the callable interfaces of your RTL modules. Review Object Manifest File Syntax for details about what to include in this XML file.

  • HLS emulation model file

    These C++ files (.cpp and .h) provide an emulation model for the RTL module that allows you to emulate your component when it includes an HLS library that contains this RTL module. Full hardware compilations use the RTL source files.

  • RTL module function signature file

    This C-style header file (.h) declares the signatures of the functions that are implemented by the RTL module and described in the object manifest file. Include this file in you HLS component code for the component to call the functions provided by the RTL modules packaged in the object.

After you have the files ready, create the HLS library object with the following command:
fpga_crossgen <object_manifest_file_name> --target hls --emulation_model <emulation_model_file_location> [-o <object_file_name>]

Where <object_manifest_file_name> is the full path of the RTL object manifest (.xml) file including the file name. This path can be a full or relative path.

If you do not specify an object file name with the -o option, the object file name defaults to be the same name as the object manifest file name. That is, an object manifest file named manifest.xml results in an object file named manifest.o (on Linux) or manifest.obj (on Windows).

The output of the command is a platform-specific object file ( (.o on Linux, .obj on Windows). The platform of the object file is determine by the platform where you run the fpga_crossgen command. When you run the command on Linux, you get a .o object file. When you run the command on Windows, you get a .obj object file.

Important: Each object created with the fpga_crossgen command is assigned a compiler version number. You can package only object with the same version number into a library, and a library can be used only with a target compiler (For example, i++) with the same version number.