DVS:An Object Oriented System for Distributed Verilog Simulation
Total Page:16
File Type:pdf, Size:1020Kb
DVS: An Object-Oriented Framework for Distributed Verilog Simulation Lijun Li, Hai Huang and Carl Tropper School of Computer Science McGill University Montreal, Canada lli22, hhuang17, [email protected] Abstract need for decreased simulation time, it is necessary to make use of distributed and parallel computer systems[18]. Net- There is a wide-spread usage of hardware design lan- works of workstations provide a cost-effective environment guages(HDL) to speed up the time-to-market for the design for distributed simulation. of modern digital systems. Verification engineers can sim- Verilog and VHDL are both important VLSI design lan- ulate hardware in order to verify its performance and cor- guages. However, research efforts to date have focused rectness with help of an HDL. However, simulation can’t on distributed VHDL simulators[7, 12, 13]. This paper keep pace with the growth in size and complexity of circuits presents a description of our research to date on a distributed and has become a bottleneck of the design process. Dis- Verilog simulation framework. To the best of our knowl- tributed HDL simulation on a cluster of workstations has edge, ours is the first distributed Verilog simulator. the potential to provide a cost-effective solution to this prob- Writing a Verilog compiler represents a substantial com- lem. mitment. Consequently, we made use of Icarus Verilog, an In this paper, we describe the design and implementa- open source Verilog compiler and simulator. We also re- tion of DVS, an object-oriented framework for distributed designed Clustered Time Warp[2] and used it as our back- Verilog simulation. Verilog is an HDL which sees wide in- end simulation environment. dustrial use. DVS is an outgrowth of Clustered Time Warp, The rest of this paper is organized as follows. In sec- originally developed for logic simulation. The design of the tion 2 we (briefly) introduce PDES, the Icarus Verilog com- framework emphasizes simplicity and extensibility and aims piler and VVP(Verilog Virtual Processor) simulator. In to accommodate experiments involving partitioning and dy- section 3 we detail our effort to design and implement namic load balancing. Preliminary results obtained by sim- DVS(Distributed Verilog Simulator), a distributed Verilog ulating a 16bit multiplier are presented. simulation framework. Preliminary results obtained by sim- ulating a 16bit multiplier are presented in section 4, while the last section contains our conclusions. 1 Introduction 2 Background and Related work Moore’s Law states that computational power will roughly double every 18 months. To the semiconductor de- 2.1 PDES signer, this means a never-ending challenge in bringing in- creasingly larger and more complex IC(Integrated Circuit) A distributed simulation system is composed of pro- to market. cesses which communicate with each other via message The complexity and size of digital systems described by passing. Each process simulates a portion of the physical Verilog continues to grow. The introduction of the system- system and is referred to as a logical process(LP). During on-chip(SoC), which contains CPUs, memory and analog the simulation, LPs create events, send events to other LPs circuitry on a single chip has only served to exacerbate this and receive events from others LPs. Two families of syn- problem. The SoC is intended for use in embedded systems. chronization algorithms are widely used in order to main- Sequential Verilog simulators, or even specialized hardware tain causality in a distributed simulation, known as the con- accelerators, cannot keep up with this pace, and has become servative and optimistic algorithms. a bottleneck of the design process. To accommodate the Conservative algorithms[6] are characterized by block- growing need for increased memory demands as well as the ing behavior. An LP blocks until it has a safe event to pro- Proceedings of the Seventeenth Workshop on Parallel and Distributed Simulation (PADS’03) 1087-4097/03 $17.00 © 2003 IEEE cess. 2.3 Overview of Icarus Verilog An example of an optimistic algorithm is Time Warp[9]. In Time Warp, LPs maintain an input queue which con- Icarus Verilog [19] is an open-source EDA (Electronic tains events received from other LPs, an output queue which Design Automation) Verilog simulator being developed by stores copies of events sent to other LPs and a state list Stephen Williams. As shown in figure 2, Icarus Verilog which stores the LPs state at checkpoint. Time Warp al- includes two independent parts: an IVerilog compiler and lows a local causality violation but uses rollback and anti- a VVP(Verilog Virtual Processor) simulator. The bridge messages to correct possibly erroneous computation. Time connecting these two parts is VVP assembly code, an in- Warp can suffer from cascading rollbacks and excessive termediate representation of the original circuit. The IVer- memory consumption. ilog compiler is a translator that translates the input Verilog source code into VVP assembly code. The VVP simulator 2.2 Verilog is an event-driven simulation engine, which interprets VVP assembly code and process the events. We give a brief in- troduction to Icarus Verilog in the following sections. //structural description Module binaryToESeg; wire eSeg, p1, p2, p3, p4; reg A, B, C, D; Preprocessor eSeg nand #1 g1(p1, C, ~D), g2(p2, A, B), Preprocessed Source g5 g3(p3, ~b, ~D), g4(p4, A, C), Parser g5(eSeg, p1, p2, p3, p4); verilog Source File p1 p4 endmodule p2 p3 //behavioral description iverilog Compiler Internal pform Module binaryToESeg; g1 g2 g3 g4 wire eSeg, p1, p2, p3, p4; reg A, B, C, D; Elaboration vvp Assembly Code C ~D A B ~B ~D A C always @(A or B or C or D) begin eSeg = 1; vvp Simulator Internal netlist if(~A&D) eSeg = 0; if (~A&B&~C) eSeg = 0; Optimizer if (~B&~C&D) eSeg = 0; Simulation Results end endmodule Optimized netlist Figure 1. Structural and behavioral descrip- Code Generator tion of Verilog The Verilog Hardware Description Language is stan- Figure 2. Architecture for Icarus Verilog dardized in IEEE standard #1364-1995. It supports both a behavioral description and a structural description of a digital system. Figure 1 shows an example of how Verilog describes an IC design[17]. It is part of a binary to seven 2.3.1 IVerilog Compiler segment display driver. Although the Verilog language enhances modularity and en- The Verilog language describes a digital system as a set capsulation by the use of modules in the source file of a cir- of modules. Each module has an interface to other modules cuit, the hierarchical structure of modules is not appropriate and represents a logical unit in a structural description (such for the purpose of simulation. The IVerilog compiler flat- as an interconnection of gates) or a behavioral description tens modules in the original source file in the following five which is similar to a programming language. consecutive phases: Verilog is designed to allow concurrent execution. A dig- ital system can be conceived of as a set of concurrent pro- ¯ Preprocessor. It mainly performs file inclusion for ’in- cesses found in initial blocks, always blocks and continuous clude directive and macro substitution for ’define di- assignments. Wait and event control statements can be used rective. to synchronize two concurrent processes. The existence of concurrent processes in Verilog indicates that it is suitable ¯ Parser. The preprocessed source file is parsed and its for distributed simulation[4]. A comprehensive description internal representation is generated with syntax and se- of Verilog can be found in [17]. mantic checking performed. Proceedings of the Seventeenth Workshop on Parallel and Distributed Simulation (PADS’03) 1087-4097/03 $17.00 © 2003 IEEE ¯ Elaboration. The root module is located, unresolved Avril’s CTW(Clustered Time Warp)[2]. It provides services references are resolved, and all instantiations of mod- such as rollback, state saving and restoring, GVT computa- ules are expanded. After scope elaboration and netlist tion and fossil collection to the top layer. elaboration, an internal flattened netlist is generated The top layer is the distributed simulation engine, which from the hierarchically structured modules. includes an event process handler and an interpreter which executes instructions in the code space of virtual thread. ¯ Optimizer. Some useful transformations can be per- formed on the internal netlist in order to simplify netlist and improve simulation efficiency. Partitioner Distributed ¯ Code generator. All circuit information is now stored Functor List Simulation Engine Vthread List in the flattened and optimized internal netlist. There OOCTW are five target formats that can be generated from the vvp Parser MPI / PVM netlist, of which VVP assembly code is the default one used for simulation. vvp Assembly Code Simulation Results 2.3.2 VVP Simulator The VVP simulator is an interpreter for VVP assembly Figure 3. Architecture of DVS code. It parses VVP assembly code to generate netlist of structural items and exert input vectors to drive the simula- tion. The separation of the IVerilog compiler and the VVP 3.2 VVP parser simulator is similar to the separation of compiler and inter- preter in Java. The VVP assembly code is the counterpart of bytecode in Java. Since large VLSI circuit files normally The Verilog language provides the ability to model a cir- take a long time for compilation, this strategy saves a lot cuit by means of both structural descriptions and behav- of time. Once the VVP assembly code file is generated by ioral descriptions. Structural descriptions model the circuit the IVerilog compiler, we can use it in our partitioner and as a network of interconnecting gates and wires, while be- distributed simulator. havioral descriptions model the circuit at a higher level as always and initial blocks. They are translated to .functor statement and .thread statement in the VVP assembly code 3 Design and implementation of the simula- generated by the IVerilog compiler.