ported puncturing block. unit test succeeds, execution in fg not yet tested because this block is part of the multi level coder that will be tested as a whole.