Spelling and space cleanup
This commit is contained in:
parent
5439fcd5c2
commit
ef931e2e0d
|
|
@ -8,7 +8,7 @@ suite, and this suite is used by the github actions as continuous integration
|
||||||
to make sure the code is always going forward.
|
to make sure the code is always going forward.
|
||||||
|
|
||||||
NOTE: There are scripts written in perl to run the regression tests, but they
|
NOTE: There are scripts written in perl to run the regression tests, but they
|
||||||
are bing gradually replaced with a newer set of scripts. It is the newer
|
are being gradually replaced with a newer set of scripts. It is the newer
|
||||||
method that is described here.
|
method that is described here.
|
||||||
|
|
||||||
Test Descriptions
|
Test Descriptions
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ Verilog parameter override syntax. Parameters have preferred types.
|
||||||
is written into the description field of the PCB Element.
|
is written into the description field of the PCB Element.
|
||||||
|
|
||||||
* value (string, default="")
|
* value (string, default="")
|
||||||
|
|
||||||
The "value" is a text tring that describes some value for the black
|
The "value" is a text tring that describes some value for the black
|
||||||
box. Like the description, the code generator does not interpret this value,
|
box. Like the description, the code generator does not interpret this value,
|
||||||
other then to write it to the appropriate field in the PCB Element."
|
other then to write it to the appropriate field in the PCB Element."
|
||||||
|
|
|
||||||
|
|
@ -42,21 +42,21 @@ Structures that cannot be converted to 1995 compatible Verilog
|
||||||
The following Verilog constructs are not translatable to 1995 compatible Verilog:
|
The following Verilog constructs are not translatable to 1995 compatible Verilog:
|
||||||
|
|
||||||
* Automatic tasks or functions.
|
* Automatic tasks or functions.
|
||||||
|
|
||||||
* The power operator (**). Expressions of the form (2**N)**<variable> (where N
|
* The power operator (**). Expressions of the form (2**N)**<variable> (where N
|
||||||
is a constant) can be converter to a shift.
|
is a constant) can be converter to a shift.
|
||||||
|
|
||||||
* Some System Verilog constructs (e.g. final blocks, ++/-- operators,
|
* Some System Verilog constructs (e.g. final blocks, ++/-- operators,
|
||||||
etc.). 2-state variables are converted to 4-state variables.
|
etc.). 2-state variables are converted to 4-state variables.
|
||||||
|
|
||||||
Icarus extensions that cannot be translated:
|
Icarus extensions that cannot be translated:
|
||||||
|
|
||||||
* Integer constants greater than 32 bits.
|
* Integer constants greater than 32 bits.
|
||||||
|
|
||||||
* Real valued nets.
|
* Real valued nets.
|
||||||
|
|
||||||
* Real modulus.
|
* Real modulus.
|
||||||
|
|
||||||
* Most Verilog-A constructs.
|
* Most Verilog-A constructs.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -124,7 +124,7 @@ list of the special records with their meaning.
|
||||||
have multiple directories, separated by "+" characters.
|
have multiple directories, separated by "+" characters.
|
||||||
|
|
||||||
* +libdir-nocase+dir-path
|
* +libdir-nocase+dir-path
|
||||||
|
|
||||||
This is the same as "+libdir+", but when searching "nocase" libraries for
|
This is the same as "+libdir+", but when searching "nocase" libraries for
|
||||||
module files, case will not be taken as significant. This is useful when the
|
module files, case will not be taken as significant. This is useful when the
|
||||||
library is on a case insensitive file system.
|
library is on a case insensitive file system.
|
||||||
|
|
@ -136,7 +136,7 @@ list of the special records with their meaning.
|
||||||
variety of naming conventions.
|
variety of naming conventions.
|
||||||
|
|
||||||
* -y dir-path
|
* -y dir-path
|
||||||
|
|
||||||
This is like "+libdir+" but each line takes only one path. Like "+libdir+"
|
This is like "+libdir+" but each line takes only one path. Like "+libdir+"
|
||||||
there can be multiple "-y" records to declare multiple library
|
there can be multiple "-y" records to declare multiple library
|
||||||
directories. This is similar to the "-y" flag on the iverilog command line.
|
directories. This is similar to the "-y" flag on the iverilog command line.
|
||||||
|
|
@ -151,19 +151,19 @@ list of the special records with their meaning.
|
||||||
in releases and snapshots made after that date.
|
in releases and snapshots made after that date.
|
||||||
|
|
||||||
* +incdir+*include-dir-path*
|
* +incdir+*include-dir-path*
|
||||||
|
|
||||||
Declare a directory or list of directories to search for files included by
|
Declare a directory or list of directories to search for files included by
|
||||||
the "include" compiler directive. The directories are searched in
|
the "include" compiler directive. The directories are searched in
|
||||||
order. This is similar to the "-I" flag on the iverilog command line.
|
order. This is similar to the "-I" flag on the iverilog command line.
|
||||||
|
|
||||||
* +define+*name=value*
|
* +define+*name=value*
|
||||||
|
|
||||||
Define the preprocessor symbol "name" to have the string value "value". If
|
Define the preprocessor symbol "name" to have the string value "value". If
|
||||||
the value (and the "=") are omitted, then it is assumed to be the string
|
the value (and the "=") are omitted, then it is assumed to be the string
|
||||||
"1". This is similar to the "-D" on the iverilog command line.
|
"1". This is similar to the "-D" on the iverilog command line.
|
||||||
|
|
||||||
* +timescale+*units/precision*
|
* +timescale+*units/precision*
|
||||||
|
|
||||||
Define the default timescale. This is the timescale that is used if there is
|
Define the default timescale. This is the timescale that is used if there is
|
||||||
no other timescale directive in the Verilog source. The compiler default
|
no other timescale directive in the Verilog source. The compiler default
|
||||||
default is "+timescale+1s/1s", which this command file setting can
|
default is "+timescale+1s/1s", which this command file setting can
|
||||||
|
|
@ -171,7 +171,7 @@ list of the special records with their meaning.
|
||||||
timescale directive in the verilog source.
|
timescale directive in the verilog source.
|
||||||
|
|
||||||
* +toupper-filename
|
* +toupper-filename
|
||||||
|
|
||||||
This token causes file names after this in the command file to be translated
|
This token causes file names after this in the command file to be translated
|
||||||
to uppercase. this helps with situations where a directory has passed
|
to uppercase. this helps with situations where a directory has passed
|
||||||
through a DOS machine (or a FAT file system) and in the process the file
|
through a DOS machine (or a FAT file system) and in the process the file
|
||||||
|
|
@ -179,11 +179,11 @@ list of the special records with their meaning.
|
||||||
emergencies.
|
emergencies.
|
||||||
|
|
||||||
* +tolower-filename
|
* +tolower-filename
|
||||||
|
|
||||||
The is the lowercase version of "+toupper-filename".
|
The is the lowercase version of "+toupper-filename".
|
||||||
|
|
||||||
* +parameter+*name=value*
|
* +parameter+*name=value*
|
||||||
|
|
||||||
This token causes the compiler to override a parameter value for a top-level
|
This token causes the compiler to override a parameter value for a top-level
|
||||||
module. For example, if the module main has the parameter WIDTH, set the
|
module. For example, if the module main has the parameter WIDTH, set the
|
||||||
width like this "+parameter+main.WIDTH=5". Note the use of the complete
|
width like this "+parameter+main.WIDTH=5". Note the use of the complete
|
||||||
|
|
@ -191,7 +191,7 @@ list of the special records with their meaning.
|
||||||
(top level) modules and a defparam may override the command file value.
|
(top level) modules and a defparam may override the command file value.
|
||||||
|
|
||||||
* +vhdl-work+*path*
|
* +vhdl-work+*path*
|
||||||
|
|
||||||
When compiling VHDL, this token allows control over the directory to use for
|
When compiling VHDL, this token allows control over the directory to use for
|
||||||
holding working package declarations. For example, "+vhdl-work+workdir" will
|
holding working package declarations. For example, "+vhdl-work+workdir" will
|
||||||
cause the directory "workdir" to be used as a directory for holding working
|
cause the directory "workdir" to be used as a directory for holding working
|
||||||
|
|
|
||||||
|
|
@ -14,17 +14,17 @@ General
|
||||||
These flags affect the general behavior of the compiler.
|
These flags affect the general behavior of the compiler.
|
||||||
|
|
||||||
* -c <cmdfile>
|
* -c <cmdfile>
|
||||||
|
|
||||||
This flag selects the command file to use. The command file is an
|
This flag selects the command file to use. The command file is an
|
||||||
alternative to writing a long command line with a lot of file names and
|
alternative to writing a long command line with a lot of file names and
|
||||||
compiler flags. See the Command File Format page for more information.
|
compiler flags. See the Command File Format page for more information.
|
||||||
|
|
||||||
* -d <flag>
|
* -d <flag>
|
||||||
|
|
||||||
Enable compiler debug output. These are aids for debugging Icarus Verilog,
|
Enable compiler debug output. These are aids for debugging Icarus Verilog,
|
||||||
and this flag is not commonly used.
|
and this flag is not commonly used.
|
||||||
The flag is one of these debug classes:
|
The flag is one of these debug classes:
|
||||||
|
|
||||||
* scope
|
* scope
|
||||||
* eval_tree
|
* eval_tree
|
||||||
* elaborate
|
* elaborate
|
||||||
|
|
@ -40,15 +40,15 @@ These flags affect the general behavior of the compiler.
|
||||||
The supported flags are:
|
The supported flags are:
|
||||||
|
|
||||||
* 1995
|
* 1995
|
||||||
|
|
||||||
This flag enables the IEEE1364-1995 standard.
|
This flag enables the IEEE1364-1995 standard.
|
||||||
|
|
||||||
* 2001
|
* 2001
|
||||||
|
|
||||||
This flag enables the IEEE1364-2001 standard.
|
This flag enables the IEEE1364-2001 standard.
|
||||||
|
|
||||||
* 2001-noconfig
|
* 2001-noconfig
|
||||||
|
|
||||||
This flag enables the IEEE1364-2001 standard with config file support
|
This flag enables the IEEE1364-2001 standard with config file support
|
||||||
disabled. This eliminates the config file keywords from the language and
|
disabled. This eliminates the config file keywords from the language and
|
||||||
so helps some programs written to older 2001 support compile.
|
so helps some programs written to older 2001 support compile.
|
||||||
|
|
@ -64,17 +64,17 @@ These flags affect the general behavior of the compiler.
|
||||||
support is ongoing.
|
support is ongoing.
|
||||||
|
|
||||||
* 2012
|
* 2012
|
||||||
|
|
||||||
This flag enables the IEEE1800-2012 standard, which includes
|
This flag enables the IEEE1800-2012 standard, which includes
|
||||||
SystemVerilog.
|
SystemVerilog.
|
||||||
|
|
||||||
* verilog-ams
|
* verilog-ams
|
||||||
|
|
||||||
This flag enables Verilog-AMS features that are supported by Icarus
|
This flag enables Verilog-AMS features that are supported by Icarus
|
||||||
Verilog. (This is new as of 5 May 2008.)
|
Verilog. (This is new as of 5 May 2008.)
|
||||||
|
|
||||||
* assertions/supported-assertions/no-assertions
|
* assertions/supported-assertions/no-assertions
|
||||||
|
|
||||||
Enable or disable SystemVerilog assertions. When enabled, assertion
|
Enable or disable SystemVerilog assertions. When enabled, assertion
|
||||||
statements are elaborated. When disabled, assertion statements are parsed
|
statements are elaborated. When disabled, assertion statements are parsed
|
||||||
but ignored. The supported-assertions option only enables assertions that
|
but ignored. The supported-assertions option only enables assertions that
|
||||||
|
|
@ -278,7 +278,7 @@ These flags affect the general behavior of the compiler.
|
||||||
will print a warning at its first use.
|
will print a warning at its first use.
|
||||||
|
|
||||||
* implicit-dimensions
|
* implicit-dimensions
|
||||||
|
|
||||||
This enables warnings for the case where a port declaration or a var/net
|
This enables warnings for the case where a port declaration or a var/net
|
||||||
declaration for the same name is missing dimensions. Normally, Verilog
|
declaration for the same name is missing dimensions. Normally, Verilog
|
||||||
allows you to do this (the undecorated declaration gets its dimensions
|
allows you to do this (the undecorated declaration gets its dimensions
|
||||||
|
|
@ -289,40 +289,40 @@ These flags affect the general behavior of the compiler.
|
||||||
2016-02-06.
|
2016-02-06.
|
||||||
|
|
||||||
* macro-redefinition
|
* macro-redefinition
|
||||||
|
|
||||||
This enables warnings when a macro is redefined, even if the macro text
|
This enables warnings when a macro is redefined, even if the macro text
|
||||||
remains the same.
|
remains the same.
|
||||||
|
|
||||||
NOTE: The "macro-redefinition" flag was added in v11.0.
|
NOTE: The "macro-redefinition" flag was added in v11.0.
|
||||||
|
|
||||||
* macro-replacement
|
* macro-replacement
|
||||||
|
|
||||||
This enables warnings when a macro is redefined and the macro text
|
This enables warnings when a macro is redefined and the macro text
|
||||||
changes. Use no-macro-redefinition to disable this,
|
changes. Use no-macro-redefinition to disable this,
|
||||||
|
|
||||||
NOTE: The "macro-replacement" flag was added in v11.0.
|
NOTE: The "macro-replacement" flag was added in v11.0.
|
||||||
|
|
||||||
* portbind
|
* portbind
|
||||||
|
|
||||||
This enables warnings for ports of module instantiations that are not
|
This enables warnings for ports of module instantiations that are not
|
||||||
connected properly, but probably should be. Dangling input ports, for
|
connected properly, but probably should be. Dangling input ports, for
|
||||||
example, will generate a warning.
|
example, will generate a warning.
|
||||||
|
|
||||||
* select-range
|
* select-range
|
||||||
|
|
||||||
This enables warnings for constant out-of-bound selects. This includes
|
This enables warnings for constant out-of-bound selects. This includes
|
||||||
partial or fully out-of-bound select as well as a select containing a 'bx
|
partial or fully out-of-bound select as well as a select containing a 'bx
|
||||||
or 'bz in the index.
|
or 'bz in the index.
|
||||||
|
|
||||||
* timescale
|
* timescale
|
||||||
|
|
||||||
This enables warnings for inconsistent use of the timescale directive. It
|
This enables warnings for inconsistent use of the timescale directive. It
|
||||||
detects if some modules have no timescale, or if modules inherit timescale
|
detects if some modules have no timescale, or if modules inherit timescale
|
||||||
from another file. Both probably mean that timescales are inconsistent,
|
from another file. Both probably mean that timescales are inconsistent,
|
||||||
and simulation timing can be confusing and dependent on compilation order.
|
and simulation timing can be confusing and dependent on compilation order.
|
||||||
|
|
||||||
* infloop
|
* infloop
|
||||||
|
|
||||||
This enables warnings for always statements that may have runtime infinite
|
This enables warnings for always statements that may have runtime infinite
|
||||||
loops (i.e. has paths with zero or no delay). This class of warnings is
|
loops (i.e. has paths with zero or no delay). This class of warnings is
|
||||||
not included in -Wall and hence does not have a no- variant. A fatal error
|
not included in -Wall and hence does not have a no- variant. A fatal error
|
||||||
|
|
@ -352,7 +352,7 @@ These flags affect the general behavior of the compiler.
|
||||||
is large.
|
is large.
|
||||||
|
|
||||||
* floating-nets
|
* floating-nets
|
||||||
|
|
||||||
This enables warnings for nets that are present but have no drivers.
|
This enables warnings for nets that are present but have no drivers.
|
||||||
|
|
||||||
This flag was added in version 11.0 or later (and is in the master branch
|
This flag was added in version 11.0 or later (and is in the master branch
|
||||||
|
|
@ -389,7 +389,7 @@ flags for the typical "C" compiler, so C programmers will find them familiar.
|
||||||
for other tools. For example, this command::
|
for other tools. For example, this command::
|
||||||
|
|
||||||
% iverilog -E -ofoo.v -DKEY=10 src1.v src2.v
|
% iverilog -E -ofoo.v -DKEY=10 src1.v src2.v
|
||||||
|
|
||||||
runs the preprocessor on the source files src1.v and src2.v and produces the
|
runs the preprocessor on the source files src1.v and src2.v and produces the
|
||||||
single output file foo.v that has all the preprocessing (including header
|
single output file foo.v that has all the preprocessing (including header
|
||||||
includes and ifdefs) processed.
|
includes and ifdefs) processed.
|
||||||
|
|
@ -421,7 +421,7 @@ Elaboration Flags
|
||||||
These are flags that pass information to the elaboration steps.
|
These are flags that pass information to the elaboration steps.
|
||||||
|
|
||||||
* -P<symbol>=<value>
|
* -P<symbol>=<value>
|
||||||
|
|
||||||
Define a parameter using the defparam behavior to override a parameter
|
Define a parameter using the defparam behavior to override a parameter
|
||||||
values. This can only be used for parameters of root module instances.
|
values. This can only be used for parameters of root module instances.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ World program.
|
||||||
.. code-block:: verilog
|
.. code-block:: verilog
|
||||||
|
|
||||||
module hello;
|
module hello;
|
||||||
initial
|
initial
|
||||||
begin
|
begin
|
||||||
$display("Hello, World");
|
$display("Hello, World");
|
||||||
$finish ;
|
$finish ;
|
||||||
|
|
@ -70,10 +70,10 @@ example, the counter model in counter.v
|
||||||
parameter WIDTH = 8;
|
parameter WIDTH = 8;
|
||||||
|
|
||||||
output [WIDTH-1 : 0] out;
|
output [WIDTH-1 : 0] out;
|
||||||
input clk, reset;
|
input clk, reset;
|
||||||
|
|
||||||
reg [WIDTH-1 : 0] out;
|
reg [WIDTH-1 : 0] out;
|
||||||
wire clk, reset;
|
wire clk, reset;
|
||||||
|
|
||||||
always @(posedge clk or posedge reset)
|
always @(posedge clk or posedge reset)
|
||||||
if (reset)
|
if (reset)
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,8 @@ specific branch. Stable releases are placed on branches, and in particular v11
|
||||||
stable releases are on the branch "v11-branch" To get the development version
|
stable releases are on the branch "v11-branch" To get the development version
|
||||||
of the code follow these steps::
|
of the code follow these steps::
|
||||||
|
|
||||||
% git config --global user.name "Your Name Goes Here"
|
% git config --global user.name "Your Name Goes Here"
|
||||||
% git config --global user.email you@yourpublicemail.example.com
|
% git config --global user.email you@yourpublicemail.example.com
|
||||||
% git clone https://github.com/steveicarus/iverilog.git
|
% git clone https://github.com/steveicarus/iverilog.git
|
||||||
|
|
||||||
The first two lines are optional and are used to tell git who you are. This
|
The first two lines are optional and are used to tell git who you are. This
|
||||||
|
|
@ -69,9 +69,9 @@ build instructions below for your operation system for what to do next.
|
||||||
You will need autoconf and gperf installed in order for the script to work.
|
You will need autoconf and gperf installed in order for the script to work.
|
||||||
If you get errors such as::
|
If you get errors such as::
|
||||||
|
|
||||||
Autoconf in root...
|
Autoconf in root...
|
||||||
autoconf.sh: 10: autoconf: not found
|
autoconf.sh: 10: autoconf: not found
|
||||||
Precompiling lexor_keyword.gperf
|
Precompiling lexor_keyword.gperf
|
||||||
autoconf.sh: 13: gperf: not found.
|
autoconf.sh: 13: gperf: not found.
|
||||||
|
|
||||||
You will need to install download and install the autoconf and gperf tools.
|
You will need to install download and install the autoconf and gperf tools.
|
||||||
|
|
@ -108,9 +108,9 @@ Compiling on Linux/Unix
|
||||||
easiest case. Given that you have the source tree from the above instructions,
|
easiest case. Given that you have the source tree from the above instructions,
|
||||||
the compile and install is generally as simple as::
|
the compile and install is generally as simple as::
|
||||||
|
|
||||||
% ./configure
|
% ./configure
|
||||||
% make
|
% make
|
||||||
(su to root)
|
(su to root)
|
||||||
# make install
|
# make install
|
||||||
|
|
||||||
The "make install" typically needs to be done as root so that it can install
|
The "make install" typically needs to be done as root so that it can install
|
||||||
|
|
|
||||||
|
|
@ -295,8 +295,8 @@ Consider this running example of a square root calculator
|
||||||
bitl = 15;
|
bitl = 15;
|
||||||
end
|
end
|
||||||
endtask
|
endtask
|
||||||
|
|
||||||
initial clear;
|
initial clear;
|
||||||
|
|
||||||
always @(reset or posedge clk)
|
always @(reset or posedge clk)
|
||||||
if (reset)
|
if (reset)
|
||||||
|
|
@ -373,7 +373,7 @@ be modified as follows
|
||||||
module main;
|
module main;
|
||||||
|
|
||||||
reg clk, reset;
|
reg clk, reset;
|
||||||
reg [31:0] x;
|
reg [31:0] x;
|
||||||
reg [31:0] z;
|
reg [31:0] z;
|
||||||
wire [15:0] y1,y2;
|
wire [15:0] y1,y2;
|
||||||
wire rdy1,rdy2;
|
wire rdy1,rdy2;
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ Optimizations
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
* ivl_do_not_elide (snapshot 20140619 or later)
|
* ivl_do_not_elide (snapshot 20140619 or later)
|
||||||
|
|
||||||
This applies to signals (i.e. reg, wire, etc.) and tells the optimizer to
|
This applies to signals (i.e. reg, wire, etc.) and tells the optimizer to
|
||||||
not elide the signal, even if it is not referenced anywhere in the
|
not elide the signal, even if it is not referenced anywhere in the
|
||||||
design. This is useful if the signal is for some reason only accessed by
|
design. This is useful if the signal is for some reason only accessed by
|
||||||
|
|
@ -23,13 +23,13 @@ Synthesis
|
||||||
---------
|
---------
|
||||||
|
|
||||||
* ivl_synthesis_cell
|
* ivl_synthesis_cell
|
||||||
|
|
||||||
Applied to a module definition, this tells the synthesizer that the module
|
Applied to a module definition, this tells the synthesizer that the module
|
||||||
is a cell. The synthesizer does not descend into synthesis cells, as they
|
is a cell. The synthesizer does not descend into synthesis cells, as they
|
||||||
are assumed to be primitives in the target technology.
|
are assumed to be primitives in the target technology.
|
||||||
|
|
||||||
* ivl_synthesis_off
|
* ivl_synthesis_off
|
||||||
|
|
||||||
Attached to an "always" statement, this tells the synthesizer that the
|
Attached to an "always" statement, this tells the synthesizer that the
|
||||||
statement is not to be synthesized. This may be useful, for example, to tell
|
statement is not to be synthesized. This may be useful, for example, to tell
|
||||||
the compiler that a stretch of code is test-bench code.
|
the compiler that a stretch of code is test-bench code.
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,7 @@ terminal interrupt and drops you into the interactive prompt::
|
||||||
^C** VVP Stop(0) **
|
^C** VVP Stop(0) **
|
||||||
** Flushing output streams.
|
** Flushing output streams.
|
||||||
** Current simulation time is 533928600 ticks.
|
** Current simulation time is 533928600 ticks.
|
||||||
>
|
>
|
||||||
|
|
||||||
This could be useful if you suspect that your simulation is stuck in
|
This could be useful if you suspect that your simulation is stuck in
|
||||||
an infinite loop and you want to rummage around and see what's going on.
|
an infinite loop and you want to rummage around and see what's going on.
|
||||||
|
|
|
||||||
|
|
@ -73,12 +73,12 @@ behavior.
|
||||||
synonyms for turning of dumping.
|
synonyms for turning of dumping.
|
||||||
|
|
||||||
* -fst
|
* -fst
|
||||||
|
|
||||||
Generate FST format outputs instead of VCD format waveform dumps. This is
|
Generate FST format outputs instead of VCD format waveform dumps. This is
|
||||||
the preferred output format if using GTKWave for viewing waveforms.
|
the preferred output format if using GTKWave for viewing waveforms.
|
||||||
|
|
||||||
* -lxt/-lxt2
|
* -lxt/-lxt2
|
||||||
|
|
||||||
Generate LXT or LXT2format instead of VCD format waveform dumps. The LXT2
|
Generate LXT or LXT2format instead of VCD format waveform dumps. The LXT2
|
||||||
format is more advanced.
|
format is more advanced.
|
||||||
|
|
||||||
|
|
@ -96,15 +96,15 @@ The Icarus Verilog support for SDF back-annotation can take some extended
|
||||||
arguments to control aspects of SDF support.
|
arguments to control aspects of SDF support.
|
||||||
|
|
||||||
* -sdf-warn
|
* -sdf-warn
|
||||||
|
|
||||||
Print warnings during load of/annotation from an SDF file.
|
Print warnings during load of/annotation from an SDF file.
|
||||||
|
|
||||||
* -sdf-info
|
* -sdf-info
|
||||||
|
|
||||||
Print interesting information about an SDF file while parsing it.
|
Print interesting information about an SDF file while parsing it.
|
||||||
|
|
||||||
* -sdf-verbose
|
* -sdf-verbose
|
||||||
|
|
||||||
Print warnings and info messages.
|
Print warnings and info messages.
|
||||||
|
|
||||||
Environment Variables
|
Environment Variables
|
||||||
|
|
|
||||||
|
|
@ -393,7 +393,7 @@ more details.
|
||||||
the same thing, but included in the SystemVerilog definition.
|
the same thing, but included in the SystemVerilog definition.
|
||||||
|
|
||||||
* `$simtime`
|
* `$simtime`
|
||||||
|
|
||||||
The `$simtime` system function returns as a 64bit value the
|
The `$simtime` system function returns as a 64bit value the
|
||||||
simulation time, unscaled by the time units of local
|
simulation time, unscaled by the time units of local
|
||||||
scope. This is different from the $time and $stime functions
|
scope. This is different from the $time and $stime functions
|
||||||
|
|
|
||||||
|
|
@ -5542,7 +5542,7 @@ NetProc* PForStatement::elaborate(Design*des, NetScope*scope) const
|
||||||
des->errors += 1;
|
des->errors += 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make the r-value of the initial assignment, and size it
|
// Make the r-value of the initial assignment, and size it
|
||||||
// properly. Then use it to build the assignment statement.
|
// properly. Then use it to build the assignment statement.
|
||||||
initial_expr = elaborate_rval_expr(des, scope, sig->net_type(),
|
initial_expr = elaborate_rval_expr(des, scope, sig->net_type(),
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ module main;
|
||||||
$dumpfile("work/br_gh156.vcd");
|
$dumpfile("work/br_gh156.vcd");
|
||||||
$dumpvars(0, main);
|
$dumpvars(0, main);
|
||||||
#1 $finish;
|
#1 $finish;
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
endmodule // main
|
endmodule // main
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ module main;
|
||||||
$display("FAILED -- break from for loop");
|
$display("FAILED -- break from for loop");
|
||||||
$finish;
|
$finish;
|
||||||
end
|
end
|
||||||
|
|
||||||
idx = 0;
|
idx = 0;
|
||||||
forever begin
|
forever begin
|
||||||
idx += 1;
|
idx += 1;
|
||||||
|
|
|
||||||
|
|
@ -60,5 +60,5 @@ initial begin
|
||||||
else
|
else
|
||||||
$display("PASSED");
|
$display("PASSED");
|
||||||
end
|
end
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@ task print_hex;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
$display("%h", n);
|
$display("%h", n);
|
||||||
end
|
end
|
||||||
endtask
|
endtask
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
print_hex(66);
|
print_hex(66);
|
||||||
end
|
end
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ module main;
|
||||||
#10 clk <= 1;
|
#10 clk <= 1;
|
||||||
#10 clk <= 0;
|
#10 clk <= 0;
|
||||||
#10 $finish;
|
#10 $finish;
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
endmodule // main
|
endmodule // main
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ module test;
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
integer x;
|
integer x;
|
||||||
x = f( , ); // This should fail. The function takes no arguments.
|
x = f( , ); // This should fail. The function takes no arguments.
|
||||||
$display("FAILED");
|
$display("FAILED");
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,5 +11,5 @@ module test;
|
||||||
endfunction // fun
|
endfunction // fun
|
||||||
|
|
||||||
always_comb fun;
|
always_comb fun;
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
(PROCESS "best=0.65:nom=1.0:worst=1.8")
|
(PROCESS "best=0.65:nom=1.0:worst=1.8")
|
||||||
(TEMPERATURE -25.0:25.0:85.0)
|
(TEMPERATURE -25.0:25.0:85.0)
|
||||||
(TIMESCALE 1 ps)
|
(TIMESCALE 1 ps)
|
||||||
|
|
||||||
// Do nothing
|
// Do nothing
|
||||||
(CELL
|
(CELL
|
||||||
(CELLTYPE "top")
|
(CELLTYPE "top")
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
module testbench;
|
module testbench;
|
||||||
string str;
|
string str;
|
||||||
int val;
|
int val;
|
||||||
real valr;
|
real valr;
|
||||||
|
|
||||||
|
|
||||||
task test_string_value(string str, string reference);
|
task test_string_value(string str, string reference);
|
||||||
if (str != reference) begin
|
if (str != reference) begin
|
||||||
|
|
@ -12,7 +12,7 @@ module testbench;
|
||||||
$finish;
|
$finish;
|
||||||
end
|
end
|
||||||
endtask // test_string_value
|
endtask // test_string_value
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
val = 11;
|
val = 11;
|
||||||
valr = 11.1;
|
valr = 11.1;
|
||||||
|
|
@ -51,6 +51,6 @@ module testbench;
|
||||||
test_string_value(str, "-11.1");
|
test_string_value(str, "-11.1");
|
||||||
|
|
||||||
$display("PASSED");
|
$display("PASSED");
|
||||||
|
|
||||||
end
|
end
|
||||||
endmodule
|
endmodule
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
module main;
|
module main;
|
||||||
|
|
||||||
string foo;
|
string foo;
|
||||||
int error_count;
|
int error_count;
|
||||||
|
|
||||||
task check_char(input int idx, input [7:0] val);
|
task check_char(input int idx, input [7:0] val);
|
||||||
if (foo[idx] !== val) begin
|
if (foo[idx] !== val) begin
|
||||||
|
|
@ -11,7 +11,7 @@ module main;
|
||||||
error_count = error_count+1;
|
error_count = error_count+1;
|
||||||
end
|
end
|
||||||
endtask // check_char
|
endtask // check_char
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
// These are the special charasters in strings as defined by
|
// These are the special charasters in strings as defined by
|
||||||
// IEEE Std 1800-2017: 5.9.1 Special characters in strings.
|
// IEEE Std 1800-2017: 5.9.1 Special characters in strings.
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
module main;
|
module main;
|
||||||
|
|
||||||
string foo;
|
string foo;
|
||||||
int error_count;
|
int error_count;
|
||||||
|
|
||||||
task check_char(input int idx, input [7:0] val);
|
task check_char(input int idx, input [7:0] val);
|
||||||
if (foo[idx] !== val) begin
|
if (foo[idx] !== val) begin
|
||||||
|
|
@ -11,7 +11,7 @@ module main;
|
||||||
error_count = error_count+1;
|
error_count = error_count+1;
|
||||||
end
|
end
|
||||||
endtask // check_char
|
endtask // check_char
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
// These are the special charasters in strings as defined by
|
// These are the special charasters in strings as defined by
|
||||||
// IEEE Std 1800-2017: 5.9.1 Special characters in strings.
|
// IEEE Std 1800-2017: 5.9.1 Special characters in strings.
|
||||||
|
|
|
||||||
|
|
@ -755,8 +755,8 @@ sv_ps_member_sel2 normal,-g2009 ivltests
|
||||||
sv_ps_member_sel3 normal,-g2009 ivltests
|
sv_ps_member_sel3 normal,-g2009 ivltests
|
||||||
sv_ps_method1 normal,-g2009 ivltests
|
sv_ps_method1 normal,-g2009 ivltests
|
||||||
sv_ps_method2 normal,-g2009 ivltests
|
sv_ps_method2 normal,-g2009 ivltests
|
||||||
sv_ps_method3 normal,-g2009 ivltests
|
sv_ps_method3 normal,-g2009 ivltests
|
||||||
sv_ps_method4 normal,-g2009 ivltests
|
sv_ps_method4 normal,-g2009 ivltests
|
||||||
sv_ps_type1 normal,-g2009 ivltests
|
sv_ps_type1 normal,-g2009 ivltests
|
||||||
sv_ps_type_cast1 normal,-g2009 ivltests
|
sv_ps_type_cast1 normal,-g2009 ivltests
|
||||||
sv_ps_type_cast2 normal,-g2009 ivltests
|
sv_ps_type_cast2 normal,-g2009 ivltests
|
||||||
|
|
|
||||||
|
|
@ -1516,8 +1516,8 @@ real_reg_force_rel normal ivltests
|
||||||
recursive_func1 normal ivltests gold=recursive_func.gold
|
recursive_func1 normal ivltests gold=recursive_func.gold
|
||||||
recursive_func_const1 normal ivltests gold=recursive_func_const.gold
|
recursive_func_const1 normal ivltests gold=recursive_func_const.gold
|
||||||
recursive_task normal ivltests gold=recursive_task.gold
|
recursive_task normal ivltests gold=recursive_task.gold
|
||||||
redef_net_error CE ivltests
|
redef_net_error CE ivltests
|
||||||
redef_reg_error CE ivltests
|
redef_reg_error CE ivltests
|
||||||
repeat2 normal ivltests
|
repeat2 normal ivltests
|
||||||
repeat_expr_probe normal ivltests
|
repeat_expr_probe normal ivltests
|
||||||
repl_zero_wid_fail CE ivltests
|
repl_zero_wid_fail CE ivltests
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ def run_CE(options : dict) -> list:
|
||||||
|
|
||||||
def check_run_outputs(options : dict, expected_fail : bool, it_stdout : str, log_list : list) -> list:
|
def check_run_outputs(options : dict, expected_fail : bool, it_stdout : str, log_list : list) -> list:
|
||||||
'''Check the output files, and return success for failed.
|
'''Check the output files, and return success for failed.
|
||||||
|
|
||||||
This function takes an options dictionary that describes the settings, and
|
This function takes an options dictionary that describes the settings, and
|
||||||
the output from the final command. This also takes a list of log files to check
|
the output from the final command. This also takes a list of log files to check
|
||||||
there there are gold files present.'''
|
there there are gold files present.'''
|
||||||
|
|
@ -240,7 +240,7 @@ def do_run_normal_vlog95(options : dict, expected_fail : bool) -> list:
|
||||||
vvp_cmd = assemble_vvp_cmd(it_vvp_args, it_vvp_args_extended)
|
vvp_cmd = assemble_vvp_cmd(it_vvp_args, it_vvp_args_extended)
|
||||||
vvp_res = subprocess.run(vvp_cmd, capture_output=True)
|
vvp_res = subprocess.run(vvp_cmd, capture_output=True)
|
||||||
log_results(it_key, "vvp", vvp_res);
|
log_results(it_key, "vvp", vvp_res);
|
||||||
|
|
||||||
if vvp_res.returncode != 0:
|
if vvp_res.returncode != 0:
|
||||||
return [1, "Failed - Vvp execution failed"]
|
return [1, "Failed - Vvp execution failed"]
|
||||||
|
|
||||||
|
|
@ -279,7 +279,7 @@ def do_run_normal(options : dict, expected_fail : bool) -> list:
|
||||||
vvp_cmd = assemble_vvp_cmd(it_vvp_args, it_vvp_args_extended)
|
vvp_cmd = assemble_vvp_cmd(it_vvp_args, it_vvp_args_extended)
|
||||||
vvp_res = subprocess.run(vvp_cmd, capture_output=True)
|
vvp_res = subprocess.run(vvp_cmd, capture_output=True)
|
||||||
log_results(it_key, "vvp", vvp_res);
|
log_results(it_key, "vvp", vvp_res);
|
||||||
|
|
||||||
if vvp_res.returncode != 0:
|
if vvp_res.returncode != 0:
|
||||||
return [1, "Failed - Vvp execution failed"]
|
return [1, "Failed - Vvp execution failed"]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -72,5 +72,5 @@ def read_lists(paths: list) -> list:
|
||||||
# Convert the result to a sorted list, and return that.
|
# Convert the result to a sorted list, and return that.
|
||||||
tests_list = list(tests_dict.values())
|
tests_list = list(tests_dict.values())
|
||||||
tests_list.sort()
|
tests_list.sort()
|
||||||
|
|
||||||
return tests_list
|
return tests_list
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ if __name__ == "__main__":
|
||||||
if len(list_paths) == 0:
|
if len(list_paths) == 0:
|
||||||
list_paths = list()
|
list_paths = list()
|
||||||
list_paths += ["regress-vvp.list"]
|
list_paths += ["regress-vvp.list"]
|
||||||
|
|
||||||
print(f"Use lists: {list_paths}")
|
print(f"Use lists: {list_paths}")
|
||||||
|
|
||||||
# Read the list files, to get the tests.
|
# Read the list files, to get the tests.
|
||||||
|
|
@ -115,4 +115,4 @@ if __name__ == "__main__":
|
||||||
print("===================================================")
|
print("===================================================")
|
||||||
print(f"Test results: Ran {len(tests_list)}, Failed {error_count}.")
|
print(f"Test results: Ran {len(tests_list)}, Failed {error_count}.")
|
||||||
exit(error_count)
|
exit(error_count)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -780,7 +780,7 @@ bool dll_target::proc_forloop(const NetForLoop*net)
|
||||||
save_cur_->u_.forloop_.condition = expr_;
|
save_cur_->u_.forloop_.condition = expr_;
|
||||||
expr_ = nullptr;
|
expr_ = nullptr;
|
||||||
res = res && rc;
|
res = res && rc;
|
||||||
|
|
||||||
stmt_cur_ = save_cur_;
|
stmt_cur_ = save_cur_;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -217,6 +217,6 @@ int show_stmt_while(ivl_statement_t net, ivl_scope_t sscope)
|
||||||
fprintf(vvp_out, "T_%u.%u ;\n", thread_count, out_label);
|
fprintf(vvp_out, "T_%u.%u ;\n", thread_count, out_label);
|
||||||
|
|
||||||
POP_JUMPS;
|
POP_JUMPS;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue