Merge pull request #1124 from tcal-x/cfu-finalize

Defer adding the CFU instance until cpu.do_finalize().
This commit is contained in:
enjoy-digital 2021-12-07 18:34:09 +01:00 committed by GitHub
commit d3b493d4e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 5 deletions

View File

@ -276,7 +276,7 @@ class VexRiscv(CPU, AutoCSR):
if not os.path.exists(cfu_filename):
raise OSError(f"Unable to find VexRiscv CFU plugin {cfu_filename}.")
# CFU Layout.
# CFU:CPU Bus Layout.
cfu_bus_layout = [
("cmd", [
("valid", 1),
@ -296,11 +296,11 @@ class VexRiscv(CPU, AutoCSR):
]),
]
# CFU Bus.
# The CFU:CPU Bus.
self.cfu_bus = cfu_bus = Record(cfu_bus_layout)
# Add CFU.
self.specials += Instance("Cfu",
# Connect CFU to the CFU:CPU bus.
self.cfu_params = dict(
i_cmd_valid = cfu_bus.cmd.valid,
o_cmd_ready = cfu_bus.cmd.ready,
i_cmd_payload_function_id = cfu_bus.cmd.payload.function_id,
@ -314,7 +314,7 @@ class VexRiscv(CPU, AutoCSR):
)
self.platform.add_source(cfu_filename)
# Connect CFU to CPU.
# Connect CPU to the CFU:CPU bus.
self.cpu_params.update(
o_CfuPlugin_bus_cmd_valid = cfu_bus.cmd.valid,
i_CfuPlugin_bus_cmd_ready = cfu_bus.cmd.ready,
@ -361,3 +361,5 @@ class VexRiscv(CPU, AutoCSR):
if not self.external_variant:
self.add_sources(self.platform, self.variant)
self.specials += Instance("VexRiscv", **self.cpu_params)
if hasattr(self, "cfu_params"):
self.specials += Instance("Cfu", **self.cfu_params)