efinix: read pll names from database

This commit is contained in:
Andrew Dennison 2021-10-18 10:40:13 +11:00
parent 1fd99b366a
commit f426872e0c
2 changed files with 17 additions and 3 deletions

View File

@ -80,6 +80,21 @@ class EfinixDbParser():
return None return None
def get_block_instance_names(self, block):
dmap = self.get_device_map(self.device)
die = self.get_die_file_name(dmap)
tree = et.parse(self.efinity_db_path + 'die/' + die)
root = tree.getroot()
peri = root.findall('efxpt:periphery_instance', namespaces)
names = []
for p in peri:
if p.get('block') == block:
names.append(p.get('name'))
print(f"block {block}: names:{names}")
return names
def get_pll_inst_from_gpio_inst(self, dmap, inst): def get_pll_inst_from_gpio_inst(self, dmap, inst):
die = self.get_die_file_name(dmap) die = self.get_die_file_name(dmap)
tree = et.parse(self.efinity_db_path + 'die/' + die) tree = et.parse(self.efinity_db_path + 'die/' + die)

View File

@ -22,9 +22,6 @@ class EfinixPlatform(GenericPlatform):
self.timing_model = self.device[-2:] self.timing_model = self.device[-2:]
self.device = self.device[:-2] self.device = self.device[:-2]
self.pll_available = ['PLL_TL0', 'PLL_TR0', 'PLL_TR1', 'PLL_TR2', 'PLL_TR3', 'PLL_BR0', 'PLL_BR1', 'PLL_BR2', 'PLL_BL0']
self.pll_used = []
if os.getenv("LITEX_ENV_EFINITY", False) == False: if os.getenv("LITEX_ENV_EFINITY", False) == False:
msg = "Unable to find or source Efinity toolchain, please either:\n" msg = "Unable to find or source Efinity toolchain, please either:\n"
msg += "- Set LITEX_ENV_EFINITY environment variant to Efinity path.\n" msg += "- Set LITEX_ENV_EFINITY environment variant to Efinity path.\n"
@ -40,6 +37,8 @@ class EfinixPlatform(GenericPlatform):
raise ValueError("Unknown toolchain") raise ValueError("Unknown toolchain")
self.parser = EfinixDbParser(self.efinity_path, self.device) self.parser = EfinixDbParser(self.efinity_path, self.device)
self.pll_available = self.parser.get_block_instance_names('pll')
self.pll_used = []
def get_verilog(self, *args, special_overrides=dict(), **kwargs): def get_verilog(self, *args, special_overrides=dict(), **kwargs):
so = dict(common.efinix_special_overrides) so = dict(common.efinix_special_overrides)