from migen.fhdl.std import * from migen.genlib.record import Record def create_rbus(fine_ts_bits, pads, output_only_pads): rbus = [] for pad in pads: layout = [ ("o_stb", 1), ("o_value", 2) ] if fine_ts_bits: layout.append(("o_fine_ts", fine_ts_bits)) if pad not in output_only_pads: layout += [ ("oe", 1), ("i_stb", 1), ("i_value", 1) ] if fine_ts_bits: layout.append(("i_fine_ts", fine_ts_bits)) rbus.append(Record(layout)) return rbus def get_fine_ts_width(rbus): if hasattr(rbus[0], "o_fine_ts"): return flen(rbus[0].o_fine_ts) else: return 0