Google+ VLSI QnA: Case Equality operator (===)
Showing posts with label Case Equality operator (===). Show all posts
Showing posts with label Case Equality operator (===). Show all posts

Tuesday, 6 May 2014

Verilog Interview Questions - v1.4

Q.1) If a net has no driver, it gets the value
        A) 0
        B) X
        C) Z
        D) U 

Answer) C

Q.2) What is the default value of reg?
         A) 0
         B) X
         C) Z
         D) U

Answer) B

Q.3) The task $stop is provided to
        A) End simulation
        B) Suspend simulation
        C) Exit simulator
        D) None of the above

Answer) B

Q.4) If A= 4`1xxz and B= 4`b1xxx, then A= = =B will return
        A) 1
        B) X
        C) Z
        D) 0

Answer) D

Q.5) Externally, a output port must always connected to a
        A) net only
        B) a reg only
        C) either net or reg
        D) None of the above

Answer) A

Thursday, 24 April 2014

Verilog Interview Questions - v1.2

Q.1) Explain $display, $monitor and $strobe?

Answer) All these commands have the same syntax.
$display :- The $display displays once the value of parameters, when it is executed.
$strobe :- The $strobe displays the parameter at the very end of the current simulation time.
$monitor :- The $monitor displays once every time one of it's parameters changes.

The format string is same as that of C/C++.
Format characters include :
Decimal              :- %d
Hexadecimal      :- %h
Binary                :- %b
Character           :- %c
String                 :- %s
Time                   :- %t
Hierarchy Level  :- %m

Syntax :-
$display("format_string", val1,  val2,....)
$strobe("format_string", val1, val2, ...)
$monitor("format_string", val1, val2,.....)

Q.2) What is the difference between:
         y = (sel)? i1 : i2;       and                if(sel) y = i1;
                                                                  else    y = i2;

Answer) The ternary operator "?" , merges the answer.
              Example : sel = 2'bx1; i1 = 2'b00; i0 = 2'b10;
                              y = 2'bx0;

               The "if" treats "X" or "Z" as false values, so the answer always be in false condition, i.e. i2.

Q.3) What is the difference between equality operator (==) and case equality operator(===)?

Answer) The equality operator (==) can give the output 0,1 or X.
               Case equality operator (===) only gives the output TRUE (1) or FALSE (0).
               If I1 = 3'bx01 ; I2 = 3'b1x0;
               I1 == I2 gives 'X';
               I1 === I2 gives '0';

Q.4) Explain the difference between task and function.

Answer)
Difference between task and function

Q.5) Write a verilog code to swap contents of two registers with and without a temporary register.

Answer) With temporary register :
               always@(posedge clock)
                begin
                    temp = b;
                    b = a;
                    a = temp;
                end

                Without temporary register :
                 always @(posedge clock)
                 begin
                    a <= b;
                    b <= a;
                 end