/********************************************** _ _ Cook Darwin __
_ descript: author : Cook.Darwin Version: VERA.0.0 creaded: 2017/7/27 madified: ***********************************************/ `timescale 1ns/1ps (* data_inf_c = “true” *) module data_bind #(
parameter NUM = 2
)(
data_inf_c.slaver data_in [NUM-1:0], data_inf_c.master data_out //[data_NUM]...[data_0]
);
logic clock; logic rst_n;
assign clock = data_out.clock; assign rst_n = data_out.rst_n;
data_inf_c #(data_in.DSIZE) data_in_post [NUM-1:0] (clock,rst_n); data_inf_c #(data_out.DSIZE) data_in_post_mix(clock,rst_n); data_inf_c #(data_out.DSIZE) data_out_pre(clock,rst_n);
logic [NUM-1:0] button; logic [data_in.DSIZE-1:0] data [NUM-1:0];
genvar CC; generate for(CC=0;CC<NUM;CC++)begin // data_connect_pipe_inf data_connect_pipe_inf_inst( // /* data_inf_c.slaver */ .indata (data_in ), // /* data_inf_c.master */ .outdata (data_in_post ) // ); data_c_pipe_inf data_c_pipe_inf_inst( /* data_inf_c.slaver */ .slaver (data_in ), /* data_inf_c.master */ .master (data_in_post ) ); assign button = data_in_post.valid; assign data_in_post.ready = data_in_post_mix.ready; assign data = data_in_post.data; end endgenerate
assign data_in_post_mix.valid = &button; assign data_in_post_mix.data = {>>{data}};
data_valve data_valve_inst( /* input */ .button (&button ), //[1] OPEN ; [0] CLOSE /* data_inf_c.slaver */ .data_in (data_in_post_mix ), /* data_inf_c.master */ .data_out (data_out_pre ) );
// data_connect_pipe_inf out_inst( // /* data_inf_c.slaver */ .indata (data_out_pre ), // /* data_inf_c.master */ .outdata (data_out ) // );
data_c_pipe_inf out_inst( /* data_inf_c.slaver */ .slaver (data_out_pre ), /* data_inf_c.master */ .master (data_out ) );
endmodule