< Esterel file > | < file.strl > | -strl < file > | -strl < file.strl > -main < main module > | |
< ESI file > | < file.esi > | -esi < file > | -esi < file.esi > | |
< options > | -o < output file > | - -output < output file > | |
< file.eso > | -eso < file > | -eso < file.eso > | ||
-v | - -verbose | ||
-B < basename > | - -basename < basename > | ||
-stdout | ||
-vhdl87 | -vhdl93 | -verilog | -s | - -skeleton | -C | -cpp | ||
-dump ``< white-separated-character dumped signals list >'' | ||
- -version | ||
- -help | ||
- -no-eso | ||
- -no-comment | ||
- -no-assert | ||
- -string-size < string size > | ||
- -integer-size < integer size > | ||
- -no-user-type-assert | ||
- -dc-version < 1 | 2 > | ||
- -eso-format < coresim | signal_record > | ||
- -evaluation-mode-allowed | ||
- -automatic-assertions |
< Esterel file > | Esterel input file describing input and output signals, |
sensors, relations. Such a file is indicated by his | |
extension .strl. Nevertheless a possibility is | |
offered, setting -strl keyword followed by the | |
Esterel file ended or not by his extension. | |
< ESI file > | ESI input file describing a scenario applied on Esterel |
module inputs. Such a file is indicated by his | |
extension .esi. Nevertheless a possibility is | |
offered, setting -esi keyword followed by the | |
ESI file ended or not by his extension. | |
< main module > | As an esterel file should contain more than |
one module, the option -main set the top | |
level module with the string following the option. | |
By default, the toplevel module is MAIN, | |
basically called by Esterel Studio. |
-o, - -output | followed by a file name identifier changes the default |
generated test-bench output file by this specified name | |
-B, - -basename | followed by a base name identifier changes the default |
generated test-bench output file prefix by this specified | |
base name. Include files in C and C++ target languages | |
are changed into this base name | |
-eso | followed by a file name identifier changes the default |
run-time generated ESO and BLIF files by this specified | |
basename. | |
-v, - -verbose | writes in the standard output file steps reached by |
the compiler | |
-stdout |
writes the generated test-bench on the screen instead of |
an output file set or not | |
-vhdl87 | set the target language into the VHDL 87 mode. Basically |
VHDL 87 is the default mode | |
-vhdl93 | set the target language into the VHDL 93 mode. |
-C | set the target language into the C mode. An instrumented |
C scenario is generated | |
-cpp | set the target language into the C++ mode. An instrumented |
C++ scenario is generated | |
-verilog | set the target language into the Verilog mode |
-s, - -skeleton | set the generation style describing the generated |
test-bench in the ESI format. Thus, a not well indented | |
ESI input file will be thereafter well formatted | |
-main | followed by a module name, changes the default main |
module name set on MAIN | |
-dump | adds mandatory outputs signals following the option. |
They will be written at run-time in a blif-formatted file | |
- -version | writes the version number of the running makehdltb |
- -help | writes the version number and usage of the running |
as depicted by the synopsis sectionmakehdltb | |
- -no-eso | specifies no ESO file will be waited, generated during |
the run-time. This implies no added code is generated | |
- -no-comment | the input scenario file is translated the best as possible |
including user comments. This option avoids these comments | |
- -no-assert | assertions are now described in the extended ESI format. |
Then this option set off such statements including invariants | |
- -string-size | followed by an integer set the string size |
- -integer-size | followed by an integer set the bit vector size representing |
integer type in Verilog | |
- -no-user-type-assert | avoids assertions on user-defined types but allows assertion |
on pure signals and primitive types | |
- -dc-version | followed by 1 or 2 represents the translation of Esterel |
valued signals into a selected target language. By default, | |
the current version is set on 2 | |
- -eso-format | Outputs, ticks, ...are differently formatted according to |
the used ESO generator. Then, by default, the run-time | |
generated ESO file is the most precise as possible. However, | |
through this option followed by coresim, | |
ESO file is formatted like ESO file generated by | |
libcoresim and signal_record like ESO file generated | |
by the Esterel Studio instrumented code. | |
- -evaluation-mode-allowed | evaluation_mode commands are supported in the |
ESI input scenario file. Basically, these ESI commands are | |
forbidden. | |
- -automatic-assertions | ESO file should be considered as ESI file. Therefore, the |
comment emitted output are translatted into assertions | |
ensuring, after tick event, outputs are well emitted |
Option | Description |
-o | the default generated output file MOD_scenario_tb.vhd |
- -output | will be renamed into the name specified after this option |
-B | the default generated output file MOD_scenario_tb.vhd |
- -basename | will be renamed into <basename>_scenario_tb.vhd |
- -no-eso | no ESO file will be generated during the simulation phasis |
- -no-comment | scenario comments will not be generated |
- -no-assert | assertions and invariants won't be generated |
- -no-user-type-assert | assertions and invariants based on user-defined type won't be |
generated. Then user is expected to avoid writing assertions | |
including such types. So, user is able to write assertions | |
based on pure signals or primitive valued signals, without | |
writing in the target language the functions required by | |
user-defined types |
Target Language | Option | Default output name |
VHDL | -vhdl | MOD_scenario_tb.vhd |
Verilog | -verilog | MOD_scenario_tb.v |
C | -C | MOD_scenario_tb.c |
C++ | -cpp | MOD_scenario_tb.cpp |
ESI | -skeleton, -s | MOD_scenario.esi |
Message | Description |
Error (in file < file >, line < line >) : pin < pin > | pin wants to be used in the |
does not exist in the interface < interface > (in file | scenario file thought it was |
< Esterel file >). | not declared in the Esterel file |
Type error (in file < file >, line < line >, Manual 7.2.3): | in the scenario file file, the |
pin < pin > is declared in module < module > (file | signal pin wants to be set on |
< Esterel file > ) with the type < type > but used with | the value setting which is not |
an other one (set to ``< setting >''). | in the signal declared set |
Syntax error (in file < file >, line < line >) : | in file file a syntacticaly |
``< read >'' is unexpected. | error occurs reading the token read |
Emit error (in file < file >, line < line >, Manual 7.2.3) : | emitting an even signal pin more |
``< pin > has been emitted yet. | than once is prohibited |
Pin error (in file < file >) : ``< pin >'', HDL features not | some signals identifiers are prohibited |
allow such a name. | in Esterel module, since they are |
reserved by HDL translation. Such | |
names are the ones ended by | |
data and clk and rst | |
Pin error (in file < file >, line < line >, Primer 4.2) : pin | a signal identifier cannot be declared |
< pin > already exists. | more than one time |
Not synthetisable (in file < file >, line < line >, | the read code beyond is not |
< standard >): < read >. | synthetisable through standard |
Assert error (in file < file >, line < line >) : < read >. | read throws this error, which |
has occured in an assertion or | |
invariant | |
File error: ``< file >'' not accessible. | file cannot be opened |
Main module not found (in file < file >): main module | module not found |
``< module >'' is requested but not found | |
< severity level >: assertion violated in file < file >, line | an assertion is violated at run-time |
< line > | |
Syntax error (in file < file >, line < line >): | evaluation mode pure set implies |
valued signal < signal > assigned but evaluation mode | that only statuses are expected |
pure set. | |
Syntax error (in file < file >, line < line >) | evaluation mode commands can be only |
set option to use the evaluation mode commands. | used if - -eval-mode-selection-allowed |
is set. |
Abbreviation | Manual |
Primer | The Esterel v5 Language Primer Version v5_91 |
Manual | The Esterel v5_91 System Manual |
IEEE VHDL | IEEE Standard VHDL Language Reference Manual |
VHDL Synt. | IEEE P1076.6/D2.0 Draft Standard For VHDL |
Register Transfer Level Synthesis | |
IEEE Verilog | IEEE P1364 Draft Verilog Hardware Description Language |
Verilog Synt. | IEEE P1364.1/D1.6 Draft Standard For Verilog |
Register Transfer Level Synthesis |
Level | Description |
note | it could be considered as a breakpoint to ensure the point |
of the scenario where this assertion failed, is well reached. | |
Therefore, the control flow can normally carry on. | |
warning | the control flow can in fact go on, however the meaning is a |
little bit different than the one represented by note. | |
It's not considered as an error but an advertising. | |
error | the simulation completes, showing that an error occured. |
failure | the simulation completes, an error occured meaning that the global |
behaviour could crash. |
Starting keyword | Severity level |
! assert |
error |
! assert note | note |
! assert warning | warning |
! assert error | error |
! assert failure | failure |
! note | note |
! warning | warning |
! error | error |
! failure | failure |
! invariant | error |
! invariant note | note |
! invariant warning | warning |
! invariant error | error |
Keyword Associativity Type Alias Description () high priority parenthesis ?|1 valuated signals value accession ?|1 sensors value accession present|1 signals status not logical ! negation -|1 arithmetical unary - / arithmetical division mod arithmetical % modulo * left arithmetical product +|2 left arithmetical binary + -|2 left arithmetical binary - = logical == equality <> logical != inequality < logical strict less > logical strict greater <= logical less or equal >= logical greater or equal and left logical && and and then left logical and conditional nand left logical !&& not and or left logical || or or else left logical or conditional xor left logical ^ exclusive or nor left logical !|| not or xnor left logical !^ not exclusive or implies logical => logical implication
Table 1: Operators
Type Operator Description integer =, <>, <, <=, >, >= relationship operators +, -, *, /, mod arithmetical operators -|1 unary - string =, <>, <, <=, >, >= relationship operators + concatenation operator boolean =, <>, <, <=, >, >= relationship operators and, and then, or, or else logical operators xor, nand, nor, xnor, implies not unary logical operator pure signal and, and then, or, or else logical operators xor, nand, nor, xnor, implies not unary logical operator user-defined =, <>, <, <=, >, >= relationship operators type implemented by user in the target language by overloading operators
Table 2: Operators by type
module TEST; | |||
type data; | |||
input I_PURE; | |||
input I_INT : integer; | |||
input I_DATA : data; | |||
output O_PURE; | |||
output O_INT : integer; | |||
output O_DATA : data; | |||
sensor S_INT : integer; | |||
sensor S_DATA : data; | |||
loop | |||
await case [ I_PURE ] do | |||
emit O_PURE | |||
end await | |||
end loop | |||
|| | |||
loop | |||
await case [ I_INT ] do | |||
emit O_INT ( ? S_INT ) | |||
end await | |||
end loop | |||
|| | |||
loop | |||
await case [ I_DATA ] do | |||
emit O_DATA ( ? S_DATA ) | |||
end await | |||
end loop | |||
end module |
! warning !(present O_PURE and not (present O_INT or present O_DATA)) | |||
I_PURE S_INT (``2'') S_DATA (``22;22''); | |||
! note !((?O_INT <> ?I_INT) and (?O_INT = ?S_INT) and not (present O_PURE | |||
or present O_DATA)) | |||
I_INT = ``99'' S_INT (``3'') S_DATA (``33;33''); | |||
! failure !(present O_DATA and (?O_DATA = ?S_DATA) and not (present O_PURE | |||
or present O_INT)) | |||
I_DATA = ``99;99'' S_INT (``7'') S_DATA (``77;77''); | |||
! invariant error (present I_PURE implies O_PURE) | |||
or (present I_INT implies ?O_INT = ?S_INT) | |||
or (present I_DATA implies ?O_DATA = ?S_DATA) | |||
; % This tick is mandatory to mandatory take care of this invariant |
Esi command | Extended ESI alias | Description |
. | !quit | program exit requested |
!exit | ||
!bye |
Package | Description |
BAR_data_type_pkg | contains user-defined data types and their |
definition | |
BAR_data_pkg | contains constants and data types assign |
procedures | |
BAR_data_sim_pkg | contains simulation functions such as |
check_TYPE, text_to_TYPE, | |
TYPE_to_text ones, and relationship | |
operators overloads |
File | Description |
BAR_data_type_pkg.v | contains user-defined data types and their |
definition using `define | |
BAR_data_pkg.v | contains constants and data types assign |
procedures | |
BAR_data_sim_pkg.v | contains simulation functions such as |
check_TYPE, text_to_TYPE, | |
TYPE_to_text ones |
File | Description |
FILE.h | contains user-defined data types and their |
definition. This file contains simulation | |
functions such as _check_TYPE, | |
_text_to_TYPE,_TYPE_to_text ones | |
SignalRecord.c | mandatory code used by instrumented code |
SignalRecord.h |
File | Description |
FILE_data.h | contains user-defined data types and their |
definition. This file contains simulation | |
functions such as _check_TYPE, | |
_text_to_TYPE,_TYPE_to_text ones | |
SignalRecord.c | mandatory code used by instrumented code |
SignalRecord.h |
VHDL | VHDL (options) | Verilog | Verilog (options) | ESI | |
(no option) | - -no-comment | (no option) | - -no-comment | (no option) | |
- -no-eso | - -no-eso | ||||
user time | 15.54 | 7.00 | 14.49 | 7.40 | 3.63 |
system time | 10.59 | 3.21 | 10.31 | 3.50 | 0.81 |
elapsed time | 0:26.94 | 0:10.29 | 0:28.50 | 0:11.32 | 0:04.66 |
CPU (%) | 96 | 99 | 97 | 96 | 95 |
size (MB) | 153.76 | 29.61 | 132.06 | 32.53 | 1.82 |
This document was translated from LATEX by HEVEA.