A person with knowledge of the negotiations says the San Francisco 49ers and free-agent special teams standout C.J. Spillman have reached agreement on a three-year contract.