create_project - 2023.1 English

Vivado Design Suite Tcl Command Reference Guide (UG835)

Document ID
UG835
Release Date
2023-05-16
Version
2023.1 English

Create a new project

Syntax

create_project [‑part <arg>] [‑force] [‑in_memory] [‑ip] [‑rtl_kernel]
    [‑quiet] [‑verbose] [<name>] [<dir>]

Returns

New project object.

Usage

Name Description
[-part] Target part
[-force] Overwrite existing project directory
[-in_memory] Create an in-memory project
[-ip] Default GUI behavior is for a managed IP project
[-rtl_kernel] Default GUI behavior is for a RTL Kernel project
[-quiet] Ignore command errors
[-verbose] Suspend message limits during command execution
[<name>] Project name
[<dir>] Directory where the project file is saved Default: .

Categories

Project

Description

Creates a Vivado® Design Suite project file (.xpr), or a project file for the Vivado Lab Edition (.lpr), in the specified directory.

For the Vivado Lab Edition: The create_project command has a different command syntax, with fewer options, in the Vivado Lab Edition. The options that are not supported in Vivado Lab Edition are:

  • -part - The Vivado Lab Edition project (.lpr) does not specify a target part because the current_hw_target and current_hw_device determine the target part.
  • -ip - The Vivado Lab Edition does not define projects for the Managed IP flow.

For the Vivado Design Suite: The default project created for the Vivado Design Suite is an RTL project, which defines the project as holding and manage RTL source files in the source fileset. The type of project is determined by the DESIGN_MODE Property on the source fileset when the project is created. To change the project type, use the set_property command to set the DESIGN_MODE property on the current_fileset as follows:

  • RTL Project - set_property DESIGN_MODE RTL [current_fileset]
  • Netlist Project - set_property DESIGN_MODE GateLvl [current_fileset]
  • I/O Planning Project - set_property DESIGN_MODE PinPlanning [current_fileset]

Refer to the Vivado Design Suite User Guide: System-Level Design Entry (UG895) for more information on the different types of projects.

This command returns a transcript of its process and the name of the created project, or returns an error if it fails.

Arguments

-part <arg> - (Optional) Specifies the Xilinx® part to be used for the project. This can be changed after the project is created. If the -part option is not specified, the default part will be used. This option is not supported in Vivado Lab Edition.

-force - (Optional) This option is required to overwrite an existing project. If the project name is already define in the specified <dir> then you must also specify the -force option for the tool to overwrite the existing project.

Note: If the existing project is currently open in the tool, the new project will overwrite the existing project on the disk, but both projects will be opened in the tool. In this case you should probably run the close_project command prior to running create_project.

-in_memory - (Optional) Specifies that the project should be created in the in-memory database of the Vivado Design Suite to support the Non-Project design flow. This project will not result in a project file or directory structure being written to disk. The purpose of the in-memory project is to allow properties usually associated with a project-based design to be associated with the in-memory design of the non-project design flow.

Tip: The use of -in_memory is not part of the standard non-project design flow, and may cause unexpected behaviors in the Vivado tools. For more information on Non-Project Mode refer to the Vivado Design Suite User Guide: Design Flows Overview (UG892).

-ip - (Optional) Create a project for the Managed IP flow for exploring IP in the IP catalog, customizing IP, and managing a repository of configured IP. Refer to the Vivado Design Suite User Guide: Designing with IP (UG896) for more information on the Managed IP flow. This option is not supported in Vivado Lab Edition.

-rtl_kernel - (Optional) Specifies the creation of the project is for use in defining an RTL kernel for the Vitis core development kit.

-quiet - (Optional) Execute the command quietly, returning no messages from the command. The command also returns TCL_OK regardless of any errors encountered during execution.
Note: Any errors encountered on the command-line, while launching the command, will be returned. Only errors occurring inside the command will be trapped.
-verbose - (Optional) Temporarily override any message limits and return all messages from this command.
Note: Message limits can be defined with the set_msg_config command.

<name> - (Required) This argument does not require a parameter name, however, it must appear before the specified <dir>. Since these commands do not have parameters, the tool interprets the first argument as <name> and uses the second argument as <dir>. A project file is created <name>.xpr, (or <name>.lpr) and a project data folder is also created <name>.data and both are written into the specified directory <dir>.

Note: The project file created by the tool is an RTL source file by default. You must use the set_property command to set the DESIGN_MODE property to change the project from an RTL source project to a Netlist or an I/O Pin Planning project.

<dir> - (Optional) This argument specifies the directory name to write the new project file into. If the specified directory does not exist a new directory will be created. If the directory is specified with the complete path, the tool uses the specified path name. However, if <dir> is specified without a path, the tool looks for or creates the directory in the current working directory, or the directory from which the tool was launched.

Note: When creating a project in GUI-mode, the tool appends the <name> to the <dir> and creates a project directory <dir>/<name> and places the new project file and project data folder into that project directory.

Examples

When run from the Vivado Design Suite, the following example creates a project called project1.xpr in a directory called myDesigns:

create_project project1 myDesigns
Note: Because the <dir> is specified as the folder name only, the tool will create the project in the current working directory, or the directory from which the tool was launched.

When run from the Vivado Lab Edition, this example creates a project called project1.lpr in a directory called myDesigns:

create_project project1 myDesigns

The following example creates a project called Proj1 in a directory called FPGA in C:/Designs. In addition, the tool will overwrite an existing project if one is found to exist in the specified location. In the second and third lines, the location of -force is changed to show the flexibility of argument placement.

create_project Proj1 C:/Designs/FPGA -force
-or-
create_project Proj1 -force C:/Designs/FPGA
-or-
create_project -force Proj1 C:/Designs/FPGA
Note: In all cases the first argument without a preceding keyword is interpreted as the <name> variable, and the second argument without a preceding keyword is the <dir> variable.

The following example creates a project for the Manage IP flow in the specified directory:

create_project -ip manageIP C:/Data

The following example creates a new project called pin_project, and then sets the DESIGN_MODE property as required for an I/O Pin Planning project, and finally opens an IO design:

create_project pin_project C:/Designs/PinPlanning
set_property design_mode PinPlanning [current_fileset]
open_io_design -name io_1