hewlett-packard UNITED STATES
Skip site-wide navigation link group hewlett-packard home products and services support solutions how to buy
End of site-wide navigation link group
hewlett-packard logo - invent - jump to hp.com home page
DEMOS2K FAQ skip lorem ipsum dolor navigation menu link group
demos2k home
download
end of lorem ipsum dolor navigation menu link group
 Some frequently asked questions about demos2k:
  1. Why demos?
  2. Why change demos?
  3. What has changed?
  4. Why construct yades?
  5. How much does it cost?
  6. Can I change it?
  7. Where do I find manuals examples?
  8. What OSes are supported?
  9. the sml install didn't work!
  10. What is the expressive power of DEMOS2K?
  11. What does the current interface do?
  12. How do I illustrate families of models?
  13. Why no native interrupts?
  14. I don't like the way trace data is handled?
  15. I want a graphic interface to my model?
  16. Can I allow users to change parameters safely ?
  17. The compilers are limited!
  18. Why is it slow?
  19. why does  
                repeat {i:=0;while[i<=range] {try [getB(foo[i],1)] then {something} etry [] then {};i:=i+1;}} 
    deadlock?
  20. Why is the sml not abstracted

Why Demos?

Demos was originally written as a package within SIMULA by Graham Birtwistle. It was the result of his spotting commonalities in a large number of simulation models he constructed directly within SIMULA. The package became a standard within the SIMULA community and provided the inspiration for many of the subsequent disrete event simulation environments.

Why change demos?

DEMOS was fundamentally reliant on the underlying SIMULA. Thus in order to give it a complete semantics firstly one would have to provide a complete semantics for SIMULA. Graham and I had built operational and denotational accounts of DEMOS and these indicated the potential for some simplification. The denotational accounts within both synchronous and asynchronous process algebras offered some interesting insights into multi way synchronisation.

What has changed?

The main structural change is that the programmer is no longer responsible for the maintenance of pointers to synced objects and explicitly requeuing them. The basic synchronisation construct of the language is the waituntil rather than the queue, so the programmer does not need to construct the own queue maintenance code. Values have been attached to bins so that their full duality with syncs can be exploited. Resource and sync monitoring (you can't free what you don't have) is complete for error avoidance. Ability to hand over both resource and syncs with bins and entity creation to achieve message passing of about synchronous CHOCCS ( a precursor to Milner, Parrow and Walkers Pi calculus) level. Finally, SIMULA access has been removed.

Why construct yades?

(Yet Another Discrete Event System)

The execution (simulation) Demos2k is mainly intended for debugging and location of interesting parameters. The motivation was the observation that it provides a 'half-way' house between formal languages such as Petri Nets and Process algebras and purely executable models. Some prototype compilers into tools that support analysis of these languages are included. The front end is open to extension to permit the addition of 3rd party compilers for other analysis methods and tools.

How much does it cost?

It's free.

Can i change it?

The complete system is based on open source principles and software. Actually its a research liscence. You get the sources of everything and can  change anything up to copyright messages and acknowledgements.

Where do I find manuals examples?

The download contains and updates version of Graham's original manual (original version). There are 70+ examples in the download drawn from this and about 150 others in the zip for either windows or linux.

What OSs are supported?

There are downloads for both Win32 and Linux. In principle any system with both sml/nj 110.6 or later and the perl5.004 with Tk can be supported. The linux version contains all of the sources and some indication of install requirements for the unsupported OSs.

 

The sml install didn't work!

We have had instances of corruption on download an up to date version can be found at - current sml.

What is the expressive power of DEMOS2K?

About synchrous CHOCCS ( a precursor to Milner, Parrow and Walkers Pi calculus) level.

What does the current interface do?

It based on 2 window presentation. Current program and results. It has 4 modes of operation

  1. simple run
  2. real time interaction
  3. experiment sets
  4. scripted model runs

For modes 3 and 4 there are web page generators for the output. Mode 2 also provides the step by step debugging as well as parameter change. Supporting experiments is a data organizer and 3D graph tool. Modes 1 and 2 have multiple graph support and data export facilities. It also gives access to plugins sml and perl/tk, provided as system extensions. 

How do I illustrate families of models?

Most modelers do not build single models ;-) In the scripts there is a mechanism to build illustrations of families of models, see the model command in the documentation for scripts.

Why no native interrupts?

Graham says the originals were never used. Since we can simulate them, albeit inefficiently, there are no plans to extend the system to this at present. Proto design of

hold(t) unless [c1] then {} eunless [c2] then {};
try [c1] then {} etry [c2] then {} until(t);

Are under consideration but would require some demand before they were implemented.

I don't like the way trace data is handled?

have a look at the various filter alternatives provided to see how to write your own as an extension to the system.

I want a graphic interface to my model?

Have a look at the code for the animator filter and the animator examples. This gives a simple 'graphic equaliser' like view and shows how to intercept traces. If you do something please let us have a copy to mount on the site.

Can I allow users to change parameters safely?

Both the real time and script modes permit interaction, with constraints set on the parameter ranges. See the documentation.

The compilers are limited!

Yep they are, very limited resources.

Why is it slow?

We have concentrated on a reference engine construction. The main lack of speed is actually the amount of information coming up the pipe to the interface to speed things up:

  1. run in value not trace mode, the later is mainly for debugging;
  2. turn of information you don't need, trace("BIN_OFF"); for instance suppresses bin change data
  3. Use experiment mode, this supresses everything except explicit traces, worth keeping to a minimum in experiments;
  4. Volunteer to do a native java thread compiler of the fast subset;-)
  5. Volunteer to do a interpreted compiled version in sml ;-)

why does  repeat {i:=0;while[i<=range] {try [getB(foo[i],1)] then {something} etry [] then {};i:=i+1;}} deadlock?

It never releases the system clock no hold! If you want to scan over input coming from multiple sources it is better to use a value bin to denote the source location and avoid the active wait:

putVB(foo,[myId]);   //code for insertion
 
local var src=0;
...
getVB(foo,[src],true);
something

Why is the sml not abstracted?

Too many of the component functions are useful in compilers.

Skip print link group follow this link for information about printing this page
printing instructions
End of print link group
privacy statement Using this site means you accept its Terms © 1994-2002 hewlett-packard company