Numbers

4-Value Logic Values

A scalar logic net can be one of four possible values:

Verilog logic values.

Value

Description

0

Zero, low, or false.

1

One, high, or true.

x

Unknown or uninitialized.

z

Undriven (floating).

Integers

Simple integers are numbers constructed from digits and possibly underscores. Underscores are ignored in numbers, so 42_839 is equivalent to 42839.

Examples:
124
+124
-124
42_839

Simple integers are signed unsized numbers. A simple integer specification may not contain an x or z.

Except in Verilog-A, integer numbers can be explicitly expressed in decimal, hexadecimal, octal, or binary notation. To do so, use s’bn; where s is an optional decimal number that indicates the size of the constant in bits; b is the base format and n is the number in the specified base. The base format is a one or two character code that signifies the following types of numbers:

b

unsigned binary

o

unsigned octal

d

unsigned decimal

h

unsigned hexadecimal

sb

signed binary

so

signed octal

sd

signed decimal

sh

signed hexadecimal

In hexadecimal numbers the letters a through f represent the digits 10 through 15. Letters in integer constants can be either lower or upper case.

Examples:
63 — unsized unsigned decimal number
'd63 — unsized unsigned decimal number
'h3f — unsized unsigned hexadecimal number
'o77 — unsized unsigned octal number
'b11_1111 — unsized unsigned binary number
12'h3f — 12 bit unsigned hexadecimal number
5'sd0 — 5 bit signed decimal number

The letters x and z can be given to denote unknown and high impedance digits in all numbers that use a base format, and _ is ignored. Sized constants for which the size is larger than the given number are padded on the left with zeros unless the first digit of the given number is an x or z, which are padded with the x or z. The number is truncated on the left if the size is smaller than the given number.

Examples:
64'o0 — a 64 bit octal 0 (zero padded)
8'hx — equivalent to 8'bxxxx_xxxx (x padded)
12'hfx — equivalent to 12'b0000_1111_xxxx (zero padded)
8'hfffx — equivalent to 8'b1111_xxxx (truncated)

Real Numbers

Real numbers must either include a decimal point or a scale factor. If a decimal point is present, there must be digits on both sides. So .12, 9., 4.eE3, and .2e-7 are not valid numbers. Underscores are ignored in real numbers. Scale factors are given in the table below. These scale factors are available in Verilog-A and Verilog-AMS, but not in Verilog.

Examples:
3.14
0.1
1.2E12
1.30e-2
236.123_763e-12
1.3u
5.46K
Scale factors for real numbers.

Multiplier

Name

Symbol

1012

tera

T

109

giga

G

106

mega

M

103

kilo

K or k

10-3

milli

m

10-6

micro

u

10-9

nano

n

10-12

pico

p

10-15

fempto

f

10-18

atto

a

10d

exponent

e d or E d

constants.vams

Predefined numbers in the form of compiler directives are included in the file constants.vams and listed in the table below (only available in Verilog-A and Verilog-AMS). The would be included with:

`include "constants.vams"

Mathematical constants are denoted with a `M_ prefix.

Predefined mathematical constants in constants.vams

`M_PI

π

3.14159265358979323846

`M_TWO_PI

6.28318530717958647693

`M_PI_2

π/2

1.57079632679489661923

`M_PI_4

π/4

0.78539816339744830962

`M_1_PI

1/π

0.31830988618379067154

`M_2_PI

2/π

0.63661977236758134308

`M_2_SQRTPI

2/√π

1.12837916709551257390

`M_E

e

2.7182818284590452354

`M_LOG2E

log2 e

1.4426950408889634074

`M_LOG10E

log10 e

0.43429448190325182765

`M_LN2

loge 2

0.69314718055994530942

`M_LN10

loge 10

2.30258509299404568402

`M_SQRT2

√2

1.41421356237309504880

`M_SQRT1_2

1/√2

0.70710678118654752440

Physical constants use the `P_ prefix.

Predefined physical constants in constants.vams

`P_Q

charge of an electron

1.602176462 × 10 -19 C

`P_C

speed of light

2.99792458 × 10 8 m/s

`P_K

Boltzmann’s constant

1.3806503 × 10 -23 J/K

`P_H

Planck’s constant

6.626076 × 10 -34 J-s

`P_EPS0

permittivity of a vacuum

8.854187817 × 10 -12 F/m

`P_U0

permeability of a vacuum

4π10 -7 H/m

`P_CELSIUS0

0 Celsius

273.15 K