forked from cores/a2i
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.6 KiB
Tcl
73 lines
2.6 KiB
Tcl
3 years ago
|
# ip creator
|
||
|
|
||
|
set project a2x_reset ;# also top
|
||
|
set keep 0 ;# keep project
|
||
|
set xdc "" ;# set to xdc file if exists
|
||
|
set synth_check 1
|
||
|
|
||
|
proc create_ip {project {keep_project 0} {synth_check 1} {xdc ""}} {
|
||
|
|
||
|
set vhdl_dir [file normalize ./vhdl]
|
||
|
set output_dir .
|
||
|
set project_dir ./prj
|
||
|
|
||
|
create_project -force $project $output_dir/$project_dir -part xcvu3p-ffvc1517-2-e
|
||
|
|
||
|
add_files -norecurse $vhdl_dir/work
|
||
|
add_files -norecurse $vhdl_dir/ibm
|
||
|
add_files -norecurse $vhdl_dir/support
|
||
|
add_files -norecurse $vhdl_dir/tri
|
||
|
add_files -norecurse $vhdl_dir/clib
|
||
|
|
||
|
set_property library work [get_files $vhdl_dir/work/*]
|
||
|
set_property library ibm [get_files $vhdl_dir/ibm/*]
|
||
|
set_property library support [get_files $vhdl_dir/support/*]
|
||
|
set_property library tri [get_files $vhdl_dir/tri/*]
|
||
|
set_property library clib [get_files $vhdl_dir/clib/*]
|
||
|
|
||
|
update_compile_order -fileset sources_1
|
||
|
|
||
|
set_property top $project [current_fileset]
|
||
|
set_property target_language VHDL [current_project]
|
||
|
set_property default_lib work [current_project]
|
||
|
set_property top $project [get_filesets sim_1]
|
||
|
set_property -name {xsim.compile.xvhdl.nosort} -value {false} -objects [get_filesets sim_1]
|
||
|
set_property -name {xsim.compile.xvlog.nosort} -value {false} -objects [get_filesets sim_1]
|
||
|
set_property simulator_language VHDL [current_project]
|
||
|
|
||
|
if {$xdc != ""} {
|
||
|
set xdc_dir [file normalize ./xdc]
|
||
|
read_xdc $xdc_dir/$xdc
|
||
|
}
|
||
|
|
||
|
update_compile_order -fileset sources_1
|
||
|
|
||
|
if {$synth_check} {
|
||
|
synth_design -rtl -name elab_for_sanity_check
|
||
|
}
|
||
|
|
||
|
ipx::package_project -root_dir $output_dir/$project -vendor user.org -library user -taxonomy /UserIP -import_files -set_current false
|
||
|
ipx::unload_core $output_dir/$project/component.xml
|
||
|
ipx::edit_ip_in_project -upgrade true -name a2x_edit_project -directory $output_dir/$project $output_dir/$project/component.xml
|
||
|
update_compile_order -fileset sources_1
|
||
|
set_property core_revision 2 [ipx::current_core]
|
||
|
ipx::update_source_project_archive -component [ipx::current_core]
|
||
|
ipx::create_xgui_files [ipx::current_core]
|
||
|
ipx::update_checksums [ipx::current_core]
|
||
|
ipx::save_core [ipx::current_core]
|
||
|
ipx::move_temp_component_back -component [ipx::current_core]
|
||
|
|
||
|
if {$keep_project} {
|
||
|
close_project
|
||
|
puts "Project built; project dir saved: [file normalize $output_dir/$project_dir]"
|
||
|
} else {
|
||
|
close_project -delete
|
||
|
exec rm -rf $output_dir/$project_dir
|
||
|
puts "Project built; only IP files kept."
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
create_ip $project $keep $synth_check $xdc
|
||
|
|