forked from projf/projf-explore
-
Notifications
You must be signed in to change notification settings - Fork 0
/
create_project.tcl
92 lines (74 loc) · 2.71 KB
/
create_project.tcl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# Project F: Maths Demo - Create Vivado Project
# (C)2021 Will Green, open source hardware released under the MIT License
# Learn more at https://projectf.io
puts "INFO: Project F - Maths Demo Project Creation Script"
# If the FPGA board/part isn't set use Arty
if {! [info exists fpga_part]} {
set projf_fpga_part "xc7a35ticsg324-1L"
} else {
set projf_fpga_part ${fpga_part}
}
if {! [info exists board_name]} {
set projf_board_name "arty"
} else {
set projf_board_name ${board_name}
}
# Set the project name
set _xil_proj_name_ "maths-demo"
# Set the reference directories for source file relative paths
set lib_dir [file normalize "./../../../../lib"]
set origin_dir [file normalize "./../../"]
puts "INFO: Library directory: ${lib_dir}"
puts "INFO: Origin directory: ${origin_dir}"
# Set the directory path for the project
set orig_proj_dir "[file normalize "${origin_dir}/xc7/vivado"]"
# Create Vivado project
create_project ${_xil_proj_name_} ${orig_proj_dir} -part ${projf_fpga_part}
#
# Design sources
#
if {[string equal [get_filesets -quiet sources_1] ""]} {
create_fileset -srcset sources_1
}
set fs_design_obj [get_filesets sources_1]
# Top design sources (not used in simulation)
set top_sources [list \
[file normalize "${origin_dir}/xc7/top_graphing.sv"] \
]
add_files -norecurse -fileset $fs_design_obj $top_sources
set design_top_obj [get_files -of_objects [get_filesets sources_1]]
set_property -name "used_in_simulation" -value "0" -objects $design_top_obj
# Set top module for design sources
set_property -name "top" -value "top_graphing" -objects $fs_design_obj
set_property -name "top_auto_set" -value "0" -objects $fs_design_obj
# Design sources (used in simulation)
set design_sources [list \
[file normalize "${lib_dir}/clock/xc7/clock_gen_480p.sv"] \
[file normalize "${lib_dir}/display/display_480p.sv"] \
[file normalize "${origin_dir}/func_circle.sv"] \
[file normalize "${origin_dir}/func_cubed.sv"] \
[file normalize "${origin_dir}/func_polynomial.sv"] \
[file normalize "${origin_dir}/func_squared.sv"] \
]
add_files -norecurse -fileset $fs_design_obj $design_sources
#
# Constraints
#
# Create 'constrs_1' fileset (if not found)
if {[string equal [get_filesets -quiet constrs_1] ""]} {
create_fileset -constrset constrs_1
}
set fs_constr_obj [get_filesets constrs_1]
set constr_sources [list \
[file normalize "$origin_dir/xc7/${projf_board_name}.xdc"] \
]
add_files -norecurse -fileset $fs_constr_obj $constr_sources
set constr_file_obj [get_files -of_objects [get_filesets constrs_1]]
set_property -name "file_type" -value "XDC" -objects $constr_file_obj
# unset Project F variables
unset projf_board_name
unset projf_fpga_part
#
# Done
#
puts "INFO: Project created: ${_xil_proj_name_}"