Simulation is a useful tool for the design and analysis of communication links. Indeed, for complex systems, such as are common today, some level of simulation is often essential if insights into system behavior and performance predictions are to be made. The usual steps in developing and using such a simulation are as follows. The first step is to develop a model of the system under study. This model often takes the form of a block diagram that defines the individual subsystems that make up the overall communication system. It is important to identify the approximations made informing the system model. The important parameters of each subsystem must be identified so that they are carried through to the simulation. The second step is to identify the signal processing operation necessary to define each of the subsystems in the overall communication system. At this point mathematical models for each subsystem are introduced. Thus, a choice is made concerning which signals are to be represented using complex envelope techniques. The strategy to use for representing analog filters by digital equivalents is also selected. One must appreciate the additional approximations incurred in this step. The next step is to define the simulation products, which is the set of outputs required from the simulation. Examples are displays of the time-domain waveforms or the power-spectral density at a point in the system. If a performance prediction is to be made, such as the bit error rate for the overall communication system, the method to be used for estimating the performance must be selected. We have seen that a number of techniques may be applied to this important problem and that these techniques range from the Monte-Carlo method, which weights all errors equally and makes no assumption about the form of the decision metric, to more complex estimation schemes which da make assumptions about the decision metric. Recall that this decision allows one to expect a trade off between prior knowledge and computer execution time. At this point the structure of the simulation is known and we can move to software. If a dedicated simulation language is to be used, one now selects models from the model library to implement the various subsystems in the overall communication system. One also selects a strategy for performance evaluation and this determines the estimation routines to be used in the simulation. Other simulation products, such as time-domain waveforms, spectra, and histograms are directed to a postprocessor that provides the tools for processing and displaying the data generated by a simulation. If one is developing code for a custom simulation, the previously selected signal processing and estimation strategies determine the code to be developed. After the simulation code has been developed and executed, one must ensure that the simulation results are reasonable. As previously discussed, this is the important area of validation. In conclusion, it should be pointed out that for extremely complex systems, it is usually desirable to start out with the simplest model that incorporates only the essential features of the system under study. Simulations based on simple models are easier to verify and errors are more easily identified. The simulation can then be enhanced to include other interesting and important features of the communication system under study.