Modern electronic design is typically performed with computer aided design (CAD) tools or electronic design automation (EDA) systems. To design a circuit, such as an integrated circuit (IC), a designer first creates high level behavior descriptions of the IC device using a high-level hardware design language (HDL). Common examples of HDLs include Verilog and VHDL. An EDA system typically receives the high level behavioral descriptions of the IC device and translates this high-level design language into netlists of various levels of abstraction. Essentially, the process to implement an electronic device begins with functional design and verification (e.g., using RTL), and then proceeds to physical design of a layout and verification.
Circuit designers and verification engineers use different methods to verify circuit designs. One common method of verification is the use of simulation. Simulation dynamically verifies a design by monitoring behaviors of the design with respect to test stimuli. For many types of designs, simulation can and should be performed during the design process to ensure that the ultimate goals are achievable and will be realized by the finished product.
For example, SPICE and FASTSPICE are common types of simulators that perform simulation to verify the operation of an electronic design. With these types of tools, the electronic design is converted into a system of equation(s), which is then solved for a given set of inputs to check the state of specific portions of the circuit at given points in time.
A significant portion of the data pertaining to the simulation activities may be waveform data. In many cases, the waveform is the output data that results from performing simulation on analog or analog/mixed signal designs. For example, a given circuit design may receive a set of stimulus data, where simulation of a model of that circuit design is performed using the stimulus to identify the resulting waveform pattern from expected operation of that design. In other cases, the waveform data is the input data that is fed into a circuit design for simulation.
The EDA tool may employ either a waveform viewing tool or a waveform editing tool to visually display waveform data onto the user interface of a user display apparatus. In many cases, these tools are operated in an interactive manner, where a user dynamically manipulates the tool to display the waveform data in real-time with a desired visual representation. For example, the user may manipulate the waveform tool to zoom into a specific portion of the waveform or to scroll across different portions of the waveform. This interactive manipulation permits the user to analyze the waveforms and to seek out anomalies that may indicate possible errors in the circuit design, by scanning through the data and zooming in at specific portions of the waveforms.
Under the covers, numerous computational operations may be performed to comply with the user's manipulation of the waveform tool. Such operations may involve loading the waveform data into memory, retrieving the specific data to be operated upon, performing graphical operations upon that data to generate display data as required by the user commands, and generation of the interface for display. With interactive tools, it is desirable for these operations to be performed fast enough such that the user does not experience undue delays while rendering the waveform for display on the display screen.
The problem is that modern EDA tools are now generating massive quantities of waveform data, e.g., involving tens of millions of datapoints on thousands of waveforms. In many cases, many or all of the waveforms need to be displayed simultaneously onto a computer display screen. Given this large volume of waveform data, it is becoming very difficult to maintain interactive performance from conventional waveform viewing tools. These performance problems occur because even simple calculations become very difficult to process when there is both a large amount of data and a need to quickly process that data for display on an interactive tool.
Therefore, there is a need for an improved approach to handle waveform data that that can adequately address these problems with the conventional tools.