@@ -278,6 +278,48 @@ def get_axi_user_port_ios(_id, aw, dw, iw):
278278 ),
279279 ]
280280
281+ def connect_axi_user_port (axi_port , axi_port_io , user_enable ):
282+ return [
283+ # AW Channel.
284+ axi_port .aw .valid .eq (axi_port_io .awvalid & user_enable ),
285+ axi_port_io .awready .eq (axi_port .aw .ready & user_enable ),
286+ axi_port .aw .addr .eq (axi_port_io .awaddr ),
287+ axi_port .aw .burst .eq (axi_port_io .awburst ),
288+ axi_port .aw .len .eq (axi_port_io .awlen ),
289+ axi_port .aw .size .eq (axi_port_io .awsize ),
290+ axi_port .aw .id .eq (axi_port_io .awid ),
291+
292+ # W Channel.
293+ axi_port .w .valid .eq (axi_port_io .wvalid & user_enable ),
294+ axi_port_io .wready .eq (axi_port .w .ready & user_enable ),
295+ axi_port .w .last .eq (axi_port_io .wlast ),
296+ axi_port .w .strb .eq (axi_port_io .wstrb ),
297+ axi_port .w .data .eq (axi_port_io .wdata ),
298+
299+ # B Channel.
300+ axi_port_io .bvalid .eq (axi_port .b .valid & user_enable ),
301+ axi_port .b .ready .eq (axi_port_io .bready & user_enable ),
302+ axi_port_io .bresp .eq (axi_port .b .resp ),
303+ axi_port_io .bid .eq (axi_port .b .id ),
304+
305+ # AR Channel.
306+ axi_port .ar .valid .eq (axi_port_io .arvalid & user_enable ),
307+ axi_port_io .arready .eq (axi_port .ar .ready & user_enable ),
308+ axi_port .ar .addr .eq (axi_port_io .araddr ),
309+ axi_port .ar .burst .eq (axi_port_io .arburst ),
310+ axi_port .ar .len .eq (axi_port_io .arlen ),
311+ axi_port .ar .size .eq (axi_port_io .arsize ),
312+ axi_port .ar .id .eq (axi_port_io .arid ),
313+
314+ # R Channel.
315+ axi_port_io .rvalid .eq (axi_port .r .valid & user_enable ),
316+ axi_port .r .ready .eq (axi_port_io .rready & user_enable ),
317+ axi_port_io .rlast .eq (axi_port .r .last ),
318+ axi_port_io .rresp .eq (axi_port .r .resp ),
319+ axi_port_io .rdata .eq (axi_port .r .data ),
320+ axi_port_io .rid .eq (axi_port .r .id ),
321+ ]
322+
281323def get_fifo_user_port_ios (_id , dw ):
282324 return [
283325 ("user_fifo_{}" .format (_id ), 0 ,
@@ -794,46 +836,7 @@ def __init__(self, platform, core_config, **kwargs):
794836 axi_port .data_width ,
795837 port ["id_width" ]))
796838 _axi_port_io = platform .request ("user_port_{}" .format (name ))
797- self .comb += [
798- # AW Channel.
799- axi_port .aw .valid .eq (_axi_port_io .awvalid & user_enable ),
800- _axi_port_io .awready .eq (axi_port .aw .ready & user_enable ),
801- axi_port .aw .addr .eq (_axi_port_io .awaddr ),
802- axi_port .aw .burst .eq (_axi_port_io .awburst ),
803- axi_port .aw .len .eq (_axi_port_io .awlen ),
804- axi_port .aw .size .eq (_axi_port_io .awsize ),
805- axi_port .aw .id .eq (_axi_port_io .awid ),
806-
807- # W Channel.
808- axi_port .w .valid .eq (_axi_port_io .wvalid ),
809- _axi_port_io .wready .eq (axi_port .w .ready ),
810- axi_port .w .last .eq (_axi_port_io .wlast ),
811- axi_port .w .strb .eq (_axi_port_io .wstrb ),
812- axi_port .w .data .eq (_axi_port_io .wdata ),
813-
814- # B Channel.
815- _axi_port_io .bvalid .eq (axi_port .b .valid ),
816- axi_port .b .ready .eq (_axi_port_io .bready ),
817- _axi_port_io .bresp .eq (axi_port .b .resp ),
818- _axi_port_io .bid .eq (axi_port .b .id ),
819-
820- # AR Channel.
821- axi_port .ar .valid .eq (_axi_port_io .arvalid & user_enable ),
822- _axi_port_io .arready .eq (axi_port .ar .ready & user_enable ),
823- axi_port .ar .addr .eq (_axi_port_io .araddr ),
824- axi_port .ar .burst .eq (_axi_port_io .arburst ),
825- axi_port .ar .len .eq (_axi_port_io .arlen ),
826- axi_port .ar .size .eq (_axi_port_io .arsize ),
827- axi_port .ar .id .eq (_axi_port_io .arid ),
828-
829- # R Channel.
830- _axi_port_io .rvalid .eq (axi_port .r .valid ),
831- axi_port .r .ready .eq (_axi_port_io .rready ),
832- _axi_port_io .rlast .eq (axi_port .r .last ),
833- _axi_port_io .rresp .eq (axi_port .r .resp ),
834- _axi_port_io .rdata .eq (axi_port .r .data ),
835- _axi_port_io .rid .eq (axi_port .r .id ),
836- ]
839+ self .comb += connect_axi_user_port (axi_port , _axi_port_io , user_enable )
837840 # FIFO ---------------------------------------------------------------------------------
838841 elif port ["type" ] == "fifo" :
839842 data_width = port .get ("data_width" , self .sdram .crossbar .controller .data_width )
0 commit comments