Merge pull request #998 from esola-thomas/esola-thomas/Enhance_README

README file enhancements
This commit is contained in:
Cary R 2023-09-11 21:03:17 -07:00 committed by GitHub
commit 778b6d937e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 46 additions and 5 deletions

View File

@ -2,6 +2,35 @@
Copyright 2000-2019 Stephen Williams
<details>
<summary><h2>Table of Contents</h2></summary>
1. [What is ICARUS Verilog?](#what-is-icarus-verilog)
2. [Building/Installing Icarus Verilog From Source](#buildinginstalling-icarus-verilog-from-source)
- [Compile Time Prerequisites](#compile-time-prerequisites)
- [Compilation](#compilation)
- [(Optional) Testing](#optional-testing)
- [Installation](#installation)
3. [How Icarus Verilog Works](#how-icarus-verilog-works)
- [Preprocessing](#preprocessing)
- [Parse](#parse)
- [Elaboration](#elaboration)
- [Optimization](#optimization)
- [Code Generation](#code-generation)
- [Attributes](#attributes)
4. [Running iverilog](#running-iverilog)
- [Examples](#examples)
5. [Unsupported Constructs](#unsupported-constructs)
6. [Nonstandard Constructs or Behaviors](#nonstandard-constructs-or-behaviors)
- [Builtin system functions](#builtin-system-functions)
- [Preprocessing Library Modules](#preprocessing-library-modules)
- [Width in %t Time Formats](#width-in-t-time-formats)
- [vpiScope iterator on vpiScope objects](#vpiscope-iterator-on-vpiscope-objects)
- [Time 0 Race Resolution](#time-0-race-resolution)
- [Nets with Types](#nets-with-types)
7. [Credits](#credits)
</details>
## What is ICARUS Verilog?
@ -30,6 +59,8 @@ not required, but helpful in case of problems.
### Compile Time Prerequisites
You can use: `apt install -y autoconf gperf make gcc g++ bison flex`
You need the following software to compile Icarus Verilog from source
on a UNIX-like system:
@ -77,6 +108,9 @@ on a UNIX-like system:
### Compilation
<details>
<summary><h4><a href="https://github.com/steveicarus/iverilog/releases">From Release</a></h4></summary>
Unpack the tar-ball and cd into the `verilog-#########` directory
(presumably, that is how you got to this README) and compile the source
with the commands:
@ -85,6 +119,10 @@ with the commands:
./configure
make
```
</details>
<details>
<summary><h4>From GitHub</h4></summary>
If you are building from git, you have to run the command below before
compiling the source. This will generate the "configure" file, which is
@ -92,6 +130,8 @@ automatically done when building from tarball.
```
sh autoconf.sh
./configure
make
```
Normally, this command automatically figures out everything it needs
@ -126,6 +166,7 @@ configure script that modify its behaviour:
i686-w64-mingw32 for building 32-bit Windows executables
Both options require installing the required mingw-w64 packages.
```
</details>
### (Optional) Testing
@ -251,7 +292,7 @@ to generate actual output.
The user selects the target code generator with the `-t` flag on the
command line.
### ATTRIBUTES
### Attributes
> NOTE: The $attribute syntax will soon be deprecated in favour of the Verilog-2001 attribute syntax, which is cleaner and standardized.
@ -298,7 +339,7 @@ compiler (`ivl`) with the proper command line options to get the job
done in a friendly way. See the `iverilog`(1) man page for usage details.
## EXAMPLES
### EXAMPLES
Example: Compiling `"hello.vl"`
@ -467,7 +508,7 @@ to specify a minimum width (i.e., `%5t`), then for that display
Icarus Verilog will override the `$timeformat` minimum width and
use the explicit minimum width.
### vpiScope iterator on vpiScope objects.
### vpiScope Iterator on vpiScope Objects
In the VPI, the normal way to iterate over vpiScope objects
contained within a vpiScope object, is the vpiInternalScope
@ -477,7 +518,7 @@ the is contained in the current scope. This is useful in cases
where one wants to iterate over all the objects in a scope
without iterating over all the contained types explicitly.
### time 0 race resolution.
### Time 0 Race Resolution
Combinational logic is routinely modelled using always
blocks. However, this can lead to race conditions if the
@ -504,7 +545,7 @@ are new keywords. Typical syntax is:
flag to iverilog.
## CREDITS
## Credits
Except where otherwise noted, Icarus Verilog, ivl and ivlpp are
Copyright Stephen Williams. The proper notices are in the head of each