|
SMOK DownloadsLast modified: January 31, 2006 |
|
|
CSE Home
|
About Us
|
Search
|
Contact Info
|
SMOK V7.2.2 (1/30/2006) is available here.The UI for creating connections has been changed: you must hold down the control key when selecting the output port/component to establish a connection. This was done to prevent inadvertent modifications to a model caused by simply trying to select components.
Notes:
- As of version 6.0.0,
SMOKrequires the Microsoft .Net runtime environment, available through Windows Update (if not already installed).- As of version 6.0.0,
SMOKrequires a number of standard DLL's associated with Visual Studio .Net 2003 for execution. IfSMOKfails to launch and complains of a missing DLL, try unzip'ing the contents of this file into the directory in which you installedSMOK(which should contain fileSMOK.exe).
An executable and a corresponding perl module are included. SMOK.exe is the same executable, but without the trace output window. This runs much faster, and could be used with very complicated models in "production runs" where trace output is not needed. SMOK.pm is the corresponding perl module.
As well as the executables, the install provides the following:
These are all placed in the installation directory - the same directory as the executables.
- A SMOKUtils perl module that provides some perl utility functions for
SMOKmodels, and serves as a set of examples of how to useSMOKperl scripting.- A default smok.ini file
- A folder, SampleDataFiles, of sample SMOK model, sub-model, memory contents, and PLA files. Included is an implementation of a memory mapped IO controller providing both block and character device access.
- A folder, SoftwareSimulatorExamples, that gives very skeletal versions of external software simulators that can be connected to SMOK model simulation through
SMOKtrace components. (External simulators may be used to verify the actions of the machine built in SMOK, as an aid to debugging.)- A folder, UserDefinedComponentExamples, that implements a sample set of user defined component types. Subdirectories contain the executable (ExampleUserPackage.smokdll) and .ini file giving component costs (ExampleUserPackage.ini), as well as the source for these components and Visual Studio 6 and 7 projects to build them.
- A folder, Include, containing a .h file for use in Cebollita project.
V7.x
- As of V7.2.0, the "tracing" version of the executable has been retired, and is no longer distributed.
- The INPORTDESC type used in user defined component types was changed to allow specification of input ports that are read only on clock down.
- The component properties dialog has been changed. Input ports allow specification of a "from bit" and a width. Components that have only a single input port display that port's bit selection parameters. No width setting is allowed for other components (which use 32 bits internally.)
- Bug fixes.
- The UI for creating connections has been changed: you must hold down the control key when selecting the output port/component to establish a connection. This was done to prevent inadvertent modifications to a model caused by simply trying to select components.
- Java scripting, and further interoperability with Cebollita.
V6.0.x
SMOKnow has packages, which allow users to write C++ code that implements new component types. (This is intended to facilitate assignments that include components like TLB's and cache controllers that would be tedious to build out of raw logic.) Built-in components are now members of package SMOK, and have fully qualified type names likeSMOK::Adder.SMOKis now being developed using Visual Studio .Net 2003, and so requires the the .Net runtime (available for all Windows OS's through Microsoft Windows Update) and VS .Net DLLs (available through a link at the top of this page).V5.0.x
- What seems to be a bug in Windows XP causing the screen to be smudged when you drag a component has been fixed, starting with V5.0.2. (The bug should have occurred only in XP, and then only on LCD screens, and then only if you have "Smooth the edges of screen fonts" selected in the monitor Properties/Appearance/Effects dialog. If you have had this problem under other circumstances, I'd appreciate hearing about it.)
SMOKcan now read executable image files produced by Cebollita.- New memory file (
.smokmem) format. See the documentation of the Memory component.V4.7.x
- As of
V4.7.3, SMOKprovides a perl scripting interface to help automate the running ofSMOKmodels.SMOKnow makes a backup copy of existing model (.smok) or container (.smokcont) files when they are about to be overwritten by a save request. The backup model has the same name as the original file, but with "_bak" appended.- perl Scripting - Access to
SMOKis now available through nsPerl scripts. The interface has been designed primarily to support automated grading. Access to models is mostly read-only - you cannot construct or significantly modifySMOKmodels using it, but you can run them and examine their outputs.V4.5.x
- New file open dialog - The dialog used to open files now shows all applicable files found in the directories given in the corresponding SMOK path environment variable.
- SMOK path environment variables - These may be edited using a new entry under the Edit menu ("Edit SMOK Env Vars").
V4.4.x
- "Crash recovery" - An attempt is made to save the current model to file #CrashRecovery.smok when SMOK is about to go down unexpectedly.
- SMOK will now launch by double-clicking on a SMOK model (.smok) file.
- As of version 4.4.0,
SMOKuses Microsoft Installer technology for setup. Download the .msi file and double-click on it to start the setup process. If the .msi file fails to launch, you do not have Microsoft Installer. You can download it here:
- MS Installer for Windows 95/98/ME
- MS Installer for Windows NT (service pack 6 or later) and Windows 2000
- Windows XP - comes with Microsoft Installer
V4.3.x
- New look and feel for ControlRegisters. To connect all input ports of one ControlRegister to the output ports of another, select the first ControlRegister and then the second - if necessary, additional internal registers will be created in the destination to match the number of internal registers in the source. To connect to an individual output port, first select the component you want to connect to, then left-click on the ControlRegister (or PLA). A popup menu will appear letting you choose an output port. To conenct a single input port to some other component's output port, right-click and select the input port, then select the other component's output port. To change the number of internal registers in a ControlRegister, use its properties dialog.
- The ControlRegisterRegister component has been eliminated. Models using it are no longer readable by SMOK.
V4.2.x
- A new ALU input port controls selects either arithmetic (signed) or logical (unsigned) operation.
- Memory components now have a settable "endianness".
- TraceType component allows per-cycle SMOK machine state to be captured in a file or checked by another simulator (which is forked as a separate process).
- PLA component to simplify the implemenation of control.
- Connection segments drawn when the ConnectionLabels view option has been selected are now draggable.
V4.0.x
- Memory Interface components have a new input port that controls the number of bytes to transfer on that operation (for both read and write operations).
- ALU op codes are configurable - you can set the mapping from the op input port to the actual operation performed. The goal here is to let you choose ALU op codes for your application in a way that simplifies your machine's control.
- Input ports can be added to And and Or gates (to bring fan in above two).
- The Cebollita project.
- Run toolbar with Power On, Reinitialize, Stop, Step, and Go, buttons.
- (Optional) SMOKPATH environment variable to specify list of directories to search for files. This is most useful for the smok.ini file, but applies whenever a name that is a not a full path name is given for a file. The default search path, when no SMOKPATH exists, is the current directory followed by the directory in which the SMOK executable resides.
- Comments may be associated with any container component. They can be read and editted using the Properties dialog for the component. (This allows annotation of components insertable through the Add Component/From File... menu, with the goal of facilitating team projects.)
- Shift components have been changed from static shift amounts and directions to taking those values as inputs.
- New BlockController and CharController devices. The former provides interrupt-driven, DMA disk access. The latter provides keyboard input / ASCII output. Both are for use in the new Cebollita project.
- New NVRAM component (required to enable boot sequence, as used in Cebollita).
- New DeMux component.
- RegisterFiles now have user-settable numbers of read and write ports.
- MUX's, DeMux's, and BitCombine's have user-settable numbers of connections.
- The graphical display has been improved.
As SMOK has developed, the semantics of some components have had to be changed in ways that may break old models - the model files may be unreadable, or they may load but no longer work. Here is a summary of these changes, starting with V4.0.0.
- V5.0.x
- The format of
.smokmemfiles was changed. The old format was one line of comment followed by an address in decimal followed by a stream of hex integers. The new format is described in documentation for the Memory component.- V4.0.x
- Mux's were changed to allow more than two inputs. As part of that, their semantics were changed. Prior to V4.0, selection input value 0 selected input 0, and any other value selected input value 1. As of V4.0, the appropriate number of low order bits of the selection value are used to select an input port. If the number of input ports is not a power of two, and the low-order selection bits name a port that doesn't exist, the output is zero. Note that this means that an old model that relied on any non-zero selection value selecting output 1 will no longer work, even if the MUX has only two outputs.
- Prior to V4.0, Shift components had statically assigned amounts and directions. As of V4.0, those are now explicit component inputs. A warning will be issued for each old style Shift component found in a model file. To convert, attach a constant register to the (new) shift amount input, and either leave the direction input unconnected (for left shift) or attached to an otherwise unconnected inverter (for right). The old shift amount will be printed as part of the warning when the old model file is read.
- ALU operation code 7 was bitwise-not prior to V4.0. To support Cebollita, it has been changed to SetLessThan. Bitwise-not can be implemented using an Inverter.
These executables require a number of standard DLL's for execution. IfSMOKfails to launch and complains of a missing DLL, try unzip'ing the contents of this file into the directory in which you installedSMOK(which should contain fileSMOK.exe).SMOK V7.2.0 (11/6/2005) SMOK V7.1.9 (3/6/2005)
SMOK V6.0.4 (8/30/2003)
|
Department of Computer Science & Engineering University of Washington Box 352350 Seattle, WA 98195-2350 (206) 543-1695 voice, (206) 543-2969 FAX [comments to zahorjan@cs.washington.edu] | |
|
Department of Computer Science & Engineering University of Washington Box 352350 Seattle, WA 98195-2350 (206) 543-1695 voice, (206) 543-2969 FAX [comments to zahorjan@cs.washington.edu] | |