Motivated by the high yield variability in the semiconductor industry where the quality of the end products is uncertain and is graded into one of several quality levels according to performance before being shipped. We consider a dynamic multi-period yield management problem of a two-stage make-to-stock system faced by a semiconductor manufacturing firm. In the first stage, the firm invests in raw material before any actual demand is known, and produces multiple types of products with random yield rates because of the presence of randomness in the process. In the second stage, products are classified into different classes by quality, and allocated in a number of sequential periods. Demand is also random and can be classified into multiple classes corresponding to product levels. Demands can be upgraded when one type of product has been depleted. This paper presents a multi-period, multi-product, downward substitution model to determine the optimal production input and allocation of the different products to satisfy demands. The production and allocation problem is modelled as a stochastic dynamic program in which the objective is to maximise the profit of the firm. We show that the simple one step upgrade substitution policy is optimal, and the objective function is concave in production input. An iterative algorithm is designed to find the optimal production input and numerical experiments are used to illustrate its effectiveness.