A method of wireless communication at a receiving wireless communication device (204, 300), comprising: receiving an interleaved code block comprising a plurality of coded bits from a transmitting wireless communication device (202, 300) over a wireless air interface; de-interleaving the interleaved code block utilizing an interleaver to produce a code block, wherein the interleaver comprises a plurality of rows and a plurality of columns, wherein a number of the plurality of columns varies between the plurality of rows, wherein de-interleaving the plurality of coded bits further comprises: feeding the plurality of coded bits into successive columns of the plurality of columns of the interleaver starting with the first column of the plurality of columns; and reading out the plurality of coded bits from successive rows of the plurality of rows of the interleaver starting with the first row of the plurality of rows; wherein a first one of the coded bits in the first row is a first one of the coded bits in the first column; wherein a number of rows in a first column of the plurality of columns and a number of columns in a first row of the plurality of rows are equal and selected based on a number of the plurality of coded bits in the code block, and the number of coded bits in each row decreases from the highest number of coded bits in the first row to the lowest number of coded bits in a last row; wherein the number of rows in the first column is equal to the smallest integer P that satisfies an equation P ∗ (P+1)/2 ≥ N, where N corresponds to the number of the plurality of coded bits in the code block; and decoding the code block to produce an information block. receiving an interleaved code block comprising a plurality of coded bits from a transmitting wireless communication device (202, 300) over a wireless air interface; de-interleaving the interleaved code block utilizing an interleaver to produce a code block, wherein the interleaver comprises a plurality of rows and a plurality of columns, wherein a number of the plurality of columns varies between the plurality of rows, wherein de-interleaving the plurality of coded bits further comprises: feeding the plurality of coded bits into successive columns of the plurality of columns of the interleaver starting with the first column of the plurality of columns; and reading out the plurality of coded bits from successive rows of the plurality of rows of the interleaver starting with the first row of the plurality of rows; wherein a first one of the coded bits in the first row is a first one of the coded bits in the first column; wherein a number of rows in a first column of the plurality of columns and a number of columns in a first row of the plurality of rows are equal and selected based on a number of the plurality of coded bits in the code block, and the number of coded bits in each row decreases from the highest number of coded bits in the first row to the lowest number of coded bits in a last row; wherein the number of rows in the first column is equal to the smallest integer P that satisfies an equation P ∗ (P+1)/2 ≥ N, where N corresponds to the number of the plurality of coded bits in the code block; and feeding the plurality of coded bits into successive columns of the plurality of columns of the interleaver starting with the first column of the plurality of columns; and reading out the plurality of coded bits from successive rows of the plurality of rows of the interleaver starting with the first row of the plurality of rows; wherein a first one of the coded bits in the first row is a first one of the coded bits in the first column; wherein a number of rows in a first column of the plurality of columns and a number of columns in a first row of the plurality of rows are equal and selected based on a number of the plurality of coded bits in the code block, and the number of coded bits in each row decreases from the highest number of coded bits in the first row to the lowest number of coded bits in a last row; wherein the number of rows in the first column is equal to the smallest integer P that satisfies an equation P ∗ (P+1)/2 ≥ N, where N corresponds to the number of the plurality of coded bits in the code block; and decoding the code block to produce an information block.