Update and correct documentation of extended data types (xtypes).
This commit is contained in:
parent
9cccd35e59
commit
79c644f550
|
|
@ -2,25 +2,29 @@
|
|||
Icarus Verilog Extensions
|
||||
=========================
|
||||
|
||||
Icarus Verilog supports certain extensions to the baseline IEEE1364
|
||||
Icarus Verilog supports certain extensions to the baseline IEEE 1364
|
||||
standard. Some of these are picked from extended variants of the
|
||||
language, such as SystemVerilog, and some are expressions of internal
|
||||
behavior of Icarus Verilog, made available as a tool debugging aid.
|
||||
|
||||
* Builtin System Functions
|
||||
Built-in System Functions
|
||||
-------------------------
|
||||
|
||||
** Extended Verilog Data Types
|
||||
Extended Verilog Data Types
|
||||
---------------------------
|
||||
|
||||
This feature is turned off if the generation flag "-g" is set to other
|
||||
then the default "2x". For example, "iverilog -g2x" enables extended
|
||||
data types, and "iverilog -g2" disables them.
|
||||
This feature is turned on by the generation flag "-gxtypes" and turned
|
||||
off by the generation flag "-gno-xtypes". It is turned on by default.
|
||||
|
||||
Icarus Verilog adds support for extended data types. This extended
|
||||
type syntax is based on a proposal by Cadence Design Systems,
|
||||
originally as an update to the IEEE1364. That original proposal has
|
||||
apparently been absorbed by the IEEE1800 SystemVerilog
|
||||
standard. Icarus Verilog currently only takes the new primitive types
|
||||
from the proposal.
|
||||
originally as an update to the IEEE 1364 standard. Icarus Verilog
|
||||
currently only takes the new primitive types from the proposal.
|
||||
|
||||
SystemVerilog provides the same functionality using somewhat different
|
||||
syntax. This extension is maintained for backwards compatibility.
|
||||
|
||||
- Types
|
||||
|
||||
Extended data types separates the concept of net/variable from the
|
||||
data type. Both nets and variables can declared with any data
|
||||
|
|
@ -28,7 +32,7 @@ type. The primitive types available are::
|
|||
|
||||
logic - The familiar 0, 1, x and z, optionally with strength.
|
||||
bool - Limited to only 0 and 1
|
||||
real - 64bit real values
|
||||
real - 64-bit real values
|
||||
|
||||
Nets with logic type may have multiple drivers with strength, and the
|
||||
value is resolved the usual way. Only logic values may be driven to
|
||||
|
|
@ -61,9 +65,9 @@ types as nets.
|
|||
- Ports
|
||||
|
||||
Module and task ports in standard Verilog are restricted to logic
|
||||
types. This extension removes that restriction, allowing any type to
|
||||
pass through the port consistent with the continuous assignment
|
||||
connectivity that is implied by the type.
|
||||
types. This extension removes that restriction, allowing any of
|
||||
the above types to pass through the port consistent with the
|
||||
continuous assignment connectivity that is implied by the type.
|
||||
|
||||
- Expressions
|
||||
|
||||
|
|
@ -81,5 +85,6 @@ bools and reals always return exactly true or false.
|
|||
Case comparison returns bool. This differs from baseline Verilog,
|
||||
which strictly speaking returns a logic, but only 0 or 1 values.
|
||||
|
||||
All the arithmetic operators return bool if both of their operands are
|
||||
bool or real. Otherwise, they return logic.
|
||||
Arithmetic operators return real if either of their operands is real,
|
||||
otherwise they return logic if either of their operands is logic. If
|
||||
both operands are bool, they return bool.
|
||||
|
|
|
|||
Loading…
Reference in New Issue