⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xlcosim_dac_test_modelsim.tcl

📁 使用MATLAB工具
💻 TCL
字号:
proc openClient {} {
  set find_spare 0
  set port 1301
  set cid [socket localhost $port]
    echo Connected to Xilinx System Generator Block {}
    fileevent $cid readable "event_handler $cid"
  fconfigure $cid -buffering line
  return $cid
}

proc openWave {} {
  global vsim_version
  destroy .wave
  onerror {resume}
  quietly WaveActivateNextPane {} 0
  add wave -noupdate -height 30 -divider {  Block : "dac_test_black_box"  }
  add wave -label "  din" sim:/xlcosim_dac_test_modelsim/dac_test_black_box_din
  add wave -label "  fltsel" sim:/xlcosim_dac_test_modelsim/dac_test_black_box_fltsel
  add wave -label "  rstn" sim:/xlcosim_dac_test_modelsim/dac_test_black_box_rstn
  add wave -noupdate -height 11 -divider { }
  add wave -label "  dout" sim:/xlcosim_dac_test_modelsim/dac_test_black_box_dout
  add wave -noupdate -height 50 -divider {Clock Signals}
  add wave -label "  clk" sim:/xlcosim_dac_test_modelsim/clock_driver/clk
  add wave -label "  ce_1" sim:/xlcosim_dac_test_modelsim/clock_driver/ce_1
  add wave -label "  ce_2" sim:/xlcosim_dac_test_modelsim/clock_driver/ce_2
  TreeUpdate [SetDefaultTree]
  WaveRestoreCursors {0.100000000000 sec}
  WaveRestoreZoom {0 sec} {0.333333333333 sec}
  configure wave -justifyvalue right
  if [expr $vsim_version>2002.11] then {view wave -title {System Generator Co-Simulation   (from block "")} -x {51} -width {921}} else {view wave -x {51} -width {921}}
}

proc event_handler {cid} {
  set request ""
  if {[eof $cid]} {
      # If the socket is closed for any reason, the
      # handler will get called with eof.
    echo System Generator has closed its connection.
    close $cid
  } else {
    gets $cid message
    scan $message "%s" request
    if {$request == "f"} {
        scan $message "%s %s %s %s" request dac_test_black_box_din dac_test_black_box_fltsel dac_test_black_box_rstn 
        onerror { puts $cid 9 ; flush $cid}
        force dac_test_black_box_din $dac_test_black_box_din
        force dac_test_black_box_fltsel $dac_test_black_box_fltsel
        force dac_test_black_box_rstn $dac_test_black_box_rstn
        if [llength [find signal dac_test_black_box_din]] {puts $cid 2} else {puts $cid 9}
        flush $cid
    }
    if {$request == "r"} {
        scan $message "%s %s" request delta_t
        onerror { puts $cid 9 ; flush $cid }
        run $delta_t sec
        if [llength [find signal dac_test_black_box_din]] {puts $cid 3} else {puts $cid 9}
        flush $cid
    }
    if {$request == "e"} {
        set valMsg [examine dac_test_black_box_dout]
        puts $cid $valMsg
        flush $cid
    }
    if {$request == "quit"} {
      quit -sim
      echo simstats:
      simstats
    }
    if {$request == "die"} {
      close $cid
      quit -f
    }
    if {$request == "detach"} {
      echo simstats:
      simstats
      close $cid
    }
    if {$request == "offerExit"} {
      _add_menu main controls right SystemMenu SystemWindowFrame {Exit this Sysgen Co-Simulation Engine} {quit -force}
    }
  }
}

set cid [openClient]

global xlcosim_stat
global xlcosim_is_mxe
global vsim_version
set xlcosim_stat 0
set xlcosim_is_mxe 0

if ([info exists vsim_version]==0) {
  set xlcosim_is_mxe 1
  set vsim_version 2003.3
}
puts $cid $xlcosim_is_mxe
flush $cid
set UserTimeUnit sec
.main clear

onerror { global xlcosim_stat ; set xlcosim_stat 9 ;  resume }
vlib work
if {$xlcosim_stat==0} { 
  onerror { global xlcosim_stat ; set xlcosim_stat 9;  resume }
  vlog -93 iir_filter.v
   update
  puts $cid 3
  flush $cid
}

if {$xlcosim_stat==0} { 
  onerror { global xlcosim_stat ; set xlcosim_stat 9;  resume }
  vlog -93 iir_6_filter.v
   update
  puts $cid 3
  flush $cid
}

if {$xlcosim_stat==0} { 
  onerror { global xlcosim_stat ; set xlcosim_stat 9;  resume }
  vlog -93 dac_test_black_box_wrapper.v
   update
  puts $cid 3
  flush $cid
}

if {$xlcosim_stat==0} { 
  onerror { global xlcosim_stat ; set xlcosim_stat 9;  resume }
  vcom -93 xlcosim_dac_test_modelsim_clk_drvr.vhd
   update
  puts $cid 3
  flush $cid
}

if {$xlcosim_stat==0} { 
  onerror { global xlcosim_stat ; set xlcosim_stat 9;  resume }
  if {$xlcosim_is_mxe==1} { 
    vcom -93 xlcosim_dac_test_modelsim.vhd
  } else {
    vcom -93 xlcosim_dac_test_modelsimf.vhd
  }
}
if {$xlcosim_stat==0} {
  onerror { global xlcosim_stat ; set xlcosim_stat 9; resume }
  onElabError { global xlcosim_stat ; set xlcosim_stat 9; resume }
  vsim work.xlcosim_dac_test_modelsim -title {System Generator Co-Simulation   (from block "")}
 update
  if {$xlcosim_stat==0} {
    onerror { global xlcosim_stat ; set xlcosim_stat 9; resume }
    if [llength [find signal dac_test_black_box_din]] {} else {global xlcosim_stat ; set xlcosim_stat 9  }
}
}

puts $cid $xlcosim_stat
flush $cid
if {$xlcosim_stat!=0} {
  close $cid
}

if (($xlcosim_stat==0)&&($xlcosim_is_mxe==0)) {
  run -all
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -