diff --git a/tools/oneclick/prestudy/YAML/apertif_unb1_bn_filterbank.system.yaml b/tools/oneclick/prestudy/YAML/apertif_unb1_bn_filterbank.system.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6150eed8903caf1c0d4071b42f3340332832802c --- /dev/null +++ b/tools/oneclick/prestudy/YAML/apertif_unb1_bn_filterbank.system.yaml @@ -0,0 +1,187 @@ +protocol_name : args +protocol_version: 1.0 +protocol_type : system + +hdl_library_name: apertif_unb1_bn_filterbank + +system_name : apertif_unb1_bn_filterbank +system_description: | + "apertif_unb1_bn_filterbank for sopc" + +parameters: + - { name : nof_fringe_stop_units, value: 4 } + - { name : nof_streams, value: 12 } + +peripherals: + - peripheral_name: rom_system_info + subsystem_name : '' + slave_port_names: + - rom_unb_system_info + + - peripheral_name: reg_system_info + + subsystem_name : '' + slave_port_names: + - reg_unb_system_info + + - peripheral_name: ctrl_unb1_board + subsystem_name : '' + slave_port_names: + - pio_wdi + + - peripheral_name: unb1_board_wdi_reg + subsystem_name : '' + slave_port_names: + - reg_wdi + + - peripheral_name: eth1g + subsystem_name : '' + slave_port_names: + - avs_eth_0_mms_tse + - avs_eth_0_mms_reg + - avs_eth_0_mms_ram + + - peripheral_name: ppsh + subsystem_name : '' + slave_port_names: + - pio_pps + + - peripheral_name: epcs_reg + subsystem_name : '' + slave_port_names: + - reg_epcs + - reg_mmdp_ctrl + - reg_mmdp_data + - reg_dpmm_ctrl + - reg_dpmm_data + parameters: + - { name : g_sim_flash_model, value: FALSE } + + - peripheral_name: remu_reg + subsystem_name : '' + slave_port_names: + - reg_remu + + - peripheral_name: unb1_board_sens_reg + subsystem_name : '' + slave_port_names: + - reg_unb_sens + parameters: + - { name : g_sim, value: FALSE } + - { name : g_clk_freq, value: 125E6 } + - { name : g_temp_high, value: 85 } + + # extra peripherals for apertif_unb1_bn_filterbank + - peripheral_name: common_pulse_delay + subsystem_name : '' + slave_port_names: + - reg_common_pulse_delay + parameters: + - { name : , value: } + + - peripheral_name: bsn_source + subsystem_name : '' + slave_port_names: + - reg_bsn_source + parameters: + - { name : , value: } + + - peripheral_name: bsn_scheduler_wg + subsystem_name : '' + slave_port_names: + - reg_bsn_scheduler_wg + parameters: + - { name : , value: } + + - peripheral_name: adc_quad + subsystem_name : '' + slave_port_names: + - reg_adc_quad + parameters: + - { name : , value: } + + - peripheral_name: wg + subsystem_name : '' + slave_port_names: + - reg_wg # arr: size = 4 + - ram_wg # arr: size = 4 + + parameters: + - { name : , value: } + + - peripheral_name: mon + subsystem_name : '' + slave_port_names: + - reg_mon # arr: size = 4 + - ram_mon # arr: size = 4 + + parameters: + - { name : , value: } + + - peripheral_name: commander + subsystem_name : '' + slave_port_names: + - reg_commander # arr: size = 2 + + parameters: + - { name : , value: } + + - peripheral_name: protocol + subsystem_name : '' + slave_port_names: + - ram_protocol # arr: size = 2 + + parameters: + - { name : , value: } + + - peripheral_name: result + subsystem_name : '' + slave_port_names: + - ram_result # arr: size = 2 + + parameters: + - { name : , value: } + + - peripheral_name: bsn_scheduler_sp_on + subsystem_name : '' + slave_port_names: + - reg_bsn_scheduler_sp_on + + parameters: + - { name : , value: } + + - peripheral_name: bsn_scheduler_sp_off + subsystem_name : '' + slave_port_names: + - reg_bsn_scheduler_sp_off + + parameters: + - { name : , value: } + + - peripheral_name: bf_unit + subsystem_name : '' + slave_port_names: + - '' + - ram_st_sst + - ram_ss_ss_wide + - '' + + parameters: + - { name : , value: } + + - peripheral_name: ss_reorder + subsystem_name : '' + slave_port_names: + - ram_ss_reorder_in + - ram_ss_reorder_out + + parameters: + - { name : , value: } + + - peripheral_name: mesh_diag + subsystem_name : '' + slave_port_names: + - reg_bsn_scheduler_sp_on + + parameters: + - { name : , value: } \ No newline at end of file diff --git a/tools/oneclick/prestudy/YAML/dp/dp.peripheral.yaml b/tools/oneclick/prestudy/YAML/dp/dp.peripheral.yaml index 1391b45129769ac82406e3d66ac2e092d77c3e87..8aa3e3b5a94d88dd0c841648de7b28dca1e762af 100644 --- a/tools/oneclick/prestudy/YAML/dp/dp.peripheral.yaml +++ b/tools/oneclick/prestudy/YAML/dp/dp.peripheral.yaml @@ -31,6 +31,7 @@ peripherals: slave_discription: " " peripheral_description: "This is the BSN aligner" + - peripheral_name: dp_fifo_fill parameters: diff --git a/tools/oneclick/prestudy/YAML/epcs/epcs.peripheral.yaml b/tools/oneclick/prestudy/YAML/epcs/epcs.peripheral.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f951107da69529135cc48d8d7abead415867e758 --- /dev/null +++ b/tools/oneclick/prestudy/YAML/epcs/epcs.peripheral.yaml @@ -0,0 +1,135 @@ +protocol_name : args +protocol_version: 1.0 +protocol_type : peripheral + +hdl_library_name : epcs +hdl_library_description: " This is the description for the epcs package " + +peripherals: + + # epcs_reg + - + peripheral_name: epcs_reg + + parameters: + - {name: "g_sim_flash_model", value: TRUE} + + slave_ports: + - + # actual hdl name: epcs_reg + slave_prefix : EPCS + slave_name : EPCS + slave_postfix: REG + slave_type : REG + fields: + - + field_name : addr + width : 24 + access_mode : WO + address_offset: 0x0 + field_description: " address to write to or read from " + + - + field_name : rden + width : 1 + access_mode : WO + address_offset: 0x1 + field_description: " Read enable bit " + + - + field_name : read_bit + width : 1 + access_mode : WO + side_effect : PW + address_offset: 0x2 + field_description: " Read bit " + + - + field_name : write_bit + width : 1 + access_mode : WO + side_effect : PW + address_offset: 0x3 + field_description: " Write bit " + + - + field_name : sector_erase + width : 1 + access_mode : WO + address_offset: 0x4 + field_description: " Sector erase bit " + + - + field_name : busy + width : 1 + access_mode : RO + address_offset: 0x5 + field_description: " busy " + + slave_description: " Read and write access to flash " + + # actual hdl name: mms_dp_fifo_to_mm + - + slave_prefix : EPCS + slave_name : DPMM_CTRL + slave_postfix: REG + slave_type : REG + fields: + - + field_name : ctrl + width : 32 + access_mode : RW + address_offset: 0x0 + field_description: " " + + - + slave_prefix : EPCS + slave_name : DPMM_DATA + slave_postfix: REG + slave_type : REG + fields: + - + field_name : data + width : 32 + access_mode : RW + address_offset: 0x0 + field_description: " " + + # actual hdl name: mms_dp_fifo_from_mm + - + slave_prefix : EPCS + slave_name : MMDP_CTRL + slave_postfix: REG + slave_type : REG + fields: + - + field_name : ctrl + width : 32 + access_mode : RW + address_offset: 0x0 + field_description: " " + + - + slave_prefix : EPCS + slave_name : MMDP_DATA + slave_postfix: REG + slave_type : REG + fields: + - + field_name : data + width : 32 + access_mode : RW + address_offset: 0x0 + field_description: " " + + peripheral_description: | + "wi Bits SE R/W Name Default Description |REG_EPCS| + ============================================================================= + 0 [23..0] WO addr 0x0 Address to write to/read from + 1 [0] WO rden 0x0 Read enable + 2 [0] PW WE read 0x0 Read + 3 [0] PW WE write 0x0 Write + 4 [0] WO sector_erase 0x0 Sector erase + 5 [0] RO busy 0x0 Busy + =============================================================================" + \ No newline at end of file diff --git a/tools/oneclick/prestudy/YAML/eth/eth.peripheral.yaml b/tools/oneclick/prestudy/YAML/eth/eth.peripheral.yaml index 64ed1c7da70b9dc03ec3d22173703821405e93ac..464bf433960280ecbb4f3d7ba5c32d0d1bc7ccac 100644 --- a/tools/oneclick/prestudy/YAML/eth/eth.peripheral.yaml +++ b/tools/oneclick/prestudy/YAML/eth/eth.peripheral.yaml @@ -23,9 +23,10 @@ peripherals: slave_type : REG fields: - - field_name : status - access_mode : RO - address_offset : 0x0 + field_name : status + access_mode : RO + address_offset : 0x0 + number_of_fields: 1024 field_description: | " reg tse " slave_description: "" @@ -37,10 +38,11 @@ peripherals: slave_type : REG fields: - - field_name : status - access_mode : RO - address_offset: 0x0 - field_description : " reg registers " + field_name : status + access_mode : RO + address_offset : 0x0 + number_of_fields: 11 + field_description: " reg registers " slave_description: " " - # actual hdl name: ram @@ -50,7 +52,7 @@ peripherals: slave_type : RAM fields: - - field_name: ram + field_name : ram number_of_fields: c_eth_ram_nof_words field_description: | "Contains the Waveform data for the data-streams to be send" diff --git a/tools/oneclick/prestudy/YAML/mm_menu.py b/tools/oneclick/prestudy/YAML/mm_menu.py index fb5c59a3bd351bc245ddf4a2a4c778db20f048a2..36229406ae9019fcc58beadaf2d963eae47c06d9 100755 --- a/tools/oneclick/prestudy/YAML/mm_menu.py +++ b/tools/oneclick/prestudy/YAML/mm_menu.py @@ -37,7 +37,8 @@ from py_mm_lib import * def main(): """ main """ filename = None - filename = './demo.system.yaml' + filename = './unb1_minimal_sopc.system.yaml' + #filename = './demo.system.yaml' while True: menu_choice = show_menu().lower() if menu_choice == 'q': @@ -86,16 +87,17 @@ def generate_report(filename): """ generate report (pdf) for loaded file. """ try: config = yaml.load(open(filename, "r")) - name = list(config.keys())[0] - settings = config[name] - documentation = Documentation(name) if '.system.yaml' in filename: + name = config['system_name'] + documentation = Documentation(name) system = System(filename) - documentation.add(name, system) + documentation.add(config['system_name'], system) elif '.peripheral.yaml' in filename: + name = config['hdl_library_name'] + documentation = Documentation(name) peripheral = Peripheral(filename) peripheral.eval_peripheral() - documentation.add(name, peripheral) + documentation.add(config['hdl_library_name'], peripheral) documentation.generate_pdf() except IOError: logger.error("config file '{}' does not exist".format(filename)) @@ -125,7 +127,7 @@ def generate_rom_system_info(filename): """ generate rom_system reg and txt file """ rom_system = RomSystem() rom_system.read_system(filename) - rom_system.read_qsys_reg(filename="qsys.reg") + rom_system.read_qsys_reg(filename="unb1_minimal_sopc.build.reg") rom_system.map_memory(use_qsys_base_address=True) rom_system.generate_reg_file(write_file=True) # make ROM_SYSTEM_INFO old style rom_system.generate_mif_file(write_file=True) # make ROM_SYSTEM_INFO old style diff --git a/tools/oneclick/prestudy/YAML/py_mm_lib/documentation.py b/tools/oneclick/prestudy/YAML/py_mm_lib/documentation.py index 00ad8b3b283264fbd7def25be1db4c7f1632d1d2..274a32769d06f91003a38af2b806f68c24b1600f 100755 --- a/tools/oneclick/prestudy/YAML/py_mm_lib/documentation.py +++ b/tools/oneclick/prestudy/YAML/py_mm_lib/documentation.py @@ -162,10 +162,21 @@ class Documentation(object): n_spaces = 0 _line = [] text = [] - if line[0] == '"': - line = line[1:] - if line[-1] == '"': - line = line[:-1] + line = line.strip() + #print('1 ', line) + + #if line.startswith(('"', "'")): + # if len(line) == 1: + # return None + # line = line[1:] + ##print('2 ', line) + # + #if line.endswith(('"', "'")): + # if len(line) == 1: + # return None + # line = line[:-1] + print('3 ', line) + for ch_nr, ch in enumerate(line): if ch == ' ': n_spaces += 1 diff --git a/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/constants.py b/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/constants.py index dc279e6d6cda20ee1d48a81776400842f0d96691..3f49715f075d3d984b8cb08bb1b3c6f526f02bfc 100644 --- a/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/constants.py +++ b/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/constants.py @@ -8,7 +8,7 @@ from common import c_word_w VALID_ACCESS_MODES = ['RO', 'WO', 'RW', 'FR', 'FW'] -VALID_SIDE_EFFECTS = ['CLR', 'PR', 'WR'] +VALID_SIDE_EFFECTS = ['CLR', 'PR', 'PW'] VALID_SLAVE_TYPES = ['REG', 'RAM', 'FIFO'] VALID_RADIXS = ['UNSIGNED', 'SIGNED', 'HEXADECIMAL'] diff --git a/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/register.py b/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/register.py index 3dc0dbffdf50295db9918fff2b60f92489c92e69..36812b7411c23b87c99d76b8c650827913663769 100644 --- a/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/register.py +++ b/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/register.py @@ -76,8 +76,8 @@ class Register(BaseObject): return n_words = 0 for field in self.fields.values(): - n_words += ceil_pow2(int(ceil(float(field.width()) / c_word_w)) * field.number_of_fields()) - #logger.debug("n_words=%d", n_words) + n_words += int(ceil_pow2(int(ceil(float(field.width()) / c_word_w)) * field.number_of_fields())) + logger.debug("n_words=%d", n_words) n_words = ceil_pow2(n_words) # round up to power of 2 self.set_kv('address_length', n_words) diff --git a/tools/oneclick/prestudy/YAML/py_mm_lib/rom_system.py b/tools/oneclick/prestudy/YAML/py_mm_lib/rom_system.py index 580dea5338fd71816a2bc252ab2eb1bbcab85957..36546c9af8ffaad8e73f26d7b8daba026064428e 100644 --- a/tools/oneclick/prestudy/YAML/py_mm_lib/rom_system.py +++ b/tools/oneclick/prestudy/YAML/py_mm_lib/rom_system.py @@ -46,10 +46,10 @@ class MemoryMapper(object): 2) add biggest sizes first. """ def __init__(self): - self.map = [] # [start_address, stop_address, size, name, nof_instances] + self.map = [] # [start_address, stop_address, size, name, nof_instances, hide_in_reg_file] self.names = [] # already used names - def add(self, name, size, nof_instances, base_address=None): + def add(self, name, size, nof_instances, base_address=None, hide_in_reg_file=False): """ add memory segment to the memory-map. name: name of register entry size: size in words of 1 isinstance @@ -65,15 +65,26 @@ class MemoryMapper(object): if base_address is not None: end_address = base_address + (size * nof_instances) - self.map.append([base_address, end_address, size * cm.c_word_sz, name, nof_instances]) - logger.debug("add(): %08x, %08x, %d, %s, %d", - base_address, end_address, (size * cm.c_word_sz), name, nof_instances) + self.map.append({'name': name, + 'base_address': base_address, + 'end_address': end_address, + 'size': size * cm.c_word_sz, + 'nof_instances': nof_instances, + 'hide_in_reg_file': hide_in_reg_file}) + + logger.debug("add(): %08x, %08x, %d, %s, %d, %s", + base_address, end_address, (size * cm.c_word_sz), name, nof_instances, str(hide_in_reg_file)) else: _base_address = self._find_start_addr(size*nof_instances) - self.map.append([_base_address, _base_address+(size*nof_instances), size * cm.c_word_sz, name, nof_instances]) - logger.debug("add(): %08x, %08x, %d, %s, %d", - _base_address, _base_address+(size*nof_instances), size * cm.c_word_sz, name, nof_instances) + self.map.append({'name': name, + 'base_address': _base_address, + 'end_address': _base_address+(size*nof_instances), + 'size': size * cm.c_word_sz, + 'nof_instances': nof_instances, + 'hide_in_reg_file': hide_in_reg_file}) + logger.debug("add(): %08x, %08x, %d, %s, %d, %s", + _base_address, _base_address+(size*nof_instances), size * cm.c_word_sz, name, nof_instances, str(hide_in_reg_file)) def _find_start_addr(self, size): """ look for the next address where the size (in bytes) will fit """ @@ -100,11 +111,29 @@ class MemoryMapper(object): #logger.debug("end of map, returm {:x}".format(start_addr)) return start_addr - def get_memory_map(self): - """ return sorted memory map """ - self.map.sort() - return self.map + def make_sorted_list(self, key): + sorted_list = [] + for reg in self.map: + sorted_list.append(reg[key]) + sorted_list.sort() + return sorted_list + def get_memory_map(self, sort_on='name'): + """ return sorted memory map on key + key can be: name, base_address, size + """ + map = [] + for key in self.make_sorted_list(sort_on): + for reg in self.map: + if reg[sort_on] == key: + map.append([reg['name'], + reg['base_address'], + reg['end_address'], + reg['size'], + reg['nof_instances'], + reg['hide_in_reg_file']]) + break + return map class RomSystem(object): """ RomSystem class """ @@ -112,9 +141,10 @@ class RomSystem(object): self.filename = None self.system = None self.qsys_reg = {} # read in rom_system_info from old system key=name, val=[base, span] - self.address_list = [] + #self.address_list = [] self.rom_system_info = [] self.word_size = 32 # number of bits + self.memory_mapper = MemoryMapper() def read_system(self, filename): """ read system configuration file """ @@ -126,7 +156,7 @@ class RomSystem(object): return False def read_qsys_reg(self, filename=None): - """ read '[system]_qsys.reg' file and get register order. + """ read *.reg file and get register order. file format: string (1 row) ending with null character, sorted on reg name. repeated 'name address span' information, address is word-addressing, span in bytes. @@ -154,8 +184,6 @@ class RomSystem(object): def map_memory(self, use_qsys_base_address=False): """ calculate register offsets """ - memory_mapper = MemoryMapper() - peripherals = self.system.peripherals #print("================") @@ -163,17 +191,28 @@ class RomSystem(object): peripheral = peripherals['reg_system_info'] #print(peripheral.registers) - base_address = int(peripheral.parameter('lock_base_address')) - size = int(peripheral.get_slave('reg_system_info').fields['field_reg_info'].number_of_fields()) # TODO: if not available calculate real size - memory_mapper.add(name="REG_SYSTEM_INFO", size=size, nof_instances=1, base_address=base_address) + base_address = int(peripheral.parameter('lock_base_address')) + size = cm.ceil_pow2(int(peripheral.get_slave('reg_system_info').fields['field_reg_info'].number_of_fields())) # TODO: if not available calculate real size + name = peripheral.get_slave('reg_system_info').user_defined_name() + if name is None: + name = "reg_system_info" + self.memory_mapper.add(name=name, size=size, nof_instances=1, base_address=base_address, hide_in_reg_file=True) peripheral = peripherals['rom_system_info'] base_address = int(peripheral.parameter('lock_base_address')) - size = int(peripheral.get_slave('rom_system_info').fields['field_rom_info'].number_of_fields()) # TODO: if not available calculate real size - memory_mapper.add(name="ROM_SYSTEM_INFO", size=size, nof_instances=1, base_address=base_address) + size = cm.ceil_pow2(int(peripheral.get_slave('rom_system_info').fields['field_rom_info'].number_of_fields())) # TODO: if not available calculate real size + name = peripheral.get_slave('rom_system_info').user_defined_name() + if name is None: + name = "rom_system_info" + self.memory_mapper.add(name=name, size=size, nof_instances=1, base_address=base_address, hide_in_reg_file=True) size_info = [] for peripheral in peripherals.values(): + print(peripheral.component_name()) + if peripheral.component_name() in ('reg_system_info', 'rom_system_info'): + print('skip') + continue + nof_peri_inst = peripheral.number_of_peripherals() for rkey, rval in peripheral.rams.items(): n_addresses = rval.get_kv('address_length') @@ -184,7 +223,9 @@ class RomSystem(object): else: _name = rval.name() #print("%s %s" % (str(rkey), str(n_addresses))) - size_info.append([n_addresses, nof_inst, _name]) + n_addresses = max(n_addresses, 2) + print("add") + size_info.append([n_addresses, nof_inst, _name, False]) for rkey, rval in peripheral.registers.items(): n_addresses = rval.get_kv('address_length') @@ -194,14 +235,14 @@ class RomSystem(object): _name = rval.user_defined_name() else: _name = rval.name() - if _name.upper() in ('.REG_SYSTEM_INFO.', '.ROM_SYSTEM_INFO.', 'REG_SYSTEM_INFO', 'ROM_SYSTEM_INFO'): - continue #print("%s %s" % (str(rkey), str(n_addresses * n_words))) #size_info.append([(n_addresses * n_words), nof_inst, _name]) - size_info.append([n_addresses, nof_inst, _name]) + n_addresses = max(n_addresses, 2) + print("add") + size_info.append([n_addresses, nof_inst, _name, False]) size_info.sort(reverse=True) - for size, nof_inst, name in size_info: + for size, nof_inst, name, hide_in_reg_file in size_info: if use_qsys_base_address: _name = name.split('.') @@ -236,9 +277,13 @@ class RomSystem(object): else: base_address = None #print(name, base_address, qsys_size, size) - memory_mapper.add(name=name, size=size, nof_instances=nof_inst, base_address=base_address) + self.memory_mapper.add(name=name, + size=size, + nof_instances=nof_inst, + base_address=base_address, + hide_in_reg_file=hide_in_reg_file) - self.address_list = memory_mapper.get_memory_map() + #self.address_list = memory_mapper.get_memory_map() def generate_reg_file(self, write_file=False, version=None): """ generate qsys '*.reg' file @@ -252,7 +297,10 @@ class RomSystem(object): logger.debug("generate reg string the old way without version number") # [start_address, stop_address, size, name, nof_instances] - for start_address, stop_address, size, name, nof_instances in self.address_list: + for reg in self.memory_mapper.get_memory_map('name'): + name, start_address, stop_address, size, nof_instances, hide_in_reg_file = reg + if hide_in_reg_file: + continue # logger.debug("i=%s", str(i)) if version is None: self.rom_system_info.append("{0} {1:x} {2}".format(name.upper(), @@ -263,12 +311,13 @@ class RomSystem(object): start_address, size, # size in bytes nof_instances)) - rom_system_info_str = ' '.join(self.rom_system_info) + '\0' + rom_system_info_str = ' '.join(self.rom_system_info) + '\0\0' + if write_file: if version is None: - filename = "{}_qsys.reg".format(self.system.system_name) + filename = "{}.reg".format(self.system.system_name) else: - filename = "{}_qsys_V{}.reg".format(self.system.system_name, version) + filename = "{}_V{}.reg".format(self.system.system_name, version) logger.debug("Write 'reg' file '%s'", filename) logger.debug("ROM_SYSTEM_INFO= %s", rom_system_info_str) with open(filename, 'w') as regfile: @@ -300,9 +349,9 @@ class RomSystem(object): if write_file: if version is None: - filename = "{}_qsys.mif".format(self.system.system_name) + filename = "{}.mif".format(self.system.system_name) else: - filename = "{}_qsys_V{}.mif".format(self.system.system_name, version) + filename = "{}_V{}.mif".format(self.system.system_name, version) logger.debug("Write 'mif' file '%s'", filename) with open(filename, 'w') as miffile: @@ -316,13 +365,14 @@ class RomSystem(object): txt.append("address bytes n_instances peripheral_name") txt.append("------- ------- ----------- ---------------") # [start_address, stop_address, size, name, nof_instances] - for start_address, stop_address, size, name, nof_instances in sorted(self.address_list): + for reg in self.memory_mapper.get_memory_map('base_address'): + name, start_address, stop_address, size, nof_instances, hide_in_reg_file = reg txt.append("0x{:08x} {:10d} {:11d} {:35s}".format(start_address, size, nof_instances, name.upper())) for line in txt: logger.debug(line) - filename = "{}_qsys.txt".format(self.system.system_name) + filename = "{}.txt".format(self.system.system_name) with open(filename, 'w') as f: f.write('\n'.join(txt)) diff --git a/tools/oneclick/prestudy/YAML/remu/remu.peripheral.yaml b/tools/oneclick/prestudy/YAML/remu/remu.peripheral.yaml new file mode 100644 index 0000000000000000000000000000000000000000..fff5d12963d7522571c257ffc2bb7cbd7520b4c2 --- /dev/null +++ b/tools/oneclick/prestudy/YAML/remu/remu.peripheral.yaml @@ -0,0 +1,90 @@ +protocol_name : args +protocol_version: 1.0 +protocol_type : peripheral + +hdl_library_name : remu +hdl_library_description: " This is the description for the remu package " + +peripherals: + + # peripheral, remu_reg + - + peripheral_name: remu_reg + + parameters: + - { name: g_data_w, value: 24 } + + slave_ports: + - + # actual hdl name: reg_remu + slave_prefix : WORK + slave_name : REMU + slave_postfix: REG + slave_type : REG + fields: + - + field_name : reconfigure_key + width : c_word_w + access_mode : WO + address_offset: 0x0 + field_description: " reconfigure key for safety " + + - + field_name : param + width : 3 + access_mode : WO + address_offset: 0x1 + radix : unsigned + field_description: " " + + - + field_name : read_param + width : 1 + access_mode : WO + side_effect : PW + address_offset: 0x2 + field_description: " read_param " + + - + field_name : write_param + width : 1 + access_mode : WO + side_effect : PW + address_offset: 0x3 + field_description: " write_param " + + - + field_name : data_out + width : g_data_w + access_mode : RO + address_offset: 0x4 + field_description: " data_out " + + - + field_name : data_in + width : g_data_w + access_mode : WO + address_offset: 0x5 + field_description: " data_in " + + - + field_name : busy + width : 1 + access_mode : RO + address_offset: 0x6 + field_description: " busy " + + slave_description: " Remote Upgrade " + + peripheral_description: | + "wi Bits R/W SE Name Default Description |REG_EPCS| + ============================================================================= + 0 [31..0] WO reconfigure_key 0x0 + 1 [2..0] WO param + 2 [0] WO PW read_param + 3 [0] WO PW write_param + 4 [23..0] RO data_out + 5 [23..0] WO data_in + 6 [0] RO busy + ============================================================================= + " diff --git a/tools/oneclick/prestudy/YAML/unb1_board/unb1_board.peripheral.yaml b/tools/oneclick/prestudy/YAML/unb1_board/unb1_board.peripheral.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4139c672126c2e12e69a6938594d3edb90a5e4e0 --- /dev/null +++ b/tools/oneclick/prestudy/YAML/unb1_board/unb1_board.peripheral.yaml @@ -0,0 +1,139 @@ +protocol_name : args +protocol_version: 1.0 +protocol_type : peripheral + +hdl_library_name : unb1_board +hdl_library_description: " This is the description for the unb1_board package " + +peripherals: + # peripheral, unb1_board_wdi_reg + - + peripheral_name: ctrl_unb1_board + + slave_ports: + - + # actual hdl name: unb1_board_wdi_reg + slave_prefix : UNB1_BOARD + slave_name : PIO_WDI + slave_postfix: REG + slave_type : REG + fields: + - + field_name : nios_reset + access_mode : WO + address_offset : 0x0 + number_of_fields: 4 + field_description: " Reset done by nios " + + slave_description: "Reset register, for nios " + + peripheral_description: " " + + # peripheral, unb1_board_wdi_reg + - + peripheral_name: unb1_board_wdi_reg + + slave_ports: + - + # actual hdl name: unb1_board_wdi_reg + slave_prefix : UNB1_BOARD + slave_name : WDI + slave_postfix: REG + slave_type : REG + fields: + - + field_name : reset_word + access_mode : WO + address_offset: 0x0 + field_description: " Only the value 0xB007FAC7 'Boot factory' will result in a reset " + + slave_description: "Reset register, if the right value is provided the factory image will be reloaded " + + peripheral_description: " " + + # periheral, unb1_board_sens + - + peripheral_name: unb1_board_sens_reg + + parameters: + - { name: g_sim, value: FALSE } + - { name: g_clk_freq, value: c_unb1_board_mm_clk_freq_125M } + - { name: g_temp_high, value: 85 } + + slave_ports: + - + # actual hdl name: reg_unb1_sens + slave_prefix : UNB1_BOARD + slave_name : SENS + slave_postfix: REG + slave_type : REG + fields: + - + field_name : sens_data + width : 8 + access_mode : RO + address_offset: 0x0 + number_of_fields: 4 + field_description: | + " data array with sens data + 0x0 = fpga temperature in degrees (two's complement) + 0x1 = eth_temp temperature in degrees (two's complement) + 0x2 = hot_swap_v_sens + 0x3 = hot_swap_v_source" + + - + field_name : sens_err + width : 1 + access_mode : RO + address_offset: 0x4 + radix : unsigned + field_description: "" + + - + field_name : temp_high + width : 7 + address_offset: 0x5 + reset_value : g_temp_high + software_value: g_temp_high + field_description: "" + + slave_description: " " + + peripheral_description: | + " + +-----------------------------------------------------------------------------+ + |31 (byte3) 24|23 (byte2) 16|15 (byte1) 8|7 (byte0) 0| wi | + |-----------------------------------------------------------------------|-----| + | xxx fpga_temp = sens_data[0][7:0]| 0 | + |-----------------------------------------------------------------------|-----| + | xxx eth_temp = sens_data[1][7:0]| 1 | + |-----------------------------------------------------------------------|-----| + | xxx hot_swap_v_sense = sens_data[2][7:0]| 2 | + |-----------------------------------------------------------------------|-----| + | xxx hot_swap_v_source = sens_data[3][7:0]| 3 | + |-----------------------------------------------------------------------|-----| + | xxx sens_err[0]| 4 | + |-----------------------------------------------------------------------|-----| + | xxx temp_high[6:0]| 5 | + +-----------------------------------------------------------------------------+ + * The fpga_temp and eth_temp are in degrees (two's complement) + * The hot swap voltages depend on: + . From i2c_dev_ltc4260_pkg: + LTC4260_V_UNIT_SENSE = 0.0003 -- 0.3 mV over Rs for current sense + LTC4260_V_UNIT_SOURCE = 0.4 -- 400 mV supply voltage (e.g +48 V) + LTC4260_V_UNIT_ADIN = 0.01 -- 10 mV ADC + + . From UniBoard unb_sensors.h: + SENS_HOT_SWAP_R_SENSE = 0.005 -- R sense on UniBoard is 5 mOhm (~= 10 mOhm // 10 mOhm) + SENS_HOT_SWAP_I_UNIT_SENSE = LTC4260_V_UNIT_SENSE / SENS_HOT_SWAP_R_SENSE + SENS_HOT_SWAP_V_UNIT_SOURCE = LTC4260_V_UNIT_SOURCE + + ==> + Via all FN and BN: + 0 = FPGA temperature = TInt8(fpga_temp) + Only via BN3: + 1 = UniBoard ETH PHY temperature = TInt8(eth_temp) + 2 = UniBoard hot swap supply current = hot_swap_v_sense * SENS_HOT_SWAP_I_UNIT_SENSE + 3 = UniBoard hot swap supply voltage = hot_swap_v_source * SENS_HOT_SWAP_V_UNIT_SOURCE + 4 = I2C error status for BN3 sensors access only, 0 = ok" + diff --git a/tools/oneclick/prestudy/YAML/unb1_minimal_sopc.system.yaml b/tools/oneclick/prestudy/YAML/unb1_minimal_sopc.system.yaml new file mode 100644 index 0000000000000000000000000000000000000000..cc18de5fe2dff569bc1312d77414149f673e85b1 --- /dev/null +++ b/tools/oneclick/prestudy/YAML/unb1_minimal_sopc.system.yaml @@ -0,0 +1,68 @@ +protocol_name : args +protocol_version: 1.0 +protocol_type : system + +hdl_library_name: unb1_minimal_sopc + +system_name : unb1_minimal_sopc +system_description: | + "unb1_minimal system for sopc" + +peripherals: + - peripheral_name: rom_system_info + subsystem_name : '' + slave_port_names: + - rom_system_info + + - peripheral_name: reg_system_info + + subsystem_name : '' + slave_port_names: + - pio_system_info + + - peripheral_name: ctrl_unb1_board + subsystem_name : '' + slave_port_names: + - pio_wdi + + - peripheral_name: unb1_board_wdi_reg + subsystem_name : '' + slave_port_names: + - reg_wdi + + - peripheral_name: eth1g + subsystem_name : '' + slave_port_names: + - avs_eth_0_mms_tse + - avs_eth_0_mms_reg + - avs_eth_0_mms_ram + + - peripheral_name: ppsh + subsystem_name : '' + slave_port_names: + - pio_pps + + - peripheral_name: epcs_reg + subsystem_name : '' + slave_port_names: + - reg_epcs + - reg_mmdp_ctrl + - reg_mmdp_data + - reg_dpmm_ctrl + - reg_dpmm_data + parameters: + - { name : g_sim_flash_model, value: FALSE } + + - peripheral_name: remu_reg + subsystem_name : '' + slave_port_names: + - reg_remu + + - peripheral_name: unb1_board_sens_reg + subsystem_name : '' + slave_port_names: + - reg_unb_sens + parameters: + - { name : g_sim, value: FALSE } + - { name : g_clk_freq, value: 125E6 } + - { name : g_temp_high, value: 85 } diff --git a/tools/oneclick/prestudy/YAML/work/system_info.peripheral.yaml b/tools/oneclick/prestudy/YAML/work/system_info.peripheral.yaml index dc30116ca3bc74b18bcd9266e538e46eb02a14d8..cabb50301ace849c01ccc91e506bf6d89a985963 100644 --- a/tools/oneclick/prestudy/YAML/work/system_info.peripheral.yaml +++ b/tools/oneclick/prestudy/YAML/work/system_info.peripheral.yaml @@ -23,7 +23,7 @@ peripherals: field_name : field_rom_info access_mode : RO address_offset: 0x0 - number_of_fields: 4096 + number_of_fields: 1024 field_description: | "address place for rom_system_info" slave_description: " rom_info " @@ -47,7 +47,7 @@ peripherals: field_name : field_reg_info access_mode : RO address_offset: 0x0 - number_of_fields: 128 + number_of_fields: 31 field_description: | "address place for reg_system_info" slave_description: " reg_info "