기술지원 > QnA

PADS 제품에 대해서 자세히 알고 싶은가요? 사용 중에 궁금한 점이 있으신가요?
Support를 통해서 도움을 받으세요.
PADS 제품에 대한 문의와 사용상의 질문에 대한 답변을 드리고, 사용 동영상 강좌 등의 유용한 정보들을 제공해 드립니다.


모델심에서 Monitors TCL 관련해서

페이지 정보

2012-10-07 16:17  |  Posted By 탁형옥

본문

Modelsim을 이용한 HDL simulation 교재에 있는 Tcl/Tk관련 자료를 읽으면서 코딩을 해보고 있는중입니다.
그 곳에서 Tk 예제에 있는 Monitors를 만들고 싶으데요.

아래의 소스에서 어디를 고쳐야 할지 모르겠습니다.
조언 좀 부탁드립니다. 참고로 wave 창에 있는 신호값의 변화를 Reg_DAR value1의 값에 지속적으로 반영하고 트리거 조건에서 멈춰지게 하고 싶읍니다.
도와 주세요.

destroy  .buttons
toplevel .buttons

wm geometry .buttons +1500+900
wm title .buttons "monitor buttons"
wm resizable .buttons 0 0

set count 0
proc add_frame title {
  global frame count
  set frame .buttons.frame$count
  frame $frame -border 2 -relief groove
  label $frame.label -text $title
  pack  $frame      -side left -padx 2 -pady 2 -anchor n -fill both
  pack  $frame.label -side top  -padx 2 -pady 2
  incr count
}
proc add_button {title command} {
  global frame count
  button $frame.$count -text $title -command $command
  pack  $frame.$count -side top -pady 1 -padx 1 -fill x
  incr count
}

 
 
proc m {} {  # build_window
    global test_lines line_number Reg_DARBreak Reg_DARBreakV Reg_PCBreak Reg_ALUBreak
    toplevel .monitor

    label .monitor.label1 -relief raised -bd 1 -width 10 -text "Reg_DAR"
    grid .monitor.label1 -row 1 -column 1
    label .monitor.value1 -font {"Tahoma" 16} -justify right -width 20 -text "XXXXXXXX"
    grid .monitor.value1 -row 1 -column 2
    label .monitor.label11 -relief sunken -bd 1 -width 20 -text ""
    grid .monitor.label11 -row 1 -column 3
    checkbutton .monitor.cb1 -text "Break On Value" -variable Reg_DARBreak
    grid .monitor.cb1 -row 1 -column 4

    label .monitor.label2 -relief raised -bd 1 -width 10 -text "Reg_PC"
    grid .monitor.label2 -row 2 -column 1
    label .monitor.value2 -font {"Tahoma" 16} -justify right -width 20 -text "00000022"
    grid .monitor.value2 -row 2 -column 2
    label .monitor.label21 -relief sunken -bd 1 -width 20 -text ""
    grid .monitor.label21 -row 2 -column 3
    checkbutton .monitor.cb2 -text "Break On Value" -variable Reg_PCBreak
    grid .monitor.cb2 -row 2 -column 4

    label .monitor.label3 -relief raised -bd 1 -width 10 -text "Reg_ALU"
    grid .monitor.label3 -row 3 -column 1
    label .monitor.value3 -font {"Tahoma" 16} -justify right -width 20 -text "XXXXXXXX"
    grid .monitor.value3 -row 3 -column 2
    label .monitor.label31 -relief sunken -bd 1 -width 20 -text ""
    grid .monitor.label31 -row 3 -column 3
    checkbutton .monitor.cb3 -text "Break On Value" -variable Reg_ALUBreak
    grid .monitor.cb3 -row 3 -column 4

    label .monitor.label4 -relief raised -bd 1 -width 10 -text "Opcode"
    grid .monitor.label4 -row 4 -column 1
    label .monitor.value4 -font {"Tahoma" 16} -justify right -width 20 -text "XXXXXXXX"
    grid .monitor.value4 -row 4 -column 2
    checkbutton .monitor.cb4 -text "Break On Value" -variable OpcodeBreak
    grid .monitor.cb4 -row 4 -column 4

    label .monitor.label5 -relief raised -bd 1 -width 10 -text "Micro Code : "
    grid .monitor.label5 -row 5 -column 1

# get wave window path: view wave
# bind .main_pane.wave.interior.cs.body.pw.wf <B1-Motion> +get_value_at_cursor
# bind .main_pane.wave.interior.cs.body.pw.wf <Button-1> +get_value_at_cursor

# bind .main_pane.wave.interior.cs.body.pw.wf <Reg_DAR>  +get_value_at_cursor
bind  .main_pane.wave.interior.cs.body.pw.wf .monitor.value1  +get_value_at_cursor


}

add_frame  "Control"
add_button "m.(m)Monitor" { m }

Comments

ModelSim님의 댓글

ModelSim  |

Tcl/Tk Commnad 에 대해서는 저도 자세히 아는 부분이 아니라서 딱히 뭐라고 말씀을 못 드리겠습니다.
보내주신 코드는 +get_value_at_cursor 함수를 이용해 Wave 윈도우에서 값을 발체하는 부분입니다.
따라서 커서를 움직일때마다 해당 값이 변경하도록 하는 함수입니다.
트리거 같은 경우엔 stop 이라는 함수를 이용해서 사용할 수 있습니다.


제품 문의
제품에 대한 견적이나 자료를 요청하고 기타 문의 사항을 주실 수 있습니다.
제품문의
기술지원