To understand model validation, you must first understand that data variables reference data on disk and only contain descriptive information about the data on disk.
For example, a feature class data variable contains the pathname to the data on disk and a list of information about all the fields in the feature class (its schema), and other pertinent information used by tools.
When you create a data variable in your model, ArcGIS opens up the data on disk and fetches all the descriptive information about the data and stores it in the data variable. It does this
only when you first create the data variable, because fetching the descriptive data can be time consuming. Other alternatives, such as fetching when the model is opened for editing or when accessing the variable in any way, would make model building much slower.
But there are times when the data variable must be refreshed. The most common is when you change the data on disk in such a way as to affect the model. Determining what changes will affect the model can be subtle. Adding or deleting new features or rows doesn't affect the contents of a data variable, so refreshing isn't needed in this case. Renaming a dataset will certainly affect the model, and adding or deleting fields might affect the model, depending on whether those fields are being used.
If you execute a model with data variables that have not been refreshed, you'll get an error message, such as "Input data does not exist".
To refresh the contents of data variables in the ModelBuilder window, click the Model menu and click Validate Entire Model. Validating the model will refresh all data variables, check all parameter values for correctness, and return all processes to their ready-to-run state.
Finally, when you execute a model, all output data variables are automatically refreshed to reflect the results of execution.
Value variables
In contrast to data variables, value variables (which don't reference data on disk) contain the actual data, as shown below. When you validate a model, the content of each value variable is checked to see if it is valid for the tools in which it is used.