## Symbolic simulation of microprocessor models using type classes in Haskell (1999)

Venue: | In CHARME’99 Poster Session |

Citations: | 5 - 1 self |

### BibTeX

@TECHREPORT{Day99symbolicsimulation,

author = {Nancy A. Day and Jeffrey R. Lewis and Byron Cook},

title = {Symbolic simulation of microprocessor models using type classes in Haskell},

institution = {In CHARME’99 Poster Session},

year = {1999}

}

### OpenURL

### Abstract

Abstract. We present a technique for doing symbolic simulation of microprocessor models in the functional programming language Haskell. We use polymorphism and the type class system, a unique feature of Haskell, to write models that work over both concrete and symbolic data. We offer this approach as an alternative to using uninterpreted constants. When the full generality of rewriting is not needed, the performance of symbolic simulation by evaluation is much faster than previously reported symbolic simulation efforts in theorem provers. Symbolic simulation of microprocessor models written in the Haskell programming language [13] is possible without extending the language or its compilers and interpreters. Compared to rewriting in a theorem prover, symbolically simulating via evaluation of a program is generally much faster. Haskell's type class system allows a symbolic domain to be substituted for a concrete one without changing the model or explicitly passing the operations on the domain as parameters. Algebraic manipulations of values in the symbolic domain carry out simplifications similar to what is accomplished by rewriting in theorem provers to reduce the size of terms in the output. Symbolic simulation in Haskell involves constructing a symbolic domain to represent the operations of the model. The values of this domain are syntactic representations of the machine's behavior. For example, using a recursive data type, an appropriate symbolic domain for numeric computations is: data Symbo =

### Citations

3108 | Graph-based algorithms for Boolean function manipulation
- Bryant
- 1986
(Show Context)
Citation Context ... emphasis has been more on building symbolic simulation on top of the simulation provided by the execution of a model as a functional program. Graph structures such as Binary decision diagrams (BDDs) =-=[2]-=- and Multiway decision diagrams (MDGs) [4] are canonical representations of symbolic formulae. In more recent work, we have investigated linking symbolic simulation in Haskell directly with decision p... |

123 | Lava: Hardware design in Haskell
- Bjesse, Claessen, et al.
- 1998
(Show Context)
Citation Context ...yce [10]. The type classes keep track of the higher-order function parameters that Joyce grouped in \representation variables". The approach described in this paper is closely related to work on =-=Lava [1-=-], another Haskell-based hardware description language. Lava has explored using Haskell features such as monads to provide alternative interpretations of circuit descriptions for simulation, vericatio... |

79 | Multiway decision graphs for automated hardware verification
- Corella, Zhou, et al.
- 1997
(Show Context)
Citation Context ...ic simulation on top of the simulation provided by the execution of a model as a functional program. Graph structures such as Binary decision diagrams (BDDs) [2] and Multiway decision diagrams (MDGs) =-=[4-=-] are canonical representations of symbolic formulae. In more recent work, we have investigated linking symbolic simulation in Haskell directly with decision procedures for verication to take advantag... |

26 | Specifying superscalar microprocessors in Hawk. Formal Techniques for Hardware and Hardware-like Systems
- Cook, Launchbury, et al.
- 1998
(Show Context)
Citation Context ... found in Moore [12]. We have also worked on symbolic simulation of a superscalar, out-of-order with exceptions, pipelined microprocessor model in the Haskell-based hardware description language Hawk =-=[3, 11]-=-. We are now able to simulate symbolic datasow for programs running on the model. We are currently extending the Hawk library to handle symbolic control paths as well. Because it is stream-based, the ... |

24 | Symbolic simulation of the JEM1 microprocessor
- Greve
- 1998
(Show Context)
Citation Context ... a transaction type class to dene easily a new instance of transactions that are trees. Symbolic simulation can be carried out with uninterpreted constants using rewriting in a theorem prover (e.g., [=-=8, 9-=-]) or using more specialized techniques such as symbolic functional evaluation [5]. Rewriting requires searching a database of rewrite rules and potentially following unused simplications [12]. Constr... |

24 | Symbolic Simulation: An ACL2 Approach
- Moore
- 1998
(Show Context)
Citation Context ...ails and examples can be found in Day, Lewis, and Cook [7]. One of these examples walks through symbolic simulation in Haskell of the simple, non-pipelined, state-based processor model found in Moore =-=[12]-=-. We have also worked on symbolic simulation of a superscalar, out-of-order with exceptions, pipelined microprocessor model in the Haskell-based hardware description language Hawk [3, 11]. We are now ... |

11 | Symbolic functional evaluation
- Day, Joyce
- 1999
(Show Context)
Citation Context ...ees. Symbolic simulation can be carried out with uninterpreted constants using rewriting in a theorem prover (e.g., [8, 9]) or using more specialized techniques such as symbolic functional evaluation =-=[5-=-]. Rewriting requires searching a database of rewrite rules and potentially following unused simplications [12]. Constructors in our symbolic domains play the same role as uninterpreted constants in a... |

6 |
Microprocessor speci in Hawk
- Matthews, Cook, et al.
- 1998
(Show Context)
Citation Context ... found in Moore [12]. We have also worked on symbolic simulation of a superscalar, out-of-order with exceptions, pipelined microprocessor model in the Haskell-based hardware description language Hawk =-=[3, 11]-=-. We are now able to simulate symbolic datasow for programs running on the model. We are currently extending the Hawk library to handle symbolic control paths as well. Because it is stream-based, the ... |

2 |
Multi-Level Veri of Microprocessor Based Systems
- Joyce
- 1989
(Show Context)
Citation Context ... a transaction type class to dene easily a new instance of transactions that are trees. Symbolic simulation can be carried out with uninterpreted constants using rewriting in a theorem prover (e.g., [=-=8, 9-=-]) or using more specialized techniques such as symbolic functional evaluation [5]. Rewriting requires searching a database of rewrite rules and potentially following unused simplications [12]. Constr... |

1 |
Generic speci of digital hardware
- Joyce
- 1990
(Show Context)
Citation Context ... of 235 instructions per second (with hints) for the same non-pipelined, state-based processor model. Type classes avoid the need to pass the operations to all the components of the model as in Joyce =-=[10]. The-=- type classes keep track of the higher-order function parameters that Joyce grouped in \representation variables". The approach described in this paper is closely related to work on Lava [1], ano... |

1 |
editors. Report on the Programming Language
- Peterson, Hammond
- 1106
(Show Context)
Citation Context ...imulation by evaluation is much faster than previously reported symbolic simulation eorts in theorem provers. Symbolic simulation of microprocessor models written in the Haskell programming language [=-=13]-=- is possible without extending the language or its compilers and interpreters. Compared to rewriting in a theorem prover, symbolically simulating via evaluation of a program is generally much faster. ... |