module TdlSpace

end

定义语法糖

Public Class Methods

dev_interface_to_tcl(flag: gname, iname: '' , signals: []) click to toggle source
# File lib/tdl/exlib/dve_tcl.rb, line 86
    def self.dev_interface_to_tcl(flag: gname, iname: '' , signals: [])
        sst = %Q{
## -------------- #{flag}.#{iname} -------------------------
## set _wave_session_group_#{flag}_#{iname} Group1
## set _wave_session_group_#{flag}_#{iname} [gui_sg_generate_new_name -seed #{iname} -parent $_wave_session_group_#{flag} ]

set _wave_session_group_#{flag}_#{iname} $_wave_session_group_#{flag}|
append _wave_session_group_#{flag}_#{iname} #{iname}
set #{flag}|#{iname} "$_wave_session_group_#{flag}_#{iname}"

# set Group2_#{flag}_#{iname} "$_wave_session_group_#{flag}_#{iname}"

## 添加信号到 group
gui_sg_addsignal -group "$_wave_session_group_#{flag}_#{iname}" { #{signals.map{|e| " {#{e}} "}.join("") } }  
## ============== #{flag}.#{iname} =========================
        }
    end
dev_signals_to_tcl(flag: gname ,signals: [], group_name: nil ) click to toggle source
# File lib/tdl/exlib/dve_tcl.rb, line 70
    def self.dev_signals_to_tcl(flag: gname ,signals: [], group_name: nil )
        sst = %Q{
## -------------- #{flag} -------------------------
set _wave_session_group_#{flag} #{group_name || flag}
# set _wave_session_group_#{flag} [gui_sg_generate_new_name -seed #{flag}]
if {[gui_sg_is_group -name "$_wave_session_group_#{flag}"]} {
    set _wave_session_group_#{flag} [gui_sg_generate_new_name]
}
set Group2_#{flag} "$_wave_session_group_#{flag}"

## 添加信号到 group
gui_sg_addsignal -group "$_wave_session_group_#{flag}" { #{signals.map{|e| " {#{e}} "}.join("") } }
## ============== #{flag} =========================
        }
    end
dve_tcl_temp(add_signal, add_signal_wave, add_bar) click to toggle source
# File lib/tdl/exlib/dve_tcl.rb, line 2
    def self.dve_tcl_temp(add_signal, add_signal_wave, add_bar)
        %Q{
## 设置时间精度 1ps
gui_set_time_units 1ps

## 创建一个 group 名字为 test_gg
# set _wave_session_group Group1
# set _wave_session_group [gui_sg_generate_new_name -seed test_gg]

# set Group2 "$_wave_session_group"

## 添加信号到 group
## gui_sg_addsignal -group "$_wave_session_group" { {Sim:tb_Mammo_TCP_sim.g1_test_mac_1g_inst.test_fpga_version_inst.ctrl_udp_rd_version} {Sim:tb_Mammo_TCP_sim.rtl_top.fpga_version_verb.to_ctrl_tap_in_inf} {Sim:tb_Mammo_TCP_sim.rtl_top.fpga_version_verb.ctrl_tap_inf} {Sim:tb_Mammo_TCP_sim.g1_test_mac_1g_inst.tcp_udp_proto_workshop_1G_inst.genblk1[0].tcp_data_stack_top_inst.client_port} }
## ==== [add_signal] ===== ##
#{add_signal}

## 创建波形窗口
if {![info exists useOldWindow]} { 
    set useOldWindow true
}

if {$useOldWindow && [string first "Wave" [gui_get_current_window -view]]==0} { 
    set Wave.3 [gui_get_current_window -view] 
} else {
    set Wave.3 [lindex [gui_get_window_ids -type Wave] 0]
    if {[string first "Wave" ${Wave.3}]!=0} {
        gui_open_window Wave
        set Wave.3 [ gui_get_current_window -view ]
    }
}

set groupExD [gui_get_pref_value -category Wave -key exclusiveSG]
gui_set_pref_value -category Wave -key exclusiveSG -value {false}
set origWaveHeight [gui_get_pref_value -category Wave -key waveRowHeight]
gui_list_set_height -id Wave -height 25
set origGroupCreationState [gui_list_create_group_when_add -wave]
gui_list_create_group_when_add -wave -disable
gui_marker_set_ref -id ${Wave.3}  C1
gui_wv_zoom_timerange -id ${Wave.3} 0 1000000000
## gui_list_add_group -id ${Wave.3} -after {New Group} [list ${Group2}]
## gui_list_add_group -id ${Wave.3}  -after ${Group2} [list ${Group2|tx_inf}]
## gui_list_expand -id ${Wave.3} tb_Mammo_TCP_sim.rtl_top.fpga_version_verb.ctrl_tap_inf
## === [add_signal_wave] === ##
#{add_signal_wave}

gui_seek_criteria -id ${Wave.3} {Any Edge}


gui_set_pref_value -category Wave -key exclusiveSG -value $groupExD
gui_list_set_height -id Wave -height $origWaveHeight
if {$origGroupCreationState} {
    gui_list_create_group_when_add -wave -enable
}
if { $groupExD } {
    gui_msg_report -code DVWW028
}
gui_list_set_filter -id ${Wave.3} -list { {Buffer 1} {Input 1} {Others 1} {Linkage 1} {Output 1} {Parameter 1} {All 1} {Aggregate 1} {LibBaseMember 1} {Event 1} {Assertion 1} {Constant 1} {Interface 1} {BaseMembers 1} {Signal 1} {$unit 1} {Inout 1} {Variable 1} }
gui_list_set_filter -id ${Wave.3} -text {*}
##gui_list_set_insertion_bar  -id ${Wave.3} -group ${Group2}  -position in
## === [add_bar] === ##
#{add_bar}

gui_marker_move -id ${Wave.3} {C1} 560248001
gui_view_scroll -id ${Wave.3} -vertical -set 35
gui_show_grid -id ${Wave.3} -enable false
}
    end
gen_dev_wave_tcl(khash) click to toggle source
# File lib/tdl/exlib/dve_tcl.rb, line 112
def self.gen_dev_wave_tcl(khash) # {group_name<sdlmodule instance name> : [*signal]}
    add_ss = []
    add_list = []
    add_bar = []
    khash.each do |k,v|
        base_elms = []
        intf_elms = []
        v.each do |e|
            if e.is_a?(BaseElm) || e.is_a?(ClassHDL::EnumStruct) || e.is_a?(ClassHDL::StructVar)
                base_elms   << e 
            elsif e.is_a? TdlSpace::TdlBaseInterface
                if e.modport_type
                    base_elms   << e 
                else
                    intf_elms   << e 
                end
            end
        end
        signals = base_elms.map do |e| 
            # if e.respond_to? :tp_instance
            #     if e.tp_instance.filter_block
            #         e.root_ref(&e.tp_instance.filter_block).sub("$root.","Sim:")
            #     else
            #         e.root_ref.sub("$root.","Sim:")
            #     end
            # else
            #     e.root_ref.sub("$root.","Sim:")
            # end
            xb = e.instance_variable_get("@dve_wave_filter_block")
            if xb
                e.root_ref(&xb).sub("$root.","Sim:") 
            else
                e.root_ref.sub("$root.","Sim:")
            end
        end

        add_ss  << dev_signals_to_tcl(flag: k, signals: signals )

        intf_elms.each do |e|
            # if e.respond_to? :tp_instance
            #     unless e.tp_instance.filter_block
            #         signalx = e.root_ref.sub("$root.","Sim:")
            #     else
            #         signalx = e.root_ref(&e.tp_instance.filter_block).sub("$root.","Sim:")
            #     end
            # else
            #     signalx = e.root_ref.sub("$root.","Sim:")
            # end
            xb = e.instance_variable_get("@dve_wave_filter_block")

            if xb
                signalx = e.root_ref(&xb).sub("$root.","Sim:") 
            else
                signalx = e.root_ref.sub("$root.","Sim:") 
            end

            add_ss << dev_interface_to_tcl(flag: k, iname: e.inst_name ,signals: [ signalx ])
        end
        add_list << gui_list_add_group(flag: "Group2_#{k}")
        add_bar  << gui_list_set_insertion_bar(flag: k)

        intf_elms.each do |e|
            add_list <<  gui_list_add_group(flag: "#{k}|#{e.inst_name}")
        end
    end

    dve_tcl_temp(add_ss.join("\n"), add_list.join("\n"), add_bar.join("\n") )

end
gui_list_add_group(flag: gname) click to toggle source
# File lib/tdl/exlib/dve_tcl.rb, line 104
def self.gui_list_add_group(flag: gname)
    "## -------------- #{flag} -------------------------\ngui_list_add_group -id ${Wave.3} -after {New Group} [list ${#{flag}}]\n## ============== #{flag} ========================="
end
gui_list_set_insertion_bar(flag: gname) click to toggle source
# File lib/tdl/exlib/dve_tcl.rb, line 108
def self.gui_list_set_insertion_bar(flag: gname)
    "gui_list_set_insertion_bar  -id ${Wave.3} -group ${Group2_#{flag}}  -position in"
end