Skip to content

Commit

Permalink
add 'mparam' field
Browse files Browse the repository at this point in the history
(refs: #9)
  • Loading branch information
taichi-ishitani committed Mar 7, 2024
1 parent 004f49e commit 95171ee
Show file tree
Hide file tree
Showing 15 changed files with 130 additions and 61 deletions.
21 changes: 7 additions & 14 deletions pzcorebus_1_to_m_switch/pzcorebus_1_to_m_switch.sv
Original file line number Diff line number Diff line change
Expand Up @@ -29,21 +29,17 @@ module pzcorebus_1_to_m_switch
parameter int DATA_DEPTH = 2,
parameter int RESPONSE_DEPTH = 2,
parameter bit ALIGN_OUT = 0,
parameter int MINFO_WIDTH = get_request_info_width(BUS_CONFIG, 1),
parameter bit SVA_CHECKER = 1,
parameter bit REQUEST_SVA_CHECKER = SVA_CHECKER,
parameter bit RESPONSE_SVA_CHECKER = SVA_CHECKER
)(
input var i_clk,
input var i_rst_n,
input var pzbcm_arbiter_config i_arbiter_config,
output var pzcorebus_command_type o_mcmd,
output var [BUS_CONFIG.id_width-1:0] o_mid,
output var [BUS_CONFIG.address_width-1:0] o_maddr,
output var [MINFO_WIDTH-1:0] o_minfo,
input var [SELECT_WIDTH-1:0] i_select,
pzcorebus_if.slave slave_if,
pzcorebus_if.master master_if[MASTERS]
input var i_clk,
input var i_rst_n,
input var pzbcm_arbiter_config i_arbiter_config,
output var pzcorebus_command o_mcmd,
input var [SELECT_WIDTH-1:0] i_select,
pzcorebus_if.slave slave_if,
pzcorebus_if.master master_if[MASTERS]
);
pzcorebus_if #(BUS_CONFIG) bus_if[1+MASTERS]();

Expand Down Expand Up @@ -89,9 +85,6 @@ module pzcorebus_1_to_m_switch
.i_clk (i_clk ),
.i_rst_n (i_rst_n ),
.o_mcmd (o_mcmd ),
.o_mid (o_mid ),
.o_maddr (o_maddr ),
.o_minfo (o_minfo ),
.i_select (i_select ),
.slave_if (bus_if[0] ),
.master_if (bus_if[1:MASTERS] )
Expand Down
26 changes: 8 additions & 18 deletions pzcorebus_1_to_m_switch/pzcorebus_request_1_to_m_switch.sv
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,14 @@ module pzcorebus_request_1_to_m_switch
parameter int COMMAND_DEPTH = 2,
parameter int DATA_DEPTH = 2,
parameter bit ALIGN_OUT = 0,
parameter int MINFO_WIDTH = get_request_info_width(BUS_CONFIG, 1),
parameter bit SVA_CHECKER = 1
)(
input var i_clk,
input var i_rst_n,
output var pzcorebus_command_type o_mcmd,
output var [BUS_CONFIG.id_width-1:0] o_mid,
output var [BUS_CONFIG.address_width-1:0] o_maddr,
output var [MINFO_WIDTH-1:0] o_minfo,
input var [SELECT_WIDTH-1:0] i_select,
interface.request_slave slave_if,
interface.request_master master_if[MASTERS]
input var i_clk,
input var i_rst_n,
output var pzcorebus_command o_mcmd,
input var [SELECT_WIDTH-1:0] i_select,
interface.request_slave slave_if,
interface.request_master master_if[MASTERS]
);
localparam bit BROADCAST = is_csr_profile(BUS_CONFIG) && ENABLE_BROADCAST;

Expand Down Expand Up @@ -95,10 +91,7 @@ module pzcorebus_request_1_to_m_switch

if (EXTERNAL_DECODE) begin : g_command_select
always_comb begin
o_mcmd = aligner_if.mcmd;
o_mid = aligner_if.mid;
o_maddr = aligner_if.maddr;
o_minfo = aligner_if.minfo;
o_mcmd = aligner_if.get_command();
end

always_comb begin
Expand All @@ -107,10 +100,7 @@ module pzcorebus_request_1_to_m_switch
end
else begin : g_command_select
always_comb begin
o_mcmd = pzcorebus_command_type'(0);
o_mid = '0;
o_maddr = '0;
o_minfo = '0;
o_mcmd = '0;
end

always_comb begin
Expand Down
2 changes: 2 additions & 0 deletions pzcorebus_axi_bridge/pzcorebus_axi2corebus_simple_bridge.sv
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ module pzcorebus_axi2corebus_simple_bridge
read_bus_if.mid = axi_if.arid;
read_bus_if.maddr = get_maddr(axi_if.araddr, axi_if.arlen, axi_if.arsize);
read_bus_if.mlength = get_mlength(axi_if.araddr, axi_if.arlen, axi_if.arsize);
read_bus_if.mparam = '0;
read_bus_if.minfo = '0;
end

Expand Down Expand Up @@ -201,6 +202,7 @@ module pzcorebus_axi2corebus_simple_bridge
write_bus_if.mid = axi_if.awid;
write_bus_if.maddr = get_maddr(axi_if.awaddr, axi_if.awlen, axi_if.awsize);
write_bus_if.mlength = get_mlength(axi_if.awaddr, axi_if.awlen, axi_if.awsize);
write_bus_if.mparam = '0;
write_bus_if.minfo = '0;
end

Expand Down
1 change: 1 addition & 0 deletions pzcorebus_common/pzcorebus_base_address_remover.sv
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ module pzcorebus_base_address_remover
master_if.mid = slave_if.mid;
master_if.maddr = slave_if.maddr & (~i_base_mask);
master_if.mlength = slave_if.mlength;
master_if.mparam = slave_if.mparam;
master_if.minfo = slave_if.minfo;
end

Expand Down
1 change: 1 addition & 0 deletions pzcorebus_common/pzcorebus_broadcast_forcer.sv
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ module pzcorebus_broadcast_forcer
master_if.mid = slave_if.mid;
master_if.maddr = slave_if.maddr;
master_if.mlength = slave_if.mlength;
master_if.mparam = slave_if.mparam;
master_if.minfo = slave_if.minfo;
end

Expand Down
2 changes: 2 additions & 0 deletions pzcorebus_common/pzcorebus_id_assigner.sv
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ module pzcorebus_id_assigner
master_if.mid = get_mid(i_base_id, slave_if.mid);
master_if.maddr = slave_if.maddr;
master_if.mlength = slave_if.mlength;
master_if.mparam = slave_if.mparam;
master_if.minfo = slave_if.minfo;
end

Expand Down Expand Up @@ -100,6 +101,7 @@ module pzcorebus_request_id_assigner
master_if.mid = get_mid(i_base_id, slave_if.mid);
master_if.maddr = slave_if.maddr;
master_if.mlength = slave_if.mlength;
master_if.mparam = slave_if.mparam;
master_if.minfo = slave_if.minfo;
end

Expand Down
4 changes: 4 additions & 0 deletions pzcorebus_common/pzcorebus_if.sv
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ interface pzcorebus_if
output mid,
output maddr,
output mlength,
output mparam,
output minfo,
input sdata_accept,
output mdata_valid,
Expand Down Expand Up @@ -123,6 +124,7 @@ interface pzcorebus_if
input mcmd,
input mid,
input maddr,
input mparam,
input mlength,
input minfo,
output sdata_accept,
Expand Down Expand Up @@ -193,6 +195,7 @@ interface pzcorebus_if
input mid,
input maddr,
input mlength,
input mparam,
input minfo,
input sdata_accept,
input mdata_valid,
Expand Down Expand Up @@ -262,6 +265,7 @@ interface pzcorebus_if
output mid,
output maddr,
output mlength,
output mparam,
output minfo,
output mdata_valid,
output sdata_accept,
Expand Down
64 changes: 43 additions & 21 deletions pzcorebus_common/pzcorebus_if_internal_macros.svh
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ typedef logic [BUS_CONFIG.address_width-1:0] pzcorebus_addrss
typedef logic [get_length_width(BUS_CONFIG, 1)-1:0] pzcorebus_length; \
typedef logic [get_unpacked_length_width(BUS_CONFIG)-1:0] pzcorebus_unpacked_length; \
typedef logic [get_burst_length_width(BUS_CONFIG)-1:0] pzcorebus_burst_length; \
typedef logic [get_request_param_width(BUS_CONFIG, 1)-1:0] pzcorebus_request_param; \
typedef logic [get_request_info_width(BUS_CONFIG, 1)-1:0] pzcorebus_request_info; \
typedef logic [get_response_info_width(BUS_CONFIG, 1)-1:0] pzcorebus_response_info; \
typedef logic [BUS_CONFIG.data_width-1:0] pzcorebus_data; \
Expand All @@ -34,6 +35,7 @@ pzcorebus_command_type mcmd; \
pzcorebus_id mid; \
pzcorebus_addrss maddr; \
pzcorebus_length mlength; \
pzcorebus_request_param mparam; \
pzcorebus_request_info minfo; \
logic sdata_accept; \
logic mdata_valid; \
Expand Down Expand Up @@ -69,6 +71,9 @@ function automatic pzcorebus_packed_command get_packed_command(); \
if (COMMAND_POSITION_LIST.mlength.width > 0) begin \
`pzcorebus_if_get_packer(packer, COMMAND_POSITION_LIST.mlength) = mlength; \
end \
if (COMMAND_POSITION_LIST.mparam.width > 0) begin \
`pzcorebus_if_get_packer(packer, COMMAND_POSITION_LIST.mparam) = mparam; \
end \
if (COMMAND_POSITION_LIST.minfo.width > 0) begin \
`pzcorebus_if_get_packer(packer, COMMAND_POSITION_LIST.minfo) = minfo; \
end \
Expand All @@ -93,7 +98,13 @@ function automatic void put_packed_command(pzcorebus_packed_command command); \
else begin \
mlength = '0; \
end \
if (BUS_CONFIG.request_info_width > 0) begin \
if (COMMAND_POSITION_LIST.mparam.width > 0) begin \
mparam = `pzcorebus_if_get_packer(packer, COMMAND_POSITION_LIST.mparam); \
end \
else begin \
mparam = '0; \
end \
if (COMMAND_POSITION_LIST.minfo.width > 0) begin \
minfo = `pzcorebus_if_get_packer(packer, COMMAND_POSITION_LIST.minfo); \
end \
else begin \
Expand Down Expand Up @@ -121,7 +132,13 @@ function automatic pzcorebus_command get_command(); \
else begin \
command.length = '0; \
end \
if (BUS_CONFIG.request_info_width > 0) begin \
if (COMMAND_POSITION_LIST.mparam.width > 0) begin \
command.param = mparam; \
end \
else begin \
command.param = '0; \
end \
if (COMMAND_POSITION_LIST.minfo.width > 0) begin \
command.info = minfo; \
end \
else begin \
Expand Down Expand Up @@ -152,7 +169,13 @@ function automatic void put_command(pzcorebus_command command); \
else begin \
mlength = '0; \
end \
if (BUS_CONFIG.request_info_width > 0) begin \
if (COMMAND_POSITION_LIST.mparam.width > 0) begin \
mparam = command.param; \
end \
else begin \
mparam = '0; \
end \
if (COMMAND_POSITION_LIST.minfo.width > 0) begin \
minfo = command.info; \
end \
else begin \
Expand Down Expand Up @@ -392,25 +415,18 @@ endfunction \
localparam int DATA_SIZE = BUS_CONFIG.data_width / BUS_CONFIG.unit_data_width; \
localparam int LENGTH_OFFSET_LSB = $clog2(BUS_CONFIG.unit_data_width / 8); \
localparam int LENGTH_OFFSET_WIDTH = (DATA_SIZE > 1) ? $clog2(DATA_SIZE) : 1; \
localparam int BURST_OFFSET = DATA_SIZE - 1; \
localparam int BURST_SHIFT = $clog2(DATA_SIZE); \
\
function automatic pzcorebus_unpacked_length get_length(); \
case (1'b1) \
`pzcorebus_csr_profile(BUS_CONFIG): return pzcorebus_unpacked_length'(1); \
is_atomic_command(): return pzcorebus_unpacked_length'(DATA_SIZE); \
is_message_command(): return pzcorebus_unpacked_length'(0); \
default: return unpack_length(); \
endcase \
endfunction \
\
function automatic pzcorebus_unpacked_length get_aligned_length(); \
pzcorebus_unpacked_length offset; \
logic no_offset; \
no_offset = \
(!`pzcorebus_memoy_h_profile(BUS_CONFIG)) || (DATA_SIZE == 1) || \
is_atomic_command() || is_message_command(); \
if (no_offset) begin \
if ((DATA_SIZE == 1) || is_atomic_command() || is_message_command()) begin \
offset = pzcorebus_unpacked_length'(0); \
end \
else begin \
Expand All @@ -420,20 +436,21 @@ function automatic pzcorebus_unpacked_length get_aligned_length(); \
endfunction \
\
function automatic pzcorebus_burst_length get_burst_length(); \
if (`pzcorebus_memoy_h_profile(BUS_CONFIG)) begin \
pzcorebus_unpacked_length length; \
length = get_aligned_length() + pzcorebus_unpacked_length'(BURST_OFFSET); \
return pzcorebus_burst_length'(length >> BURST_SHIFT); \
if ((DATA_SIZE == 1) || `pzcorebus_csr_profile(BUS_CONFIG)) begin \
return pzcorebus_burst_length'(get_length()); \
end \
else begin \
return pzcorebus_burst_length'(get_length()); \
pzcorebus_unpacked_length length; \
length = get_aligned_length() + pzcorebus_unpacked_length'(DATA_SIZE - 1); \
return pzcorebus_burst_length'(length / DATA_SIZE); \
end \
endfunction \
\
function automatic pzcorebus_unpacked_length get_response_length(); \
case (1'b1) \
is_posted_command(): return pzcorebus_unpacked_length'(0); \
is_read_command(): return unpack_length(); \
is_read_command(), \
is_atomic_command(): return unpack_length(); \
default: return pzcorebus_unpacked_length'(DATA_SIZE); \
endcase \
endfunction
Expand All @@ -448,7 +465,7 @@ function automatic pzcorebus_packed_response get_packed_response(); \
`pzcorebus_if_get_packer(packer, RESPONSE_POSITION_LIST.sid) = sid; \
`pzcorebus_if_get_packer(packer, RESPONSE_POSITION_LIST.serror) = serror; \
`pzcorebus_if_get_packer(packer, RESPONSE_POSITION_LIST.sdata) = sdata; \
if (BUS_CONFIG.response_info_width > 0) begin \
if (RESPONSE_POSITION_LIST.sinfo.width > 0) begin \
`pzcorebus_if_get_packer(packer, RESPONSE_POSITION_LIST.sinfo) = sinfo; \
end \
if (`pzcorebus_memoy_h_profile(BUS_CONFIG)) begin \
Expand All @@ -467,7 +484,7 @@ function automatic void put_packed_response(pzcorebus_packed_response response);
sid = `pzcorebus_if_get_packer(packer, RESPONSE_POSITION_LIST.sid); \
serror = `pzcorebus_if_get_packer(packer, RESPONSE_POSITION_LIST.serror); \
sdata = `pzcorebus_if_get_packer(packer, RESPONSE_POSITION_LIST.sdata); \
if (BUS_CONFIG.response_info_width > 0) begin \
if (RESPONSE_POSITION_LIST.sinfo.width > 0) begin \
sinfo = `pzcorebus_if_get_packer(packer, RESPONSE_POSITION_LIST.sinfo); \
end \
else begin \
Expand All @@ -493,7 +510,7 @@ function automatic pzcorebus_response get_response(); \
response.id = sid; \
response.error = serror; \
response.data = sdata; \
response.info = (BUS_CONFIG.response_info_width > 0 ) ? sinfo : '0; \
response.info = (RESPONSE_POSITION_LIST.sinfo.width > 0) ? sinfo : '0; \
response.unit_enable = (`pzcorebus_memoy_h_profile(BUS_CONFIG)) ? sresp_uniten : '0; \
response.last = (`pzcorebus_memoy_profile(BUS_CONFIG) ) ? sresp_last : '0; \
return response; \
Expand All @@ -504,7 +521,7 @@ function automatic void put_response(pzcorebus_response response); \
sid = response.id; \
serror = response.error; \
sdata = response.data; \
if (BUS_CONFIG.response_info_width > 0) begin \
if (RESPONSE_POSITION_LIST.sinfo.width > 0) begin \
sinfo = response.info; \
end \
else begin \
Expand Down Expand Up @@ -552,6 +569,7 @@ modport request_master ( \
output mid, \
output maddr, \
output mlength, \
output mparam, \
output minfo, \
input sdata_accept, \
output mdata_valid, \
Expand Down Expand Up @@ -604,6 +622,7 @@ modport command_master ( \
output mcmd, \
output mid, \
output maddr, \
output mparam, \
output mlength, \
output minfo, \
import put_packed_command, \
Expand Down Expand Up @@ -659,6 +678,7 @@ modport request_slave ( \
input mid, \
input maddr, \
input mlength, \
input mparam, \
input minfo, \
output sdata_accept, \
input mdata_valid, \
Expand Down Expand Up @@ -712,6 +732,7 @@ modport command_slave ( \
input mid, \
input maddr, \
input mlength, \
input mparam, \
input minfo, \
import get_packed_command, \
import get_command, \
Expand Down Expand Up @@ -766,6 +787,7 @@ modport request_monitor ( \
input mid, \
input maddr, \
input mlength, \
input mparam, \
input minfo, \
input sdata_accept, \
input mdata_valid, \
Expand Down
6 changes: 5 additions & 1 deletion pzcorebus_common/pzcorebus_if_pkg.sv
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package pzcorebus_if_pkg;
pzcorebus_if_position_info mid;
pzcorebus_if_position_info maddr;
pzcorebus_if_position_info mlength;
pzcorebus_if_position_info mparam;
pzcorebus_if_position_info minfo;
pzcorebus_if_position_info mdata;
pzcorebus_if_position_info mdata_byteen;
Expand Down Expand Up @@ -57,7 +58,9 @@ package pzcorebus_if_pkg;
list.maddr.width = bus_config.address_width;
list.mlength.lsb = calc_next_lsb(list.maddr);
list.mlength.width = get_length_width(bus_config, 0);
list.minfo.lsb = calc_next_lsb(list.mlength);
list.mparam.lsb = calc_next_lsb(list.mlength);
list.mparam.width = get_request_param_width(bus_config, 0);
list.minfo.lsb = calc_next_lsb(list.mparam);
list.minfo.width = get_request_info_width(bus_config, 0);

if (`pzcorebus_csr_profile(bus_config)) begin
Expand Down Expand Up @@ -137,6 +140,7 @@ package pzcorebus_if_pkg;
width += list.mid.width;
width += list.maddr.width;
width += list.mlength.width;
width += list.mparam.width;
width += list.minfo.width;
width += list.mdata.width;
width += list.mdata_byteen.width;
Expand Down

0 comments on commit 95171ee

Please sign in to comment.