what is the difference between the following 3 sign extensions
wire signed [7:0] a;
wire signed [10:0] a_sxtnd1;
wire signed [10:0] a_sxtnd2;
wire signed [10:0] a_sxtnd3;
assign a_sxtnd1 = $signed(a);
assign a_sxtnd2 = $signed( { {3{a[7]}} ,a} );
assign a_sxtnd3 = $signed( { 3'd0 ,a} );
What are the differences and anyone of them will fail?