mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-28 10:19:26 +00:00 
			
		
		
		
	docs/rosette: List major changes in overview
Also a little paragraph on why SMT-LIB is used as the base.
This commit is contained in:
		
							parent
							
								
									560b5fe6bd
								
							
						
					
					
						commit
						e01a413722
					
				
					 1 changed files with 22 additions and 0 deletions
				
			
		|  | @ -201,6 +201,11 @@ Overview | |||
| .. _Racket: http://racket-lang.org/ | ||||
| .. _SMT: http://smtlib.cs.uiowa.edu/ | ||||
| 
 | ||||
| Rosette, being backed by SMT solvers and written with s-expressions, uses code | ||||
| very similar to the `write_functional_smt2` output.  As a result, the SMT-LIB | ||||
| functional backend can be used as a starting point for implementing a Rosette | ||||
| backend. | ||||
| 
 | ||||
| Full code listings for the initial SMT-LIB backend and the converted Rosette | ||||
| backend are included in the Yosys source repository under | ||||
| :file:`backends/functional` as ``smtlib.cc`` and ``smtlib_rosette.cc`` | ||||
|  | @ -208,6 +213,23 @@ respectively.  Note that the Rosette language is an extension of the Racket | |||
| language; this guide tends to refer to Racket when talking about the underlying | ||||
| semantics/syntax of the language. | ||||
| 
 | ||||
| The major changes from the SMT-LIB backend are as follows: | ||||
| 
 | ||||
| - all of the ``Smt`` prefixes in names are replace with ``Smtr`` to mean | ||||
|   ``smtlib_rosette``; | ||||
| - syntax is adjusted for Racket; | ||||
| - data structures for input/output/state are changed from using | ||||
|   ``declare-datatype`` with statically typed fields, to using ``struct`` with no | ||||
|   static typing; | ||||
| - the transfer function also loses its static typing; | ||||
| - sign/zero extension in Rosette uses the output width instead of the number of | ||||
|   extra bits, gaining static typing; | ||||
| - the single scope is traded for a global scope with local scope for each | ||||
|   struct; | ||||
| - initial state is provided as a constant value instead of a set of assertions; | ||||
| - and the ``-provides`` option is introduced to more easily use generated code | ||||
|   within Rosette based applications. | ||||
| 
 | ||||
| Scope | ||||
| ~~~~~ | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue