synch:infoprints a one-line message of all arg1 ....If arg1 is a printf format string, then printf is applied to arg1 ...; otherwise arg1 ... are printed, numbers in hexadecimal.
synch:errorprints an error message of all arg1 ... and (up to) 50 lines of the most recent timing/state for the block callingsynch:error, and then stops the simulation.If arg1 is a printf format string, then printf is applied to arg1 ...; otherwise arg1 ... are printed, numbers in hexadecimal.
The simulation can be unstopped by a call to
(synch:reset)or(bk).
synch:warnprints a warning message of all arg1 ... and (up to) 50 lines of the most recent timing/state for the block callingsynch:warn. print-timing is then enabled for at least the next 50 states.If arg1 is a printf format string, then printf is applied to arg1 ...; otherwise arg1 ... are printed, numbers in hexadecimal.
Will print a
synch:warnmessage each cycle when j and k are not equal.check=returns k.
While set to
#t, all chat messages will be printed. When set to#f, chat messages are not printed.
Queues the string msg for printing when
print-chatis true or when timimg/state output is generated.
Within the body of
define-syncronous-system, the identifier synch:count is bound to the number of cycles which that block has completed.This variable can be used to turn timing output on and off at specified times.
(cond ((eqv? synch:count trigger-start) (set! print-timing #t)) ((eqv? synch:count trigger-stop) (set! print-timing #f)))
While set to
#t, each simulation block will generate state/timing diagrams as specified by its synch:print command, as well as chat messages.While
print-timingis asserted, a line is output along with all the chat messages since the last line was printed. A line is printed only when if it is different from the last line printed.Warning and Error messages are always printed, along with one line of state/timing diagrams.
Defines the format of the mixed state and timing diagrams (such as produced by logic analyzers) from the
define-syncronous-systemin whose body it appears.Each of the signals can a literal string or character, or a scheme expression. Literal characters appear on each line of the timing diagram and are used as visual separators. A literal string is used to give name to the expression which immediately follows it in signals. If a string does not preceed an expression (such as a symbol), then the printed representation of the (unevaluated) expression serves as its name. Every 50 cycles of printed output, a header composed of the expression names is printed with the names rotated 90 degrees. Long expressions without preceeding strings can make for awkward looking output.
While print-timing is asserted, each scheme expression is evaluated every cycle, and its value printed in the order of signals.
- Boolean values print as vertical bars (‘|’). For
#f, the bar is in the same column as the name; for#t, the bar is one column to the right from the name.- Numeric values are printed as two-digit hexadecimal numbers.
- Characters and strings are displayed.
- All other values are writen.
There are a couple of things to notice in this example of the use of
synch:print. The character ‘#\-’ provides a boundary.
State information can be printed as two-character strings or symbols.
The use of untranslatable scheme code is not a problem because
synch:print forms are not translated into logic-compiler
languages.
(define-synchronous-system Foo
(synch:print
"STATE" named-state
"TL-X" (booleans-to-number
#f tl-x6 tl-x5 tl-x4 tl-x3 tl-x2 tl-x1 tl-x0)
"AMREN" pci-amren
"RDFIFO#" pci-rdfifo-
"RDMT" pci-rdempty
"RDFL" pci-rdfull
"DLOE#" dloe-
"DLRE#" dlre-
"DLWE#" dlwe-
"DL-FULL" dly:-fullness
"look-saf" look-safe
dqoe
hungry
"TPSZ/s" (string
(if dloe-
(char-upcase (tpsz-char stpsz[2..0]))
(tpsz-char stpsz[2..0]))
(cond (avl4 #\4)
(avl3 #\3)
(avl2 #\2)
(avl1 #\1)
(xping #\0)
(else #\space)))
#\-
"lucy-st" lucy-state))
Here is some output like Foo generates. The text to the right of
the ‘lucy-st’ column is produced by calls to synch:chat. In
the first chat line, one call had the argument ‘f601f601’, while
the second called with ‘runcd 1’; both appear in the same cycle.
The line starting with ‘WARN’ is produced by a call to
synch:warn.
96475
S T A R R R D D D D L D H T L
T L M D D D L L L L O Q U P U
A - R F M F O R W - O O N S C
T X E I T L E E E F K E G Z Y
E N F # # # U - R / -
O L S Y S S
# L A T
F
e0 79 | | | | | | | 2a | | | 42 - po
e0 79 | | | | | | | 2a | | | 41 - pd f601f601 runcd 1
e0 7a | | | | | | | 29 | | | 44 - po
e0 7a | | | | | | | 29 | | | 43 - pd runcd 2
e0 7b | | | | | | | 29 | | | 42 - rn
e0 7c | | | | | | | 29 | | | 42 - po
e0 7c | | | | | | | 29 | | | 41 - pd fdfdfbf8 runcd 2
e0 7d | | | | | | | 28 | | | 44 - rn
e0 7e | | | | | | | 28 | | | 44 - po
e0 7e | | | | | | | 28 | | | 43 - pd 4bit*
e0 7f | | | | | | | 28 | | | 42 - bt
sd 40 | | | | | | | 28 | | | 42 - po
sd 40 | | | | | | | 28 | | | 22 - po
sd 40 | | | | | | | 28 | | | 22 - po dqoe
td 40 | | | | | | | 28 | | | 22 - po dqoe
td 40 | | | | | | | 28 | | | 2 - po
td 00 | | | | | | | 28 | | | - - po
td 00 | | | | | | | 28 | | | 4 - po
td 00 | | | | | | | 27 | | | ? - po
td 00 | | | | | | | 26 | | | a - po
tg 00 | | | | | | | 25 | | | A - po
tg 00 | | | | | | | 25 | | | - - po
tg 00 | | | | | | | 25 | | | t - po
tg 00 | | | | | | | 25 | | | t - po * Z 3Y Tile
e1 00 | | | | | | | 24 | | | 10 - po
e1 00 | | | | | | | 24 | | | 10 - po
e1 00 | | | | | | | 24 | | | 10 - po ffffff9e
e1 00 | | | | | | | 23 | | | 41 - po f0f6fff0
e1 00 | | | | | | | 22 | | | 44 - pd 2xlit 31
e1 01 | | | | | | | 22 | | | 43 - x1
WARN: >>>> First Underrun Occured Here <<<<
e1 02 | | | | | | | 22 | | | 43 - x2
e1 03 | | | | | | | 22 | | | 42 - x1
e1 04 | | | | | | | 22 | | | 42 - x2
e1 05 | | | | | | | 22 | | | 41 - x1
e1 06 | | | | | | | 22 | | | 41 - x2
e1 07 | | | | | | | 22 | | | 40 - x1 fff0f6ff
e1 08 | | | | | | | 21 | | | 44 - x2
e1 09 | | | | | | | 21 | | | 43 - x1
e1 0a | | | | | | | 21 | | | 43 - x2
e1 0b | | | | | | | 21 | | | 42 - x1
e1 0c | | | | | | | 21 | | | 42 - x2
e1 0d | | | | | | | 21 | | | 41 - x1
e1 0e | | | | | | | 21 | | | 41 - x2
e1 0f | | | | | | | 21 | | | 40 - x1 f6fff0f6
e1 10 | | | | | | | 20 | | | 44 - x2
e1 11 | | | | | | | 20 | | | 43 - x1
e1 12 | | | | | | | 20 | | | 43 - x2
e1 13 | | | | | | | 20 | | | 42 - x1
e1 14 | | | | | | | 20 | | | 42 - x2
e1 15 | | | | | | | 20 | | | 41 - x1