36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
from ..base import CpuifBase
|
|
|
|
class APB4_Cpuif(CpuifBase):
|
|
template_path = "apb4_tmpl.sv"
|
|
is_interface = True
|
|
|
|
@property
|
|
def port_declaration(self) -> str:
|
|
return "apb4_intf.slave s_apb"
|
|
|
|
def signal(self, name:str) -> str:
|
|
return "s_apb." + name.upper()
|
|
|
|
|
|
class APB4_Cpuif_flattened(APB4_Cpuif):
|
|
is_interface = False
|
|
|
|
@property
|
|
def port_declaration(self) -> str:
|
|
lines = [
|
|
"input wire " + self.signal("psel"),
|
|
"input wire " + self.signal("penable"),
|
|
"input wire " + self.signal("pwrite"),
|
|
"input wire [2:0] " + self.signal("pprot"),
|
|
f"input wire [{self.addr_width-1}:0] " + self.signal("paddr"),
|
|
f"input wire [{self.data_width-1}:0] " + self.signal("pwdata"),
|
|
f"input wire [{self.data_width_bytes-1}:0] " + self.signal("pstrb"),
|
|
"output logic " + self.signal("pready"),
|
|
f"output logic [{self.data_width-1}:0] " + self.signal("prdata"),
|
|
"output logic " + self.signal("pslverr"),
|
|
]
|
|
return ",\n".join(lines)
|
|
|
|
def signal(self, name:str) -> str:
|
|
return "s_apb_" + name
|