In model-driven product line development, the developer does not only specify high-level features, but also define how these features can be realized in terms of model editing operations. As a product line evolves over time, it is vital for the developer to have a precise overview of the added/removed products in the evolved product line, which is considered the semantic difference between the original and the evolved product line. However, current semantic differencing techniques for feature models only compare high-level features of the two product lines without considering their feature realizations. We address this challenge by proposing a semantic differencing approach which considers both the feature specification and realization of the original and the evolved product line. We illustrate our approach on the evolution of Common Variability Language (CVL)-based product lines. In particular, we define two semantic differencing operators for comparing the feature specification and the feature realization of two product lines, resulting in a set of "diff models". These two operators are implemented in Alloy and evaluated through a case study on train control product lines.