InterviewSolution
This section includes InterviewSolutions, each offering curated multiple-choice questions to sharpen your knowledge and support exam preparation. Choose a topic below to get started.
| 1. |
What Are Different Types Of Verilog Simulators ? |
|
Answer» There are mainly two types of simulators AVAILABLE.
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:
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. There are mainly two types of simulators available. 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: 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. |
|
| 2. |
Why Is It That "if (2'b01 & 2'b10)..." Doesn't Run The True Case? |
|
Answer» This is a POPULAR CODING error. You used the bit WISE AND operator (&) where you meant to USE the logical AND operator (&&). This is a popular coding error. You used the bit wise AND operator (&) where you meant to use the logical AND operator (&&). |
|
| 3. |
What Is Verilog Case (1) ? |
|
Answer» wire [3:0] x; The case STATEMENT walks down the list of cases and executes the first one that matches. So here, if the lowest 1-bit of x is bit 2, then something3 is the statement that will get executed (or selected by the LOGIC). wire [3:0] x; The case statement walks down the list of cases and executes the first one that matches. So here, if the lowest 1-bit of x is bit 2, then something3 is the statement that will get executed (or selected by the logic). |
|
| 4. |
How Do You Implement The Bi-directional Ports In Verilog Hdl? |
|
Answer» module bidirec (OE, clk, INP, outp, bidir); // Port DECLARATION input oe; // Always Construct always @ (posedge clk) begin module bidirec (oe, clk, inp, outp, bidir); // Port Declaration input oe; // Always Construct always @ (posedge clk) begin |
|
| 5. |
What Is The Difference Between Wire And Reg? |
|
Answer» (wire,TRI)Physical connection between structural ELEMENTS. Value assigned by a CONTINUOUS assignment or a gate OUTPUT. REGISTER type: (reg, integer, time, real, real time) represents abstract data storage element. Assigned values only within an always statement or an initial statement. The main difference between wire and reg is wire cannot hold (store) the value when there no connection between a and b like a->b, if there is no connection in a and b, wire loose value. But reg can hold the value even if there in no connection. Default values:wire is Z,reg is x. (wire,tri)Physical connection between structural elements. Value assigned by a continuous assignment or a gate output. Register type: (reg, integer, time, real, real time) represents abstract data storage element. Assigned values only within an always statement or an initial statement. The main difference between wire and reg is wire cannot hold (store) the value when there no connection between a and b like a->b, if there is no connection in a and b, wire loose value. But reg can hold the value even if there in no connection. Default values:wire is Z,reg is x. |
|
| 6. |
How To Generate Sine Wav Using Verilog Coding Style? |
|
Answer» The easiest and efficient WAY to generate SINE WAVE is using CORDIC ALGORITHM. The easiest and efficient way to generate sine wave is using CORDIC Algorithm. |
|
| 7. |
What Is The Difference Between === And == ? |
|
Answer» output of "==" can be 1, 0 or X. When you are comparing 2 nos using "==" and if one/both the numbers have one or more bits as "x" then the output would be "X" . But if use "===" outpout would be 0 or 1. e.g A = 3'b1x0 "==" is used for comparison of only 1's and 0's .It can't compare XS. If any bit of the input is X output will be X "===" is used for comparison of X also. output of "==" can be 1, 0 or X. When you are comparing 2 nos using "==" and if one/both the numbers have one or more bits as "x" then the output would be "X" . But if use "===" outpout would be 0 or 1. e.g A = 3'b1x0 "==" is used for comparison of only 1's and 0's .It can't compare Xs. If any bit of the input is X output will be X "===" is used for comparison of X also. |
|
| 8. |
What Does `timescale 1 Ns/ 1 Ps Signify In A Verilog Code? |
|
Answer» '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. '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. |
|
| 9. |
What Is The Difference Between The Following Two Lines Of Verilog Code? |
|
Answer» #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. #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. |
|
| 10. |
Given The Following Verilog Code, What Value Of "a" Is Displayed? |
|
Answer» always @(clk) begin This is a tricky ONE! VERILOG scheduling semantics basically imply a four-level deep queue for the current simulation time:
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. always @(clk) begin This is a tricky one! Verilog scheduling semantics basically imply a four-level deep queue for the current simulation time: 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. |
|
| 11. |
Will Case Infer Priority Register If Yes How Give An Example? |
|
Answer» yes case can INFER priority register DEPENDING on CODING style yes case can infer priority register depending on coding style |
|
| 12. |
What Is Difference Between Freeze Deposit And Force? |
|
Answer» $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. $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. |
|
| 13. |
How To Write Fsm Is Verilog? |
|
Answer» there r MAINLY 4 ways 2 WRITE fsm CODE
there r mainly 4 ways 2 write fsm code |
|
| 14. |
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? |
|
Answer» 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 not collision is 2/8=1/4 or collision probability is 6/8=3/4 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 not collision is 2/8=1/4 or collision probability is 6/8=3/4 |
|
| 15. |
What Is Pli?why Is It Used? |
|
Answer» 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. 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. |
|
| 16. |
Write A Verilog Code For Synchronous And Asynchronous Reset? |
|
Answer» Synchronous reset, synchronous means clock dependent so reset MUST not be present in sensitivity DISK begin if (reset) Asynchronous means clock INDEPENDENT so reset must be present in sensitivity list. Eg: Always @(posedge clock or posedge reset) begin Synchronous reset, synchronous means clock dependent so reset must not be present in sensitivity disk eg: always @ (posedge clk ) begin if (reset) Asynchronous means clock independent so reset must be present in sensitivity list. Eg: Always @(posedge clock or posedge reset) begin |
|
| 17. |
Can You List Out Some Of Enhancements In Verilog 2001? |
|
Answer» In earlier version of Verilog ,we USE 'or' to specify more than one element in sensitivity list . In Verilog 2001, we can use comma as SHOWN in the example below. // Verilog 2k example for usage of comma Verilog 2001 allows us to use star in sensitive list instead of listing all the variables in RHS of combo logics . This removes typo mistakes and thus avoids simulation and synthesis mismatches, Verilog 2001 allows port direction and data type in the port list of modules as shown in the example below module memory ( In earlier version of Verilog ,we use 'or' to specify more than one element in sensitivity list . In Verilog 2001, we can use comma as shown in the example below. // Verilog 2k example for usage of comma Verilog 2001 allows us to use star in sensitive list instead of listing all the variables in RHS of combo logics . This removes typo mistakes and thus avoids simulation and synthesis mismatches, Verilog 2001 allows port direction and data type in the port list of modules as shown in the example below module memory ( |
|
| 18. |
Can You Tell Me Some Of System Tasks And Their Purpose? |
|
Answer» $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"); $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"); |
|
| 19. |
Difference Between Verilog And Vhdl? |
|
Answer» 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. 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. |
|
| 20. |
Tell Me Structure Of Verilog Code You Follow? |
|
Answer» A good template for your Verilog file is shown below. // timescale directive tells the simulator the base units and precision of the simulation A good template for your Verilog file is shown below. // timescale directive tells the simulator the base units and precision of the simulation |
|
| 21. |
In A Pure Combinational Circuit Is It Necessary To Mention All The Inputs In Sensitivity Disk? If Yes, Why? |
|
Answer» 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. 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. |
|
| 22. |
What Is Sensitivity List? |
|
Answer» The sensitivity list indicates that when a change occurs to any ONE of elements in the list change, begin…end statement INSIDE that always BLOCK will GET executed. The sensitivity list indicates that when a change occurs to any one of elements in the list change, begin…end statement inside that always block will get executed. |
|
| 23. |
Variable And Signal Which Will Be Updated First? |
|
Answer» Signals Signals |
|
| 24. |
Tell Me How Blocking And Non Blocking Statements Get Executed? |
|
Answer» 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:
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: |
|
| 25. |
What Is Meant By Inferring Latches,how To Avoid It? |
|
Answer» Consider the following : always @(s1 or s0 or i0 or i1 or i2 or i3) in a case statement if all the possible combinations are not compared and default is also not SPECIFIED like in example above a latch will be inferred ,a latch is inferred because to reproduce the previous value when unknown branch is specified. For example in above case if {s1,s0}=3 , the previous stored value is reproduced for this storing a 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. Consider the following : always @(s1 or s0 or i0 or i1 or i2 or i3) in a case statement if all the possible combinations are not compared and default is also not specified like in example above a latch will be inferred ,a latch is inferred because to reproduce the previous value when unknown branch is specified. For example in above case if {s1,s0}=3 , the previous stored value is reproduced for this storing a 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. |
|
| 26. |
What Is Difference Between Verilog Full Case And Parallel Case? |
|
Answer» A "full" CASE statement is a case statement in which all possible case-EXPRESSION BINARY patterns can be matched to a case item or to a case default. If a case statement does not include a case default and if it is possible to find a binary case expression that does not match any of the DEFINED case items, the case statement is not "full." A "parallel" case statement is a case statement in which it is only possible to match a case expression to one and only one case item. If it is possible to find a case expression that would match more than one case item, the MATCHING case items are called "overlapping" case items and the case statement is not "parallel." A "full" case statement is a case statement in which all possible case-expression binary patterns can be matched to a case item or to a case default. If a case statement does not include a case default and if it is possible to find a binary case expression that does not match any of the defined case items, the case statement is not "full." A "parallel" case statement is a case statement in which it is only possible to match a case expression to one and only one case item. If it is possible to find a case expression that would match more than one case item, the matching case items are called "overlapping" case items and the case statement is not "parallel." |
|
| 27. |
Difference Between $monitor,$display & $strobe? |
|
Answer» These commands have the same syntax, and display text on the screen during simulation. They are much less CONVENIENT than waveform display tools like cwaves?. $display and $strobe display once every time they are executed, whereas $monitor displays every time one of its parameters CHANGES. The difference between $display and $strobe is that $strobe displays the parameters at the very end of the current simulation time unit rather than exactly where it is executed. The format string is like that in C/C++, and may CONTAIN format characters. Format characters include %d (decimal), %h (hexadecimal), %b (binary), %c (CHARACTER), %s (string) and %t (time), %m (hierarchy level). %5d, %5b etc. would give exactly 5 spaces for the number instead of the space needed. Append b, h, o to the task name to change default format to binary, OCTAL or hexadecimal. Syntax: These commands have the same syntax, and display text on the screen during simulation. They are much less convenient than waveform display tools like cwaves?. $display and $strobe display once every time they are executed, whereas $monitor displays every time one of its parameters changes. The difference between $display and $strobe is that $strobe displays the parameters at the very end of the current simulation time unit rather than exactly where it is executed. The format string is like that in C/C++, and may contain format characters. Format characters include %d (decimal), %h (hexadecimal), %b (binary), %c (character), %s (string) and %t (time), %m (hierarchy level). %5d, %5b etc. would give exactly 5 spaces for the number instead of the space needed. Append b, h, o to the task name to change default format to binary, octal or hexadecimal. Syntax: |
|
| 28. |
Difference Between Inter Statement And Intra Statement Delay? |
|
Answer» //define register VARIABLES //Equivalent method with temporary variables and regular DELAY control //define register variables //Equivalent method with temporary variables and regular delay control |
|
| 29. |
Difference Between Task And Function? |
|
Answer» Function:
Tasks:
Function: Tasks: |
|
| 30. |
Write A Verilog Code To Swap Contents Of Two Registers With And Without A Temporary Register? |
|
Answer» With temp reg ; Without temp reg; With temp reg ; Without temp reg; |
|