They both describe the same concept, though people from differing development backgrounds use the terms differently.
Routine, I believe, is an 'older' generic term; for any re-usable block of code. Whenever I programmed in assembly language, I always used the term 'routine'.
"Function" is the term used more nowadays in high-level languages for any 'routine' not part of a class. (Except in Pascal, function describes a routine that returns a value, while procedure is one which returns nothing.)
Then a "method" is any routine that's a member of an object (an instance method) or of a class (class/static method).