Half-buffer retiming and token cages for synchronous elastic circuits