from migen.fhdl.structure import * def get_sig_name(signal, slave): if signal[0] ^ slave: suffix = "_o" else: suffix = "_i" return signal[1] + suffix # desc is a list of tuples, each made up of: # 0) boolean: "master to slave" # 1) string: name # 2) int: width class Simple(): def __init__(self, desc, slave, name): for signal in desc: modules = self.__module__.split('.') busname = modules[len(modules)-1] if name: busname += "_" + name signame = get_sig_name(signal, slave) setattr(self, signame, Signal(BV(signal[2]), busname + "_" + signame))