class TrackInf

Attributes

dsize[RW]
enable[RW]
ghost[RW]
id[RW]
name[RW]
port[RW]
tsize[RW]

Public Class Methods

new(name:"t_inf",dsize:24,tsize:1,clock:nil,reset:nil,enable:"1'b1".to_nq,port:false,dimension:[],freqM:nil) click to toggle source
Calls superclass method CLKInfElm::new
# File lib/tdl/elements/track_inf.rb, line 10
def initialize(name:"t_inf",dsize:24,tsize:1,clock:nil,reset:nil,enable:"1'b1".to_nq,port:false,dimension:[],freqM:nil)
    name_legal?(name)
    super(dimension:dimension,clock:clock,reset:reset,freqM:freqM)
    @name = name
    @dsize = dsize
    @port = port
    @tsize = tsize
    @enable = enable

end
parse_ports(port_array=nil) { |h| ... } click to toggle source

SV FILE PORT PARSE

# File lib/tdl/elements/track_inf.rb, line 42
def self.parse_ports(port_array=nil)
    rep = /(?<up_down>\(\*\s+(?<ud_name>stream_up|stream_down)\s*=\s*"true"\s+\*\))?\s*(track_inf\.)(?<modport>master|slaver)\s+(?<name>\w+)\s*(?<vector>\[.*?\])?/m
    up_stream_rep = /stream_up/

    InfElm.parse_ports(port_array,rep,"track_inf",up_stream_rep) do |h|
        h[:type] = TrackInf
        yield h
    end
end
sdlinst_t0(ele) click to toggle source

SdlInst

# File lib/tdl/elements/track_inf.rb, line 54
def self.sdlinst_t0(ele)
    if ele.class ==  TrackInf then
        "track_inf.#{ele.port}"
    else
        nil
    end
end

Public Instance Methods

__inf_signal__(name) click to toggle source
# File lib/tdl/elements/track_inf.rb, line 66
def __inf_signal__(name)
    raise TdlError.new("\nARRAY Don't have '#{name}'\n") unless @dimension.empty?
    # puts "--------------"
    # puts $new_m.instance_variable_get("@port_axisinfs")
    # puts "============="
    NqString.new(signal.concat ".#{name}")
    # signal.concat ".#{name}"
end
inst() click to toggle source
# File lib/tdl/elements/track_inf.rb, line 21
def inst
    return "" if @ghost || @port
    with_new_align(0) do
        if @reset.is_a? SignalElm
            if @reset.active.casecmp("LOW") == 0
                "track_inf #(.DSIZE(#{dsize}),.TSIZE(#{tsize}),.FreqM(#{intf_def_freqM}))  #{signal} #{array_inst}(.clock(#{align_signal(@clock,false)}),.rst_n(#{align_signal(@reset,false)}),.enable(#{align_signal(@enable,false)}));"
            else
                "track_inf #(.DSIZE(#{dsize}),.TSIZE(#{tsize}),.FreqM(#{intf_def_freqM}))  #{signal} #{array_inst}(.clock(#{align_signal(@clock,false)}),.rst_n(!#{align_signal(@reset,false)}),.enable(#{align_signal(@enable,false)}));"
            end
        else
            "track_inf #(.DSIZE(#{dsize}),.TSIZE(#{tsize}),.FreqM(#{intf_def_freqM}))  #{signal} #{array_inst}(.clock(#{align_signal(@clock,false)}),.rst_n(#{align_signal(@reset,false)}),.enable(#{align_signal(@enable,false)}));"
        end
    end
end
inst_port() click to toggle source
# File lib/tdl/elements/track_inf.rb, line 36
def inst_port
    return ["track_inf." + @port.to_s,@name.to_s,array_inst]
end
track_signals(h=nil,l=nil) click to toggle source
# File lib/tdl/elements/track_inf.rb, line 104
def track_signals(h=nil,l=nil)
    raise TdlError.new("\nARRAY Don't have 'track_signals'") unless @dimension.empty?

    if h.is_a? Range
        l = h.to_a.min
        h = h.to_a.max
    end

    if h
        if l
            sqr = "[#{h.to_s}:#{l.to_s}]"
        else
            sqr = "[#{h.to_s}]"
        end
    else
        sqr = ""
    end
    NqString.new(signal.concat(".track_signals").concat(sqr))
end
track_trigger(h=nil,l=nil) click to toggle source
# File lib/tdl/elements/track_inf.rb, line 84
def track_trigger(h=nil,l=nil)
    raise TdlError.new("\nARRAY Don't have 'track_trigger'") unless @dimension.empty?

    if h.is_a? Range
        l = h.to_a.min
        h = h.to_a.max
    end

    if h
        if l
            sqr = "[#{h.to_s}:#{l.to_s}]"
        else
            sqr = "[#{h.to_s}]"
        end
    else
        sqr = ""
    end
    NqString.new(signal.concat(".track_trigger").concat(sqr))
end