Operators

Operators :
the operator is a character that represents a specific mathematical or logical action or process.

Untitled Diagram-Page-2 drawio (16)

s.No.Operator
1.Arithmetic Operator
2.Relational operator
3.Equality operator
4.Logical Operator
5.Bitwise Operator
6.Shift Operator
7.Conditional Operator
8.Reduction Operator
9.Concatenation and Replication Operators

1. Arithmetic Operators#

We use arithmetic operators to perform basic mathematic functions on our variables. These operators should already be familiar as they are mostly replications of common mathematic symbols.

The table below shows the full list of arithmetic operators in SystemVerilog.
airthmatic_1

The below figure shows the output of the Arithmetic operator screenshot
Untitled Diagram drawio (2)

for Better understanding go through this code


2.Relational operator#

Relation operator cheat sheet

OperatorDescription
a < ba less than b
a > ba greater than b
a <= ba less than or equal to b
a >= ba greater than or equal to b

These operators compare operands and result in a 1-bit scalar Boolean value.

  • 0 if the relation is false
  • 1 if the relation is true
  • x if any of the operands has unknown x bits

Example:
Consider, a = 111
b = 101

  • a < b:Here a is greater than b, the relation is false, so the result is 0.

  • a > b:Here a is greater than b, the relation is true, so the result is 1.

  • a <= b:Here a is greater than b, the relation is false, so the result is 0.

  • a >= b:Here a is greater than b, the relation is true, so the result is 1.

relational


3.Equality operator#

The equality operators are used to compare expressions. If the comparison fails, then the result will be 0, otherwise, it will be 1. There are two types of Equality operators.

  • Case Equality
  • Logical Equality.

Equality operator cheat sheet

OperatorDescription
a === ba equal to b, including x and z (Case equality)
a !== ba not equal to b, including x and z (Case inequality)
a == ba equal to b, the result may be unknown (logical equality)
a != ba not equal to b, the result may be unknown (logical equality)
  • If both operands of logical equality (==) or logical inequality (!=) contain unknown (x) or a high-impedance (z) value, then the result of the comparison will be unknown (x). Otherwise, it will be true or false.

  • If operands of case equality (===) or case inequality (!==) contain unknown (x) or a high-impedance (z) value, then the result will be calculated bit by bit.

Example:
Consider, a = 111
b = 101

  • a == b: Here we perform the logical equality of a,b, the result is zero when both numbers are the same then the result is 1.
  • a != b: Here we perform the logical inequality of a,b the result is 1 when both numbers are the same then the result is 0.
  • a === b: Here we perform the case equality of a,b the result is zero when both numbers are the same then the result is 1.
  • a !== b: Here we perform the case inequality of a,b the result is 1 when both numbers are the same then the result is 0.

equality


4.Logical Operator#

The Logical operators are similar to the bit-wise operators

In the Logical Operator, these expressions return either a 1 (true) or 0 (false).

There are only three logical operators for better understanding follow the below cheat sheet

Logical operator cheat sheet
logical11

Example:
Consider, a = 100
b = 111

  • a && b: Here we performing the Logical AND of a,b, and the result is 1.
    when any one of the variable values is zero then the result is 0. and when one of the variable bit values is 1’s then the result is 1.
  • a || b: Here we performing the Logical OR of a,b, and the result is 1.
    if all the variable’s values are zero then only the result is 0. and if any one of the variable bit values is 1’s then the result is 1.
  • !a: Here we performing the Logical Not of a and the result is 0. if all variable value is zero then the result is 0. ( just vice versa).

logical


5.Bitwise operator#

Bitwise operators perform a bit-wise operation on two operands.
They take each bit in one operand and perform the operation with the corresponding bit in the other operand. If one operand is shorter than the other, it will be extended on the left side with zeroes to match the length of the longer operand.

Bitwise operator cheat sheet

OperatorDescription
~negation
&and
|inclusive or
^exclusive or
^~ or ~^exclusive nor (equivalence)

Example:
Consider, a = 100
b=110

  • a & b: bit-wise and of a,b the result is 100.
  • a | b: bit-wise or of a,b the result is 110.
  • a ~& b: bit-wise nand of a,b the result is 011.
  • a ~| b: bit-wise nor of a,b the result is 001.
  • a ^ b: bit-wise xor of a,b the result is 101.
  • a ~^ b: bit-wise nxor of a,b the result is 010.

bitwise


6.shift operator#

There 2 types of shift operators

  • Logical shift operators
  • Arithmetic shift operators

Shift operator cheat sheet

OperatorDescription
«shift left logical
»shift right logical
«<shift left arithmetic
»>shift right arithmetic

The shift operator actually requires two arguments. The first of these is the name of the signal which we want to shift. The second argument is the number of bits we want to shift.

When we use the logical shift operators, all the blank positions are filled with 0’s after the signal has been shifted by the required number of bits.

Example:
Consider, a = 101

  • a «1: a is Logical shifted to the left by a 1-bit position and the result is 010.
  • a »1: a is Logical shifted to the right by a 1-bit position and the result is 010.
  • a «<2: a is shifted to the left by a 2-bit position and the result is 100.
  • a »>2: a is Arithmetic shifted to the right by a 2-bit position and when we use unsigned data type in the code, then Arithmetic right will take shifted 2 - bit position and filled with 0’s. and the result is 001.
  • a »>2: a is Arithmetic shifted to the right by a 2-bit position. when we use signed data type in the code, then Arithmetic right will take shifted 2- bit position and filled with 1’s. and the result is 111.

a1 drawio (2)


7.Conditional Operator#

To use the conditional operator, we write a logical expression before the? the operator which is then evaluated to see if it is true or false. The output is assigned to one of two values depending on whether the expression is true or false.

the general syntax for the conditional operator.

output = <condition> ? <true> : <false>

Example:
Consider, y = enable ? data1 : data2

In the above example enable condition is true it will execute the data otherwise it going to the data2.

conditional


8.Reduction operator#

Reduction operators are unary.
They perform a bit-wise operation on a single operand to produce a single-bit result.

Reduction operator cheat sheet

OperatorDescription
&and
~&nand
|or
~|nor
^xor
^~ or ~^xnor

Example
Consider, a = 1010

  • &a: Here we performing the Reduction and operation, and the result is 0.
  • |a: Here we performing the Reduction or operation, and the result is 1.
  • ~&a: Here we performing the Reduction NAND operation, and the result is 1.
  • ~|a: Here we performing the Reduction or operation, and the result is 0.
  • ^a: Here we performing the Reduction or operation, and the result is 0.
  • ~^a: Here we performing the Reduction or operation, and the result is 1.

reduction


9.Concatenation and Replication Operators#

Concatenation and Replication operator cheat sheet

OperatorDescription
{ }Concatenation operator
{{ }}Replication operator
  • concatenation operator to combine two or more signals into a vector.
    Concatenations are expressed using the brace characters { and },
    with commas separating the expressions within.

Example: a=4’b1010; b=4’b1110; {a,b} -if a and b both are 8-bit numbers, and the results has 8 bits.
Concatenation output is 10101110

Replication Operator
The replication operator is used to replicate a group of bits n times. Say you have a 4-bit variable and you want to replicate it 4 times to get a 16-bit variable.
a=4’b1010; b=4’b1110; {2{a},b} - this is equivalent to {a, a, b} and total number of bit is 12-bit.
Replication Output is 101010101110

a1 drawio (1)