1 |
2 |
dimamali |
#!/bin/sh
|
2 |
|
|
# the next line restarts using wish\
|
3 |
|
|
exec wish "$0" "$@"
|
4 |
|
|
|
5 |
|
|
if {![info exists vTcl(sourcing)]} {
|
6 |
|
|
|
7 |
|
|
package require Tk
|
8 |
|
|
switch $tcl_platform(platform) {
|
9 |
|
|
windows {
|
10 |
|
|
option add *Button.padY 0
|
11 |
|
|
}
|
12 |
|
|
default {
|
13 |
|
|
option add *Scrollbar.width 10
|
14 |
|
|
option add *Scrollbar.highlightThickness 0
|
15 |
|
|
option add *Scrollbar.elementBorderWidth 2
|
16 |
|
|
option add *Scrollbar.borderWidth 2
|
17 |
|
|
}
|
18 |
|
|
}
|
19 |
|
|
|
20 |
|
|
}
|
21 |
|
|
|
22 |
|
|
#############################################################################
|
23 |
|
|
# Visual Tcl v1.60 Project
|
24 |
|
|
#
|
25 |
|
|
|
26 |
|
|
|
27 |
|
|
#################################
|
28 |
|
|
# VTCL LIBRARY PROCEDURES
|
29 |
|
|
#
|
30 |
|
|
|
31 |
|
|
if {![info exists vTcl(sourcing)]} {
|
32 |
|
|
#############################################################################
|
33 |
|
|
## Library Procedure: Window
|
34 |
|
|
|
35 |
|
|
proc ::Window {args} {
|
36 |
|
|
## This procedure may be used free of restrictions.
|
37 |
|
|
## Exception added by Christian Gavin on 08/08/02.
|
38 |
|
|
## Other packages and widget toolkits have different licensing requirements.
|
39 |
|
|
## Please read their license agreements for details.
|
40 |
|
|
|
41 |
|
|
global vTcl
|
42 |
|
|
foreach {cmd name newname} [lrange $args 0 2] {}
|
43 |
|
|
set rest [lrange $args 3 end]
|
44 |
|
|
if {$name == "" || $cmd == ""} { return }
|
45 |
|
|
if {$newname == ""} { set newname $name }
|
46 |
|
|
if {$name == "."} { wm withdraw $name; return }
|
47 |
|
|
set exists [winfo exists $newname]
|
48 |
|
|
switch $cmd {
|
49 |
|
|
show {
|
50 |
|
|
if {$exists} {
|
51 |
|
|
wm deiconify $newname
|
52 |
|
|
} elseif {[info procs vTclWindow$name] != ""} {
|
53 |
|
|
eval "vTclWindow$name $newname $rest"
|
54 |
|
|
}
|
55 |
|
|
if {[winfo exists $newname] && [wm state $newname] == "normal"} {
|
56 |
|
|
vTcl:FireEvent $newname <<Show>>
|
57 |
|
|
}
|
58 |
|
|
}
|
59 |
|
|
hide {
|
60 |
|
|
if {$exists} {
|
61 |
|
|
wm withdraw $newname
|
62 |
|
|
vTcl:FireEvent $newname <<Hide>>
|
63 |
|
|
return}
|
64 |
|
|
}
|
65 |
|
|
iconify { if $exists {wm iconify $newname; return} }
|
66 |
|
|
destroy { if $exists {destroy $newname; return} }
|
67 |
|
|
}
|
68 |
|
|
}
|
69 |
|
|
#############################################################################
|
70 |
|
|
## Library Procedure: vTcl:DefineAlias
|
71 |
|
|
|
72 |
|
|
proc ::vTcl:DefineAlias {target alias widgetProc top_or_alias cmdalias} {
|
73 |
|
|
## This procedure may be used free of restrictions.
|
74 |
|
|
## Exception added by Christian Gavin on 08/08/02.
|
75 |
|
|
## Other packages and widget toolkits have different licensing requirements.
|
76 |
|
|
## Please read their license agreements for details.
|
77 |
|
|
|
78 |
|
|
global widget
|
79 |
|
|
set widget($alias) $target
|
80 |
|
|
set widget(rev,$target) $alias
|
81 |
|
|
if {$cmdalias} {
|
82 |
|
|
interp alias {} $alias {} $widgetProc $target
|
83 |
|
|
}
|
84 |
|
|
if {$top_or_alias != ""} {
|
85 |
|
|
set widget($top_or_alias,$alias) $target
|
86 |
|
|
if {$cmdalias} {
|
87 |
|
|
interp alias {} $top_or_alias.$alias {} $widgetProc $target
|
88 |
|
|
}
|
89 |
|
|
}
|
90 |
|
|
}
|
91 |
|
|
#############################################################################
|
92 |
|
|
## Library Procedure: vTcl:DoCmdOption
|
93 |
|
|
|
94 |
|
|
proc ::vTcl:DoCmdOption {target cmd} {
|
95 |
|
|
## This procedure may be used free of restrictions.
|
96 |
|
|
## Exception added by Christian Gavin on 08/08/02.
|
97 |
|
|
## Other packages and widget toolkits have different licensing requirements.
|
98 |
|
|
## Please read their license agreements for details.
|
99 |
|
|
|
100 |
|
|
## menus are considered toplevel windows
|
101 |
|
|
set parent $target
|
102 |
|
|
while {[winfo class $parent] == "Menu"} {
|
103 |
|
|
set parent [winfo parent $parent]
|
104 |
|
|
}
|
105 |
|
|
|
106 |
|
|
regsub -all {\%widget} $cmd $target cmd
|
107 |
|
|
regsub -all {\%top} $cmd [winfo toplevel $parent] cmd
|
108 |
|
|
|
109 |
|
|
uplevel #0 [list eval $cmd]
|
110 |
|
|
}
|
111 |
|
|
#############################################################################
|
112 |
|
|
## Library Procedure: vTcl:FireEvent
|
113 |
|
|
|
114 |
|
|
proc ::vTcl:FireEvent {target event {params {}}} {
|
115 |
|
|
## This procedure may be used free of restrictions.
|
116 |
|
|
## Exception added by Christian Gavin on 08/08/02.
|
117 |
|
|
## Other packages and widget toolkits have different licensing requirements.
|
118 |
|
|
## Please read their license agreements for details.
|
119 |
|
|
|
120 |
|
|
## The window may have disappeared
|
121 |
|
|
if {![winfo exists $target]} return
|
122 |
|
|
## Process each binding tag, looking for the event
|
123 |
|
|
foreach bindtag [bindtags $target] {
|
124 |
|
|
set tag_events [bind $bindtag]
|
125 |
|
|
set stop_processing 0
|
126 |
|
|
foreach tag_event $tag_events {
|
127 |
|
|
if {$tag_event == $event} {
|
128 |
|
|
set bind_code [bind $bindtag $tag_event]
|
129 |
|
|
foreach rep "\{%W $target\} $params" {
|
130 |
|
|
regsub -all [lindex $rep 0] $bind_code [lindex $rep 1] bind_code
|
131 |
|
|
}
|
132 |
|
|
set result [catch {uplevel #0 $bind_code} errortext]
|
133 |
|
|
if {$result == 3} {
|
134 |
|
|
## break exception, stop processing
|
135 |
|
|
set stop_processing 1
|
136 |
|
|
} elseif {$result != 0} {
|
137 |
|
|
bgerror $errortext
|
138 |
|
|
}
|
139 |
|
|
break
|
140 |
|
|
}
|
141 |
|
|
}
|
142 |
|
|
if {$stop_processing} {break}
|
143 |
|
|
}
|
144 |
|
|
}
|
145 |
|
|
#############################################################################
|
146 |
|
|
## Library Procedure: vTcl:Toplevel:WidgetProc
|
147 |
|
|
|
148 |
|
|
proc ::vTcl:Toplevel:WidgetProc {w args} {
|
149 |
|
|
## This procedure may be used free of restrictions.
|
150 |
|
|
## Exception added by Christian Gavin on 08/08/02.
|
151 |
|
|
## Other packages and widget toolkits have different licensing requirements.
|
152 |
|
|
## Please read their license agreements for details.
|
153 |
|
|
|
154 |
|
|
if {[llength $args] == 0} {
|
155 |
|
|
## If no arguments, returns the path the alias points to
|
156 |
|
|
return $w
|
157 |
|
|
}
|
158 |
|
|
set command [lindex $args 0]
|
159 |
|
|
set args [lrange $args 1 end]
|
160 |
|
|
switch -- [string tolower $command] {
|
161 |
|
|
"setvar" {
|
162 |
|
|
foreach {varname value} $args {}
|
163 |
|
|
if {$value == ""} {
|
164 |
|
|
return [set ::${w}::${varname}]
|
165 |
|
|
} else {
|
166 |
|
|
return [set ::${w}::${varname} $value]
|
167 |
|
|
}
|
168 |
|
|
}
|
169 |
|
|
"hide" - "show" {
|
170 |
|
|
Window [string tolower $command] $w
|
171 |
|
|
}
|
172 |
|
|
"showmodal" {
|
173 |
|
|
## modal dialog ends when window is destroyed
|
174 |
|
|
Window show $w; raise $w
|
175 |
|
|
grab $w; tkwait window $w; grab release $w
|
176 |
|
|
}
|
177 |
|
|
"startmodal" {
|
178 |
|
|
## ends when endmodal called
|
179 |
|
|
Window show $w; raise $w
|
180 |
|
|
set ::${w}::_modal 1
|
181 |
|
|
grab $w; tkwait variable ::${w}::_modal; grab release $w
|
182 |
|
|
}
|
183 |
|
|
"endmodal" {
|
184 |
|
|
## ends modal dialog started with startmodal, argument is var name
|
185 |
|
|
set ::${w}::_modal 0
|
186 |
|
|
Window hide $w
|
187 |
|
|
}
|
188 |
|
|
default {
|
189 |
|
|
uplevel $w $command $args
|
190 |
|
|
}
|
191 |
|
|
}
|
192 |
|
|
}
|
193 |
|
|
#############################################################################
|
194 |
|
|
## Library Procedure: vTcl:WidgetProc
|
195 |
|
|
|
196 |
|
|
proc ::vTcl:WidgetProc {w args} {
|
197 |
|
|
## This procedure may be used free of restrictions.
|
198 |
|
|
## Exception added by Christian Gavin on 08/08/02.
|
199 |
|
|
## Other packages and widget toolkits have different licensing requirements.
|
200 |
|
|
## Please read their license agreements for details.
|
201 |
|
|
|
202 |
|
|
if {[llength $args] == 0} {
|
203 |
|
|
## If no arguments, returns the path the alias points to
|
204 |
|
|
return $w
|
205 |
|
|
}
|
206 |
|
|
|
207 |
|
|
set command [lindex $args 0]
|
208 |
|
|
set args [lrange $args 1 end]
|
209 |
|
|
uplevel $w $command $args
|
210 |
|
|
}
|
211 |
|
|
#############################################################################
|
212 |
|
|
## Library Procedure: vTcl:toplevel
|
213 |
|
|
|
214 |
|
|
proc ::vTcl:toplevel {args} {
|
215 |
|
|
## This procedure may be used free of restrictions.
|
216 |
|
|
## Exception added by Christian Gavin on 08/08/02.
|
217 |
|
|
## Other packages and widget toolkits have different licensing requirements.
|
218 |
|
|
## Please read their license agreements for details.
|
219 |
|
|
|
220 |
|
|
uplevel #0 eval toplevel $args
|
221 |
|
|
set target [lindex $args 0]
|
222 |
|
|
namespace eval ::$target {set _modal 0}
|
223 |
|
|
}
|
224 |
|
|
}
|
225 |
|
|
|
226 |
|
|
|
227 |
|
|
if {[info exists vTcl(sourcing)]} {
|
228 |
|
|
|
229 |
|
|
proc vTcl:project:info {} {
|
230 |
|
|
set base .top60
|
231 |
|
|
namespace eval ::widgets::$base {
|
232 |
|
|
set set,origin 1
|
233 |
|
|
set set,size 1
|
234 |
|
|
set runvisible 1
|
235 |
|
|
}
|
236 |
|
|
namespace eval ::widgets::$base.m78 {
|
237 |
|
|
array set save {-tearoff 1}
|
238 |
|
|
namespace eval subOptions {
|
239 |
|
|
array set save {-command 1 -label 1 -menu 1}
|
240 |
|
|
}
|
241 |
|
|
}
|
242 |
|
|
set site_3_0 $base.m78
|
243 |
|
|
namespace eval ::widgets::$site_3_0.men79 {
|
244 |
|
|
array set save {-tearoff 1}
|
245 |
|
|
namespace eval subOptions {
|
246 |
|
|
array set save {-accelerator 1 -command 1 -label 1 -menu 1}
|
247 |
|
|
}
|
248 |
|
|
}
|
249 |
|
|
namespace eval ::widgets::$base.cpd86 {
|
250 |
|
|
array set save {-borderwidth 1}
|
251 |
|
|
}
|
252 |
|
|
set site_3_0 $base.cpd86
|
253 |
|
|
namespace eval ::widgets::$site_3_0.01 {
|
254 |
|
|
array set save {-borderwidth 1 -height 1 -relief 1 -width 1}
|
255 |
|
|
}
|
256 |
|
|
set site_4_0 $site_3_0.01
|
257 |
|
|
namespace eval ::widgets::$site_4_0.fra82 {
|
258 |
|
|
array set save {-borderwidth 1 -height 1}
|
259 |
|
|
}
|
260 |
|
|
namespace eval ::widgets::$site_4_0.cpd88 {
|
261 |
|
|
array set save {-height 1 -width 1}
|
262 |
|
|
}
|
263 |
|
|
set site_5_0 $site_4_0.cpd88
|
264 |
|
|
namespace eval ::widgets::$site_5_0.01 {
|
265 |
|
|
array set save {-command 1 -orient 1}
|
266 |
|
|
}
|
267 |
|
|
namespace eval ::widgets::$site_5_0.02 {
|
268 |
|
|
array set save {-command 1}
|
269 |
|
|
}
|
270 |
|
|
namespace eval ::widgets::$site_5_0.03 {
|
271 |
|
|
array set save {-font 1 -height 1 -width 1 -xscrollcommand 1 -yscrollcommand 1}
|
272 |
|
|
}
|
273 |
|
|
namespace eval ::widgets::$site_3_0.02 {
|
274 |
|
|
array set save {-borderwidth 1 -text 1}
|
275 |
|
|
}
|
276 |
|
|
namespace eval ::widgets::$base.but65 {
|
277 |
|
|
array set save {-command 1 -foreground 1 -text 1}
|
278 |
|
|
}
|
279 |
|
|
namespace eval ::widgets::$base.lab61 {
|
280 |
|
|
array set save {-foreground 1 -highlightcolor 1 -text 1}
|
281 |
|
|
}
|
282 |
|
|
set site_3_0 $base.lab61
|
283 |
|
|
namespace eval ::widgets::$site_3_0.but62 {
|
284 |
|
|
array set save {-command 1 -foreground 1 -text 1}
|
285 |
|
|
}
|
286 |
|
|
namespace eval ::widgets::$site_3_0.men63 {
|
287 |
|
|
array set save {-menu 1 -padx 1 -pady 1 -relief 1 -text 1 -textvariable 1}
|
288 |
|
|
}
|
289 |
|
|
namespace eval ::widgets::$site_3_0.men63.m {
|
290 |
|
|
array set save {-tearoff 1}
|
291 |
|
|
namespace eval subOptions {
|
292 |
|
|
array set save {-command 1 -label 1}
|
293 |
|
|
}
|
294 |
|
|
}
|
295 |
|
|
namespace eval ::widgets::$site_3_0.but74 {
|
296 |
|
|
array set save {-_tooltip 1 -command 1 -compound 1 -default 1 -foreground 1 -height 1 -text 1}
|
297 |
|
|
}
|
298 |
|
|
namespace eval ::widgets::$site_3_0.che62 {
|
299 |
|
|
array set save {-disabledforeground 1 -text 1 -variable 1}
|
300 |
|
|
}
|
301 |
|
|
namespace eval ::widgets::$site_3_0.but63 {
|
302 |
|
|
array set save {-_tooltip 1 -command 1 -text 1}
|
303 |
|
|
}
|
304 |
|
|
namespace eval ::widgets::$base.lab67 {
|
305 |
|
|
array set save {-foreground 1 -highlightcolor 1 -text 1}
|
306 |
|
|
}
|
307 |
|
|
set site_3_0 $base.lab67
|
308 |
|
|
namespace eval ::widgets::$site_3_0.men68 {
|
309 |
|
|
array set save {-menu 1 -padx 1 -pady 1 -relief 1 -text 1 -textvariable 1}
|
310 |
|
|
}
|
311 |
|
|
namespace eval ::widgets::$site_3_0.men68.m {
|
312 |
|
|
array set save {-tearoff 1}
|
313 |
|
|
namespace eval subOptions {
|
314 |
|
|
array set save {-command 1 -label 1}
|
315 |
|
|
}
|
316 |
|
|
}
|
317 |
|
|
namespace eval ::widgets::$site_3_0.but69 {
|
318 |
|
|
array set save {-command 1 -foreground 1 -text 1}
|
319 |
|
|
}
|
320 |
|
|
namespace eval ::widgets::$site_3_0.che70 {
|
321 |
|
|
array set save {-text 1 -variable 1}
|
322 |
|
|
}
|
323 |
|
|
namespace eval ::widgets::$site_3_0.but61 {
|
324 |
|
|
array set save {-_tooltip 1 -command 1 -text 1}
|
325 |
|
|
}
|
326 |
|
|
namespace eval ::widgets::$base.lab71 {
|
327 |
|
|
array set save {-foreground 1 -highlightcolor 1 -text 1}
|
328 |
|
|
}
|
329 |
|
|
set site_3_0 $base.lab71
|
330 |
|
|
namespace eval ::widgets::$site_3_0.men72 {
|
331 |
|
|
array set save {-menu 1 -padx 1 -pady 1 -relief 1 -text 1 -textvariable 1}
|
332 |
|
|
}
|
333 |
|
|
namespace eval ::widgets::$site_3_0.men72.m {
|
334 |
|
|
array set save {-tearoff 1}
|
335 |
|
|
namespace eval subOptions {
|
336 |
|
|
array set save {-command 1 -label 1}
|
337 |
|
|
}
|
338 |
|
|
}
|
339 |
|
|
namespace eval ::widgets::$site_3_0.but73 {
|
340 |
|
|
array set save {-command 1 -foreground 1 -text 1}
|
341 |
|
|
}
|
342 |
|
|
namespace eval ::widgets::$site_3_0.che75 {
|
343 |
|
|
array set save {-text 1 -variable 1}
|
344 |
|
|
}
|
345 |
|
|
namespace eval ::widgets::$site_3_0.but60 {
|
346 |
|
|
array set save {-_tooltip 1 -command 1 -text 1}
|
347 |
|
|
}
|
348 |
|
|
namespace eval ::widgets::$base.cpd77 {
|
349 |
|
|
array set save {-borderwidth 1 -height 1}
|
350 |
|
|
}
|
351 |
|
|
set site_3_0 $base.cpd77
|
352 |
|
|
namespace eval ::widgets::$site_3_0.01 {
|
353 |
|
|
array set save {-anchor 1 -text 1}
|
354 |
|
|
}
|
355 |
|
|
namespace eval ::widgets::$site_3_0.02 {
|
356 |
|
|
array set save {-cursor 1 -state 1 -textvariable 1}
|
357 |
|
|
}
|
358 |
|
|
namespace eval ::widgets::$base.cpd78 {
|
359 |
|
|
array set save {-borderwidth 1 -height 1}
|
360 |
|
|
}
|
361 |
|
|
set site_3_0 $base.cpd78
|
362 |
|
|
namespace eval ::widgets::$site_3_0.01 {
|
363 |
|
|
array set save {-anchor 1 -text 1}
|
364 |
|
|
}
|
365 |
|
|
namespace eval ::widgets::$site_3_0.02 {
|
366 |
|
|
array set save {-cursor 1 -state 1 -textvariable 1}
|
367 |
|
|
}
|
368 |
|
|
namespace eval ::widgets::$base.cpd79 {
|
369 |
|
|
array set save {-borderwidth 1 -height 1}
|
370 |
|
|
}
|
371 |
|
|
set site_3_0 $base.cpd79
|
372 |
|
|
namespace eval ::widgets::$site_3_0.01 {
|
373 |
|
|
array set save {-anchor 1 -text 1}
|
374 |
|
|
}
|
375 |
|
|
namespace eval ::widgets::$site_3_0.02 {
|
376 |
|
|
array set save {-cursor 1 -state 1 -textvariable 1}
|
377 |
|
|
}
|
378 |
|
|
namespace eval ::widgets::$base.cpd80 {
|
379 |
|
|
array set save {-borderwidth 1 -height 1}
|
380 |
|
|
}
|
381 |
|
|
set site_3_0 $base.cpd80
|
382 |
|
|
namespace eval ::widgets::$site_3_0.01 {
|
383 |
|
|
array set save {-anchor 1 -text 1}
|
384 |
|
|
}
|
385 |
|
|
namespace eval ::widgets::$site_3_0.02 {
|
386 |
|
|
array set save {-cursor 1 -state 1 -textvariable 1}
|
387 |
|
|
}
|
388 |
|
|
namespace eval ::widgets::$base.cpd60 {
|
389 |
|
|
array set save {-_tooltip 1 -command 1 -text 1}
|
390 |
|
|
}
|
391 |
|
|
namespace eval ::widgets::$base.but60 {
|
392 |
|
|
array set save {-_tooltip 1 -command 1 -text 1}
|
393 |
|
|
}
|
394 |
|
|
namespace eval ::widgets::$base.but61 {
|
395 |
|
|
array set save {-_tooltip 1 -command 1 -text 1}
|
396 |
|
|
}
|
397 |
|
|
namespace eval ::widgets::$base.but62 {
|
398 |
|
|
array set save {-_tooltip 1 -command 1 -text 1}
|
399 |
|
|
}
|
400 |
|
|
namespace eval ::widgets::$base.but64 {
|
401 |
|
|
array set save {-command 1 -text 1}
|
402 |
|
|
}
|
403 |
|
|
namespace eval ::widgets_bindings {
|
404 |
|
|
set tagslist {_TopLevel _vTclBalloon}
|
405 |
|
|
}
|
406 |
|
|
namespace eval ::vTcl::modules::main {
|
407 |
|
|
set procs {
|
408 |
|
|
init
|
409 |
|
|
main
|
410 |
|
|
_act:log
|
411 |
|
|
lls
|
412 |
|
|
docmd
|
413 |
|
|
runsyn
|
414 |
|
|
runflow
|
415 |
|
|
runpr
|
416 |
|
|
runsim
|
417 |
|
|
simbuild
|
418 |
|
|
simclean
|
419 |
|
|
synclean
|
420 |
|
|
prclean
|
421 |
|
|
}
|
422 |
|
|
set compounds {
|
423 |
|
|
}
|
424 |
|
|
set projectType single
|
425 |
|
|
}
|
426 |
|
|
}
|
427 |
|
|
}
|
428 |
|
|
|
429 |
|
|
#################################
|
430 |
|
|
# USER DEFINED PROCEDURES
|
431 |
|
|
#
|
432 |
|
|
#############################################################################
|
433 |
|
|
## Procedure: main
|
434 |
|
|
|
435 |
|
|
proc ::main {argc argv} {
|
436 |
|
|
global grproject project_name synbatch prbatch simprog simmenu
|
437 |
|
|
global simbatch syntool synmenu prmenu prtool prbatch
|
438 |
|
|
global board tech device
|
439 |
|
|
|
440 |
|
|
set grproject [lindex $argv 0]
|
441 |
|
|
set tech [lindex $argv 1]
|
442 |
|
|
set device [lindex $argv 2]
|
443 |
|
|
set board [lindex $argv 3]
|
444 |
|
|
|
445 |
|
|
set project_name $grproject
|
446 |
|
|
|
447 |
|
|
set synbatch 0
|
448 |
|
|
set syntool "synplify"
|
449 |
|
|
set synmenu "Synplify"
|
450 |
|
|
set prbatch 0
|
451 |
|
|
set simprog "vsim"
|
452 |
|
|
set simmenu "Modelsim"
|
453 |
|
|
set simbatch 0
|
454 |
|
|
set prbatch 0
|
455 |
|
|
set prmenu "None"
|
456 |
|
|
set prtool "none"
|
457 |
|
|
}
|
458 |
|
|
#############################################################################
|
459 |
|
|
## Procedure: _act:log
|
460 |
|
|
|
461 |
|
|
proc ::_act:log {} {
|
462 |
|
|
global widget
|
463 |
|
|
|
464 |
|
|
global input run_next_cmd
|
465 |
|
|
if [eof $input] {
|
466 |
|
|
catch [close $input]
|
467 |
|
|
set run_next_cmd 1
|
468 |
|
|
} else {
|
469 |
|
|
gets $input line
|
470 |
|
|
Text2 insert end $line\n
|
471 |
|
|
Text2 see end
|
472 |
|
|
}
|
473 |
|
|
}
|
474 |
|
|
#############################################################################
|
475 |
|
|
## Procedure: lls
|
476 |
|
|
|
477 |
|
|
proc ::lls {} {
|
478 |
|
|
global widget
|
479 |
|
|
|
480 |
|
|
global input run_next_cmd
|
481 |
|
|
|
482 |
|
|
variable command "ls -l"
|
483 |
|
|
if [catch {open "|$command "} input] {
|
484 |
|
|
Text2 insert end "Can't find the executable.\n"
|
485 |
|
|
} else {
|
486 |
|
|
set run_next_cmd 0
|
487 |
|
|
fileevent $input readable {_act:log}
|
488 |
|
|
Text2 insert end $command\n
|
489 |
|
|
vwait run_next_cmd
|
490 |
|
|
}
|
491 |
|
|
}
|
492 |
|
|
#############################################################################
|
493 |
|
|
## Procedure: docmd
|
494 |
|
|
|
495 |
|
|
proc ::docmd {cmd} {
|
496 |
|
|
global widget
|
497 |
|
|
|
498 |
|
|
global input run_next_cmd
|
499 |
|
|
|
500 |
|
|
variable command $cmd
|
501 |
|
|
if [catch {open "|$command "} input] {
|
502 |
|
|
Text2 insert end "Can't find the executable.\n"
|
503 |
|
|
} else {
|
504 |
|
|
set run_next_cmd 0
|
505 |
|
|
fileevent $input readable {_act:log}
|
506 |
|
|
Text2 insert end $command\n
|
507 |
|
|
vwait run_next_cmd
|
508 |
|
|
}
|
509 |
|
|
}
|
510 |
|
|
#############################################################################
|
511 |
|
|
## Procedure: runsyn
|
512 |
|
|
|
513 |
|
|
proc ::runsyn {} {
|
514 |
|
|
global widget grproject syntool synbatch
|
515 |
|
|
|
516 |
|
|
if {$synbatch == "0"} {
|
517 |
|
|
docmd "make $syntool-launch"
|
518 |
|
|
} else {
|
519 |
|
|
docmd "make $syntool-map"
|
520 |
|
|
}
|
521 |
|
|
}
|
522 |
|
|
#############################################################################
|
523 |
|
|
## Procedure: runflow
|
524 |
|
|
|
525 |
|
|
proc ::runflow {} {
|
526 |
|
|
global widget grproject syntool synbatch prtool
|
527 |
|
|
|
528 |
|
|
switch $syntool {
|
529 |
|
|
"synplify" {
|
530 |
|
|
switch $prtool {
|
531 |
|
|
"none" {docmd "make synplify"}
|
532 |
|
|
"designer" {docmd "fpgaax"}
|
533 |
|
|
"quartus" {docmd "make fpgaq"}
|
534 |
|
|
"ise" {docmd "make fpgasynp"}
|
535 |
|
|
}
|
536 |
|
|
}
|
537 |
|
|
"xst" {
|
538 |
|
|
switch $prtool {
|
539 |
|
|
"none" {docmd "make xst"}
|
540 |
|
|
"ise" {docmd "make fpgaxst"}
|
541 |
|
|
default {}
|
542 |
|
|
}
|
543 |
|
|
}
|
544 |
|
|
default {}
|
545 |
|
|
}
|
546 |
|
|
}
|
547 |
|
|
#############################################################################
|
548 |
|
|
## Procedure: runpr
|
549 |
|
|
|
550 |
|
|
proc ::runpr {} {
|
551 |
|
|
global widget grproject syntool prbatch prtool
|
552 |
|
|
|
553 |
|
|
if {$prbatch == "0"} {
|
554 |
|
|
switch $prtool {
|
555 |
|
|
"actel" { docmd "make actel-launch"}
|
556 |
|
|
"quartus" {
|
557 |
|
|
if {$syntool == "synplify"} {docmd "make quartus-launch-synp"}
|
558 |
|
|
if {$syntool == "quartus"} {docmd "make quartus-launch"}
|
559 |
|
|
}
|
560 |
|
|
"ise" {
|
561 |
|
|
if {$syntool == "synplify"} {docmd "make ise-launch-synp"}
|
562 |
|
|
if {$syntool == "xst"} {docmd "make ise-launch"}
|
563 |
|
|
}
|
564 |
|
|
}
|
565 |
|
|
}
|
566 |
|
|
|
567 |
|
|
if {$prbatch != "0"} {
|
568 |
|
|
switch $prtool {
|
569 |
|
|
"actel" { docmd "make actel"}
|
570 |
|
|
"quartus" {
|
571 |
|
|
if {$syntool == "synplify"} {docmd "make quartus-synp"}
|
572 |
|
|
if {$syntool == "quartus"} {docmd "make quartus-route"}
|
573 |
|
|
}
|
574 |
|
|
"ise" {
|
575 |
|
|
if {$syntool == "synplify"} {docmd "make ise-synp"}
|
576 |
|
|
if {$syntool == "xst"} {docmd "make ise"}
|
577 |
|
|
}
|
578 |
|
|
}
|
579 |
|
|
}
|
580 |
|
|
}
|
581 |
|
|
#############################################################################
|
582 |
|
|
## Procedure: runsim
|
583 |
|
|
|
584 |
|
|
proc ::runsim {} {
|
585 |
|
|
global widget grproject simprog simbatch
|
586 |
|
|
|
587 |
|
|
if {$simbatch == "0"} {
|
588 |
|
|
docmd "make $simprog-launch"
|
589 |
|
|
} else {
|
590 |
|
|
docmd "make $simprog-run"
|
591 |
|
|
}
|
592 |
|
|
}
|
593 |
|
|
#############################################################################
|
594 |
|
|
## Procedure: simbuild
|
595 |
|
|
|
596 |
|
|
proc ::simbuild {} {
|
597 |
|
|
global widget grproject simprog simbatch
|
598 |
|
|
|
599 |
|
|
docmd "make $simprog"
|
600 |
|
|
}
|
601 |
|
|
#############################################################################
|
602 |
|
|
## Procedure: simclean
|
603 |
|
|
|
604 |
|
|
proc ::simclean {} {
|
605 |
|
|
global widget grproject simprog simbatch
|
606 |
|
|
|
607 |
|
|
docmd "make $simprog-clean"
|
608 |
|
|
}
|
609 |
|
|
#############################################################################
|
610 |
|
|
## Procedure: synclean
|
611 |
|
|
|
612 |
|
|
proc ::synclean {} {
|
613 |
|
|
global widget grproject syntool synbatch
|
614 |
|
|
|
615 |
|
|
docmd "make $syntool-clean"
|
616 |
|
|
}
|
617 |
|
|
#############################################################################
|
618 |
|
|
## Procedure: prclean
|
619 |
|
|
|
620 |
|
|
proc ::prclean {} {
|
621 |
|
|
global widget grproject prtool synbatch
|
622 |
|
|
|
623 |
|
|
docmd "make $prtool-clean"
|
624 |
|
|
}
|
625 |
|
|
|
626 |
|
|
#############################################################################
|
627 |
|
|
## Initialization Procedure: init
|
628 |
|
|
|
629 |
|
|
proc ::init {argc argv} {
|
630 |
|
|
global input run_next_cmd grproject
|
631 |
|
|
|
632 |
|
|
set run_next_cmd 1
|
633 |
|
|
}
|
634 |
|
|
|
635 |
|
|
init $argc $argv
|
636 |
|
|
|
637 |
|
|
#################################
|
638 |
|
|
# VTCL GENERATED GUI PROCEDURES
|
639 |
|
|
#
|
640 |
|
|
|
641 |
|
|
proc vTclWindow. {base} {
|
642 |
|
|
if {$base == ""} {
|
643 |
|
|
set base .
|
644 |
|
|
}
|
645 |
|
|
###################
|
646 |
|
|
# CREATING WIDGETS
|
647 |
|
|
###################
|
648 |
|
|
wm focusmodel $top passive
|
649 |
|
|
wm geometry $top 1x1+0+0; update
|
650 |
|
|
wm maxsize $top 1265 994
|
651 |
|
|
wm minsize $top 1 1
|
652 |
|
|
wm overrideredirect $top 0
|
653 |
|
|
wm resizable $top 1 1
|
654 |
|
|
wm withdraw $top
|
655 |
|
|
wm title $top "vtcl.tcl"
|
656 |
|
|
bindtags $top "$top Vtcl.tcl all"
|
657 |
|
|
vTcl:FireEvent $top <<Create>>
|
658 |
|
|
wm protocol $top WM_DELETE_WINDOW "vTcl:FireEvent $top <<DeleteWindow>>"
|
659 |
|
|
|
660 |
|
|
###################
|
661 |
|
|
# SETTING GEOMETRY
|
662 |
|
|
###################
|
663 |
|
|
|
664 |
|
|
vTcl:FireEvent $base <<Ready>>
|
665 |
|
|
}
|
666 |
|
|
|
667 |
|
|
proc vTclWindow.top60 {base} {
|
668 |
|
|
if {$base == ""} {
|
669 |
|
|
set base .top60
|
670 |
|
|
}
|
671 |
|
|
if {[winfo exists $base]} {
|
672 |
|
|
wm deiconify $base; return
|
673 |
|
|
}
|
674 |
|
|
set top $base
|
675 |
|
|
###################
|
676 |
|
|
# CREATING WIDGETS
|
677 |
|
|
###################
|
678 |
|
|
vTcl:toplevel $top -class Toplevel \
|
679 |
|
|
-menu "$top.m78" -highlightcolor black
|
680 |
|
|
wm focusmodel $top passive
|
681 |
|
|
wm geometry $top 609x477+358+121; update
|
682 |
|
|
wm maxsize $top 1009 738
|
683 |
|
|
wm minsize $top 1 1
|
684 |
|
|
wm overrideredirect $top 0
|
685 |
|
|
wm resizable $top 1 1
|
686 |
|
|
wm deiconify $top
|
687 |
|
|
wm title $top "GRLIB Implementation Tool"
|
688 |
|
|
vTcl:DefineAlias "$top" "Toplevel1" vTcl:Toplevel:WidgetProc "" 1
|
689 |
|
|
bindtags $top "$top Toplevel all _TopLevel"
|
690 |
|
|
vTcl:FireEvent $top <<Create>>
|
691 |
|
|
wm protocol $top WM_DELETE_WINDOW "vTcl:FireEvent $top <<DeleteWindow>>"
|
692 |
|
|
|
693 |
|
|
menu $top.m78 \
|
694 |
|
|
-tearoff 1
|
695 |
|
|
$top.m78 add cascade \
|
696 |
|
|
-menu "$top.m78.men79" -command {} -label File
|
697 |
|
|
set site_3_0 $top.m78
|
698 |
|
|
menu $site_3_0.men79 \
|
699 |
|
|
-tearoff 0
|
700 |
|
|
$site_3_0.men79 add command \
|
701 |
|
|
-accelerator Ctrl-Q -command exit -label Quit
|
702 |
|
|
frame $top.cpd86 \
|
703 |
|
|
-borderwidth 2
|
704 |
|
|
vTcl:DefineAlias "$top.cpd86" "Frame3" vTcl:WidgetProc "Toplevel1" 1
|
705 |
|
|
set site_3_0 $top.cpd86
|
706 |
|
|
frame $site_3_0.01 \
|
707 |
|
|
-borderwidth 2 -relief groove -height 98 -width 125
|
708 |
|
|
vTcl:DefineAlias "$site_3_0.01" "Frame4" vTcl:WidgetProc "Toplevel1" 1
|
709 |
|
|
set site_4_0 $site_3_0.01
|
710 |
|
|
frame $site_4_0.fra82 \
|
711 |
|
|
-borderwidth 2 -height 10
|
712 |
|
|
vTcl:DefineAlias "$site_4_0.fra82" "Frame5" vTcl:WidgetProc "Toplevel1" 1
|
713 |
|
|
frame $site_4_0.cpd88 \
|
714 |
|
|
-height 219 -width 584
|
715 |
|
|
vTcl:DefineAlias "$site_4_0.cpd88" "Frame7" vTcl:WidgetProc "Toplevel1" 1
|
716 |
|
|
set site_5_0 $site_4_0.cpd88
|
717 |
|
|
scrollbar $site_5_0.01 \
|
718 |
|
|
-command "$site_5_0.03 xview" -orient horizontal
|
719 |
|
|
vTcl:DefineAlias "$site_5_0.01" "Scrollbar3" vTcl:WidgetProc "Toplevel1" 1
|
720 |
|
|
scrollbar $site_5_0.02 \
|
721 |
|
|
-command "$site_5_0.03 yview"
|
722 |
|
|
vTcl:DefineAlias "$site_5_0.02" "Scrollbar4" vTcl:WidgetProc "Toplevel1" 1
|
723 |
|
|
text $site_5_0.03 \
|
724 |
|
|
-font {Courier -12} -height 14 -width 80 \
|
725 |
|
|
-xscrollcommand "$site_5_0.01 set" -yscrollcommand "$site_5_0.02 set"
|
726 |
|
|
vTcl:DefineAlias "$site_5_0.03" "Text2" vTcl:WidgetProc "Toplevel1" 1
|
727 |
|
|
grid $site_5_0.01 \
|
728 |
|
|
-in $site_5_0 -column 0 -row 1 -columnspan 1 -rowspan 1 -sticky ew
|
729 |
|
|
grid $site_5_0.02 \
|
730 |
|
|
-in $site_5_0 -column 1 -row 0 -columnspan 1 -rowspan 1 -sticky ns
|
731 |
|
|
grid $site_5_0.03 \
|
732 |
|
|
-in $site_5_0 -column 0 -row 0 -columnspan 1 -rowspan 1 -sticky nesw
|
733 |
|
|
pack $site_4_0.fra82 \
|
734 |
|
|
-in $site_4_0 -anchor center -expand 0 -fill none -side top
|
735 |
|
|
place $site_4_0.cpd88 \
|
736 |
|
|
-in $site_4_0 -x 9 -y 14 -width 584 -height 219 -anchor nw \
|
737 |
|
|
-bordermode inside
|
738 |
|
|
label $site_3_0.02 \
|
739 |
|
|
-borderwidth 1 -text Console
|
740 |
|
|
vTcl:DefineAlias "$site_3_0.02" "Label3" vTcl:WidgetProc "Toplevel1" 1
|
741 |
|
|
pack $site_3_0.01 \
|
742 |
|
|
-in $site_3_0 -anchor center -expand 1 -fill both -padx 5 -pady 5 \
|
743 |
|
|
-side top
|
744 |
|
|
place $site_3_0.02 \
|
745 |
|
|
-in $site_3_0 -x 15 -y 0 -anchor nw -bordermode ignore
|
746 |
|
|
button $top.but65 \
|
747 |
|
|
-command exit -foreground #ff0000 -text Quit
|
748 |
|
|
vTcl:DefineAlias "$top.but65" "Button3" vTcl:WidgetProc "Toplevel1" 1
|
749 |
|
|
labelframe $top.lab61 \
|
750 |
|
|
-foreground black -text Simulation -highlightcolor black
|
751 |
|
|
vTcl:DefineAlias "$top.lab61" "Labelframe1" vTcl:WidgetProc "Toplevel1" 1
|
752 |
|
|
set site_3_0 $top.lab61
|
753 |
|
|
button $site_3_0.but62 \
|
754 |
|
|
-command runsim -foreground #0000ff -text Run
|
755 |
|
|
vTcl:DefineAlias "$site_3_0.but62" "Button5" vTcl:WidgetProc "Toplevel1" 1
|
756 |
|
|
menubutton $site_3_0.men63 \
|
757 |
|
|
-menu "$site_3_0.men63.m" -padx 5 -pady 4 -relief raised \
|
758 |
|
|
-text Modelsim -textvariable simmenu
|
759 |
|
|
vTcl:DefineAlias "$site_3_0.men63" "Menubutton1" vTcl:WidgetProc "Toplevel1" 1
|
760 |
|
|
menu $site_3_0.men63.m \
|
761 |
|
|
-tearoff 0
|
762 |
|
|
$site_3_0.men63.m add command \
|
763 |
|
|
\
|
764 |
|
|
-command {global simprog simmenu
|
765 |
|
|
set simprog "vsim"
|
766 |
|
|
set simmenu "Modelsim"} \
|
767 |
|
|
-label Modelsim
|
768 |
|
|
$site_3_0.men63.m add command \
|
769 |
|
|
\
|
770 |
|
|
-command {global simprog simmenu
|
771 |
|
|
set simprog "ncsim"
|
772 |
|
|
set simmenu "Ncsim"} \
|
773 |
|
|
-label Ncsim
|
774 |
|
|
$site_3_0.men63.m add command \
|
775 |
|
|
\
|
776 |
|
|
-command {global simprog simmenu
|
777 |
|
|
set simprog "ghdl"
|
778 |
|
|
set simmenu "GHDL"} \
|
779 |
|
|
-label GHDL
|
780 |
|
|
$site_3_0.men63.m add command \
|
781 |
|
|
\
|
782 |
|
|
-command {global simprog simmenu
|
783 |
|
|
set simprog "libero"
|
784 |
|
|
set simmenu "Libero"} \
|
785 |
|
|
-label Libero
|
786 |
|
|
$site_3_0.men63.m add command \
|
787 |
|
|
\
|
788 |
|
|
-command {global simprog simmenu
|
789 |
|
|
set simprog "riviera"
|
790 |
|
|
set simmenu "Riviera"} \
|
791 |
|
|
-label Riviera
|
792 |
|
|
$site_3_0.men63.m add command \
|
793 |
|
|
\
|
794 |
|
|
-command {global simprog simmenu
|
795 |
|
|
set simprog "avhdl"
|
796 |
|
|
set simmenu "Active-HDL GUI"} \
|
797 |
|
|
-label {Active-HDL GUI}
|
798 |
|
|
$site_3_0.men63.m add command \
|
799 |
|
|
\
|
800 |
|
|
-command {global simprog simmenu
|
801 |
|
|
set simprog "vsimsa"
|
802 |
|
|
set simmenu "Active-HDL batch"} \
|
803 |
|
|
-label {Active-HDL batch}
|
804 |
|
|
$site_3_0.men63.m add command \
|
805 |
|
|
\
|
806 |
|
|
-command {# TODO: Your menu handler hereglobal simprog simmenu
|
807 |
|
|
set simprog "sonata"
|
808 |
|
|
set simmenu "Sonata"} \
|
809 |
|
|
-label Sonata
|
810 |
|
|
button $site_3_0.but74 \
|
811 |
|
|
-command simbuild -compound none -default disabled \
|
812 |
|
|
-foreground #009900 -height 26 -text Build
|
813 |
|
|
vTcl:DefineAlias "$site_3_0.but74" "Button8" vTcl:WidgetProc "Toplevel1" 1
|
814 |
|
|
bindtags $site_3_0.but74 "$site_3_0.but74 Button $top all _vTclBalloon"
|
815 |
|
|
bind $site_3_0.but74 <<SetBalloon>> {
|
816 |
|
|
set ::vTcl::balloon::%W {compile grlib and local design}
|
817 |
|
|
}
|
818 |
|
|
checkbutton $site_3_0.che62 \
|
819 |
|
|
-disabledforeground #a3a3a3 -text Batch -variable simbatch
|
820 |
|
|
vTcl:DefineAlias "$site_3_0.che62" "Checkbutton1" vTcl:WidgetProc "Toplevel1" 1
|
821 |
|
|
button $site_3_0.but63 \
|
822 |
|
|
-command simclean -text Clean
|
823 |
|
|
vTcl:DefineAlias "$site_3_0.but63" "Button9" vTcl:WidgetProc "Toplevel1" 1
|
824 |
|
|
bindtags $site_3_0.but63 "$site_3_0.but63 Button $top all _vTclBalloon"
|
825 |
|
|
bind $site_3_0.but63 <<SetBalloon>> {
|
826 |
|
|
set ::vTcl::balloon::%W {remove generated files for selected tool}
|
827 |
|
|
}
|
828 |
|
|
place $site_3_0.but62 \
|
829 |
|
|
-in $site_3_0 -x 125 -y 20 -width 49 -height 26 -anchor nw \
|
830 |
|
|
-bordermode ignore
|
831 |
|
|
place $site_3_0.men63 \
|
832 |
|
|
-in $site_3_0 -x 10 -y 20 -width 101 -height 26 -anchor nw \
|
833 |
|
|
-bordermode ignore
|
834 |
|
|
place $site_3_0.but74 \
|
835 |
|
|
-in $site_3_0 -x 331 -y 20 -width 50 -height 26 -anchor nw \
|
836 |
|
|
-bordermode ignore
|
837 |
|
|
place $site_3_0.che62 \
|
838 |
|
|
-in $site_3_0 -x 189 -y 22 -width 61 -height 22 -anchor nw \
|
839 |
|
|
-bordermode ignore
|
840 |
|
|
place $site_3_0.but63 \
|
841 |
|
|
-in $site_3_0 -x 261 -y 20 -width 58 -height 26 -anchor nw \
|
842 |
|
|
-bordermode ignore
|
843 |
|
|
labelframe $top.lab67 \
|
844 |
|
|
-foreground black -text {Place & route} -highlightcolor black
|
845 |
|
|
vTcl:DefineAlias "$top.lab67" "Labelframe2" vTcl:WidgetProc "Toplevel1" 1
|
846 |
|
|
set site_3_0 $top.lab67
|
847 |
|
|
menubutton $site_3_0.men68 \
|
848 |
|
|
-menu "$site_3_0.men68.m" -padx 5 -pady 4 -relief raised -text None \
|
849 |
|
|
-textvariable prmenu
|
850 |
|
|
vTcl:DefineAlias "$site_3_0.men68" "Menubutton3" vTcl:WidgetProc "Toplevel1" 1
|
851 |
|
|
menu $site_3_0.men68.m \
|
852 |
|
|
-tearoff 0
|
853 |
|
|
$site_3_0.men68.m add command \
|
854 |
|
|
-command {global prmenu prtool
|
855 |
|
|
set prmenu "None"
|
856 |
|
|
set prtool "none"} \
|
857 |
|
|
-label None
|
858 |
|
|
$site_3_0.men68.m add command \
|
859 |
|
|
\
|
860 |
|
|
-command {global prmenu prtool
|
861 |
|
|
set prmenu "Actel Designer"
|
862 |
|
|
set prtool "actel"} \
|
863 |
|
|
-label {Actel Designer}
|
864 |
|
|
$site_3_0.men68.m add command \
|
865 |
|
|
\
|
866 |
|
|
-command {global prmenu prtool
|
867 |
|
|
set prmenu "Quartus"
|
868 |
|
|
set prtool "quartus"} \
|
869 |
|
|
-label Quartus
|
870 |
|
|
$site_3_0.men68.m add command \
|
871 |
|
|
\
|
872 |
|
|
-command {global prmenu prtool
|
873 |
|
|
set prmenu "Xilinx ISE"
|
874 |
|
|
set prtool "ise"} \
|
875 |
|
|
-label {Xilinx ISE}
|
876 |
|
|
button $site_3_0.but69 \
|
877 |
|
|
-command runpr -foreground #0000ff -text Run
|
878 |
|
|
vTcl:DefineAlias "$site_3_0.but69" "Button6" vTcl:WidgetProc "Toplevel1" 1
|
879 |
|
|
checkbutton $site_3_0.che70 \
|
880 |
|
|
-text Batch -variable prbatch
|
881 |
|
|
vTcl:DefineAlias "$site_3_0.che70" "Checkbutton2" vTcl:WidgetProc "Toplevel1" 1
|
882 |
|
|
button $site_3_0.but61 \
|
883 |
|
|
-command prclean -text Clean
|
884 |
|
|
vTcl:DefineAlias "$site_3_0.but61" "Button2" vTcl:WidgetProc "Toplevel1" 1
|
885 |
|
|
bindtags $site_3_0.but61 "$site_3_0.but61 Button $top all _vTclBalloon"
|
886 |
|
|
bind $site_3_0.but61 <<SetBalloon>> {
|
887 |
|
|
set ::vTcl::balloon::%W {remove generated files for selected tool}
|
888 |
|
|
}
|
889 |
|
|
place $site_3_0.men68 \
|
890 |
|
|
-in $site_3_0 -x 10 -y 20 -width 101 -height 26 -anchor nw \
|
891 |
|
|
-bordermode ignore
|
892 |
|
|
place $site_3_0.but69 \
|
893 |
|
|
-in $site_3_0 -x 125 -y 20 -width 49 -height 26 -anchor nw \
|
894 |
|
|
-bordermode ignore
|
895 |
|
|
place $site_3_0.che70 \
|
896 |
|
|
-in $site_3_0 -x 185 -y 20 -width 61 -height 22 -anchor nw \
|
897 |
|
|
-bordermode ignore
|
898 |
|
|
place $site_3_0.but61 \
|
899 |
|
|
-in $site_3_0 -x 261 -y 20 -width 58 -height 26 -anchor nw \
|
900 |
|
|
-bordermode ignore
|
901 |
|
|
labelframe $top.lab71 \
|
902 |
|
|
-foreground black -text Synthesis -highlightcolor black
|
903 |
|
|
vTcl:DefineAlias "$top.lab71" "Labelframe3" vTcl:WidgetProc "Toplevel1" 1
|
904 |
|
|
set site_3_0 $top.lab71
|
905 |
|
|
menubutton $site_3_0.men72 \
|
906 |
|
|
-menu "$site_3_0.men72.m" -padx 5 -pady 4 -relief raised \
|
907 |
|
|
-text Synplify -textvariable synmenu
|
908 |
|
|
vTcl:DefineAlias "$site_3_0.men72" "Menubutton2" vTcl:WidgetProc "Toplevel1" 1
|
909 |
|
|
menu $site_3_0.men72.m \
|
910 |
|
|
-tearoff 0
|
911 |
|
|
$site_3_0.men72.m add command \
|
912 |
|
|
\
|
913 |
|
|
-command {global synmenu syntool
|
914 |
|
|
set synmenu "Synplify"
|
915 |
|
|
set syntool "synplify"} \
|
916 |
|
|
-label Synplify
|
917 |
|
|
$site_3_0.men72.m add command \
|
918 |
|
|
\
|
919 |
|
|
-command {global synmenu syntool
|
920 |
|
|
set synmenu "Quartus"
|
921 |
|
|
set syntool "quartus"} \
|
922 |
|
|
-label Quartus
|
923 |
|
|
$site_3_0.men72.m add command \
|
924 |
|
|
\
|
925 |
|
|
-command {global synmenu syntool
|
926 |
|
|
set synmenu "Xilinx ISE"
|
927 |
|
|
set syntool "xst"} \
|
928 |
|
|
-label {Xilinx ISE}
|
929 |
|
|
$site_3_0.men72.m add command \
|
930 |
|
|
\
|
931 |
|
|
-command {global synmenu syntool
|
932 |
|
|
set synmenu "Precision"
|
933 |
|
|
set syntool "precision"} \
|
934 |
|
|
-label Precision
|
935 |
|
|
$site_3_0.men72.m add command \
|
936 |
|
|
\
|
937 |
|
|
-command {global synmenu syntool
|
938 |
|
|
set synmenu "Libero"
|
939 |
|
|
set syntool "libero"} \
|
940 |
|
|
-label Libero
|
941 |
|
|
button $site_3_0.but73 \
|
942 |
|
|
-command runsyn -foreground #0000ff -text Run
|
943 |
|
|
vTcl:DefineAlias "$site_3_0.but73" "Button7" vTcl:WidgetProc "Toplevel1" 1
|
944 |
|
|
checkbutton $site_3_0.che75 \
|
945 |
|
|
-text Batch -variable synbatch
|
946 |
|
|
vTcl:DefineAlias "$site_3_0.che75" "Checkbutton3" vTcl:WidgetProc "Toplevel1" 1
|
947 |
|
|
button $site_3_0.but60 \
|
948 |
|
|
-command synclean -text Clean
|
949 |
|
|
vTcl:DefineAlias "$site_3_0.but60" "Button1" vTcl:WidgetProc "Toplevel1" 1
|
950 |
|
|
bindtags $site_3_0.but60 "$site_3_0.but60 Button $top all _vTclBalloon"
|
951 |
|
|
bind $site_3_0.but60 <<SetBalloon>> {
|
952 |
|
|
set ::vTcl::balloon::%W {remove generated files for selected tool}
|
953 |
|
|
}
|
954 |
|
|
place $site_3_0.men72 \
|
955 |
|
|
-in $site_3_0 -x 10 -y 20 -width 101 -height 26 -anchor nw \
|
956 |
|
|
-bordermode ignore
|
957 |
|
|
place $site_3_0.but73 \
|
958 |
|
|
-in $site_3_0 -x 125 -y 20 -width 49 -height 26 -anchor nw \
|
959 |
|
|
-bordermode ignore
|
960 |
|
|
place $site_3_0.che75 \
|
961 |
|
|
-in $site_3_0 -x 187 -y 21 -width 61 -height 22 -anchor nw \
|
962 |
|
|
-bordermode ignore
|
963 |
|
|
place $site_3_0.but60 \
|
964 |
|
|
-in $site_3_0 -x 261 -y 20 -width 58 -height 26 -anchor nw \
|
965 |
|
|
-bordermode ignore
|
966 |
|
|
frame $top.cpd77 \
|
967 |
|
|
-borderwidth 1 -height 30
|
968 |
|
|
vTcl:DefineAlias "$top.cpd77" "Frame6" vTcl:WidgetProc "Toplevel1" 1
|
969 |
|
|
set site_3_0 $top.cpd77
|
970 |
|
|
label $site_3_0.01 \
|
971 |
|
|
-anchor w -text Tech:
|
972 |
|
|
vTcl:DefineAlias "$site_3_0.01" "Label2" vTcl:WidgetProc "Toplevel1" 1
|
973 |
|
|
entry $site_3_0.02 \
|
974 |
|
|
-cursor {} -state readonly -textvariable tech
|
975 |
|
|
vTcl:DefineAlias "$site_3_0.02" "Entry2" vTcl:WidgetProc "Toplevel1" 1
|
976 |
|
|
pack $site_3_0.01 \
|
977 |
|
|
-in $site_3_0 -anchor center -expand 0 -fill none -padx 2 -pady 2 \
|
978 |
|
|
-side left
|
979 |
|
|
pack $site_3_0.02 \
|
980 |
|
|
-in $site_3_0 -anchor center -expand 1 -fill x -padx 2 -pady 2 \
|
981 |
|
|
-side right
|
982 |
|
|
frame $top.cpd78 \
|
983 |
|
|
-borderwidth 1 -height 30
|
984 |
|
|
vTcl:DefineAlias "$top.cpd78" "Frame8" vTcl:WidgetProc "Toplevel1" 1
|
985 |
|
|
set site_3_0 $top.cpd78
|
986 |
|
|
label $site_3_0.01 \
|
987 |
|
|
-anchor w -text Device:
|
988 |
|
|
vTcl:DefineAlias "$site_3_0.01" "Label4" vTcl:WidgetProc "Toplevel1" 1
|
989 |
|
|
entry $site_3_0.02 \
|
990 |
|
|
-cursor {} -state readonly -textvariable device
|
991 |
|
|
vTcl:DefineAlias "$site_3_0.02" "Entry3" vTcl:WidgetProc "Toplevel1" 1
|
992 |
|
|
pack $site_3_0.01 \
|
993 |
|
|
-in $site_3_0 -anchor center -expand 0 -fill none -padx 2 -pady 2 \
|
994 |
|
|
-side left
|
995 |
|
|
pack $site_3_0.02 \
|
996 |
|
|
-in $site_3_0 -anchor center -expand 1 -fill x -padx 2 -pady 2 \
|
997 |
|
|
-side right
|
998 |
|
|
frame $top.cpd79 \
|
999 |
|
|
-borderwidth 1 -height 30
|
1000 |
|
|
vTcl:DefineAlias "$top.cpd79" "Frame9" vTcl:WidgetProc "Toplevel1" 1
|
1001 |
|
|
set site_3_0 $top.cpd79
|
1002 |
|
|
label $site_3_0.01 \
|
1003 |
|
|
-anchor w -text Board:
|
1004 |
|
|
vTcl:DefineAlias "$site_3_0.01" "Label6" vTcl:WidgetProc "Toplevel1" 1
|
1005 |
|
|
entry $site_3_0.02 \
|
1006 |
|
|
-cursor {} -state readonly -textvariable board
|
1007 |
|
|
vTcl:DefineAlias "$site_3_0.02" "Entry4" vTcl:WidgetProc "Toplevel1" 1
|
1008 |
|
|
pack $site_3_0.01 \
|
1009 |
|
|
-in $site_3_0 -anchor center -expand 0 -fill none -padx 2 -pady 2 \
|
1010 |
|
|
-side left
|
1011 |
|
|
pack $site_3_0.02 \
|
1012 |
|
|
-in $site_3_0 -anchor center -expand 1 -fill x -padx 2 -pady 2 \
|
1013 |
|
|
-side right
|
1014 |
|
|
frame $top.cpd80 \
|
1015 |
|
|
-borderwidth 1 -height 30
|
1016 |
|
|
vTcl:DefineAlias "$top.cpd80" "Frame10" vTcl:WidgetProc "Toplevel1" 1
|
1017 |
|
|
set site_3_0 $top.cpd80
|
1018 |
|
|
label $site_3_0.01 \
|
1019 |
|
|
-anchor w -text Project:
|
1020 |
|
|
vTcl:DefineAlias "$site_3_0.01" "Label5" vTcl:WidgetProc "Toplevel1" 1
|
1021 |
|
|
entry $site_3_0.02 \
|
1022 |
|
|
-cursor {} -state readonly -textvariable project_name
|
1023 |
|
|
vTcl:DefineAlias "$site_3_0.02" "Entry1" vTcl:WidgetProc "Toplevel1" 1
|
1024 |
|
|
pack $site_3_0.01 \
|
1025 |
|
|
-in $site_3_0 -anchor center -expand 0 -fill none -padx 2 -pady 2 \
|
1026 |
|
|
-side left
|
1027 |
|
|
pack $site_3_0.02 \
|
1028 |
|
|
-in $site_3_0 -anchor center -expand 1 -fill x -padx 2 -pady 2 \
|
1029 |
|
|
-side right
|
1030 |
|
|
button $top.cpd60 \
|
1031 |
|
|
-command {docmd "make xconfig"} -text xconfig
|
1032 |
|
|
vTcl:DefineAlias "$top.cpd60" "Button4" vTcl:WidgetProc "Toplevel1" 1
|
1033 |
|
|
bindtags $top.cpd60 "$top.cpd60 Button $top all _vTclBalloon"
|
1034 |
|
|
bind $top.cpd60 <<SetBalloon>> {
|
1035 |
|
|
set ::vTcl::balloon::%W {run grlib/leon3 configuration tool}
|
1036 |
|
|
}
|
1037 |
|
|
button $top.but60 \
|
1038 |
|
|
-command {docmd "make ise-prog-prom"} -text {prog prom}
|
1039 |
|
|
vTcl:DefineAlias "$top.but60" "buildvermod" vTcl:WidgetProc "Toplevel1" 1
|
1040 |
|
|
bindtags $top.but60 "$top.but60 Button $top all _vTclBalloon"
|
1041 |
|
|
bind $top.but60 <<SetBalloon>> {
|
1042 |
|
|
set ::vTcl::balloon::%W {Program FPGA prom}
|
1043 |
|
|
}
|
1044 |
|
|
button $top.but61 \
|
1045 |
|
|
-command {docmd "make clean"} -text {clean all}
|
1046 |
|
|
vTcl:DefineAlias "$top.but61" "Button10" vTcl:WidgetProc "Toplevel1" 1
|
1047 |
|
|
bindtags $top.but61 "$top.but61 Button $top all _vTclBalloon"
|
1048 |
|
|
bind $top.but61 <<SetBalloon>> {
|
1049 |
|
|
set ::vTcl::balloon::%W {remove all generated files except compile scripts}
|
1050 |
|
|
}
|
1051 |
|
|
button $top.but62 \
|
1052 |
|
|
-command {docmd "make distclean"} -text distclean
|
1053 |
|
|
vTcl:DefineAlias "$top.but62" "Button11" vTcl:WidgetProc "Toplevel1" 1
|
1054 |
|
|
bindtags $top.but62 "$top.but62 Button $top all _vTclBalloon"
|
1055 |
|
|
bind $top.but62 <<SetBalloon>> {
|
1056 |
|
|
set ::vTcl::balloon::%W {remove all generated file}
|
1057 |
|
|
}
|
1058 |
|
|
button $top.but64 \
|
1059 |
|
|
-command {docmd "make scripts"} -text scripts
|
1060 |
|
|
vTcl:DefineAlias "$top.but64" "Button12" vTcl:WidgetProc "Toplevel1" 1
|
1061 |
|
|
###################
|
1062 |
|
|
# SETTING GEOMETRY
|
1063 |
|
|
###################
|
1064 |
|
|
place $top.cpd86 \
|
1065 |
|
|
-in $top -x 0 -y 220 -width 612 -height 254 -anchor nw \
|
1066 |
|
|
-bordermode inside
|
1067 |
|
|
place $top.but65 \
|
1068 |
|
|
-in $top -x 528 -y 60 -width 66 -height 26 -anchor nw \
|
1069 |
|
|
-bordermode ignore
|
1070 |
|
|
place $top.lab61 \
|
1071 |
|
|
-in $top -x 20 -y 10 -width 396 -height 56 -anchor nw \
|
1072 |
|
|
-bordermode ignore
|
1073 |
|
|
place $top.lab67 \
|
1074 |
|
|
-in $top -x 20 -y 150 -width 336 -height 56 -anchor nw \
|
1075 |
|
|
-bordermode ignore
|
1076 |
|
|
place $top.lab71 \
|
1077 |
|
|
-in $top -x 20 -y 80 -width 336 -height 56 -anchor nw \
|
1078 |
|
|
-bordermode ignore
|
1079 |
|
|
place $top.cpd77 \
|
1080 |
|
|
-in $top -x 404 -y 133 -width 197 -height 28 -anchor nw \
|
1081 |
|
|
-bordermode ignore
|
1082 |
|
|
place $top.cpd78 \
|
1083 |
|
|
-in $top -x 392 -y 161 -width 209 -height 28 -anchor nw \
|
1084 |
|
|
-bordermode ignore
|
1085 |
|
|
place $top.cpd79 \
|
1086 |
|
|
-in $top -x 398 -y 189 -width 203 -height 28 -anchor nw \
|
1087 |
|
|
-bordermode ignore
|
1088 |
|
|
place $top.cpd80 \
|
1089 |
|
|
-in $top -x 391 -y 105 -width 210 -height 28 -anchor nw \
|
1090 |
|
|
-bordermode ignore
|
1091 |
|
|
place $top.cpd60 \
|
1092 |
|
|
-in $top -x 528 -y 10 -width 66 -height 26 -anchor nw \
|
1093 |
|
|
-bordermode ignore
|
1094 |
|
|
place $top.but60 \
|
1095 |
|
|
-in $top -x 450 -y 10 -width 79 -height 26 -anchor nw \
|
1096 |
|
|
-bordermode ignore
|
1097 |
|
|
place $top.but61 \
|
1098 |
|
|
-in $top -x 450 -y 35 -width 79 -height 26 -anchor nw \
|
1099 |
|
|
-bordermode ignore
|
1100 |
|
|
place $top.but62 \
|
1101 |
|
|
-in $top -x 450 -y 60 -width 79 -height 26 -anchor nw \
|
1102 |
|
|
-bordermode ignore
|
1103 |
|
|
place $top.but64 \
|
1104 |
|
|
-in $top -x 528 -y 35 -width 66 -height 26 -anchor nw \
|
1105 |
|
|
-bordermode ignore
|
1106 |
|
|
|
1107 |
|
|
vTcl:FireEvent $base <<Ready>>
|
1108 |
|
|
}
|
1109 |
|
|
|
1110 |
|
|
#############################################################################
|
1111 |
|
|
## Binding tag: _TopLevel
|
1112 |
|
|
|
1113 |
|
|
bind "_TopLevel" <<Create>> {
|
1114 |
|
|
if {![info exists _topcount]} {set _topcount 0}; incr _topcount
|
1115 |
|
|
}
|
1116 |
|
|
bind "_TopLevel" <<DeleteWindow>> {
|
1117 |
|
|
if {[set ::%W::_modal]} {
|
1118 |
|
|
vTcl:Toplevel:WidgetProc %W endmodal
|
1119 |
|
|
} else {
|
1120 |
|
|
destroy %W; if {$_topcount == 0} {exit}
|
1121 |
|
|
}
|
1122 |
|
|
}
|
1123 |
|
|
bind "_TopLevel" <Destroy> {
|
1124 |
|
|
if {[winfo toplevel %W] == "%W"} {incr _topcount -1}
|
1125 |
|
|
}
|
1126 |
|
|
#############################################################################
|
1127 |
|
|
## Binding tag: _vTclBalloon
|
1128 |
|
|
|
1129 |
|
|
|
1130 |
|
|
if {![info exists vTcl(sourcing)]} {
|
1131 |
|
|
bind "_vTclBalloon" <<KillBalloon>> {
|
1132 |
|
|
namespace eval ::vTcl::balloon {
|
1133 |
|
|
after cancel $id
|
1134 |
|
|
if {[winfo exists .vTcl.balloon]} {
|
1135 |
|
|
destroy .vTcl.balloon
|
1136 |
|
|
}
|
1137 |
|
|
set set 0
|
1138 |
|
|
}
|
1139 |
|
|
}
|
1140 |
|
|
bind "_vTclBalloon" <<vTclBalloon>> {
|
1141 |
|
|
if {$::vTcl::balloon::first != 1} {break}
|
1142 |
|
|
|
1143 |
|
|
namespace eval ::vTcl::balloon {
|
1144 |
|
|
set first 2
|
1145 |
|
|
if {![winfo exists .vTcl]} {
|
1146 |
|
|
toplevel .vTcl; wm withdraw .vTcl
|
1147 |
|
|
}
|
1148 |
|
|
if {![winfo exists .vTcl.balloon]} {
|
1149 |
|
|
toplevel .vTcl.balloon -bg black
|
1150 |
|
|
}
|
1151 |
|
|
wm overrideredirect .vTcl.balloon 1
|
1152 |
|
|
label .vTcl.balloon.l -text ${%W} -relief flat -bg #ffffaa -fg black -padx 2 -pady 0 -anchor w
|
1153 |
|
|
pack .vTcl.balloon.l -side left -padx 1 -pady 1
|
1154 |
|
|
wm geometry .vTcl.balloon +[expr {[winfo rootx %W]+[winfo width %W]/2}]+[expr {[winfo rooty %W]+[winfo height %W]+4}]
|
1155 |
|
|
set set 1
|
1156 |
|
|
}
|
1157 |
|
|
}
|
1158 |
|
|
bind "_vTclBalloon" <Button> {
|
1159 |
|
|
namespace eval ::vTcl::balloon {
|
1160 |
|
|
set first 0
|
1161 |
|
|
}
|
1162 |
|
|
vTcl:FireEvent %W <<KillBalloon>>
|
1163 |
|
|
}
|
1164 |
|
|
bind "_vTclBalloon" <Enter> {
|
1165 |
|
|
namespace eval ::vTcl::balloon {
|
1166 |
|
|
## self defining balloon?
|
1167 |
|
|
if {![info exists %W]} {
|
1168 |
|
|
vTcl:FireEvent %W <<SetBalloon>>
|
1169 |
|
|
}
|
1170 |
|
|
set set 0
|
1171 |
|
|
set first 1
|
1172 |
|
|
set id [after 500 {vTcl:FireEvent %W <<vTclBalloon>>}]
|
1173 |
|
|
}
|
1174 |
|
|
}
|
1175 |
|
|
bind "_vTclBalloon" <Leave> {
|
1176 |
|
|
namespace eval ::vTcl::balloon {
|
1177 |
|
|
set first 0
|
1178 |
|
|
}
|
1179 |
|
|
vTcl:FireEvent %W <<KillBalloon>>
|
1180 |
|
|
}
|
1181 |
|
|
bind "_vTclBalloon" <Motion> {
|
1182 |
|
|
namespace eval ::vTcl::balloon {
|
1183 |
|
|
if {!$set} {
|
1184 |
|
|
after cancel $id
|
1185 |
|
|
set id [after 500 {vTcl:FireEvent %W <<vTclBalloon>>}]
|
1186 |
|
|
}
|
1187 |
|
|
}
|
1188 |
|
|
}
|
1189 |
|
|
}
|
1190 |
|
|
|
1191 |
|
|
Window show .
|
1192 |
|
|
Window show .top60
|
1193 |
|
|
|
1194 |
|
|
main $argc $argv
|