OpenCores
URL https://opencores.org/ocsvn/bustap-jtag/bustap-jtag/trunk

Subversion Repositories bustap-jtag

[/] [bustap-jtag/] [trunk/] [cmd/] [xilinx/] [chipscope_vio_console.tcl] - Blame information for rev 19

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 18 ash_riple
##**************************************************************
2
## Module             : chipscope_vio_console.tcl
3
## Platform           : Windows xp sp2
4
## Author             : Bibo Yang  (ash_riple@hotmail.com)
5
## Organization       : www.opencores.org
6
## Revision           : 2.3
7
## Date               : 2012/11/22
8
## Description        : Tcl/Tk GUI for the up_monitor
9
##**************************************************************
10
 
11
############################
12
## include the XILINX procs
13
############################
14
# Get the Cse DLL's and globals
15
if {[info exists env(XIL_CSE_TCL)]} {
16
    if {[string length $env(XIL_CSE_TCL)] > 0} {
17
        puts "Sourcing from XIL_CSE_TCL: $env(XIL_CSE_TCL) ..."
18
        source $env(XIL_CSE_TCL)/csejtag.tcl
19
        source $env(XIL_CSE_TCL)/csefpga.tcl
20
        source $env(XIL_CSE_TCL)/csecore.tcl
21
        source $env(XIL_CSE_TCL)/csevio.tcl
22
    } else {
23
        puts "Sourcing from XILINX: $env(XILINX)/cse/tcl ..."
24
        source $env(XILINX)/cse/tcl/csejtag.tcl
25
        source $env(XILINX)/cse/tcl/csefpga.tcl
26
        source $env(XILINX)/cse/tcl/csecore.tcl
27
        source $env(XILINX)/cse/tcl/csevio.tcl
28
    }
29
} else {
30
    puts "Sourcing from XILINX: $env(XILINX)/cse/tcl ..."
31
    source $env(XILINX)/cse/tcl/csejtag.tcl
32
    source $env(XILINX)/cse/tcl/csefpga.tcl
33
    source $env(XILINX)/cse/tcl/csecore.tcl
34
    source $env(XILINX)/cse/tcl/csevio.tcl
35
}
36
 
37
namespace import ::chipscope::*
38
 
39
###########################
40
## define cable parameters
41
###########################
42
# Create global variables
43
set ILA_STATUS_WORD_BIT_LEN  512
44
 
45
# Parallel IV Cable
46
set PARALLEL_CABLE_ARGS [list "port=LPT1" "frequency=2500000"]
47
# "frequency=5000000 | 2500000 | 1250000 | 625000 | 200000"
48
 
49
# Platform USB Cable
50
set PLATFORM_USB_CABLE_ARGS [list "port=USB2" "frequency=3000000"]
51
# frequency="12000000 | 6000000 | 3000000 | 1500000 | 750000"
52
 
53
# Digilent Cable
54
# Digilent Cables have default arguments, if there is only one cable connected it will automatically connect to it.
55
set DIGILENT_CABLE_ARGS {}
56
 
57
###########################
58
## setup the chain
59
###########################
60
proc scan_chain {} {
61
        global PLATFORM_USB_CABLE_ARGS
62
        global CSEJTAG_TARGET_PLATFORMUSB
63
        global PARALLEL_CABLE_ARGS
64
        global CSEJTAG_TARGET_PARALLEL
65
        global DIGILENT_CABLE_ARGS
66
        global CSEJTAG_TARGET_DIGILENT
67
        global CSEJTAG_SCAN_DEFAULT
68
        global CSEJTAG_LOCKED_ME
69
        global CSEJTAG_TEST_LOGIC_RESET
70
        global CSEJTAG_SHIFT_READ
71
        global CSEJTAG_RUN_TEST_IDLE
72
 
73
        global log
74
        $log insert end "JTAG Chain Scanning report:\n"
75
        $log insert end "****************************************\n"
76
        global blaster_cables
77
        set blaster_cables [list -usb -par -dig]
78
        set cable_num 0
79
        foreach blaster_cable $blaster_cables {
80
                incr cable_num
81
                if {[string equal "-usb" $blaster_cable]} {
82
                        set blaster_cable_name "Platform USB Cable"
83
                } elseif {[string equal "-par" $blaster_cable]} {
84
                        set blaster_cable_name "Parallel Cable"
85
                } elseif {[string equal "-dig" $blaster_cable]} {
86
                        set blaster_cable_name "Digilent Cable"
87
                }
88
                $log insert end "@$cable_num: $blaster_cable_name\n"
89
        }
90
        $log insert end "\n****************************************\n"
91
 
92
        global device_list
93
        set device_list ""
94
        foreach blaster_cable $blaster_cables {
95
                if {[string equal "-usb" $blaster_cable]} {
96
                        set blaster_cable_name "Platform USB Cable"
97
                        set CABLE_NAME $CSEJTAG_TARGET_PLATFORMUSB
98
                        set CABLE_ARGS $PLATFORM_USB_CABLE_ARGS
99
                } elseif {[string equal "-par" $blaster_cable]} {
100
                        set blaster_cable_name "Parallel Cable"
101
                        set CABLE_NAME $CSEJTAG_TARGET_PARALLEL
102
                        set CABLE_ARGS $PARALLEL_CABLE_ARGS
103
                } elseif {[string equal "-dig" $blaster_cable]} {
104
                        set blaster_cable_name "Digilent Cable"
105
                        set CABLE_NAME $CSEJTAG_TARGET_DIGILENT
106
                        set CABLE_ARGS $DIGILENT_CABLE_ARGS
107
                }
108
                $log insert end "$blaster_cable_name:\n"
109
                lappend device_list $blaster_cable_name
110
 
111
                if {[catch {
112
                # start chipscope session
113
                set handle [csejtag_session create 0 $blaster_cable]
114
                # open cable
115
                csejtag_target open $handle $CABLE_NAME 0 $CABLE_ARGS
116
                # lock cable
117
                set cablelock [csejtag_target lock $handle 5000]
118
 
119
                csejtag_tap autodetect_chain $handle $CSEJTAG_SCAN_DEFAULT
120
                set deviceCount [csejtag_tap get_device_count $handle]
121
                csejtag_tap navigate $handle $CSEJTAG_TEST_LOGIC_RESET 0 0
122
                for {set deviceIndex 0} {$deviceIndex < $deviceCount} {incr deviceIndex} {
123
                        set idcodeBuffer [csejtag_tap get_device_idcode $handle $deviceIndex]
124
                        set deviceName [csejtag_db get_device_name_for_idcode $handle $idcodeBuffer]
125
                        set idcode [format "%x" [binaryStringToInt $idcodeBuffer]]
126
                        $log insert end "@[expr $deviceIndex+1]: $deviceName (0x$idcode)\n"
127
                        lappend device_list $deviceName
128
                }
129
 
130
#altera         #lappend device_list $blaster_cable
131
                #if [catch {get_device_names -hardware_name $blaster_cable} error_msg] {
132
                #       $log insert end $error_msg
133
                #       lappend device_list $error_msg
134
                #} else {
135
                #       foreach test_device [get_device_names -hardware_name $blaster_cable] {
136
                #               $log insert end "$test_device\n"
137
                #       }
138
                #       lappend device_list [get_device_names -hardware_name $blaster_cable]
139
                #}
140
 
141
                # unlock cable
142
                csejtag_target unlock $handle
143
                # close device
144
                csejtag_target close $handle
145
                # end chipscope session
146
                csejtag_session destroy $handle
147
                } result]} {
148
                        lappend device_list $result
149
                        $log insert end "$result\n"
150
                }
151
        }
152
}
153
 
154
proc open_jtag_device {{blaster_cable "-dig"}} {
155
        global handle
156
        global CABLE_NAME
157
        global CABLE_ARGS
158
        global CSEJTAG_SCAN_DEFAULT
159
 
160
        if {[info exist handle]} { close_jtag_device }
161
        set handle [csejtag_session create 0 $blaster_cable]
162
        csejtag_target open $handle $CABLE_NAME 0 $CABLE_ARGS
163
        set cablelock [csejtag_target lock $handle 5000]
164
        csejtag_tap autodetect_chain $handle $CSEJTAG_SCAN_DEFAULT
165
 
166
#altera #open_device -hardware_name $test_cable -device_name $test_device
167
        ## Retrieve device id code.
168
        #device_lock -timeout 5
169
        #device_ir_shift -ir_value 6 -no_captured_ir_value
170
        #set idcode "0x[device_dr_shift -length 32 -value_in_hex]"
171
        #device_unlock
172
        return 0
173
}
174
 
175
proc close_jtag_device {} {
176
        global handle
177
        if {[info exist handle]} {
178
                catch {csejtag_target unlock $handle}
179
                catch {csejtag_target close $handle}
180
                catch {csejtag_session destroy $handle}
181
                unset handle
182
        }
183
}
184
 
185
proc select_device {{cableNum 3} {deviceNum 2}} {
186
        global log
187
        global device_list
188
        global blaster_cables
189
        global handle
190
        global PLATFORM_USB_CABLE_ARGS
191
        global CSEJTAG_TARGET_PLATFORMUSB
192
        global PARALLEL_CABLE_ARGS
193
        global CSEJTAG_TARGET_PARALLEL
194
        global DIGILENT_CABLE_ARGS
195
        global CSEJTAG_TARGET_DIGILENT
196
        global CABLE_NAME
197
        global CABLE_ARGS
198
 
199
        $log insert end "\n****************************************\n"
200
        set test_cable [lindex $device_list [expr 2*$cableNum-2]]
201
        $log insert end "Selected Cable : $test_cable\n"
202
        set test_device [lindex $device_list [expr 2*$cableNum-2+($deviceNum)]]
203
        $log insert end "Selected Device: $test_device\n"
204
 
205
        set blaster_cable [lindex $blaster_cables [expr $cableNum-1]]
206
        if {[string equal "-usb" $blaster_cable]} {
207
                set blaster_cable_name "Platform USB Cable"
208
                set CABLE_NAME $CSEJTAG_TARGET_PLATFORMUSB
209
                set CABLE_ARGS $PLATFORM_USB_CABLE_ARGS
210
        } elseif {[string equal "-par" $blaster_cable]} {
211
                set blaster_cable_name "Parallel Cable"
212
                set CABLE_NAME $CSEJTAG_TARGET_PARALLEL
213
                set CABLE_ARGS $PARALLEL_CABLE_ARGS
214
        } elseif {[string equal "-dig" $blaster_cable]} {
215
                set blaster_cable_name "Digilent Cable"
216
                set CABLE_NAME $CSEJTAG_TARGET_DIGILENT
217
                set CABLE_ARGS $DIGILENT_CABLE_ARGS
218
        }
219
 
220
        open_jtag_device $blaster_cable
221
 
222
        global deviceIndex
223
        set deviceIndex [expr $deviceNum-1]
224
 
225
        #set test_cable [lindex $device_list [expr 2*$cableNum-2]]
226
        #$log insert end "Selected Cable : $test_cable\n"
227
        #set test_device [lindex [lindex $device_list [expr 2*$cableNum-1]] [expr $deviceNum-1]]
228
        #$log insert end "Selected Device: $test_device\n"
229
#altera #set jtagIdCode [open_jtag_device $test_cable $test_device]
230
        #$log insert end "Device ID code : $jtagIdCode\n"
231
 
232
        reset_fifo
233
        query_usedw
234
}
235
 
236
########################
237
## operate the VIO core
238
########################
239
proc reset_fifo {} {
240
        global handle
241
        global deviceIndex
242
        global CSEVIO_SYNC_INPUT
243
        global CSEVIO_SYNC_OUTPUT
244
 
245
        set userRegNumber 1
246
        set coreIndex 0
247
        set coreRef [list $deviceIndex $userRegNumber $coreIndex]
248
 
249
        csevio_init_core $handle $coreRef
250
        csevio_define_signal $handle $coreRef "reset" $CSEVIO_SYNC_OUTPUT 1
251
        set outputTclArray(reset) 1
252
        csevio_write_values $handle $coreRef outputTclArray
253
        set outputTclArray(reset) 0
254
        csevio_write_values $handle $coreRef outputTclArray
255
        csevio_terminate_core $handle $coreRef
256
 
257
        return 0
258
}
259
 
260
proc query_usedw {} {
261
        global fifoUsedw
262
        global handle
263
        global deviceIndex
264
        global CSEVIO_SYNC_INPUT
265
        global CSEVIO_SYNC_OUTPUT
266
 
267
        set userRegNumber 1
268
        set coreIndex 0
269
        set coreRef [list $deviceIndex $userRegNumber $coreIndex]
270
 
271
        csevio_init_core $handle $coreRef
272
        csevio_define_bus $handle $coreRef "usedWord" $CSEVIO_SYNC_INPUT [list 82 83 84 85 86 87 88 89 90 91]
273
        csevio_read_values $handle $coreRef inputTclArray
274
        set usedw $inputTclArray(usedWord)
275
        csevio_terminate_core $handle $coreRef
276
 
277
        set tmp 0x
278
        append tmp $usedw
279
        set usedw [format "%i" $tmp]
280
        set fifoUsedw $usedw
281
        return $usedw
282
}
283
 
284
proc read_fifo {} {
285
        global handle
286
        global deviceIndex
287
        global CSEVIO_SYNC_INPUT
288
        global CSEVIO_SYNC_OUTPUT
289
 
290
        set userRegNumber 1
291
        set coreIndex 0
292
        set coreRef [list $deviceIndex $userRegNumber $coreIndex]
293
 
294
        csevio_init_core $handle $coreRef
295
        csevio_define_signal $handle $coreRef "readen" $CSEVIO_SYNC_OUTPUT 0
296
        set outputTclArray(readen) 1
297
        csevio_write_values $handle $coreRef outputTclArray
298
        set outputTclArray(readen) 0
299
        csevio_write_values $handle $coreRef outputTclArray
300
        csevio_terminate_core $handle $coreRef
301
 
302
        csevio_init_core $handle $coreRef
303
        csevio_define_bus $handle $coreRef "fifoContent" $CSEVIO_SYNC_INPUT [list  0  1  2  3  4  5  6  7  8  9\
304
                                                                                  10 11 12 13 14 15 16 17 18 19\
305
                                                                                  20 21 22 23 24 25 26 27 28 29\
306
                                                                                  30 31 32 33 34 35 36 37 38 39\
307
                                                                                  40 41 42 43 44 45 46 47 48 49\
308
                                                                                  50 51 52 53 54 55 56 57 58 59\
309
                                                                                  60 61 62 63 64 65 66 67 68 69\
310
                                                                                  70 71 72 73 74 75 76 77 78 79\
311
                                                                                  80 81]
312
        csevio_read_values $handle $coreRef inputTclArray
313
        set fifo_data $inputTclArray(fifoContent)
314
        csevio_terminate_core $handle $coreRef
315
 
316
        return $fifo_data
317
}
318
 
319
proc config_addr {{mask 0100000000} {mask_id 1}} {
320
        global log
321
        global handle
322
        global deviceIndex
323
        global CSEVIO_SYNC_INPUT
324
        global CSEVIO_SYNC_OUTPUT
325
 
326
        set userRegNumber 1
327
        set coreIndex 1
328
        set coreRef [list $deviceIndex $userRegNumber $coreIndex]
329
 
330
        set mask_leng [string length $mask]
331
        if {$mask_leng!=10} {
332
                $log insert end "\nError: Wrong address mask length @$mask_id: [expr $mask_leng-2]. Expects: 8.\n"
333
 
334
        } else {
335
                csevio_init_core $handle $coreRef
336
                csevio_define_bus $handle $coreRef "addr" $CSEVIO_SYNC_OUTPUT [list  0  1  2  3  4  5  6  7  8  9\
337
                                                                                    10 11 12 13 14 15 16 17 18 19\
338
                                                                                    20 21 22 23 24 25 26 27 28 29\
339
                                                                                    30 31 32 33 34 35 36 37 38 39]
340
                set outputTclArray(addr) $mask
341
                csevio_write_values $handle $coreRef outputTclArray
342
                csevio_terminate_core $handle $coreRef
343
        }
344
        return 0
345
}
346
 
347
proc config_trig {{trig 00000000000000} {pnum 000}} {
348
        global log
349
        global handle
350
        global deviceIndex
351
        global CSEVIO_SYNC_INPUT
352
        global CSEVIO_SYNC_OUTPUT
353
 
354
        set userRegNumber 1
355
        set coreIndex 2
356
        set coreRef [list $deviceIndex $userRegNumber $coreIndex]
357
 
358
        set trig_leng [string length $trig]
359
        if {$trig_leng!=14} {
360
                $log insert end "\nError: Wrong trigger condition length: [expr $trig_leng-2]. Expects: 4+8.\n"
361
        } else {
362
        if {[format "%d" 0x$pnum]>=511} {
363
                $log insert end "\nError: Wrong trigger pre-capture value: [format "%d" 0x$pnum]. Expects: 0~510.\n"
364
        } else {
365
                csevio_init_core $handle $coreRef
366
                csevio_define_bus $handle $coreRef "trig" $CSEVIO_SYNC_OUTPUT [list  0  1  2  3  4  5  6  7  8  9\
367
                                                                                    10 11 12 13 14 15 16 17 18 19\
368
                                                                                    20 21 22 23 24 25 26 27 28 29\
369
                                                                                    30 31 32 33 34 35 36 37 38 39\
370
                                                                                    40 41 42 43 44 45 46 47 48 49\
371
                                                                                    50 51 52 53 54 55 56 57 58 59\
372
                                                                                    60 61 62 63 64 65]
373
                set outputTclArray(trig) [append pnum $trig]
374
                csevio_write_values $handle $coreRef outputTclArray
375
                csevio_terminate_core $handle $coreRef
376
        }
377
        }
378
        return 0
379
}
380
 
381
##########################
382
## upper level operations
383
##########################
384
proc updateAddrConfig {} {
385
        global address_span1
386
        global address_span2
387
        global address_span3
388
        global address_span4
389
        global address_span5
390
        global address_span6
391
        global address_span7
392
        global address_span8
393
        global address_span9
394
        global address_span10
395
        global address_span11
396
        global address_span12
397
        global address_span13
398
        global address_span14
399
        global address_span15
400
        global address_span16
401
        global address_span_en1
402
        global address_span_en2
403
        global address_span_en3
404
        global address_span_en4
405
        global address_span_en5
406
        global address_span_en6
407
        global address_span_en7
408
        global address_span_en8
409
        global address_span_en9
410
        global address_span_en10
411
        global address_span_en11
412
        global address_span_en12
413
        global address_span_en13
414
        global address_span_en14
415
        global address_span_en15
416
        global address_span_en16
417
        global addr_wren
418
        global addr_rden
419
        for {set i 1} {$i<=16} {incr i} {
420
                set    mask [format "%1X" [expr $i-1]]
421
                append mask [format "%1X" [expr $addr_wren*8+$addr_rden*4+[set address_span_en$i]]]
422
                append mask [set address_span$i]
423
                config_addr $mask $i
424
        }
425
}
426
 
427
proc initAddrConfig {} {
428
        global log
429
        global address_span1
430
        global address_span2
431
        global address_span3
432
        global address_span4
433
        global address_span5
434
        global address_span6
435
        global address_span7
436
        global address_span8
437
        global address_span9
438
        global address_span10
439
        global address_span11
440
        global address_span12
441
        global address_span13
442
        global address_span14
443
        global address_span15
444
        global address_span16
445
        for {set i 1} {$i<=8} {incr i} {
446
                if {[set address_span$i]==""} {
447
                        set address_span$i ffff0000
448
        }
449
        }
450
        for {set i 9} {$i<=16} {incr i} {
451
                if {[set address_span$i]==""} {
452
                        set address_span$i 00000000
453
        }
454
}
455
}
456
 
457
proc initTrigConfig {} {
458
        global triggerAddr
459
        global triggerData
460
        global triggerPnum
461
        if {[set triggerAddr]==""} {
462
                set triggerAddr ffff
463
        }
464
        if {[set triggerData]==""} {
465
                set triggerData a5a5a5a5
466
        }
467
        if {[set triggerPnum]==""} {
468
                set triggerPnum 0
469
        }
470
}
471
 
472
proc updateTrigger {{trigCmd 0}} {
473
        global triggerAddr
474
        global triggerData
475
        global triggerPnum
476
        global trig_wren
477
        global trig_rden
478
        global trig_aden
479
        global trig_daen
480
        set    triggerValue [format "%1X" [expr $trig_aden*8+$trig_daen*4+0]]
481
        append triggerValue [format "%1X" [expr $trig_wren*8+$trig_rden*4+$trigCmd]]
482
        append triggerValue $triggerAddr
483
        append triggerValue $triggerData
484
        config_trig $triggerValue [format "%03X" $triggerPnum]
485
}
486
 
487
proc startTrigger {} {
488
        global trig_wren
489
        global trig_rden
490
        global trig_aden
491
        global trig_daen
492
        global log
493
        if {[expr $trig_wren+$trig_rden]==2} {
494
                $log insert end "\nWarning: @WR & @RD, unreachable trigger condition.\n"
495
        }
496
        set trigEnable [expr $trig_wren+$trig_rden+$trig_aden+$trig_daen]
497
        if {$trigEnable>0} {
498
                updateTrigger 2
499
                reset_fifo
500
                query_usedw
501
                updateTrigger 3
502
        } else {
503
                updateTrigger 0
504
        }
505
}
506
 
507
proc reset_fifo_ptr {} {
508
        reset_fifo
509
        query_usedw
510
}
511
 
512
proc query_fifo_usedw {} {
513
        query_usedw
514
}
515
 
516
proc read_fifo_content {} {
517
        global log
518
        global fifoUsedw
519
        $log insert end "\n****************************************\n"
520
        for {set i 0} {$i<$fifoUsedw} {incr i} {
521
                set fifoContent [read_fifo]
522
                set ok_trig [expr [format "%d" 0x[string index $fifoContent 0]]/2]
523
                set wr_cptr [expr [format "%d" 0x[string index $fifoContent 0]]%2]
524
                set tm_cptr [format "%d"       0x[string range $fifoContent  1  8]]
525
                set ad_cptr                      [string range $fifoContent  9 12]
526
                set da_cptr                      [string range $fifoContent 13 20]
527
                if $ok_trig {
528
                        $log insert end "@@@@@@@@@@@@@@@@@@@@\n"
529
                }
530
                if $wr_cptr {
531
                        $log insert end "WR 0x8000$ad_cptr 0x$da_cptr @$tm_cptr\n"
532
                } else {
533
                        $log insert end "RD 0x8000$ad_cptr 0x$da_cptr @$tm_cptr\n"
534
                }
535
        }
536
        query_usedw
537
}
538
 
539
proc clear_log {} {
540
        global log
541
        $log delete insert end
542
}
543
 
544
proc quit {} {
545
        global exit_console
546
        close_jtag_device
547
        destroy .mainframe
548
        destroy .
549
        set exit_console 1
550
}
551
 
552
##############################
553
## Miscellence functions
554
##############################
555
proc binaryStringToInt {binarystring} {
556
    set len [string length $binarystring]
557
    set retval 0
558
    for {set i 0} {$i < $len} {incr i} {
559
        set retval [expr $retval << 1]
560
        if {[string index $binarystring $i] == "1"} {
561
            set retval [expr $retval | 1]
562
        }
563
    }
564
    return $retval
565
}
566
 
567
##############################
568
## Main to setup GUI
569
##############################
570
# set the varialble to keep Tk GUI
571
set exit_console 0
572
 
573
# set the main window
574
wm withdraw .
575
toplevel .mainframe
576
wm title .mainframe "www.OpenCores.org: uP Transaction Monitor"
577
pack propagate .mainframe true
578
 
579
# set the www.OpenCores.org logo
580
frame .mainframe.fig -bg white
581
pack .mainframe.fig -expand true -fill both
582 19 ash_riple
image create photo logo -format gif -file "../common/OpenCores.gif"
583 18 ash_riple
label .mainframe.fig.logo -image logo -bg white
584
pack .mainframe.fig.logo
585
 
586
# set the JTAG utility
587
frame .mainframe.jtag -relief groove -borderwidth 5
588
pack .mainframe.jtag
589
button .mainframe.jtag.scan -text {Scan JTAG Chain} -command {scan_chain}
590
button .mainframe.jtag.select -text {Select JTAG Device :} -command {select_device $cableNum $deviceNum}
591
button .mainframe.jtag.deselect -text {DeSelect JTAG Device} -command {close_jtag_device}
592
label .mainframe.jtag.cable -text {Cable @}
593
label .mainframe.jtag.devic -text {Device @}
594
entry .mainframe.jtag.cable_num -textvariable cableNum -width 5
595
entry .mainframe.jtag.devic_num -textvariable deviceNum -width 5
596
pack .mainframe.jtag.scan .mainframe.jtag.select \
597
     .mainframe.jtag.cable .mainframe.jtag.cable_num \
598
     .mainframe.jtag.devic .mainframe.jtag.devic_num \
599
     .mainframe.jtag.deselect \
600
     -side left -ipadx 0
601
 
602
# set the inclusive address entries
603
frame .mainframe.f1 -relief groove -borderwidth 5
604
pack .mainframe.f1
605
label .mainframe.f1.incl_addr -text {Inclusive Addr:}
606
entry .mainframe.f1.address_span1 -textvariable address_span1 -width 8
607
entry .mainframe.f1.address_span2 -textvariable address_span2 -width 8
608
entry .mainframe.f1.address_span3 -textvariable address_span3 -width 8
609
entry .mainframe.f1.address_span4 -textvariable address_span4 -width 8
610
entry .mainframe.f1.address_span5 -textvariable address_span5 -width 8
611
entry .mainframe.f1.address_span6 -textvariable address_span6 -width 8
612
entry .mainframe.f1.address_span7 -textvariable address_span7 -width 8
613
entry .mainframe.f1.address_span8 -textvariable address_span8 -width 8
614
checkbutton .mainframe.f1.address_span_en1 -variable address_span_en1
615
checkbutton .mainframe.f1.address_span_en2 -variable address_span_en2
616
checkbutton .mainframe.f1.address_span_en3 -variable address_span_en3
617
checkbutton .mainframe.f1.address_span_en4 -variable address_span_en4
618
checkbutton .mainframe.f1.address_span_en5 -variable address_span_en5
619
checkbutton .mainframe.f1.address_span_en6 -variable address_span_en6
620
checkbutton .mainframe.f1.address_span_en7 -variable address_span_en7
621
checkbutton .mainframe.f1.address_span_en8 -variable address_span_en8
622
pack .mainframe.f1.incl_addr \
623
     .mainframe.f1.address_span_en1 .mainframe.f1.address_span1 \
624
     .mainframe.f1.address_span_en2 .mainframe.f1.address_span2 \
625
     .mainframe.f1.address_span_en3 .mainframe.f1.address_span3 \
626
     .mainframe.f1.address_span_en4 .mainframe.f1.address_span4 \
627
     .mainframe.f1.address_span_en5 .mainframe.f1.address_span5 \
628
     .mainframe.f1.address_span_en6 .mainframe.f1.address_span6 \
629
     .mainframe.f1.address_span_en7 .mainframe.f1.address_span7 \
630
     .mainframe.f1.address_span_en8 .mainframe.f1.address_span8 \
631
     -side left -ipadx 0
632
 
633
# set the exclusive address entries
634
frame .mainframe.f2 -relief groove -borderwidth 5
635
pack .mainframe.f2
636
label .mainframe.f2.excl_addr -text {Exclusive Addr:}
637
entry .mainframe.f2.address_span9  -textvariable address_span9  -width 8
638
entry .mainframe.f2.address_span10 -textvariable address_span10 -width 8
639
entry .mainframe.f2.address_span11 -textvariable address_span11 -width 8
640
entry .mainframe.f2.address_span12 -textvariable address_span12 -width 8
641
entry .mainframe.f2.address_span13 -textvariable address_span13 -width 8
642
entry .mainframe.f2.address_span14 -textvariable address_span14 -width 8
643
entry .mainframe.f2.address_span15 -textvariable address_span15 -width 8
644
entry .mainframe.f2.address_span16 -textvariable address_span16 -width 8
645
checkbutton .mainframe.f2.address_span_en9  -variable address_span_en9
646
checkbutton .mainframe.f2.address_span_en10 -variable address_span_en10
647
checkbutton .mainframe.f2.address_span_en11 -variable address_span_en11
648
checkbutton .mainframe.f2.address_span_en12 -variable address_span_en12
649
checkbutton .mainframe.f2.address_span_en13 -variable address_span_en13
650
checkbutton .mainframe.f2.address_span_en14 -variable address_span_en14
651
checkbutton .mainframe.f2.address_span_en15 -variable address_span_en15
652
checkbutton .mainframe.f2.address_span_en16 -variable address_span_en16
653
pack .mainframe.f2.excl_addr \
654
     .mainframe.f2.address_span_en9  .mainframe.f2.address_span9  \
655
     .mainframe.f2.address_span_en10 .mainframe.f2.address_span10 \
656
     .mainframe.f2.address_span_en11 .mainframe.f2.address_span11 \
657
     .mainframe.f2.address_span_en12 .mainframe.f2.address_span12 \
658
     .mainframe.f2.address_span_en13 .mainframe.f2.address_span13 \
659
     .mainframe.f2.address_span_en14 .mainframe.f2.address_span14 \
660
     .mainframe.f2.address_span_en15 .mainframe.f2.address_span15 \
661
     .mainframe.f2.address_span_en16 .mainframe.f2.address_span16 \
662
     -side left -ipadx 0
663
initAddrConfig
664
 
665
# set the address configuration buttons
666
frame .mainframe.addr_cnfg -relief groove -borderwidth 5
667
pack .mainframe.addr_cnfg
668
checkbutton .mainframe.addr_cnfg.wren -text {WR} -variable addr_wren
669
checkbutton .mainframe.addr_cnfg.rden -text {RD} -variable addr_rden
670
button .mainframe.addr_cnfg.config -text {Apply Address Filter} -command {updateAddrConfig}
671
pack .mainframe.addr_cnfg.wren .mainframe.addr_cnfg.rden .mainframe.addr_cnfg.config \
672
     -side left -ipadx 0
673
 
674
# set the transaction trigger controls
675
frame .mainframe.trig -relief groove -borderwidth 5
676
pack .mainframe.trig
677
button .mainframe.trig.starttrig -text {Apply Trigger Condition} -command {startTrigger}
678
entry .mainframe.trig.trigvalue_addr -textvar triggerAddr -width 4
679
entry .mainframe.trig.trigvalue_data -textvar triggerData -width 8
680
checkbutton .mainframe.trig.trigaddr -text {@Addr:} -variable trig_aden
681
checkbutton .mainframe.trig.trigdata -text {@Data:} -variable trig_daen
682
checkbutton .mainframe.trig.wren -text {@WR} -variable trig_wren
683
checkbutton .mainframe.trig.rden -text {@RD} -variable trig_rden
684
label .mainframe.trig.pnum -text {Pre-Capture:}
685
entry .mainframe.trig.trigvalue_pnum -textvar triggerPnum -width 4
686
pack .mainframe.trig.pnum .mainframe.trig.trigvalue_pnum \
687
     .mainframe.trig.wren .mainframe.trig.rden \
688
     .mainframe.trig.trigaddr .mainframe.trig.trigvalue_addr \
689
     .mainframe.trig.trigdata .mainframe.trig.trigvalue_data \
690
     .mainframe.trig.starttrig \
691
     -side left -ipadx 0
692
initTrigConfig
693
 
694
# set the control buttons
695
frame .mainframe.fifo -relief groove -borderwidth 5
696
pack .mainframe.fifo
697
button .mainframe.fifo.reset -text {Reset FIFO} -command {reset_fifo_ptr}
698
button .mainframe.fifo.loop -text {Query Used Word} -command {query_fifo_usedw}
699
label .mainframe.fifo.usedw  -textvariable fifoUsedw -relief sunken -width 4
700
button .mainframe.fifo.read     -text {Read FIFO} -command {read_fifo_content}
701
button .mainframe.fifo.clear -text {Clear Log} -command {clear_log}
702
button .mainframe.fifo.quit -text {Quit} -command {quit}
703
pack .mainframe.fifo.reset .mainframe.fifo.loop .mainframe.fifo.usedw .mainframe.fifo.read .mainframe.fifo.clear .mainframe.fifo.quit \
704
     -side left -ipadx 0
705
 
706
# set the log window
707
frame .mainframe.log -relief groove -borderwidth 5
708
set log [text .mainframe.log.text -width 80 -height 25 \
709
        -borderwidth 2 -relief sunken -setgrid true \
710
        -yscrollcommand {.mainframe.log.scroll set}]
711
scrollbar .mainframe.log.scroll -command {.mainframe.log.text yview}
712
pack .mainframe.log.scroll -side right -fill y
713
pack .mainframe.log.text -side left -fill both -expand true
714
pack .mainframe.log -side top -fill both -expand true
715
 
716
# make the program wait for exit signal
717
vwait exit_console
718
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.