build/efinix/efinity: Add resolve_iface_signal_names method to automatically resolve ClockSignal/Signal names passed in the blocks.
Allow the Migen/LiteX build elaboration to resolve signal names and just use it in blocks to avoid name_override workaround.
This commit is contained in:
parent
b86d76baed
commit
fde9d2e4ad
|
@ -222,9 +222,33 @@ class EfinityToolchain(GenericToolchain):
|
||||||
|
|
||||||
return "\n".join(conf)
|
return "\n".join(conf)
|
||||||
|
|
||||||
|
def resolve_iface_signal_names(self):
|
||||||
|
# Iterate over each block
|
||||||
|
for block in self.platform.toolchain.ifacewriter.blocks:
|
||||||
|
|
||||||
|
# Iterate over each key-value pair in the block
|
||||||
|
for key, value in block.items():
|
||||||
|
|
||||||
|
# Only process specific keys, skip others.
|
||||||
|
if key not in ["name", "in_clk_pin", "out_clk_pin"]:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# If the value is a ClockSignal, resolve its name
|
||||||
|
if isinstance(value, ClockSignal):
|
||||||
|
clock_domain = value.cd
|
||||||
|
signal_name = self._vns.get_name(self._vns.clock_domains[clock_domain].clk)
|
||||||
|
block[key] = signal_name # Replace with the resolved name
|
||||||
|
|
||||||
|
# If the value is a Signal, directly resolve its name
|
||||||
|
elif isinstance(value, Signal):
|
||||||
|
signal_name = self._vns.get_name(value)
|
||||||
|
block[key] = signal_name # Replace with the resolved name
|
||||||
|
|
||||||
def build_io_constraints(self):
|
def build_io_constraints(self):
|
||||||
pythonpath = ""
|
pythonpath = ""
|
||||||
|
|
||||||
|
self.resolve_iface_signal_names()
|
||||||
|
|
||||||
header = self.ifacewriter.header(self._build_name, self.platform.device)
|
header = self.ifacewriter.header(self._build_name, self.platform.device)
|
||||||
gen = self.ifacewriter.generate(self.platform.device)
|
gen = self.ifacewriter.generate(self.platform.device)
|
||||||
#TODO : move this to ifacewriter
|
#TODO : move this to ifacewriter
|
||||||
|
|
Loading…
Reference in New Issue