From Old Galician-Portuguese silva, from Latin silva, from Proto-Indo-European *swel-, *sel- (“mountain, ridge, forest”). Compare the doublet selva and Galician silva.
The /i/ is puzzling. Philologist Leite de Vasconcelos felt that the word was not a Latinism and conjectured a term spīna *silvea with the same suffix as ligneus and pīneus, where the close post-tonic vowel would cause the stressed vowel to rise, as in marisma and sirgo.