-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathqp_make_qip
executable file
·120 lines (105 loc) · 2.96 KB
/
qp_make_qip
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/usr/bin/env tclsh
# Make Quartus Prime QIP-file
# Time-stamp: <2023-09-27 15:05:09>
puts "+------------------------------------------------------------------------+"
puts "| Make Quartus Prime Qip-file |"
puts "+------------------------------------------------------------------------+"
proc usage {} {
set scriptname [file tail [info script]]
puts "Usage:"
puts " $scriptname \[qip-file-name\] \[path2dir\]"
puts ""
puts "ARGS:"
puts " <qip-file-name>"
puts " Output file name."
puts " <path2dir>"
puts " Path to search Quartus Prime files."
puts " You must specify from one to four paths."
}
if {[llength $argv]>0} {
set arg0 [lindex $argv 0]
if {[string compare $arg0 "-h"] == 0} {
usage
exit 0
} elseif {[string compare $arg0 "--help"] == 0} {
usage
exit 0
}
puts "Input parameters:"
set file_name [lindex $argv 0]
set path0 [lindex $argv 1]
set path1 [lindex $argv 2]
set path2 [lindex $argv 3]
set path3 [lindex $argv 4]
puts " qip-file: '$file_name'"
puts " path1 : '$path0'"
puts " path2 : '$path1'"
puts " path3 : '$path2'"
puts " path4 : '$path3'"
} else {
usage
exit 0
}
set p_file ""
if {[catch {set p_file [open $file_name w]} err_msg]} {
puts stderr "ERROR opening qip-file, $err_msg!\n"
usage
exit 1
}
set cnt 0
proc find {path pattern key_word} {
foreach i [glob -nocomplain $path/$pattern] {
global file_name
if {"./$file_name" ne $i} {
puts $::p_file "set_global_assignment -name $key_word \[file join \$::quartus(qip_path) \"$i\"\]"
puts "$i\t\t$key_word"
global cnt
incr cnt
}
}
}
proc find_in_path {path} {
find $path *.sv SYSTEMVERILOG_FILE
find $path *.svh SYSTEMVERILOG_FILE
find $path *.v VERILOG_FILE
find $path *.sdc SDC_FILE
find $path *.vhd VHDL_FILE
find $path *.vhdl VHDL_FILE
find $path *.tdf AHDL_FILE
find $path *.hex SOURCE_FILE
find $path *.ppf SOURCE_FILE
find $path *.c SOURCE_FILE
find $path *.h SOURCE_FILE
find $path *.tcl TCL_FILE
find $path *.iv MISC_FILE
find $path *.qip QIP_FILE
find $path *.qsys QSYS_FILE
# TODO: how usage *.ip files?
# find $path *.ip MISC_FILE
}
foreach p $path0 {
find_in_path $p
puts $::p_file ""
}
foreach p $path1 {
find_in_path $p
puts $::p_file ""
}
foreach p $path2 {
find_in_path $p
puts $::p_file ""
}
foreach p $path3 {
find_in_path $p
puts $::p_file ""
}
close $p_file
puts "----------------------------------"
puts " Find $cnt files"
puts " Write file '$file_name'"
# This is for the sake of Emacs.
# Local Variables:
# time-stamp-end: "$"
# time-stamp-format: "<%:y-%02m-%02d %02H:%02M:%02S>"
# time-stamp-start: "Time-stamp: "
# End: