Module: VCSCompatable

Defined in:
lib/tdl/sdlmodule/sdlmodule_vcs_comptable.rb

Class Method Summary collapse

Class Method Details

.auto_vcs_cpt_connect(inst_modport, cn_modport) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 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) ⇒ Object



115
116
117
# 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) ⇒ Object



119
120
121
# 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) ⇒ Object

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



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# 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) ⇒ Object



127
128
129
130
131
132
133
134
135
136
137
138
139
# 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) ⇒ Object



123
124
125
# 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