Javatpoint Logo

  • Interview Q

Verilog Tutorial


  • Send your Feedback to [email protected]

Help Others, Please Share


Learn Latest Tutorials

Splunk tutorial


Tumblr tutorial

Reinforcement Learning

R Programming tutorial

R Programming

RxJS tutorial

React Native

Python Design Patterns

Python Design Patterns

Python Pillow tutorial

Python Pillow

Python Turtle tutorial

Python Turtle

Keras tutorial



Verbal Ability

Interview Questions

Interview Questions

Company Interview Questions

Company Questions

Trending Technologies

Artificial Intelligence

Artificial Intelligence

AWS Tutorial

Cloud Computing

Hadoop tutorial

Data Science

Angular 7 Tutorial

Machine Learning

DevOps Tutorial

B.Tech / MCA

DBMS tutorial

Data Structures

DAA tutorial

Operating System

Computer Network tutorial

Computer Network

Compiler Design tutorial

Compiler Design

Computer Organization and Architecture

Computer Organization

Discrete Mathematics Tutorial

Discrete Mathematics

Ethical Hacking

Ethical Hacking

Computer Graphics Tutorial

Computer Graphics

Software Engineering

Software Engineering

html tutorial

Web Technology

Cyber Security tutorial

Cyber Security

Automata Tutorial

C Programming

C++ tutorial

Control System

Data Mining Tutorial

Data Mining

Data Warehouse Tutorial

Data Warehouse

Javatpoint Services

JavaTpoint offers too many high quality services. Mail us on h [email protected] , to get more information about given services.

  • Website Designing
  • Website Development
  • Java Development
  • PHP Development
  • Graphic Designing
  • Digital Marketing
  • On Page and Off Page SEO
  • Content Development
  • Corporate Training
  • Classroom and Online Training

Training For College Campus

JavaTpoint offers college campus training on Core Java, Advance Java, .Net, Android, Hadoop, PHP, Web Technology and Python. Please mail your requirement at [email protected] . Duration: 1 week to 2 week

RSS Feed

Combinational Logic with assign

The verilog assign statement is typically used to continuously drive a signal of wire datatype and gets synthesized as combinational logic. Here are some more design examples using the assign statement.

Example #1 : Simple combinational logic

The code shown below implements a simple digital combinational logic which has an output wire z that is driven continuously with an assign statement to realize the digital equation.

The module combo gets elaborated into the following hardware schematic using synthesis tools and can be seen that the combinational logic is implemented with digital gates.

simple combinational logic with assign

The testbench is a platform for simulating the design to ensure that the design does behave as expected. All combinations of inputs are driven to the design module using a for loop with a delay statement of 10 time units so that the new value is applied to the inputs after some time.

using assign in verilog

Example #2: Half Adder

The half adder module accepts two scalar inputs a and b and uses combinational logic to assign the outputs sum and carry bit cout . The sum is driven by an XOR between a and b while the carry bit is obtained by an AND between the two inputs.

half adder circuit with assign

Example #3: Full Adder

A full adder can be built using the half adder module shown above or the entire combinational logic can be applied as is with assign statements to drive the outputs sum and cout .

full adder circuit with assign

Example #4: 2x1 Multiplexer

The simple 2x1 multiplexer uses a ternary operator to decide which input should be assigned to the output c . If sel is 1, output is driven by a and if sel is 0 output is driven by b .

2x1 multiplexer

Example #5: 1x4 Demultiplexer

The demultiplexer uses a combination of sel and f inputs to drive the different output signals. Each output signal is driven by a separate assign statement. Note that the same signal is generally not recommended to be driven by different assign statements.

1x4 demultiplexer

Continuous Assigns 

A module may have any number of continuous assign statements. Continuous assign statements are used to drive values on to wires. For example:

This is referred to as a continuous assign because the wire on the left-hand side of the assignment operator is continuously driven with the value of the expression on the right hand side. The target of the assign statement must be a wire. The continuous assign statement is not a procedural statement and so must be used at the module level; it cannot be placed in an initial or always process.

You can add delay to a continuous assign statement as follows:

In this case, the value of a changes 10 units of time after the expression b & c changes. Continuous assign statement implement inertial delay, meaning that continuous assign statements swallow glitches. This is illustrated below with the assumption that the unit of time is 1ns.


It is possible to specify up to three delay values on a continuous assignment:

When you specify more than one:

The first delay refers to the transition to the 1 value (rise delay).

The second delay refers to the transition to the 0 value (fall delay).

The third delay refers to the transition to the high-impedance value.

When a value changes to the unknown (x) value, the delay is the smallest of the delays specified.

If only two delays are specified, then the delay to high-impedance is the smallest of the two values specified.

Using assign and deassign Statements - 2023.2 English

Vivado design suite user guide: synthesis (ug901).

Vivado synthesis does not support assign and deassign statements.

Chipdemy: Learn Verilog, UVM, SystemVerilog & go for Quiz, and Interviews


Verilog assign statement

Table of Contents

Verilog Tutorial

·         Verilog Introduction

·          Lexical Tokens

·         Data Types

·         Integer Datatype

·         Real Datatype

·         Time Datatype

·         Real time Datatype

·         String Datatype

·         Event Datatype

·         Scalar and Vector

·         Module

·         Port

·         Abstraction Layer

·         Verilog Array

·         Memory Array

·         Verilog Operators

·         Behavioral Modelling

·         Always block

·         Initial block

·         Assign Statement

·         Generate block

Procedural Assignment

Assign statement

The assign statement in Verilog is used to continue assigning a value to a wire data type. In data flow modeling , it is also used. Concurrent assignment statements like this one are commonly used to show combinational logic. The assign statement explains how an original statement and a target are related, declaring that the value of the target i.e. “sample” should always match the value of the original statement.

The syntax of the assign statement is as follows:

Here, sample is the wire to which the value will be continuously assigned , and original_expression is the expression whose value will be assigned to the sample. The expression can be a combination of constants, signals, operators, and other wires.

Let us consider an easy example to show how to use the assign statement:

In the above example, the module and_gate accepts the signals x and y as inputs and outputs the signal F . The assign statement represents a logical AND operation between inputs x and y by constantly assigning the value of x & y to the output F .

Rules of assign statement:

The following guidelines must be observed when using an assign statement:

1.      LHS should never be a scalar or vector register, but rather a scalar or vector net, or a combination of both.

2.      scalar or vector registers, as well as function calls, can be found in RHS.

3.      The LHS will be updated with any changes to the values of any operands on the RHS.

4.      Continuous assignments are another name for assign statements.

The assign statement only operates with wire data types , and this must be remembered .

 To represent sequential behavior for registers ( such as reg ), procedural assignments (such as always blocks) must be used. Within Verilog modules, procedural assignments provide the description of a clock or sequential logic. Top of Form

Privacy Policy - Terms and Conditions

Siemens Digital Industries Software


  1. Verilog case statement example

    using assign in verilog

  2. ️ Assign in verilog. Wire And Reg In Verilog. 2019-02-05

    using assign in verilog

  3. Write the behavioural (i e. using "assign") Verilog

    using assign in verilog

  4. Verilog initial block

    using assign in verilog

  5. PPT

    using assign in verilog

  6. Tutorial 4: Verilog code of Full adder using structural level of abstraction

    using assign in verilog


  1. 4 bit verilog counter using Xilinx 12.1

  2. Assignment 6

  3. Assignment 8

  4. Verilog Code D-latch with asynchronous reset on EDA playground

  5. Writing Very First Program in Verilog

  6. Explaining Verilog constructs, syntax and logic to peers as if a teacher is explaining the concept


  1. What Is the Abbreviation for “assignment”?

    According to Purdue University’s website, the abbreviation for the word “assignment” is ASSG. This is listed as a standard abbreviation within the field of information technology.

  2. What Is a Deed of Assignment?

    In real property transactions, a deed of assignment is a legal document that transfers the interest of the owner of that interest to the person to whom it is assigned, the assignee. When ownership is transferred, the deed of assignment show...

  3. What Is a Notice of Assignment?

    A Notice of Assignment is the transfer of one’s property or rights to another individual or business. Depending on the type of assignment involved, the notice does not necessarily have to be in writing, but a contract outlining the terms of...

  4. Verilog assign statement

    When an assign statement is used to assign the given net with some value, it is called explicit assignment. Verilog also allows an assignment to be done when

  5. verilog

    assign is used for driving wire/net type declarations. Since wires change values according to the value driving them, whenever the operands

  6. Verilog Assign Statement

    Assign statements are used to drive values on the net. And it is also used in Data Flow Modeling. Signals of type wire or a data type

  7. Combinational Logic with assign

    Here are some more design examples using the assign statement. Example #1 Simple combinational logic E.

  8. Введение в Verilog, Первый урок.

    В конце описания логики каждого модуля пишем слово endmodule. module my_module_name (input wire a, input wire b, output wire c); assign

  9. Intro to Verilog

    We've been using wire declarations when naming nets (ports are declared as wires by default). However nets appearing on the. LHS of assignment statements inside

  10. Continuous Assigns

    Built with Sphinx using a theme provided by

  11. Using assign and deassign Statements

    Tristate Description Using Concurrent Assignment Coding Verilog Example

  12. Verilog assign statement

    ... assigning the value of x & y to the output F. Rules of assign statement: The following guidelines must be observed when using an assign statement: 1. LHS

  13. When is the 'assign' statement used in Verilog?

    Assign construct in Verilog is used for “continuous assignment” or in other words to model combinational logic. · As the word continuous suggest

  14. Functions with assign statements

    I realise there is no point in using a function for this