module p_info #( parameter PipeSpec = `PS_def ) (
        inout [`P_m(PipeSpec):0] pipe,
        output             start,
        output             stop,
        output [`P_Data_m(PipeSpec):0] data,
        output             valid,
        output             ready
    );
    generate
        if ( `P_Start_w( PipeSpec ) )
            assign start = pipe[ `P_Start_b(PipeSpec) ];
        else
            assign start = 0;
        if ( `P_Stop_w( PipeSpec ) )
            assign stop  = pipe[ `P_Stop_b(PipeSpec) ];
        else
            assign stop = 0;
    endgenerate

    assign data  = pipe[ `P_Data_m(PipeSpec):`P_Data_l(PipeSpec) ];
    assign valid = pipe[ `P_Valid_b(PipeSpec) ];
    assign ready = pipe[ `P_Ready_b(PipeSpec) ];

endmodule