VHDL methods


Contents: compiling, simulators, simulator interface, fault simulation, synthesis, high level synthesis, RTL synthesis, block based design, system-on-a-chip design


Analysis, compilation and elaboration

The simulation process of VHDL entities requires two preliminary steps:

The source code analysis involves the lexicographical and the syntaxical analysis. If both the lexis and the syntax are correct the compiler generates an intermediary code stored in the design library.

There are several kinds of design libraries:

The next step is elaboration which performs several actions such as:

The simulation process starts with several initializing actions such as:

The following figure shows different elements and actions required before the simulation process can start.


Simulation

Simulation is the essential process required for any design. It is the process which permits to verify the functional characteristics of models at any level of detail and/or abstraction; from system level down to gate level. Simulators use timing characteristics defined before synthesis. After the synthesis the simulation is run using the temporal parameters extracted from the layout. Such a simulation allows dynamic timing analysis. Static timing analysis may also be done by synthesis tools during optimization by simply extracting the delays from the cells used to generate the circuit.

However static analysis is difficult to apply for:

The main role of simulation is the model animation. This allows modeler to observe each unit (entity) response according to the applied stimuli. Given that the models may be built from many interconnected units, the simulation offers the means to observe and o analyze the internal activities visible at the interconnection level.


Simulator interface

A typical VHDL simulator handles several kinds of windows used to display the simulation results. The following figures show some working windows of Modeltech simulator. The owner of the software is ModelTechnology company.


Fault simulation

Fault simulation is the simulation of the model with a particular set of input stimuli vectors.

Fault simulation allows to:

The efficiency of functional testing is called fault coverage and is measured by:

fault_coverage (in %) = faults_detected*100/faults_considered

Typical value of fault coverage may be situated between 75% and 99.9%; some faults are always possible !

The cost of "repairing" of a functional error is changing rapidly depending on the stage and place of the error detection.


Synthesis

Synthesis is a process of transforming the functional models into the detailed structural models.

There are two levels of digital circuits synthesis:

High level synthesis proceeds in several steps:

Register Transfer Level synthesis

RTL synthesis transforms the RTL level descriptions into the corresponding and optimized gate level models.

This process includes translation and optimization.

The logic level model is a structural description built from logic gates corresponding to logic operators seen as components

The optimization phase occurs at all intermediate levels (RTL, logic, gate). The constraints provided by the modeler are used to guide the optimization process. The initially generated logic gate net-list undergoes optimization process according to two kinds of constraints:

The default optimization target is minimum circuit size. This optimization involves the use of hierarchical blocks optimized starting from the lower level blocks in a bottom-up process.

Logic optimization

Once synthesis has translated a design to logic level, all elements seen at RTL level are fixed and only combinational logic is optimized. Optimization at this level performs boolean optimization based on different techniques such as:

The synthesis algorithms operate on multiple level (levels of logic equations) and multiple output basis. They are much more complex and efficient than the traditional methods based on a two dimensional Karnaugh maps.

Example of a two-output function of four arguments: x=f(a,b,c,d); y=f(a,b,c,d)

after factorization => (6 basic gates)

after flattening =>

Gate level optimization

Gate level optimization is related to the gate to transistor mapping. In this process basic logic gates are mapped onto ASIC or FPGA cells. These cells are built from interconnected transistors in this way that negated operations such as nand or nor need less transistors than direct operators such as and or or. The following example illustrates both the logic level and the gate level optimization. Note that simple gates are replaced by a smaller number of gates including nand and nor. Morover, these functionally more complex cells require less transistors to be realized.


Block based system development

The synthesis of large systems shifts in the design paradigm from the top-down synthesis to the reusable block-based synthesis. Currently, most functional blocks are created from scratch and are seldom used again. This must change if we wish to sustain the productivity following the growh of complexity. The following figure shows the emerging gap between the productivity and the complexity of the chips.

Note that the reuse is already exploited at the standard cell level. However it is still limited to cell libraries from single supporters.

The reuse paradigm needs reusable blocks and methodologies allowing to combine the blocks coming from different sources into complex systems. The reuse methodology needs also to provide the techniques to create highly reusable or adaptable blocks.

This requires the standards to support the creation and integration of reusable blocs.

The group, known as the VSI Alliance (Virtual Socket Interface) has been created recently. It seeks to define the form and content of information necessary to pass from the creators of the reusable blocks to the users. The Alliance comprises

The main aim of the Alliance is to develop the interface standards that allow to mix and match of reusable blocks at software, firmware and hardware level.

In reality a combination of these levels may be used to assemble the final systems.

The above component modeling cube shows three essential dimensions to be taken into account for component modeling:

Adaptability

Portability

The system design with reusable blocks is going to enforce bottom-up design paradigm. This paradigm will be strictly related to the notion of generations.

Design steps:


Block based System-On-a-Chip design (SOC)

The integration platform for a System-On-a-Chip design is based on reuse of the predesigned blocks conceived for a required application domain. The selection of the application domain is based on market objectives, and the domain is conceived to permit a high probabilitry of reuse over a certain period of time.

The integration platform consists of:

  • a set of global architectural aspects and constraints (integration structure)
  • a set of virtual components
  • a set of design methods and tools
  • The SOC methodologies

    The SOC design-methodology is in a rapid transition from traditional time drived design to Virtual Components based design. This transition is based on the growing defree of reuse.

    There three basic levels of reuse:

    The level of reuse depends on the type of the blocks provided for reuse: soft-RTL, firm- netlist, or hard - layout.

    Personal reuse

    The personal reuse is base on the knowledge and experience accumulated by single designers or small design teams. To make this reuse level effective, derivative projects must involve a high degree of "internal " reuse.

    Organizational reuse

    The organizational reuse may be based on source reuse portofolio. The entry point into block-based design brings opportunity to reuse the blocks created by another design team. The function, constraints and the context for a block are known as a result of a top-down system design process. Source blocks may be modified to meet the system constraints.

    The productivity increase depends in high extent on the quality of documentation, the presence of appropriate testbenches and the availability of the original designer to answer the questions.

    Further improvement in organizational reuse may be experienced when:

    Global reuse

    Global reuse is based on virtual component portofolio. The transition of re-usable block into virtual comonent status is where the greatest productivity benefits are realized. In case of virtual components the separation of authoring and integration is necessary.

    Virtual components are are precharacterized and verified blocks designed for specific SOC application domains.

    Virtual components are predestined for the development of virtual systems (VS). Virtual systems involve a range of constraints related with performance, power, interconnectivity, relaiability, manufacturability, cost and other market-specific parameters.

    The virtual component domains are characterized by the functions, formats, and flexibility (adaptability) of each block, the integration architecture into which the blocks will plug, the techniques required for the evaluation and verification of all constraints affecting the blocks.

    Firm and hard virtual components belonging to the given application domain are tuned (power, perfoirmance,cost) and optimized for an integration and manufacturing environment including tools and fabrication processes.

    The use of such components may result in huge benefits in design process and allow much shorter TTM.

    Things to come

    With the maturing of technological processes and the standardization of synthesis techniques and tools, soft VCs will assume an expanding role.

    The intercompany methodologies will emerge to provide global IP-based business model for IP control and protection.

    Mixed-signal solutions involving the creation of analog and digital VCs will appear. This in turn will promote the reuse of mixed analog-digital blocks on the same chip.