ASIC Design Interview Questions Summarized by Chong Yao ----------------No commerical use is allowed-------------1. Why Reset? A Reset is required to initialize a hardware design for system operation and to force an ASIC into a known state for simulation. A reset simply changes the state of the device/design/ASIC to a user/designer defined state. There are two types of reset, what are they? As you can guess them, they are Synchronous reset and Asynchronous reset. Synchronous Reset A synchronous reset signal will only affect or reset the state of the flip-flop on the active edge of the clock. The reset signal is applied as is any other input to the state machine. Advantages: The advantage to this type of topology is that the reset presented to all functional flip-flops is fully synchronous to the clock and will always meet the reset recovery time. Synchronous reset logic will synthesize to smaller flip-flops, particularly if the reset is gated with the logic generating the d-input. But in such a case, the combinational logic gate count grows, so the overall gate count savings may not be that significant. Synchronous resets provide some filtering for the reset signal such that it is not effected by glitches, unless they occur right at the clock edge. A synchronous reset is recommended for some types of designs where the reset is generated by a set of internal conditions. As the clock will filter the logic equation glitches between clock edges. Disadvantages: The problem in this topology is with reset assertion. If the reset signal is not long enough to be captured at active clock edge (or the clock may be slow to capture the reset signal), it will result in failure of assertion. In such case the design needs a pulse stretcher to guarantee that a reset pulse is wide enough to be present during the active clock edge. Another problem with synchronous resets is that the logic synthesis cannot easily distinguish the reset signal from any other data signal. So proper care has to be taken with logic synthesis, else the reset signal may take the fastest path to the flip-flop input there by making worst case timing hard to meet. In some power saving designs the clocked is gated. In such designed only asynchronous reset will work. Faster designs that are demanding low data path timing, cannot afford to have extra gates and additional net delays in the data path due to logic inserted to handle synchronous resets. Asynchronous Reset An asynchronous reset will affect or reset the state of the flip-flop asynchronously i.e. no matter what the clock signal is. This is considered as high priority signal and system reset happens as soon as the reset assertion is detected. Advantages: High speeds can be achieved, as the data path is independent of reset signal. Another advantage favoring asynchronous resets is that the circuit can be reset with or without a clock present. As in synchronous reset, no work around is required for logic synthesis. Disadvantages: The problem with this type of reset occurs at logic de-assertion rather than at assertion like in synchronous circuits. If the asynchronous reset is released (reset release or reset removal) at or near the active clock edge of a flip-flop, the output of the flip-flop could go metastable. Spurious resets can happen due to reset signal glitches. Conclusion Both types of resets have positives and negatives and none of them assure fail-proof design. So there is something called "Asynchronous assertion and Synchronous de-assertion" reset which can be used for best results. (which will be discussed in next post) 2.Non-blocking/blocking assignment 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 several assignment, if they were the blocking assignment, they would be evaluated and assigned in sequence; if they were the non-blocking assignment, they would be evaluate d simultaneously and assigned at the same time, therefore, the delays overlap. Moreover, the blocking assignment are usually used in the continuous assignment (combinational circuit) "assign", and non-blocking assignment are typically utilized in the procedure assignment (sequential circuit) "initial, always, task, function". 2.1) How re blocking and non-blocking statements executed? In the blocking statement, the RHS will be evaluated and the LHS will be then updated without any interruptions. In the non-blocking statement, RHS will be evaluated at the beginning of the time step. Then the LHS will be updated at the end of the time step. Within the whole period, the other process can run in parallel. 2.2) 1: Active Evens ( blocking statements, RHS of NBA, continuous assignement, $display) 2: Inactive Events ( #1 delays, etc) 3: Non-Blocking Assign updates ( LHS of non-blocking statements ) 4: Monitor Events ($strobe, $monitor, etc ) 2.3) Encounter Files The Design Import form is used to load the Verilog netlist (.syn.v); physical libraries (.LEF); process technology libraries; timing libraries (.tlf); timing constraints. 2.4) Encounter extracted RC Pre-CTS optimize to fix setup violation CTS Post-CTS optimize to fix hold violation 2.5) What files are required for PrimeTime to run? PrimeTime needs four types of files before you can run it: 1. Netlist file: Verilog, VHDL, EDIF 2. Delay file: SPEF(standard parasitic format, it's from STARRC or place&route tool), SPF, SDF(standard delay format) 3. Library file: DB ( From library vendors) 4. Constrains file: Synopsys Design Constraints(SDC) include 3 min requirement, clock, input delay and output delay. 2.6) In prime time, use best case and min lib to check hold violation. use worst case and max lib to check setup violation 3. Setup/hold time The setup time is the amount of time that an input signal (to the device) must be stable (unchanging) before the clock ticks in order to avoid possible Metastability. The hold time is the amount of time that an input signal (to a sequential device) must be stable (unchanging) after the clock tick in order to avoid possible Metastability setup equation Tclk > Tc2q_L_max + Tlogic_max + Tsetup_C + Tskew + Tjitter Tskew should be negative hold equation Tc2q_L_min + Tlogic_min > Thold_C + Tskew Tskew is the positive skew key things to note from above equations a) Setup violation check 1. Vdd ↑ Id↑ Tlogic↓ 2. Temperature ↓ Tlogic↓ 3. Period ↑ 4. Using faster DFF Tc2q↓ 5. Tskew↓ by powerful driver, CTS (clock tree synthesis) 6. Pipeline/minimize number of logic levels Tlogic↓ 7. Process b) Hold time violation 1.Vdd↓ Tlogic↑ 2. Temperature↑ Tlogic↑ 3.Using slower DFF Tc2q↑ 4. Tskew↑ 5.Adding Inverter pairs, buffers, delay cells, Tlogic↑ , by CTS 4.Skew Positive skew occurs when the launch register receives the clock earlier than the capture register. Positive skew helps the setup violation. Negative skew helps the hold time violation. Here, tskew should be negative. Here, Tskew is the positive skew. b) PLL jitter (Tjitter ) is not used in hold time equation , since hold time violation is based on same clock edge . (whereas setup time violation depends on 2 consecutive clock edges) c) above equations have clock skew in pessimistic directions . U can play around with clock skews to get extra margin by skewing them in favorable direction to decrease violation . 5.STA 1) Timing constraints, as Synopsys Design Constraints(SDC), are how the designer tells the STA tool about the timing behavior of the ASIC. The three minimum constraints are defining the clock, input delay, and output delay. There are four types of timing paths are available. They are : Input to Register (Sync), Register to Register (Sync), Register to Output (Sync) and Input to Output(Async). Each path has a start and endpoint When the clocks are defined, all Register to Register paths are assumed to be constrained in one clock cycle. A path originates from either an Input port or a Register clock pin, while an end point is either an Output port or a Register data pin. All start and end point must be timing constrained. 6. Verilog common questions 6.1) (1)casez treats all z and ? as "Don't care". If expression is "zzzz", satisfied all the conditions, so the first statement will be executed. (2)casex treat all z or x or ? as "Don't care". if expression is "zzzz" or "xxxx", fist statement executed. (3)case pass all z or x to the result as xxxx or zzzz. (4) 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 -- x require an absolute match e.g always @(select) casez(select) 4'b???1: out = a; 4'b??1?: out = b; 4'b?1??: out = c; endcase /////////////simulation result////////////// select = xxxx, out = xx; select = zzzz, out = a; select = xx1x, out = b; /////////////////////////////////////////// if using casex select = xxxx, out = a; 6.2)What is difference between Verilog full case and parallel case? 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." 6.3) 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. 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; 6.4) 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 6.5) Tell something about modeling delays in verilog? Verilog can model delay types within its specification for gates and buffers. Parameters that can be modelled are T_rise, T_fall and T_turnoff. To add further detail, each of the three values can have minimum, typical and maximum values T_rise, t_fall and t_off Delay modelling syntax follows a specific discipline; gate_type #(t_rise, t_fall, t_off) gate_name (paramters); 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 6.6)Gray to binary Dec Gray Binary 0 000 000 1 001 001 2 011 010 3 010 011 4 110 100 5 111 101 6 101 110 7 100 111 Gary to Binary: assign binary = { gray[2], (gray[1] ^ binary[2]),(gray[0] ^ binary[1]) } Binary to Gray: assign gray = { binary[2], (binary[2] ^ binary [1]),( binary [1] ^ binary [0]) } 6.7) What is the difference between unary and logical operators? Unary operators have only one operand, where as logical operators are of two operands. 6.8) What is the difference between transport delay and inertial delay? Transport delay is the delay caused by the wires connecting the gates. Wire do delay the signal they carry, this is due to the wire resistance, capacitance, and inductance. Simply transport delay is propagation delay on a wire. It models the devices with infinite switching speed; input glitches propagate to the output. In verilog transport delay is modeled as follows: a< = #5 b; Inertial delay (inter-statement) is the time taken by a gate to change its output, which is the gate delay. No input glitches propagated. In verilog inertial delay is modeled as follows: assign #5 a = b; Answer: #5 a=b, Inertial delay (inter-statement), gate delay. NO glitches. Wait 5 time units before doing the action for "a=b". a<= #5 b; Transport delay.(Intra-statement) Propagation delay on a wire. Glitches passing. The value of b is calculated and stored in an internal temp register. After 5 time units, assign this stored value to a. 6.9) Different Coding fashion Write code for 2:1 MUX using different coding methods? Use assign statement: 7 module mux_using_assign( 8 din_0 , // Mux first input 9 din_1 , // Mux Second input 10 sel , // Select input 11 mux_out // Mux output 12 ); 13 //-----------Input Ports--------------14 input din_0, din_1, sel ; 15 //-----------Output Ports--------------16 output mux_out; 17 //------------Internal Variables-------18 wire mux_out; 19 //-------------Code Start----------------20 assign mux_out = (sel) ? din_1 : din_0; 21 22 endmodule //End Of Module mux Use if statement 7 module mux_using_if( 8 din_0 , // Mux first input 9 din_1 , // Mux Second input 10 sel , // Select input 11 mux_out // Mux output 12 ); 13 //-----------Input Ports--------------- 14 input din_0, din_1, sel ; 15 //-----------Output Ports--------------16 output mux_out; 17 //------------Internal Variables-------18 reg mux_out; 19 //-------------Code Starts Here--------20 always @ (sel or din_0 or din_1) 21 begin : MUX 22 if (sel == 1'b0) begin 23 mux_out = din_0; 24 end else begin 25 mux_out = din_1 ; 26 end 27 end 28 29 endmodule //End Of Module mux Use Case statement 7 module mux_using_case( 8 din_0 , // Mux first input 9 din_1 , // Mux Second input 10 sel , // Select input 11 mux_out // Mux output 12 ); 13 //-----------Input Ports--------------14 input din_0, din_1, sel ; 15 //-----------Output Ports--------------16 output mux_out; 17 //------------Internal Variables-------18 reg mux_out; 19 //-------------Code Starts Here--------20 always @ (sel or din_0 or din_1) 21 begin : MUX 22 case(sel ) 23 1'b0 : mux_out = din_0; 24 1'b1 : mux_out = din_1; 25 endcase 26 end 27 28 endmodule //End Of Module mux 6.10) What's the difference between === and ==? "a===b" a equal to b, including x and z (Case equality) "a==b" a equal to b, result may be unknown (logical equality) The equality operators ( = = , ! = ) will yield an x if either operand has x or z in its bits. Whereas the case equality operators ( = = = , ! = = ) compare both operands bit by bit and compare all bits, including x and z. 6.11) Write code for a parallel encoder and a priority encoder? module pri_encoder_using_assign ( 8 binary_out , // 4 bit binary output 9 encoder_in , // 16-bit input 10 enable // Enable for the encoder 11 ); 12 13 output [3:0] binary_out ; 14 input enable ; 15 input [15:0] encoder_in ; 16 17 wire [3:0] binary_out ; 18 19 assign binary_out = ( ! enable) ? 0 : ( 20 (encoder_in == 16'bxxxx_xxxx_xxxx_xxx1) ? 0 : 21 (encoder_in == 16'bxxxx_xxxx_xxxx_xx10) ? 1 : 22 (encoder_in == 16'bxxxx_xxxx_xxxx_x100) ? 2 : 23 (encoder_in == 16'bxxxx_xxxx_xxxx_1000) ? 3 : 24 (encoder_in == 16'bxxxx_xxxx_xxx1_0000) ? 4 : 25 (encoder_in == 16'bxxxx_xxxx_xx10_0000) ? 5 : 26 (encoder_in == 16'bxxxx_xxxx_x100_0000) ? 6 : 27 (encoder_in == 16'bxxxx_xxxx_1000_0000) ? 7 : 28 (encoder_in == 16'bxxxx_xxx1_0000_0000) ? 8 : 29 (encoder_in == 16'bxxxx_xx10_0000_0000) ? 9 : 30 (encoder_in == 16'bxxxx_x100_0000_0000) ? 10 : 31 (encoder_in == 16'bxxxx_1000_0000_0000) ? 11 : 32 (encoder_in == 16'bxxx1_0000_0000_0000) ? 12 : 33 (encoder_in == 16'bxx10_0000_0000_0000) ? 13 : 34 (encoder_in == 16'bx100_0000_0000_0000) ? 14 : 15); 35 36 endmodule module encoder_using_case( 8 binary_out , // 4 bit binary Output 9 encoder_in , // 16-bit Input 10 enable // Enable for the encoder 11 ); 12 output [3:0] binary_out ; 13 input enable ; 14 input [15:0] encoder_in ; 15 16 reg [3:0] binary_out ; 17 18 always @ (enable or encoder_in) 19 begin 20 binary_out = 0; 21 if (enable) begin 22 case (encoder_in) 23 16'h0002 : binary_out = 1; 24 16'h0004 : binary_out = 2; 25 16'h0008 : binary_out = 3; 26 16'h0010 : binary_out = 4; 27 16'h0020 : binary_out = 5; 28 16'h0040 : binary_out = 6; 29 16'h0080 : binary_out = 7; 30 16'h0100 : binary_out = 8; 31 16'h0200 : binary_out = 9; 32 16'h0400 : binary_out = 10; 33 16'h0800 : binary_out = 11; 34 16'h1000 : binary_out = 12; 35 16'h2000 : binary_out = 13; 36 16'h4000 : binary_out = 14; 37 16'h8000 : binary_out = 15; 38 endcase 39 end 40 end 41 42 endmodule 6.12) What is the difference between I) c = select? a:b; II) if(select) c=a; else c=b; Answer: The ? merges answers if the condition is "x", so for instance if select = 1'bx, a=2'b10 and b=2'b11, you'd get c=2'b1x. On the other hand, "if" treats Xs and Zs as FALSE, so you'd always get c=b. 6.13) what's difference between $monitor and $display? $monitor: display every time one of its parameters changes, in Postponed region. $display : display once every time they are executed, in Active region. $strobe: display only at the end of the current simulation time, in Postponed region, usually used for non-blocking assignment. 6.14) What's the differenece between wire and reg data type? Wire is a net data type, represents connections between hardware elements. It's default value is z. Reg is a register data type, which represent data storage elements. Registers retain value until another value is placed onto them. It's default value is x. 6.15) What is defparam used for? Defparam is used to pass a new set of parameters during instantiation 1 module secret_number; 2 parameter my_secret = 0; 3 4 initial begin 5 $display("My secret number is %d", my_secret); 6 end 7 8 endmodule module defparam_example(); secret_number U0(); secret_number U1(); defparam U0.my_secret = 11; defparam U1.my_secret = 22; endmodule 6.16) What is the difference between a latch and a flip lop. Latch: I) level-sensitive "sequential" element. The output captures 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. II) faster than Flip-flop. III) it takes less gates to implemented ( less area). IV) But it's sensitive to glitches on enable pin. It also can be clocked or clock less. Flip-flop I)edge sensitive "sequential" element. II)Flip flop will store the input only when there is a rising or falling edge of the clock. III)FF is immune to glitches. IV)D-FF is built from two latches. They are in master slave configuration. 7) What is the difference between a task and a function in verilog? Function Timing-Control statements No, shall execute in zero time Cannot call tasks, can call Call function or tasks functions at least 1 input type argument and input type argument shall not have an output or inout type argument return value return a single value Task Yes Can call both tasks and functions can have 0 or more arguments of any type shall not return a value 8) What happens if there is connecting wires width mismatch? For examples: RHS[7:0] = LHS[15:0] The end result is LHS[7:0] = RHS[7:0]; The assignments starts from LSBs of the signals, and ends at the MSB of smaller width signal. 9) What are different options that can be used with $display statement in Verilog? %b - binary %c - ASCII character %d - Decimal %h - Hexadecimal %m - Hierarchical name %o - Octal %s - Steing %t - Time %v - Net signal strength 10) A Moore state machine is more efficient than a Mealy state machine Because of Moore state machine has synchronous outputs – no glitches – one cycle “delay” – full cycle of stable output And Mealy machine has asynchronous outputs – if input glitches, so does output – output immediately available – output may not be stable long enough to be useful -> If output of Mealy FSM goes through combinational logic before being registered, the CL might delay the signal and it could be missed by the clock edge. 11) What are different types of timing verifications? Dynamic timing: a. The design is simulated in full timing mode. b. Not all possibilities tested as it is dependent on the input test vectors. c. Simulations in full timing mode are slow and require a lot of memory. d. Best method to check asynchronous interfaces or interfaces between different timing domains. Static timing: a. The delays over all paths are added up. b. All possibilities, including false paths, verified without the need for test vectors. c. Much faster than simulations, hours as opposed to days. d. Not good with asynchronous interfaces or interfaces between different timing domains. 12) How do you implement the bi-directional ports in Verilog HDL? module bidirec (oe, clk, inp, outp, bidir); input oe; input clk; input [7:0] inp; output [7:0] outp; inout [7:0] bidir; reg [7:0] a; reg [7:0] b; assign bidir = oe ? a : 8'bZ ; assign outp = b; always @ (posedge clk) begin b <= bidir; a <= inp; end endmodule 13) Difference between inter statement and intra statement delay? //define register variables reg a, b, c; //intra assignment delays initial begin a = 0; c = 0; b = #5 a + c; //Take value of a and c at the time=0, evaluate //a + c and then wait 5 time units to assign value //to b. end //Equivalent method with temporary variables and regular delay control initial begin a = 0; c = 0; temp_ac = a + c; #5 b = temp_ac; //Take value of a + c at the current time and //store it in a temporary variable. Even though a and c //might change between 0 and 5, //the value assigned to b at time 5 is unaffected. end 14) Suggest some ways to increase clock frequency? 1)Check critical path and optimize it. 2) Add more timing constraints (over constrain). 3)pipeline the architecture to the max possible extent keeping in mind latency req's. 15) What is the difference between LVS and DRC? The layout must be drawn according to certain strict design rules. DRC helps in layout of the designs by checking if the layout is abide by those rules. After the layout is complete we extract the netlist. LVS compares the netlist extracted from the layout with the schematic to ensure that the layout is an identical match to the cell schematic. 16) What is DFT ? DFT means design for testability. 'Design for Test or Testability' - a methodology that ensures a design works properly after manufacturing, which later facilitates the failure analysis and false product/piece detection Other than the functional logic, you need to add some DFT logic in your design. This will help you in testing the chip for manufacturing defects after it come from fab. Scan, MBIST, LBIST, IDDQ testing etc are all part of this. (this is a hot field and with lots of opportunities) 16.1) Contamination delay is also called tmin and Propagation delay is also called tmax in many data sheets. 16.2) When there are multiple non-blocking assignments made to the same reg variable in a sequential always block, then the last assignment is picked up for logic synthesis. For example always @ (posedge clk) begin out <= in1^in2; out <= in1 &in2; out <= in1|in2; 17) Dynamic vs Static Timing Analysis Timing analysis is integral part of ASIC/VLSI design flow. Anything else can be compromised but not timing! Timing analysis can be static or dynamic. Dynamic timing analysis verifies functionality of the design by applying input vectors and checking for correct output vectors whereas Static Timing Analysis checks static delay requirements of the circuit without any input or output vectors. Dynamic timing analysis has to be accomplished and functionality of the design must be cleared before the design is subjected to Static Timing Analysis (STA). Dynamic Timing Analysis (DTA) and Static Timing Analysis (STA) are not alternatives to each other. Quality of the Dynamic Timing Analysis (DTA) increases with the increase of input test vectors. Increased test vectors increase simulation time. Dynamic timing analysis can be used for synchronous as well as asynchronous designs. Static Timing Analysis (STA) can’t run on asynchronous deigns and hence Dynamic Timing Analysis (DTA) is the best way to analyze asynchronous designs. Dynamic Timing Analysis (DTA) is also best suitable for designs having clocks crossing multiple domains. Example of Dynamic Timing Analysis(DTA) tool is Modelsim (from mentor Graphics), VCS (from Synopsys). DTA is also carried out on post layout netlist to verify that functionality of the design has not changed. Test vectors remain same for both 17.1) Advantages of STA: All timing paths are considered for the timing analysis. This is not the case in simulation. Analysis times are relatively short when compared with event and circuit simulation. Timing can be analyzed for worst case, best case simultaneously. This type of analysis is not possible in dynamic timing analysis. Static Timing Analysis (STA) works with timing models. STA has more pessimism and thus gives maximum delay of the design. DTA performs full timing simulation. The problem associated with DTA is the computational complexity involved in finding the input patterns (vectors) that produce maximum delay at the output and hence it is slow. 17.2) Disadvantages of STA: All paths in the design may not run always in worst case delay. Hence the analysis is pessimistic. Clock related all information has to be fed to the design in the form of constraints. Inconsistency or incorrectness or under constraining of these constraints may lead to disastrous timing analysis. STA does not check for logical correctness of the design. STA is not suitable for asynchronous circuits. 18. FPGA vs ASIC FPGA: A Field-Programmable Gate Array (FPGA) is a semiconductor device containing programmable logic components called "logic blocks", and programmable interconnects. Logic blocks can be programmed to perform the function of basic logic gates such as AND, and XOR, or more complex combinational functions such as decoders or mathematical functions. For complete details click here. ASIC: An application-specific integrated circuit (ASIC) is an integrated circuit designed for a particular use, rather than intended for general-purpose use. Processors, RAM, ROM, etc are examples of ASICs. Speed ASIC rules out FPGA in terms of speed. As ASIC are designed for a specific application they can be optimized to maximum, hence we can have high speed in ASIC designs. ASIC can have high speed clocks. FPGA is difficult to route. Cost FPGAs are cost effective for small applications. But when it comes to complex and large volume designs (like 32-bit processors) ASIC products are cheaper. Size/Area FPGA are contains lots of LUTs, and routing channels which are connected via bit streams(program). As they are made for general purpose and because of re-usability. They are in-general larger designs than corresponding ASIC design. For example, LUT gives you both registered and non-register output, but if we require only non-registered output, then it's a waste of having a extra circuitry. In this way ASIC will be smaller in size. Power FPGA designs consume more power than ASIC designs. As explained above the unwanted circuitry results wastage of power. FPGA wont allow us to have better power optimization. When it comes to ASIC designs we can optimize them to the fullest. Time to Market FPGA designs will consume less time, as the design cycle is small when compared to that of ASIC designs. No need of layouts, masks or other back-end processes. It's very simple: Specifications -- HDL + simulations -- Synthesis -- Place and Route (along with static-analysis) -- Dump code onto FPGA and Verify. When it comes to ASIC we have to do floor planning and also advanced verification. The FPGA design flow eliminates the complex and time-consuming floor planning, place and route, timing analysis, and mask / re-spin stages of the project since the design logic is already synthesized to be placed onto an already verified, characterized FPGA device. Type of Design ASIC can have mixed-signal designs, or only analog designs. But it is not possible to design them using FPGA chips. 19. What is the difference between cycle and event based Verilog simulators ? Cycle based Simulator :Cycle simulation is a technique (i.e. an algorithm) for digital circuit simulation. It does not simulate detailed circuit timing, but instead computes the steady state response of a circuit at each clock cycle. The user cannot see the glitch behavior of signals between clock cycles. Instead the user observes circuit signals once per clock cycle. Cycle based simulators work only with synchronous designs. Event based Simulator: Simulation based on events in logic means that whenever there is change in a input event, the output is evaluated. This makes the simulation very slow compared to Cycle based simulators. Verilog-XL is an event based simulator. Consider the circuit below: if a cycle based simulator runs a simulation on the circuit below, then it will evaluate B, C, D and E only at each cycle. In the case of an event based simulator, B, C, D and E are evaluated not only at clock cycle, but also when any of the events at the input of gates and flip-flops occurs. 20. Difference between blocking, non-blocking, and delayed assignment. Reference: 1. 2. 3. http://www.asic-world.com/ http://www.testbench.in/TS_00_INDEX.html University of Southern California EE577B lectures. ----------------No commerical use is allowed--------------