To download the examples for Module 6, click Module_6_Examples.zip
Before starting into creating high-level models, consider the following points.
Model Scope
One of the very first model requirements is the scope of the model. Taking time to sit down and consider the following key aspects will richly reward you by saving time when actually creating the model.
- Define the intended audience - what are the expectations?
- Model complexity - define what behavior will be covered by the model, and what
behavior is outside the model design.
- Delivery method - will the model be delivered in hierarchical form or as symbol and
model libraries?
- Does the model contain sensitive IP? If so, you will want to distribute the model as
encrypted ASCII text.
- What parameters are required, and what kind of parameter editing dialog is
desired.
- Will this model be compatible with POP and therefore AC analysis?
Divide and Conquer
Once you have a good idea what the model scope is, you should start thinking about what functional blocks are required. Some points to consider:
- Think about reusing key technology blocks. For example, if you need a rising edge
time delay block in one major functional block, you will probably need that same
block in another major block. Creating the rising edge time delay block as an
independent subcircuit will allow you to reuse the same subcircuit in multiple
hierarchy levels. Passing the time delay as a parameter will allow you to use a
single subcircuit for all rising edge time delays.
- Exploit parameterization. This will allow you to custom configure reusable
technology blocks.
- Consider if you need to use multi-level modeling techniques to create a model which
has multiple schematic views for multiple test objectives. Using multi-level
modeling, you can create models which are speed-optimized for different test
objectives.
Define PASS/FAIL Simulation Testbenches for Each Block
Think about how to verify a particular technology block meets the design requirements. Time and time again users build high level models without thoroughly testing the lowest level functional blocks. Spending time testing the low level blocks will pay you back when those blocks are assembled into large models.