Digital Logic Test Questions For Interview
Digital Logic Test Questions For Interview
Digital Logic Test Questions For Interview
(1) For the function f (w, x, y, z) = (0, 4, 5, 7, 8, 9, 13, 15) the expression which is pre not
equivalent to f is
(A) xyz + wxy + wy
(B) xyz + wxy + wy
(C) xyz + wy + wyz + wz
(D) xyz + xy + wy + xz
View Answer / Hide Answer
(2) The initial value of the output Q1Q0 for the sequential circuit shown below is 00. The next
four values of Q1Q0 is
(3) The finite state machine shown below takes binary input from the least significant bit. The
statement that holds true is
(4) The behavior of 1-input, 2-output synchronous sequential circuit is given below:
In the initial k bits of the input, number of 0s is represented by zk and number of 1s is represented by
nk.
(zk + nk = k). The output of the circuit is 00 only if one of the conditions given below is correct.
Case 1. zk nk = 2, the output at the kth and all subsequent clock ticks is 10.
Case 2. nk zk = 2, the output at the kth and all subsequent clock ticks is 01.
In the state transition graph of the above circuit the minimum number of states required is
(A) 6
(B) 5
(C) 8
(D) 7
View Answer / Hide Answer
(5) For the number (-539)10 the 2s compliment representation in hexadecimal form is
(A) DE5
(B) DBC
(C) 9D6
(D) ABC
View Answer / Hide Answer
(6) Consider the karnaugh map shown below where X denotes dont care. The literal count of
a Boolean expression is defined as the sum of the number of times each literal appears in the
expression. For example, the literal count of (xy + xz) is 4. The minimum possible literal counts
of the POS and SOP representations respectively of the function given by the Karnaugh map is
(8) For the circuit shown below the statement that holds true is
(A) f is independent of X.
(B) f is independent of Y.
(C) f is independent of Z.
(D) None of X, Y, Z is redundant.
View Answer / Hide Answer
(9) The function that is not implemented by the karnaugh map shown below is
(A) XY + YW
(B) (W + X)(W + Y)(X + Y)
(C) (W + Y) X
(D) None of the above
View Answer / Hide Answer
(10) A = 2.0 x 10
30
30
X: = A + B
Y: = A + C
X: = X + C
Y: = Y + B
What is the value of X and Y?
(A) X = Y = 0.0
(B) X = 0.0, Y = 1.0
(C) X = 1.0, Y = 0.0
(D) X = Y = 1.0
View Answer / Hide Answer
(13) The state table for the sequential machine is shown below: The number of states in the
minimized machine will be
(A) 1
(B) 2
(C) 3
(D) 4
View Answer / Hide Answer
(16) When the multiplier pattern is ________________ Booths algorithm for integer
(18) The figure shows the arrangement of master slave flip-flops. The initial state of P is 0 and
that of Q is 1. The output state P and Q after the clock cycles is respectively
(A) 0, 0
(B) 0, 1
(C) 1, 1
(D) 1, 0
View Answer / Hide Answer
(19) To implement any arbitrary Boolean function the set of components that are sufficient is
(A) AND gate and NOT gate
(B) AND gate and XOR gate
(C) 2 to 1 multiplexer
(D) XOR gate and NOT gate
View Answer / Hide Answer
(20) The decimal value 05 in IEEE single precision floating-point representation has
(A) Fraction bits of 100.000 and exponent value of 0
(B) Fraction bits of 000.000 and exponent value of -1
(C) Fraction bits of 000.000 and exponent value of 0
(D) No exact representation
View Answer / Hide Answer
(21) The output of a 2:1 MUX is given by the function (ac + bc). The statement that holds true
is
(A) f = x1 + x2
(B) f = x1x2 + x1x2
(C) f = x1 + x2
(D) f = x1 + x2
View Answer / Hide Answer
(23) What is the simplified expression for the function f (f (x + y, y), z) if f (A, B) = A + B?
(A) x + y
(B) x + z
(C) xyz
(D) None of the above
View Answer / Hide Answer
(24) AND, OR, NOT, NAND and NOR gates are used to design a 4-bit carry look ahead adder
which adds two 4-bit numbers. The delay of each gate is 1 time unit. The carry network has
been implemented using two-level AND-OR logic and all the inputs are available in both
complemented and uncomplemented form. The overall propagation delay of the adder is
(A) 3 time unit
(B) 15 time unit
(C) 10 time unit
(D) 6 time unit
View Answer / Hide Answer
(25) The output of the circuit is in the form of 4-bit. The output 0 is represented by 0000, 1 by
0001 9 by 1001. If we design a combinational circuit which takes these 4 bits as input the
output will be 1 if the digit = 5 and otherwise. Only AND, OR and NOT gates are to be used. To
design this circuit the minimum number of gates required is
(A) 2
(B) 3
(C) 4
(D) 5
View Answer / Hide Answer
(26) Two 8 bit 2s compliment numbers are 1111 1010 and 0000 1010. Their product in 2s
compliment is
(A) 1100 0100
(B) 1010 0010
(C) 1100 1100
(D) 1000 1111
View Answer / Hide Answer
(27) For the Boolean function f (a, b, c) = ac + ac + bc the essential prime implicants are
(A) ac and bc
(B) ac only
(C) ac and bc
(D) ac and ac
View Answer / Hide Answer
(29) The hexadecimal representation (without normalization and rounding off) of the decimal
13
number 0.239 x 2 is
(A) 4D0D
(B) 4D3D
(C) 0D24
(D) 0D4D
View Answer / Hide Answer
(30) For the above format the normalized representation is specified as follows:
The mantissa has an implicit preceding the binary (radix) point. Assuming that only 0s are padded in
while shifting a field the normalized representation of the above number 0.239 x
13
is
(A) D0D0
(B) 4AE8
(C) 49D0
(D) D048
(31) Consider a number n whose 4-bit gray code representation is a3a2a1a0 and the gray code
of (n + 1) (module 16) is b3b2b1b0. The function, which is correct, is
(A) b3 (a3a2a1a0) = (0, 1, 6, 7, 10, 13, 14, 15)
(B) b2 (a3a2a1a0) = (2, 4, 5, 6, 10, 13, 14, 15)
(C) b1 (a3a2a1a0) = (4, 9, 10, 11, 12, 13, 14, 15)
(D) b0 (a3a2a1a0) = (1, 2, 3, 6, 10, 13, 14, 15)
View Answer / Hide Answer
(34) What is the minimum size of multiplexer needed to implement any Boolean function of n
variables if we are allowed to use only one multiplexer and one inverter?
n-2
(A) 2
n+1
(B) 2
line to 1 line
line to 1 line
(D) 2
line to 1 line
(35) Which one of the following statement hold true for the decimal value 0.25?
(37) We have the function with four variables f (A, B, C, D) = (1, 4, 5, 9, 11, 12). The switching
expression corresponding to this function is
(A) BCD + ACD + ABD
(B) ABC + BCD + ABD
(C) ABC + ACD + ACD
(D) ACD + ABC + ABD
View Answer / Hide Answer
(38) The two expressions that are given below is evaluated using three digit floating point
arithmetic with rounding:
(113 + - 111) + 7.51
113 + (-111 + 7.51)
The result will be
(A) 10.0 and 9.51
(B) 10.0 and 10.0
(C) 9.51 and 10.0
(D) 9.51 and 9.51
View Answer / Hide Answer
(39) By cross-coupling two NAND gates an SR latch is made. If the inputs S = R = 0 then the
output will be
(A) Q = 1, Q = 1
(B) Q = 0, Q = 1
(C) Q = 1, Q = 0
(D) Indeterminate states
View Answer / Hide Answer
(40) If we assume that all the numbers are in 2s compliment representation then the number
which is divisible by 11111011 is
(A) 11011011
(B) 11100111
(C) 11010111
(D) 11100100
(42) The function with four variables f (a, b, c, d) = (1, 3, 4, 6, 9, 11, 12, 14 is
(A) Independent of two variables
(B) Independent of one variable
(C) Independent of three variables
(D) Dependent on all the variables
View Answer / Hide Answer
(45) If we have n number of Boolean variables then the maximum number of different Boolean
functions involving n is
n
(A) n
(B) 2n
2
(C) n
(46) Which one of the following range of integers can be represented by an n bit 2s
complement number system?
n-1
(A) -(2
n-1
(B) -2
to (2
n-1
(C) -(2
n-1
(D) -2
-1) to (2
n-1
n-1
-1)
1)
+1) to (2
n-1
-1)
n-1
to 2
(47) We have the hexadecimal value 0 x 00000000 in the IEEE floating point representation.
This will correspond to
(A) The special value +0
(B) The normalized value 2
-127
-256
(48) We need to construct 6-to-64 line decoder without using any other logic gates. How many
3-to-8 line decoders wit an enable input are needed for the same?
(A) 11
(B) 8
(C) 15
(D) 9
View Answer / Hide Answer
(49) If p denotes the number system radix then the only value of p that satisfy the equation
121p =
11p is
(A) Any value >2
(B) Any value <2
(C) Decimal 10
(D) None of the above
View Answer / Hide Answer
(50) The 2s complement representation of P, which is a 16-bit signed integer, is (F87B)16. What
is the 2s complement representation of 8*P?
(A) (1870) 16
(B) (C3D8) 16
(C) (ACD8) 16
(D) (C103) 16
View Answer / Hide Answer
(51) The Boolean function (AB+C) is to be implemented using only 2-input NOR gates. The
minimum number of gates required is
(A) 5
(B) 4
(C) 3
(D) 2
View Answer / Hide Answer
(B) 5
(C) 258
(D) 9
View Answer / Hide Answer
Ques 1. Explain about setup time and hold time, what will happen if there is setup time
and
hold
tine
violation,
how
to
overcome
this?
Ans. For Synchronous flip-flops, we have special requirements for the inputs with respect to clock
signal input there are Setup Time: Minimum time Period during which data must be stable before
the clock makes a valid transition. E.g. for a positive edge triggered flip-flop having a setup time of
2ns so input data should be Stable for 2ns before the clock makes a valid transaction from zero to
one.
Hold Time: Minimum time period during which data must be stable after the clock has made a
valid transition. E.g. for a posedge triggered flip-flop, with a hold time of 1 ns. Input Data (i.e. R
and S in the case of RS flip-flop) should be stable for at least 1 ns after clock has made transition
from 0 to 1 Hold time is the amount of time after the clock edge that same input signal has to be
held before changing it to make sure it is sensed properly at the clock edge. Whenever there are
setup and hold time violations in any flip-flop, it enters a state where its output is unpredictable:
this state is known as metastable state (quasi stable state); at the end of metastable state, the
flip-flop settles down to either 1 or 0. This whole process is known as metastability
Please remember that forGATE 2016 exams now you need to start you Prep and start
taking online test. We try to guide students through whats app at 8130802212 or call
01143560050 or [email protected]. We have started online Live coaching for
GATE preparations. You can prepare from your home through live coaching classes for
GATE/IES/ UPSC
Ques
2.
What
is
difference
between
latch
and
flip-flop?
Ans. The main difference between latch and FF is that latches are level sensitive while FF is edge
sensitive. They both require the use of clock signal and are used in sequential logic. For a latch,
the output tracks the input when the clock signal is high, so as long as the clock is logic 1, the
output can change if the input also changes. FF on the other hand, will store the input only
when there is a rising/falling edge of the clock. Latch is sensitive to glitches on enable pin,
whereas flip-flop is immune to glitches. Latches take fewer gates (also less power) to implement
than flip-flops. Latches are faster than flip-flops.
Ques 3 Given only two xor gates one must function as buffer and another as inverter?
Ans Tie one of xor gates input to 1 it will act as inverter. Tie one of xor gates input to 0 it will act
as buffer.
Ques
Difference
between
Mealy
and
Moore
state
machine?
Ans Mealy and Moore models are the basic models of state machines. A state machine which uses
only Entry Actions, so that its output depends on the state, is called a Moore model. A state
machine which uses only Input Actions, so that the output depends on the state and also on
inputs, is called a Mealy model. The models selected will influence a design but there are no
general indications as to which model is better. Choice of a model depends on the application,
execution means (for instance, hardware systems are usually best realized as Moore models) and
personal preferences of a designer or programmer. Mealy machine has outputs that depend on the
state and input (thus, the FSM has the output written on edges) Moore machine has outputs that
depend on state only (thus, the FSM has the output written in the state itself.
Advantages
and
Disadvantages
In Mealy as the output variable is a function both input and state, changes of state of the state
variables will be delayed with respect to changes of signal level in the input variables, there are
possibilities of glitches appearing in the output variables. Moore overcomes glitches as output
dependent on only states and not the input signal level. All of the concepts can be applied to
Moore-model state machines because any Moore state machine can be implemented as
a Mealy state machine, although the converse is not true. Moore machine: the outputs are
properties of states themselves which means that you get the output after the machine
reaches a particular state, or to get some output your machine has to be taken to a state which
provides you the output. The outputs are held until you go to some other state Mealy machine:
Mealy machines give you outputs instantly, that is immediately upon receiving input, but the
output is not held after that clock cycle.
Ques
Difference
between
one
hot
and
binary
encoding?
Ans. Common classifications used to describe the state encoding of an FSM are Binary (or highly
encoded) and One hot.A binary-encoded FSM design only requires as many flip-flops as are
needed to uniquely encode the number of states in the state machine. The actual number of flipflops required is equal to the ceiling of the log-base-2 of the number of states in the FSM.A one
hot FSM design requires a flip-flop for each state in the design and only one flip-flop (the flip-flop
representing the current or hot state) is set at a time in a one hot FSM design. For a state
machine with 9- 16 states, a binary FSM only requires 4 flip-flops while a one hot FSM requires a
flip-flop for each state in the design FPGA vendors frequently recommend using a one hot state
encoding style because flip-flops are plentiful in an FPGA and the combinational logic required to
implement a one hot FSM design is typically smaller than most binary encoding styles.
Since FPGA performance is typically related to the combinational logic size of the FPGA design, one
hot FSMs typically run faster than a binary encoded FSM with larger combinational logic blocks
Ques
How
to
achieve
180
degree
exact
phase
shift?
Ans.
a) DCM an inbuilt resource in most of FPGA can be configured to get 180 degree phase shift.
b) BUFGDS that is differential signaling buffers which are also inbuilt resource of most of FPGA can
be used. Digital Electronics Solved Questions
Ques
What
is
significance
of
RAS
and
CAS
in
SDRAM?
Ans. SDRAM receives its address command in two address words. It uses a multiplex scheme to
save input pins. The first address word is latched into the DRAM chip with the row address strobe
(RAS). Following the RAS command is the column address strobe (CAS) for latching the second
address word. Shortly after the RAS and CAS strobes, the stored data is valid for reading.
Ques
Ans. a)
Tell
They
some
are
of
used
applications
to
of
introduce
buffer?
small
delays.
b) They are used to eliminate cross talk caused due to inter electrode capacitance due to close
routing.
c)
They
are
used
9)
Give
two
ways
a)
Short
the
of
inputs
to
support
converting
of
the
NAND
two
gate
high
input
and
fan-out,
NAND
apply
gate
the
e.g.:
to
single
an
input
bufg
inverter?
to
it.
b) Connect the output to one of the input and the other to the input signal.
Ques
10.
Why
is
most
interrupts
active
low?
Ans. This answers why most signals are active low if you consider the transistor level of a module,
active low means the capacitor in the output terminal gets charged or discharged based on low to
high and high to low transition respectively. When it goes from high to low it depends on the
pull down resistor that pulls it down and it is relatively easy for the output capacitance to
discharge rather than charging. Hence people prefer using active low signals.
1) Write a verilog code to swap contents of two registers with and without a
temporary register?
With temp reg ;
always @ (posedge clock)
begin
temp=b;
b=a;
a=temp;
end
latch is inferred.
The same may be observed in IF statement in case an ELSE IF is not specified.
To avoid inferring latches make sure that all the cases are mentioned if not default condition is
provided.
9) Tell me how blocking and non blocking statements get executed?
Execution of blocking assignments can be viewed as a one-step process:
1. Evaluate the RHS (right-hand side equation) and update the LHS (left-hand side expression) of
the blocking assignment
without interruption from any other Verilog statement. A blocking assignment blocks trailing
assignments in the same
always block from occurring until after the current assignment has been completed
Execution of nonblocking assignments can be viewed as a two-step process:
1. Evaluate the RHS of nonblocking statements at the beginning of the time step. 2. Update the
LHS of nonblocking
statements at the end of the time step.
10) Variable and signal which will be Updated first?
Signals
12) In a pure combinational circuit is it necessary to mention all the inputs in sensitivity disk? if yes,
why?
Yes in a pure combinational circuit is it necessary to mention all the inputs in sensitivity disk other
wise it will result in pre and post synthesis mismatch.
14) Difference between Verilog and vhdl?
Compilation
VHDL. Multiple design-units (entity/architecture pairs), that reside in the same system file, may be
separately compiled if so desired. However, it is good design practice to keep each design unit in it's
own system file in which case separate compilation should not be an issue.
Verilog. The Verilog language is still rooted in it's native interpretative mode. Compilation is a means
of speeding up simulation, but has not changed the original nature of the language. As a result care
must be taken with both the compilation order of code written in a single file and the compilation order
of multiple files. Simulation results can change by simply changing the order of compilation.
Data types
VHDL. A multitude of language or user defined data types can be used. This may mean dedicated
conversion functions are needed to convert objects from one type to another. The choice of which
data types to use should be considered wisely, especially enumerated (abstract) data types. This will
make models easier to write, clearer to read and avoid unnecessary conversion functions that can
clutter the code. VHDL may be preferred because it allows a multitude of language or user defined
data types to be used.
Verilog. Compared to VHDL, Verilog data types a re very simple, easy to use and very much geared
towards modeling hardware structure as opposed to abstract hardware modeling. Unlike VHDL, all
data types used in a Verilog model are defined by the Verilog language and not by the user. There
are net data types, for example wire, and a register data type called reg. A model with a signal whose
type is one of the net data types has a corresponding electrical wire in the
implied modeled circuit. Objects, that is signals, of type reg hold their value over simulation delta
cycles and should not be confused with the modeling of a hardware register. Verilog may be preferred
because of it's simplicity.
Design reusability
VHDL. Procedures and functions may be placed in a package so that they are avail able to any
design-unit that wishes to use them. Verilog. There is no concept of packages in Verilog. Functions
and procedures used within a model must be defined in the module. To make functions and
procedures generally accessible from different module statements the functions and procedures must
be placed in a separate system file and included using the `include compiler directive.
15) What are different styles of Verilog coding I mean gate-level,continuous level and others explain
in detail?
------
16) Can you tell me some of system tasks and their purpose?
$display, $displayb, $displayh, $displayo, $write, $writeb, $writeh, $writeo.
The most useful of these is $display.This can be used for displaying strings, expression or values of
variables. Here are some examples of usage.
$display("Hello oni");
--- output: Hello oni
$display($time) // current simulation time.
--- output: 460
counter = 4'b10;
$display(" The count is %b", counter);
--- output: The count is 0010
$reset resets the simulation back to time 0;
$stop halts the simulator and puts it in interactive mode where the user can enter commands; $finish
exits the simulator back to the operating system
begin if (reset)
. . . end
Asynchronous means clock independent so reset must be present in sensitivity list.
Eg
Always @(posedge clock or posedge reset)
begin
if (reset)
. . . end
22) Will case infer priority register if yes how give an example?
yes case can infer priority register depending on coding style
reg r;
// Priority encoded mux,
always @ (a or b or c or select2)
begin
r = c;
case (select2)
2'b00: r = a;
2'b01: r = b;
endcase
end
CASEZ : Special version of the case statement which uses a Z logic value to represent don't-care
bits.
CASEX : Special version of the case statement which uses Z or X logic values to represent don't-care
bits.
CASEZ should be used for case statements with wildcard dont cares, otherwise use of CASE is
required;
CASEX should never be used. This is because: Dont cares are not allowed in the "case" statement.
Therefore casex or casez are required. Casex will automatically match any x or z with anything in the
case statement. Casez will only match zs -- xs require an absolute match.
24) Given the following Verilog code, what value of "a" is displayed?
always @(clk) begin
a = 0;
a <= 1;
$display(a);
end
This is a tricky one! Verilog scheduling semantics basically imply a
four-level deep queue for the current simulation time:
1: Active Events (blocking statements)
2: Inactive Events (#0 delays, etc)
3: Non-Blocking Assign Updates (non-blocking statements)
4: Monitor Events ($display, $monitor, etc).
Since the "a = 0" is an active event, it is scheduled into the 1st "queue".
The "a <= 1" is a non-blocking event, so it's placed into the 3rd queue.
Finally, the display statement is placed into the 4th queue. Only events in the active queue are
completed this sim cycle, so the "a = 0" happens, and then the display shows a = 0. If we were to look
at the value of a in the next sim cycle, it would show 1.
25) What is the difference between the following two lines of Verilog code?
#5 a = b;
a = #5 b;
#5 a = b; Wait five time units before doing the action for "a = b;".
a = #5 b; The value of b is calculated and stored in an internal temp register,After five time units,
assign this stored value
to a.
'timescale directive is a compiler directive.It is used to measure simulation time or delay time. Usage :
`timescale /
reference_time_unit : Specifies the unit of measurement for times and delays. time_precision:
specifies the precision to which the delays are rounded off.
// Always Construct
always @ (posedge clk)
begin
b <= bidir;
a <= inp;
end
endmodule
35) Why is it that "if (2'b01 & 2'b10)..." doesn't run the true case?
This is a popular coding error. You used the bit wise AND operator (&) where you meant to use the
logical AND operator
(&&).
36)What are Different types of Verilog Simulators ?
There are mainly two types of simulators available.
Event Driven
Cycle Based
Event-based Simulator: This Digital Logic Simulation method sacrifices performance for rich
functionality: every active signal is calculated for every device it propagates through during a clock
cycle. Full Event-based simulators support 4-28 states; simulation of Behavioral HDL, RTL HDL, gate,
and transistor representations; full timing calculations for all devices; and the full HDL standard.
Event-based simulators are like a Swiss Army knife with many different features but none are
particularly fast.
Cycle Based Simulator: This is a Digital Logic Simulation method that eliminates unnecessary
calculations to achieve huge performance gains in verifying Boolean logic:
1.) Results are only examined at the end of every clock cycle; and
2.) The digital logic is the only part of the design simulated (no timing calculations). By limiting the
calculations, Cycle based Simulators can provide huge increases in performance over conventional
Event-based simulators. Cycle based simulators are more like a high speed electric carving knife in
comparison because they focus on a subset of the biggest problem: logic verification.
Cycle based simulators are almost invariably used along with Static Timing verifier to compensate for
the lost timing information coverage.
39) How can I model a bi-directional net with assignments influencing both source and destination?
The assign statement constitutes a continuous assignment. The changes on the RHS of the
statement
immediately reflect on the LHS net. However, any changes on the LHS don't get reflected on the
RHS. For example, in the following statement, changes to the rhs net will update the lhs net, but not
vice versa.
System Verilog has introduced a keyword alias, which can be used only on nets to have a two-way
assignment.
For example, in the following code, any changes to the rhs is reflected to the lh s , and vice versa.
wire rhs , lhs
assign lhs=rhs;
System Verilog has introduced a keyword alias, which can be used only on nets to have a two-way
assignment.
For example, in the following code, any changes to the rhs is reflected to the lh s , and vice versa.
module test ();
wire rhs,lhs;
alias lhs=rhs;
In the above example, any change to either side of the net gets reflected on the other side.
Are tasks and functions re-entrant, and how are they different from static task and function calls?
In Verilog-95, tasks and functions were not re-entrant. From Verilog version 2001 onwards, the tasks
and functions are reentrant. The reentrant tasks have a keyword automatic between the keyword task
and the name of the task. The presence of the keyword automatic replicates and allocates the
variables within a task dynamically for each task entry during concurrent task calls, i.e., the values
dont get overwritten for each task call. Without the keyword, the variables are allocated statically,
which means these variables are shared across different task calls, and can hence get overwritten by
each task call.
40) What happens to the logic after synthesis, that is driving an unconnected output port that is left
open (,that is, noconnect) during its module instantiation?
An unconnected output port in simulation will drive a value, but this value does not propagate to any
other logic. In synthesis, the cone of any combinatorial logic that drives the unconnected output will
get optimized away during boundary optimisation, that is, optimization by synthesis tools across
hierarchical boundaries.
41) How is the connectivity established in Verilog when connecting wires of different widths?
When connecting wires or ports of different widths, the connections are right-justified, that is, the
rightmost bit on the RHS gets connected to the rightmost bit of the LHS and so on, until the MSB of
either of the net is reached.
42) Can I use a Verilog function to define the width of a multi-bit port, wire, or reg type?
The width elements of ports, wire or reg declarations require a constant in both MSB and LSB. Before
Verilog 2001, it is a syntax error to specify a function call to evaluate the value of these widths. For
example, the following code is erroneous before Verilog 2001 version.
reg [ port1(val1:vla2) : port2 (val3:val4)] reg1;
In the above example, get_high and get_low are both function calls of evaluating a constant result for
MSB and LSB respectively. However, Verilog-2001 allows the use of a function call to evaluate the
MSB or LSB of a width declaration
43) What is the implication of a combinatorial feedback loops in design testability?
The presence of feedback loops should be avoided at any stage of the design, by periodically
checking for it, using the lint or synthesis tools. The presence of the feedback loop causes races and
hazards in the design, and 104 RTL Design leads to unpredictable logic behavior. Since the loops are
delay-dependent, they cannot be tested with any ATPG algorithm. Hence, combinatorial loops should
and processor, and the IEEE floating-point format has NOTHING to do with the D/A
implementation.Note the disconnect in terms of the netlist itself.The physical netlist that you might
see in GDS may have a single metal interconnect that is AOUT, and obviously NOT 64 metal
wires.Again, this is a trick.The 64-bit bus is only for wiring.You may have to do some quick netlist
substitutions when you hand off a netlist. In Verilog, the real data type is basically a floating-point
number (e.g. like double in C).If you want to model an analog value either within the mixed-signal
behavorial model, or externally in the system testbench (e.g. the sensor or actuator), use the real data
type.You can convert back and forth between real and your wire [63:0] using the PLI functions listed
above.A trivial D/A model could simply take the digital input value, convert it to real, scale it according
to some #defines, and output the value on AOUT as the 64-bit psuedo-analog value.Your testbench
can then do the reverse and print out the value, or whatever.More sophisticated models
can model the Successive Approximation algorithm, employ look-ups, equations, etc. etc.
Thats it.If you are getting a mixed-signal block from a vendor, then you may also receive (or you
should ask for) the behavioral Verilog models for the IP.
45) How do I synthesize Verilog into gates with Synopsys?
The answer can, of course, occupy several lifetimes to completely answer.. BUT.. a straight-forward
Verilog module can be very easily synthesized using Design Compiler (e.g. dc_shell). Most ASIC
projects will create very elaborate synthesis scripts, CSH scripts, Makefiles, etc. This is all important
in order automate the process and generalize the synthesis methodology for an ASIC project or an
organization. BUT don't let this stop you from creating your own simple dc_shell experiments!
Let's say you create a Verilog module named foo.v that has a single clock input named 'clk'. You want
to
synthesize it so that you know it is synthesizable, know how big it is, how fast it is, etc. etc. Try this:
target_library = { CORELIB.db } <--- This part you need to get from your vendor...
read -format verilog foo.v
create_clock -name clk -period 37.0
) Tell something about why we do gate level simulations?
a. Since scan and other test structures are added during and after synthesis, they are not checked by
the rtl simulations and therefore need to be verified by gate level simulation.
b. Static timing analysis tools do not check asynchronous interfaces, so gate level simulation is
required to look at the timing of these interfaces.
c. Careless wildcards in the static timing constraints set false path or mutlicycle path constraints
where they don't belong.
d. Design changes, typos, or misunderstanding of the design can lead to incorrect false paths or
multicycle paths in the static timing constraints.
e. Using create_clock instead of create_generated_clock leads to incorrect static timing between
clock domains.
f. Gate level simulation can be used to collect switching factor data for power estimation.
g. X's in RTL simulation can be optimistic or pessimistic. The best way to verify that the design does
not have any unintended dependence on initial conditions is to run gate level simulation.
f. It's a nice "warm fuzzy" that the design has been implemented correctly.
3)An AND gate and OR gate are given inputs X & 1 , what is expected output?
AND Gate output will be X
OR Gate output will be 1.
4) What is difference between NMOS & RNMOS?
RNMOS is resistive nmos that is in simulation strength will decrease by one unit , please refer to
below Diagram.
value is applied to min, typ and max. If specifying more than one number, then all 3 MUST be
scpecified. It is incorrect to specify two values as the compiler does not know which of the parameters
the value represents.
An example of specifying two delays;
and #(1:2:3, 4:5:6) gate1 (out1, in1, in2);
This shows all values necessary for rise and fall times and gives values for min, typ and max for both
delay types.
Another acceptable alternative would be;
or #(6:3:9, 5) gate2 (out2, in3, in4);
Here, 5 represents min, typ and max for the fall time.
N.B. T_off is only applicable to tri-state logic devices, it does not apply to primitive logic gates
because they cannot be turned off.
5) With a specify block how to defining pin-to-pin delays for the module ?
module A( q, a, b, c, d )
input a, b, c, d;
output q;
wire e, f;
// specify block containing delay statements
specify
( a => q ) = 6; // delay from a to q
( b => q ) = 7; // delay from b to q
( c => q ) = 7; // delay form c to q
( d => q ) = 6; // delay from d to q
endspecify
// module definition
or o1( e, a, b );
or o2( f, c, d );
exor ex1( q, e, f );
endmodule
module A( q, a, b, c, d )
input a, b, c, d;
output q;
wire e, f;
// specify block containing full connection statements
specify
( a, d *> q ) = 6; // delay from a and d to q
( b, c *> q ) = 7; // delay from b and c to q
endspecify
// module definition
or o1( e, a, b );
or o2( f, c, d );
exor ex1( q, e, f );
endmodule
6) What are conditional path delays?
Conditional path delays, sometimes called state dependent path delays, are used to model delays
which are dependent on the values of the signals in the circuit. This type of delay is expressed with an
if conditional statement. The operands can be scalar or vector module input or inout ports, locally
defined registers or nets, compile time constants (constant numbers or specify block parameters), or
any bit-select or part-select of these. The conditional statement can contain any bitwise, logical,
concatenation, conditional, or reduction operator. The else construct cannot be used.
//Conditional path delays
Module A( q, a, b, c, d );
output q;
input a, b, c, d;
wire e, f;
// specify block with conditional timing statements
specify
A delay of 4 is assigned to the or-gate. This means that the output of the gate, e, is delayed by 4 from
the inputs a and b.
The module explaining Figure 1 can be of two forms:
1) Module or_circ (out, a, b, c, d);
output out;
input a, b, c, d;
wire e, f;
//Delay distributed to each gate
or #4 a1 (e, a, b);
or #6 a2 (f, c, d);
or #3 a3 (out, e, f);
endmodule
2) Module or_circ (out, a, b, c, d);
output out;
input a, b, c, d;
wire e, f;
//Delay distributed to each expression
assign #4 e = a & b;
assign #6 e = c & d;
assign #3 e = e & f;
endmodule
Version 1 models the circuit by assigning delay values to individual gates, while version 2 use delay
values in individual assign statements. (An assign statement allows us to describe a combinational
logic function without regard to its actual structural implementation. This means that the assign
statement does not contain any modules with port connections.)
The above or_circ modules results in delays of (4+3) = 7 and (6+3) = 9 for the 4 connections part from
the input to the output of the circuit.
Lumped Delay : Lumped delay is delay assigned as a single delay in each module, mostly to the
output gate of the module.
The cumulative delay of all paths is lumped at one location. The figure below is an example of lumped
delay. This figure is similar as the figure of the distributed delay, but with the sum delay of the longest
path assigned to the output gate: (delay of gate 2 + delay of gate 3) = 9.
As can be seen from Figure 2, gate 3 has got a delay of 9. When the inpu
the gate changes after the delay value specified.
The program corresponding to Figure 2, is very similar to the one for distributed delay. The difference
is that
only or - gate 3 has got a delay assigned to it:
1) Module or_circ (out, a, b, c, d);
output out;
input a, b, c, d;
wire e, f;
or a1 (e, a, b);
or a2 (f, c, d);
or #9 a3 (out, e, f); //delay only on the output gate
endmodule
This model can be used if delay between different inputs is not required.
Pin - to Pin Delay
Pin - to - Pin delay, also called path delay, is delay assigned to paths from each input to each output.
An example circuit is shown below.
Syntax:
NB: data_change, reference and reference1 must be declared as wire
$setup(data_change, reference, time_limit);
b. Static timing analysis tools do not check asynchronous interfaces, so gate level simulation is
required to look at the timing of these interfaces.
c. Careless wildcards in the static timing constraints set false path or mutlicycle path constraints
where they don't belong.
d. Design changes, typos, or misunderstanding of the design can lead to incorrect false paths or
multicycle paths in the static timing constraints.
e. Using create_clock instead of create_generated_clock leads to incorrect static timing between
clock domains.
f. Gate level simulation can be used to collect switching factor data for power estimation.
g. X's in RTL simulation can be optimistic or pessimistic. The best way to verify that the design does
not have any unintended dependence on initial conditions is to run gate level simulation.
f. It's a nice "warm fuzzy" that the design has been implemented correctly.
When specifiying the delays it is not necessary to have all of the delay values specified. However,
certain rules are followed.
and #(3) gate1 (out1, in1, in2);
When only 1 delay is specified, the value is used to represent all of the delay types, i.e. in this
example, t_rise = t_fall = t_off = 3.
or #(2,3) gate2 (out2, in3, in4);
When two delays are specified, the first value represents the rise time, the second value represents
the fall time. Turn off time is presumed to be 0.
buf #(1,2,3) gate3 (out3, enable, in5);
When three delays are specified, the first value represents t_rise, the second value represents t_fall
and the last value the turn off time.
Min, typ and max values
The general syntax for min, typ and max delay modelling is;
gate_type #(t_rise_min:t_ris_typ:t_rise_max, t_fall_min:t_fall_typ:t_fall_max,
t_off_min:t_off_typ:t_off_max)
gate_name (paramteters);
Similar rules apply for th especifying order as above. If only one t_rise value is specified then this
value is applied to min, typ and max. If specifying more than one number, then all 3 MUST be
scpecified. It is incorrect to specify two values as the compiler does not know which of the parameters
the value represents.
An example of specifying two delays;
and #(1:2:3, 4:5:6) gate1 (out1, in1, in2);
This shows all values necessary for rise and fall times and gives values for min, typ and max for both
delay types.
Another acceptable alternative would be;
or #(6:3:9, 5) gate2 (out2, in3, in4);
Here, 5 represents min, typ and max for the fall time.
N.B. T_off is only applicable to tri-state logic devices, it does not apply to primitive logic gates
because they cannot be turned off.
5) With a specify block how to defining pin-to-pin delays for the module ?
module A( q, a, b, c, d )
input a, b, c, d;
output q;
wire e, f;
// specify block containing delay statements
specify
( a => q ) = 6; // delay from a to q
( b => q ) = 7; // delay from b to q
( c => q ) = 7; // delay form c to q
( d => q ) = 6; // delay from d to q
endspecify
// module definition
or o1( e, a, b );
or o2( f, c, d );
exor ex1( q, e, f );
endmodule
module A( q, a, b, c, d )
input a, b, c, d;
output q;
wire e, f;
// specify block containing full connection statements
specify
( a, d *> q ) = 6; // delay from a and d to q
specparam t0x = 11, tx1 = 14, t1x = 12, tx0 = 10, txz = 8, tzx = 9;
( a => q ) = ( t01, t10, t0z, tz1, t1z, tz0, t0x, tx1, t1x, tx0, txz, tzx );
8)Tell me about In verilog delay modeling?
Distributed Delay
Distributed delay is delay assigned to each gate in a module. An example circuit is shown below.
As can be seen from Figure 2, gate 3 has got a delay of 9. When the inpu
the gate changes after the delay value specified.
The program corresponding to Figure 2, is very similar to the one for distributed delay. The difference
is that
only or - gate 3 has got a delay assigned to it:
1) Module or_circ (out, a, b, c, d);
output out;
input a, b, c, d;
wire e, f;
or a1 (e, a, b);
or a2 (f, c, d);
or #9 a3 (out, e, f); //delay only on the output gate
endmodule
This model can be used if delay between different inputs is not required.
Pin - to Pin Delay
Pin - to - Pin delay, also called path delay, is delay assigned to paths from each input to each output.
An example circuit is shown below.
$setup constraints are upheld, and are especially important in the simulation of high microprocessors.
All timing checks must be contained within The $setup and $hold tasks are used to monitor the
sequential circuit element. In the example, the setup time is the minimum allowed time between a
change in the input d and a positive clock edge. Similarly, the hold ti clock edge and a change in the
input
The $width task is used to check the minimum width of a positive or negative is the time between a
negative transition and the transition back to 1
Syntax:
NB: data_change, reference and reference1 must be declared as wire
$setup(data_change, reference, time_limit);
1) Write a verilog code to swap contents of two registers with and without a temporary register?
With temp reg ;
always @ (posedge clock)
begin
temp=b;
b=a;
a=temp;
end
Without temp reg;
always @ (posedge clock)
begin
a <= b; b <= a; end 2) Difference between blocking and non-blocking?(Verilog interview questions
that is most commonly asked)
The Verilog language has two forms of the procedural assignment statement: blocking and nonblocking. The two are distinguished by the = and <= assignment operators. The blocking assignment
statement (= operator) acts much like in traditional programming languages. The whole statement is
done before control passes on to the next statement. The non-blocking (<= operator) evaluates all
the right-hand sides for the current time unit and assigns the left-hand sides at the end of the time
unit. For example, the following Verilog program // testing blocking and non-blocking assignment
module blocking; reg [0] A, B; initial begin: init1 A = 3; #1 A = A + 1; // blocking procedural
Function:
A function is unable to enable a task however functions can enable other functions.
A function will carry out its required duty in zero simulation time. ( The program time will not be
incremented during the function routine)
Within a function, no event, delay or timing control statements are permitted
In the invocation of a function their must be at least one argument to be passed.
Functions will only return a single value and can not use either output or inout statements.
Tasks:
Tasks are capable of enabling a function as well as enabling other versions of a Task
Tasks also run with a zero simulation however they can if required be executed in a non zero
simulation time.
Tasks are allowed to contain any of these statements.
A task is allowed to use zero or more arguments which are of type output, input or inout.
A Task is unable to return a value but has the facility to pass multiple values via the output and inout
statements .
4) Difference between inter statement and intra statement delay?
//define register variables
reg a, b, c;
//intra assignment delays
initial
begin
a = 0; c = 0;
// combinatinal procedures
always @ (signal1 or signal2 or signal3)
begin
.
end
assign net variable = combinational logic;
endmodule
14) Difference between Verilog and vhdl?
Compilation
VHDL. Multiple design-units (entity/architecture pairs), that reside in the same system file, may be
separately compiled if so desired. However, it is good design practice to keep each design unit in it's
own system file in which case separate compilation should not be an issue.
Verilog. The Verilog language is still rooted in it's native interpretative mode. Compilation is a means
of speeding up simulation, but has not changed the original nature of the language. As a result care
must be taken with both the compilation order of code written in a single file and the compilation
order of multiple files. Simulation results can change by simply changing the order of compilation.
Data types
VHDL. A multitude of language or user defined data types can be used. This may mean dedicated
conversion functions are needed to convert objects from one type to another. The choice of which
data types to use should be considered wisely, especially enumerated (abstract) data types. This will
make models easier to write, clearer to read and avoid unnecessary conversion functions that can
clutter the code. VHDL may be preferred because it allows a multitude of language or user defined
data types to be used.
Verilog. Compared to VHDL, Verilog data types a re very simple, easy to use and very much geared
towards modeling hardware structure as opposed to abstract hardware modeling. Unlike VHDL, all
data types used in a Verilog model are defined by the Verilog language and not by the user. There
are net data types, for example wire, and a register data type called reg. A model with a signal
whose type is one of the net data types has a corresponding electrical wire in the implied modeled
circuit. Objects, that is signals, of type reg hold their value over simulation delta cycles and should
not be confused with the modeling of a hardware register. Verilog may be preferred because of it's
simplicity.
Design reusability
VHDL. Procedures and functions may be placed in a package so that they are avail able to any
input wr,
input [7] data_in,
input [3] addr,
output [7] data_out
);
Synchronous reset, synchronous means clock dependent so reset must not be present in sensitivity
disk eg:
always @ (posedge clk )
begin if (reset)
. . . end
Asynchronous means clock independent so reset must be present in sensitivity list.
Eg
Always @(posedge clock or posedge reset)
begin
if (reset)
. . . end
19) What is pli?why is it used?
Programming Language Interface (PLI) of Verilog HDL is a mechanism to interface Verilog programs
with programs written in C language. It also provides mechanism to access internal databases of the
simulator from the C program.
PLI is used for implementing system calls which would have been hard to do otherwise (or
impossible) using Verilog syntax. Or, in other words, you can take advantage of both the paradigms parallel and hardware related features of Verilog and sequential flow of C - using PLI.
20) There is a triangle and on it there are 3 ants one on each corner and are free to move along sides
of triangle what is probability that they will collide?
Ants can move only along edges of triangle in either of direction, let's say one is represented by 1
and another by 0, since there are 3 sides eight combinations are possible, when all ants are going in
same direction they won't collide that is 111 or 000 so probability of collision is 2/8=1/4
21) Tell me about file I/O?
21)What is difference between freeze deposit and force?
$deposit(variable, value);
This system task sets a Verilog register or net to the specified value. variable is the
register or net to be changed; value is the new value for the register or net. The value
remains until there is a subsequent driver transaction or another $deposit task for the
same register or net. This system task operates identically to the ModelSim
force -deposit command.
The force command has -freeze, -drive, and -deposit options. When none of these is
specified, then -freeze is assumed for unresolved signals and -drive is assumed for resolved
signals. This is designed to provide compatibility with force files. But if you prefer -freeze
as the default for both resolved and unresolved signals.
Verilog interview Questions
22)Will case infer priority register if yes how give an example?
yes case can infer priority register depending on coding style
reg r;
// Priority encoded mux,
always @ (a or b or c or select2)
begin
r = c;
case (select2)
2'b00: r = a;
2'b01: r = b;
endcase
end
Verilog interview Questions
23)Casex,z difference,which is preferable,why?
CASEZ :
Special version of the case statement which uses a Z logic value to represent don't-care bits. CASEX :
Special version of the case statement which uses Z or X logic values to represent don't-care bits.
CASEZ should be used for case statements with wildcard don't cares, otherwise use of CASE is
required; CASEX should never be used.
This is because:
Don't cares are not allowed in the "case" statement. Therefore casex or casez are required. Casex
will automatically match any x or z with anything in the case statement. Casez will only match z's -x's require an absolute match.
'timescale directive is a compiler directive.It is used to measure simulation time or delay time. Usage
: `timescale
34)what is verilog case (1) ?
wire [3] x;