Another approach can be monte-carlo simulations. You can use this method to find the variation of the output variable you are interested in considering the variations of your input variables.

It is usually used to solve more complex problems in a numerical way, but you can also apply it to your adjustable voltage regulator example.

First of all you need to have an understanding of the distribution and variation of your input variables. A normal distribution may or may not be the correct distribution. E.g. a resistor supplier could remove the resistors with tighter tolerance from your assumed normally distributed +/- 1% resistors and sells them as +/- 0.5 %. You could have zero resistors that are close to your expected mean and the distribution could look like an 'U' instead of a bell curve.

Let us assume we have a normal distribution. The next step is to understand, what the +/- 1 % tolerance actually means. Should it be +/- 1 standard deviation, +/- 2 or +/-3 standard deviations. In the EXCEL sheet the assumption is 95%, which actually means a deviation of +/- 2 sigma (+/- 2 standard deviations) - that implies that you expect approx. 5% of the resistors to be out of the tolerance limits.

If you have done that, you can use e.g. SCILAB (EXCEL or as far as I know LTSpice should also do the trick) to generate random data (e.g. 100 samples) for each of the input variables R1, R2, V_REF based on the distribution you selected.

In my example I have created 10000 samples normally distributed for R1, R2, V_REF, the tolerance is assumed as +/- 2 sigma (~95% of the values are within the tolerance). The output voltage of the adjustable voltage regulator gets then calculated based on the equation (V_OUT_VAR = ((R1_VAR+R2_VAR)./R1_VAR).*V_REF_VAR) for all the samples. You can clearly see, that the output variation is again a bell shaped curve. You can then calculate the standard deviation of the output data.

In this particular example I get a standard deviation of approx. 1.07 % of the output curve - that means that typically ~68 % of your parts provide an output voltage within +/- 1.07%.

If I use +/- 2 sigma (2*standard deviations), the tolerance changes to 2.14 % deviation with a probability of ~95 % to be within the 2.14 %.

I hope this helps.

Regards

SCILAB 6.1.1 code example:

`clear();`

R1_AVG = 10*10^3; // in ohm

R2_AVG = 10*10^3; // in ohm

V_REF_AVG = 1.25; // in V

R1_TOL_PERCENT = 1; // in % at sigma level

R2_TOL_PERCENT = 1; // in % at sigma level

V_REF_TOL_PERCENT = 2; // in % at sigma level

R1_TOL_ABS = R1_AVG*R1_TOL_PERCENT/100; // in ohms at sigma level

R2_TOL_ABS = R2_AVG*R2_TOL_PERCENT/100; // in ohms at sigma level

V_REF_TOL_ABS = V_REF_TOL_PERCENT*V_REF_AVG/100; // in V at sigmal level

SIGMA_LEVEL = 2; // +/- 2 s => ~95 percent of all values

// are within the defined tolerance range

NUMBER_OF_RUNS = 10000;

NUMBER_OF_CLASSES = 100;

R1_VAR = grand(NUMBER_OF_RUNS, 1, "nor", R1_AVG, R1_TOL_ABS/SIGMA_LEVEL); // in R

R2_VAR = grand(NUMBER_OF_RUNS, 1, "nor", R2_AVG, R2_TOL_ABS/SIGMA_LEVEL); // in R

V_REF_VAR = grand(NUMBER_OF_RUNS, 1, "nor", V_REF_AVG, V_REF_TOL_ABS/SIGMA_LEVEL); // in V

V_OUT_VAR = ((R1_VAR+R2_VAR)./R1_VAR).*V_REF_VAR; // in V

V_OUT_VAR_RELATIVE = ((V_OUT_VAR./(((R1_AVG+R2_AVG)/R1_AVG)*V_REF_AVG))-1)*100; // in %

V_OUT_STD = stdev(V_OUT_VAR_RELATIVE);

V_OUT_MEAN = mean(V_OUT_VAR);

subplot(5,1,1);

histplot(NUMBER_OF_CLASSES, R1_VAR, normalization=%f);

title("R1 variation");

xlabel("Resistance in Ohm");

ylabel("Number of samples");

subplot(5,1,2);

histplot(NUMBER_OF_CLASSES, R2_VAR, normalization=%f);

title("R2 variation");

xlabel("Resistance in Ohm");

ylabel("Number of samples");

subplot(5,1,3);

histplot(NUMBER_OF_CLASSES, V_REF_VAR, normalization=%f);

title("V_REF variation");

xlabel("Voltage in V");

ylabel("Number of samples");

subplot(5,1,4);

histplot(NUMBER_OF_CLASSES, V_OUT_VAR, normalization=%f);

title("V_OUT variation in V");

xlabel("Voltage in V");

ylabel("Number of samples");

legend("Mean: "+string(V_OUT_MEAN)+"V");

subplot(5,1,5);

histplot(NUMBER_OF_CLASSES, V_OUT_VAR_RELATIVE, normalization=%t);

title("V_OUT variation in %");

xlabel("Relative deviation of V_OUT");

ylabel("Relative probability");

legend("Stdev: +/-"+string(V_OUT_STD)+"%");