top of page

5.1.2 Signal Strengths

Solution to Resolve Signal Contention

  • In Verilog, signal strength determines how strongly a signal drives a logic value (0, 1, or Z) on a net. It plays a key role in resolving logic values when multiple drivers are connected to a net (like tri or wire).

​

  • When multiple drivers assign values to a net (e.g., wire), the resulting logic value is determined by the strongest driver.

​

  • It's especially important in bus systems, tri-state buffers, and bidirectional lines.

Strength Available in Verilog HDL​

Strength Level                                           Type                                                  Degree

supply0, supply1

​​

strong0, strong1

​​​

pull0,

pull1

​​​

large0,

large1

​​​

weak0,

weak1

​​​

medium0, medium1

​​​

small0, small1

​​​

highz0, highz1

DRIVING

​

​​

DRIVING

​​

​

DRIVING

​​

​

STORAGE/CAPACITIVE

​​

​

DRIVING

​​

​

STORAGE

​​

​

STORAGE

​​

​

HIGH IMPEDENCE

Strongest

​

​

​

​

​

​

​

​

​

​

​

​

​​

​

​

​

​

​

​

​

Weakest

NOTE:

                   <strength>0  ->  Refer to 0 value

​

                   <strength>1  ->  Refer to 1 value

Example - 1

Signal Contention

supply0

strong1

 Verilog

module vlsimentor;

    wire in1, in2;

    wire y;

    buf (supply0) b1(y, in1);

    buf (strong1) b1(y, in1);

    //assign (supply0) y = in1;

    //assign (strong1) y = in2;

    initial begin

        $monitor($time, " | in1 = %b, in2 = %b, y = %b", in1, in2, y);

        in1 = 0; in2 = 0;

        #5 in1 = 0; in2 = 1;

        #5 in1 = 1; in2 = 0;

        #5 in1 = 1; in2 = 1;

    end

endmodule

 Output

Signal Contention Example - 1

0 | in1 = 0, in2 = 0, y = 0

Signal Contention Example - 2

15 | in1 = 1, in2 = 1, y = 1

Signal Contention Example - 3

5 | in1 = 0, in2 = 1, y = 0

Signal Contention Example - 4

10 | in1 = 1, in2 = 0, y = x

Example - 2

Signal Contention Example - 5

 Verilog

module vlsimentor;

    wire in1, in2;

    wire y;

    buf (supply0) b1(y, in1);

    buf (supply1) b1(y, in1);

    //assign (supply0) y = in1;

    //assign (supply1) y = in2;

    initial begin

        $monitor($time, " | in1 = %b, in2 = %b, y = %b", in1, in2, y);

        in1 = 0; in2 = 0;

        #5 in1 = 0; in2 = 1;

        #5 in1 = 1; in2 = 0;

        #5 in1 = 1; in2 = 1;

    end

endmodule

 Output

Signal Contention Example - 6

5 | in1 = 0, in2 = 1, y = x

Signal Contention Example - 7

10 | in1 = 1, in2 = 0, y = x

Example - 3

Signal Contention Example - 8

 Verilog

module vlsimentor;

    wire in1, in2;

    wire y;

    buf (strong1, weak0) b1(y, in1);

    buf (supply0, pull1) b1(y, in1);

    //assign (strong1, weak0) y = in1;

    //assign (supply0, pull1) y = in2;

    initial begin

        $monitor($time, " | in1 = %b, in2 = %b, y = %b", in1, in2, y);

        in1 = 0; in2 = 0;

        #5 in1 = 0; in2 = 1;

        #5 in1 = 1; in2 = 0;

        #5 in1 = 1; in2 = 1;

    end

endmodule

 Output

Signal Contention Example - 9

5 | in1 = 0, in2 = 1, y = 1

Signal Contention Example - 10

10 | in1 = 1, in2 = 0, y = 0

Wire & tri nets

Wired nets

© Copyright 2025 VLSI Mentor. All Rights Reserved.©

Connect with us

  • Instagram
  • Facebook
  • Twitter
  • LinkedIn
  • YouTube
bottom of page