Design for Test(DFT) is technology used to confirm that a manufactured part is implemented as you instructed. It is used to check manufacturing process failures. It does nothing to check that the instructions meet the requirements of what you were asked to design.
SVA checks that your design satisfies a requirement. e.g. "A request for data must respond within 5 clock cycles" The syntax used with SVA is best suited for protocol checking and state transitions over time - that is called temporal. It is not as well suited for checking validity of data, like a compression algorithm. You will have to write a reference model that predicts what the data should be and checks that by comparing with the actual data. Both SVA and the checkers you write contribute to functional coverage of your requirements.
Code coverage measures whether a test, or a set of tests exercises your RTL code. You can assume that unexercised code is untested or unused functionality, but you cannot assume exercised code is functionally correct.