class ClassHDL::SdlPackage

Public Instance Methods

build_module(ex_param: "",ex_port: "",ex_up_code: "",ex_down_code: "") click to toggle source
# File lib/tdl/class_hdl/hdl_package.rb, line 47
def build_module(ex_param: "",ex_port: "",ex_up_code: "",ex_down_code: "")
    # Tdl.Puts pagination(module_name)
    Tdl.Build_SdlModule_Puts(module_name)
    
    ex_param        = ex_param.to_s     unless ex_param
    ex_port         = ex_port.to_s      unless ex_port
    ex_up_code      = ex_up_code.to_s   unless ex_up_code
    ex_down_code    = ex_down_code.to_s unless ex_down_code
    
    # gen_auto_method     # auto generate class method for interface
    # draw = Tdl.inst + Tdl.draw
    
    instance_draw_str = instance_draw       # It must run before vars_define_inst,because some signals define when inst
    vars_exec_inst_str = vars_exec_inst     # It must run before vars_define_inst,because some signals define when vars exec
    
    post_str = post_inst_stack_call()
    
    unless post_str.strip.empty?
        post_str = pagination("ROOT REF") + post_str
    end
    
    draw = pagination("define") + vars_define_inst + pagination("instance") + instance_draw_str + pagination("expression") + vars_exec_inst_str + post_str
    
    unless ex_up_code.empty?
        ex_up_code = "\n//------>> EX CODE <<-------------------\n" + ex_up_code + "//------<< EX CODE >>-------------------\n"
    end
    
    unless ex_down_code.empty?
        ex_down_code = "//------>> EX CODE <<-------------------\n" + ex_down_code + "//------<< EX CODE >>-------------------\n"
    end
    
    # str = module_head+"module #{@module_name}" + build_params(ex_param) + build_ports(ex_port) + ex_up_code + gen_lite_str() + draw + ex_down_code + "\nendmodule\n"
    # unless GlobalParam.sim
        module_name_str = @module_name
    # else
    #     module_name_str = @module_name+"_sim"
    # end
    
    str = module_head+"package #{module_name_str};\n"  + build_params(ex_param) + ex_up_code + draw + ex_down_code + "\nendpackage:#{module_name_str}\n" + add_sub_module_file_paths
    
    create_vivado_tcl if @create_tcl
    create_constraints_file if @create_sdc
    
    return str
end
build_module_verb(ex_param: "",ex_port: "",ex_up_code: "",ex_down_code: "") click to toggle source
# File lib/tdl/class_hdl/hdl_package.rb, line 93
def build_module_verb(ex_param: "",ex_port: "",ex_up_code: "",ex_down_code: "")
    # Tdl.Puts pagination(module_name)
    Tdl.Build_SdlModule_Puts(module_name)
    
    ex_param        = ex_param.to_s     unless ex_param
    ex_port         = ex_port.to_s      unless ex_port
    ex_up_code      = ex_up_code.to_s   unless ex_up_code
    ex_down_code    = ex_down_code.to_s unless ex_down_code
    
    # gen_auto_method     # auto generate class method for interface
    # draw = Tdl.inst + Tdl.draw
    
    instance_draw_str = instance_draw       # It must run before vars_define_inst,because some signals define when inst
    vars_exec_inst_str = vars_exec_inst     # It must run before vars_define_inst,because some signals define when vars exec
    
    post_str = post_inst_stack_call()
    
    unless post_str.strip.empty?
        post_str = pagination("ROOT REF") + post_str
    end
    
    draw = pagination("define") + vars_define_inst + pagination("instance") + instance_draw_str + pagination("expression") + vars_exec_inst_str + post_str
    
    unless ex_up_code.empty?
        ex_up_code = "\n//------>> EX CODE <<-------------------\n" + ex_up_code + "//------<< EX CODE >>-------------------\n"
    end
    
    unless ex_down_code.empty?
        ex_down_code = "//------>> EX CODE <<-------------------\n" + ex_down_code + "//------<< EX CODE >>-------------------\n"
    end
    

    module_name_str = @module_name
    
    
    # str = module_head+"package #{module_name_str};\n"  + build_params(ex_param) + ex_up_code + draw + ex_down_code + "\nendpackage:#{module_name_str}\n" + add_sub_module_file_paths
    str = "package #{module_name_str};\n"  + build_params(ex_param) + ex_up_code + draw + ex_down_code + "\nendpackage:#{module_name_str}\n" + add_sub_module_file_paths

    create_vivado_tcl if @create_tcl
    create_constraints_file if @create_sdc
    
    return [module_head_verb,str]
end
build_params(ex_str="") click to toggle source
# File lib/tdl/class_hdl/hdl_package.rb, line 9
def build_params(ex_str="")
    "Draw Parameters of sv module"
    str = []
    max_len = 0
    @port_params.each do |k,v|
        if v.port_length > max_len
            max_len = v.port_length;
        end
    end
    
    @port_params.each do |k,v|
        str << v.inst_port(max_len-v.port_length)+";"
    end
    
    unless ex_str.empty?
        head_tap = '//------>> EX PARAMETER <<-------------------'+"\n"
        end_tap = "\n//------<< EX PARAMETER >>-------------------"+"\n"
    else
        head_tap = ""
        end_tap = ""
    end
    
    if str.empty?
        if ex_str.empty?
            return ""
        else
            # ex_str.gsub!(/,\s*$/m,"")
            return head_tap + ex_str + end_tap 
        end
    else
        # if (ex_str !~  /,\s*$/m)
        #     ex_str = ex_str + ",\n" unless ex_str.empty?
        # end
        head_tap + ex_str + end_tap + str.join("\n")
    end
    
end
macro_def() click to toggle source
# File lib/tdl/class_hdl/hdl_package.rb, line 5
def macro_def
    ''
end