module VCSCompatable

Public Class Methods

auto_vcs_cpt_connect(inst_modport,cn_modport) click to toggle source
# File lib/tdl/sdlmodule/sdlmodule_vcs_comptable.rb, line 3
def self.auto_vcs_cpt_connect(inst_modport,cn_modport)
    sdlmodule = cn_modport.belong_to_module
    common_modport_pair_check(inst_modport,cn_modport)
    # puts inst_modport.class
    # case inst_modport.class
    if inst_modport.is_a? Axi4 
        # puts "Match AXI4"
        axi4_instance(sdlmodule,inst_modport,cn_modport)
    elsif inst_modport.is_a? AxiStream
        # puts "Match AXIS"
        axis_instance(sdlmodule,inst_modport,cn_modport)
    elsif inst_modport.is_a?  DataInf_C
        # puts "Match DataInf_C"
        data_inf_c_instance(sdlmodule,inst_modport,cn_modport)
    else 
        cn_modport
    end

end
axi4_instance(sdlmodule,inst_modport,cn_modport) click to toggle source
# File lib/tdl/sdlmodule/sdlmodule_vcs_comptable.rb, line 115
def self.axi4_instance(sdlmodule,inst_modport,cn_modport)
    common_instance(sdlmodule,"vcs_axi4_comptable",inst_modport,cn_modport)
end
axis_instance(sdlmodule,inst_modport,cn_modport) click to toggle source
# File lib/tdl/sdlmodule/sdlmodule_vcs_comptable.rb, line 119
def self.axis_instance(sdlmodule,inst_modport,cn_modport)
    common_instance(sdlmodule,"vcs_axis_comptable",inst_modport,cn_modport)
end
common_instance(sdlmodule,inst_name,inst_modport,cn_modport) click to toggle source

def self.datac_reorder(ainf_modport,binf_modport)

''' return Switch,reorder_list'''
list = [
    ['master','slaver'],
    ['mirror','out_mirror']
]
common_reorder(list,ainf_modport,binf_modport,'DATA_INF_C')

end

# File lib/tdl/sdlmodule/sdlmodule_vcs_comptable.rb, line 83
def self.common_instance(sdlmodule,inst_name,inst_modport,cn_modport)
    vcs_cpt_inf = cn_modport.inherited(name: "#{cn_modport.name}_vcs_cp_#{globle_random_name_flag()}")
    if vcs_cpt_inf.is_a? Axi4 
        # vcs_cpt_inf.origin_freqM   = cn_modport.FreqM
        vcs_cpt_inf.addr_step = cn_modport.ADDR_STEP 
        vcs_cpt_inf.mode = cn_modport.MODE 
    end

    if inst_modport.modport_type.to_s =~ /master/ || inst_modport.modport_type.to_s == "out_mirror"
        # puts "+++++++ Match Master ModPort ++++++ #{sdlmodule.module_name}"
        sdlmodule.Instance(inst_name,"#{inst_name}_#{inst_modport.name}_#{globle_random_name_flag()}_#{cn_modport.name}_inst") do |h|
            h[:ORIGIN]  = "#{inst_modport.modport_type}"
            h[:TO]      = "#{cn_modport.modport_type}" 
            h[:origin]  = vcs_cpt_inf
            h[:to]      = cn_modport
        end
    elsif inst_modport.modport_type.to_s =~ /slaver/ || inst_modport.modport_type.to_s =~ /mirror/
        # puts "+++++++ Match Slaver ModPort ++++++"
        sdlmodule.Instance(inst_name,"#{inst_name}_#{inst_modport.name}_#{globle_random_name_flag()}_#{cn_modport.name}_inst") do |h|
            h[:TO]      = "#{inst_modport.modport_type}"
            h[:ORIGIN]  = "#{cn_modport.modport_type}" 
            h[:to]      = vcs_cpt_inf
            h[:origin]  = cn_modport
        end
    else 
        # puts "+++++++ Dont Match ModPort ++++++"
        return cn_modport
    end

    return vcs_cpt_inf
end
common_modport_pair_check(inst_modport,cn_modport) click to toggle source
# File lib/tdl/sdlmodule/sdlmodule_vcs_comptable.rb, line 127
def self.common_modport_pair_check(inst_modport,cn_modport)
    if inst_modport.modport_type.to_s =~ /master/
        if cn_modport.modport_type.to_s !~ /master/ && cn_modport.modport_type.to_s !~ /mirror/
            raise TdlError.new("modport assign ERROR [#{inst_modport}] <=> [#{cn_modport}]")
        end 
    end 

    if inst_modport.modport_type.to_s =~ /slaver/
        if cn_modport.modport_type.to_s !~ /slaver/ && cn_modport.modport_type.to_s !~ /mirror/
            raise TdlError.new("modport assign ERROR [#{inst_modport}] <=> [#{cn_modport}]")
        end 
    end 
end
data_inf_c_instance(sdlmodule,inst_modport,cn_modport) click to toggle source
# File lib/tdl/sdlmodule/sdlmodule_vcs_comptable.rb, line 123
def self.data_inf_c_instance(sdlmodule,inst_modport,cn_modport)
    common_instance(sdlmodule,"vcs_data_c_comptable",inst_modport,cn_modport)
end