Asic engineer Interview Questions | Glassdoor

# Asic engineer Interview Questions

209

asic engineer interview questions shared by candidates

## Top Interview Questions

Sort: RelevancePopular Date

### ASIC Verification Engineer at Zoran was asked...

Sep 9, 2010
 You have 2 pieces of rope, each of which burns from one end to the other in 30 minutes (no matter which end is lit). If different pieces touch, the flame will transfer from one to the other. You cannot assume any rope properties that were not stated. Given only 1 match, can you time 45 minutes?49 AnswersTake one rope (Rope A), place it down as a circle. Light match and start burning rope A at the tips that are touching. When the rope completely burns out, 15 minutes will have passed (since both ends are burning and being consumed at once). Hold the second rope (Rope B) straight and place one end so that it will immediately catch fire when the two burning points from (Rope A) finally touch and are just about to burn out. Thus 15 minutes on Rope A + 30 minutes on Rope B gives you 45 mins.How about this: Fold the first rope double so the ends touch. Lay it down and lay the second rope so it touches the fold of the first rope. Light the ends of the first rope. After 15 minutes the second rope should ignite. Once second rope finishes burning it is 45 minutes. Same principle as above, I just don't want to sit there for 15 minutes in order to light the second rope.... :-)Make a T. SimpleShow More ResponsesLight both ropes at the same time with the match: ------------* () *---------- || then place the two ropes next to each other with the burning ends opposite each other: this way one of the ropes burns left to right, while the other is burning right to left. ----------* *---------- In 15 min the two burning ends will be next to each other. -----* *----- Great Puzzle, thanks!** You cannot assume any rope properties that were not stated Burn like this *-------- ===> After 30mins, Rope A finished burning, and both ends of Rope B start burningburn one rope, wait till it gets to the half way point, then you transfer the first one to the second one to initiate the other flame. wait till the end. 45 minutes are upYou have 2 pieces of rope, each of which burns from one end to the other in 30 minutes (no matter which end is lit). If different pieces touch, the flame will transfer from one to the other at the point at which the burn rate consumes the first rope to its point of contact with the second rope. The only thing we know about the second rope is that it will burn in 30 minutes if ignited from one end. There is no assurance the second rope will ignite, or burn at the stated rate, if an end is not made to point of contact.do you want to buy saints jerseys,vikings jerseys?depends on what the ropes are made of@eaasy you can assume that the second rope with burn at the same rate if lit from the middle, as the rope burns a set amount of time from either end. If Point A to Point B is the same as Point B to Point A, igniting from the center would cause the flame to finishing burning Point A AND point B at the same time. As for ignition, you have a point. There is no assurance that the first rope does not have a prolonged burn rate at the ends and an accelerated burn rate in the center. Therefore the second rope could have ignited before the first rope finishing burning (at any point before the 30 minute limit) which would make timing 45 minutes improbable.Lay one down, and have the second one touch the first rope perpendicularly at the midpoint. Light the first one, when it gets to the midpoint (15 minutes), the second will start burning. When the second one extinguishing you have 45 minutes.T. Simple, quick, walk away and do 45 minutes' work where you can still see light from the flame. Both ends will finish burning at the same time if environmental conditions are consistent.LAY THE TWO ROPES WHERE THE SECOND ROPE IS TOUCHING ONE END TO THE MIDDLE OF THE FIRST ROPE. IT SHOULD TAKE 15 MINUTES TO START THE SECOND ROPE AND THEN ANOTHER 30 TO COMPLETLY FINISH BURNING SO THIS IS 15+30=45Show More Responseslay ropes end to end, to make one long length, when first length ignites the end of the second length, touch the last remaining end to it and let the flames meet somewhere in the middle. That way each flame will travel in the correct direction, are considered to be burning end to end, without ambiguously being lighted in the middle and hoping the direction will be as desired.... since it takes 30 minutes end to end, then to ignite both ends of the second rope will draw a 15 minute interval no matter what the burn rate is per divided section, thank you and I will accept \$150 K per year and 30 days vacation time yearly as well... I had no idea that rope burning was so lucrative a career field... and I want my own rest room.it all depends on what kind of match you have. They said you have one match (no book or box) so if it's not a strike anywhere match then you're screwed. However, if it is then make the T formation... The vertical rope burns 30m then the horizontal burns both directions for 15. No loops, circles or folding required :-)burn A at the two ends will give you 15 min, and when finish A, then burn B next.Lay the map in a T formation, light two ends of the horizontal rope with the match. when the flames meet in the middle in 15 minutes they will light the second rope which is perpendicular to (and touching) the first rope. That rope will take 30 minutes to burn. Hence, 15 plus 30 = 45 minutes.burn A at the two ends will give you 15 min, and when finish A, then burn B nextburn one rope, wait till it gets to the half way point, then you transfer the first one to the second one to initiate the other flame. wait till the end. 45 minutes are up Helpful Answer? Yes | NoLay the two ropes in a "T" shape. Burn the one rope at the bottom end of the "T". It will take 30 mins for the flame to go through first rope, and when it reach the other end, transfering the flame onto the second rope right at the middle with the flame move towards both directions, taking 15 mins to completely burn out.This is a silly riddle.... because we're not given the property that the rope can bend, the best formation for the two ropes is to lay them in the "+" formation that everyone got. However, no one mentioned burning the rope at the intersection of the two ropes, ropes will burn in 15 minutes. Also, there isn't anything saying you can't light the ropes more than once with one match (assuming you have the ability to light the match, as someone already pointed out as a significant problem), in that case, you could burn the ropes up in less than a minute. If the rope can bend, just bundle the ropes up into a ball and light the rope ball on fire... it take 1.3 seconds to burn the ball if you create the most efficient weave... true story, I was there. But of course, if you wanted to make the most efficient use of your time (e.g., if you're lazy), you can just crumple the ropes up together, drop the heap of rope on the ground, and throw the lit match on the pile and be done with riddle (and the ropes... and the match).I agree with a couple people here. In this you cant assume the rope burns uniformly. Therefore loop one rope and put the end of the other so it touches where the ends meet. so you have this C--- light the straight rope, when it burns it'll light the "C" which will burn in half the stated time (15 mins).Just a quick one for all the "T" people, you're wrong... The rope doesn't burn uniformly so you can't measure to choose time. If you could you may as well just cut one of the ropes...Show More ResponsesSolution: NO YOU CANNOT GUARANTEE 45min. Most likely solution to work: Straight followed by loop. ---O One straight, followed by a loop. Ignite straight first, have it ignite the loop. You ignite the straight, gives you 30 minutes. Loop ignites, both ends may burn at different speeds, but when it finishes it will be 30mn/2. The flame may end anywhere on the loop, not necessarily at the 1/2 way of the rope. Why wouldn't it work: Above, you're assuming the rope burns end to end. If the rope is really non-uniformly burning, you can devise a case where burning on both sides at the same time doesn't make the burn 1/2 the time: For example, the outside burns real fast and the core real slow: no matter where you ignite it, or how many times, it would burn in 30mn. For that case, you could split the rope at their diameter and maybe rig a solution. But likely there can be another counter example that can be built, more and more far fetched. Interviewer will want you to explain the thoughts, non-uniform burn, etc. So this is an opening to check your deductive powers.What's the purpose of such a simple question? To judge how you react and explain yourself?Fold each rope in half & mark them in the middle. Light 1 rope & when it reaches the middle light the other one. When the 2nd rope burns completely you'll be at 45 minutes.no commentToo easy... fold one of the ropes in half end to end with the full rope... viola!There are a couple of answers. It depends how you would interpret the question. "the flame will transfer from one to the other" Assuming no special materials you would have on the ropes. This phrase can be interpreted that THERE CAN ONLY BE ONE FLAME. Thus the flame moves from one to the other and does not multiply i.e you can have more than one rope or section of the rope burning .(If it could the solution is easy-just arrange both ropes end to end into a pentagon shape or do what some people have suggested above). for the 45 mins thing you do the T shape like people above suggested so 15+30 =45. If you assume you HAVE to take 45 mins this is the best way. Assume that an earlier finish is best, the Pentagon would be fast. -When I mean pentagon I mean the 5 pointed star thing you know from the occult.- If there was only one flame which could transfer from one rope to the other without creating multiple flames you would have to ask how fast does the flame transfer and what distance does the flame burn at before being transferred. The reason for this is, if the ropes are lied down next to each other TOUCHING each other then the flame would burn, transfer, burn, transfer etc. this would take 30 mins assuming that there is no time lapse on the transfer(hence my questions above). If you wanted to hit the 45mins like it said in the question just have both ropes lie next to each other but have the second rope start from the middle of the first. So after 15mins the second will burn and the flame from this point the remainder of the first rope(15mins) and the second rope will burn 30 mins. Sorry for the poor spelling . CheersTake one rope, fold it over so one end touches the other, then cut the rope in half. Place one half of the rope at the end of the second whole rope so their ends are touching. Then light either end for 45 minutes of burn. I can't assume rope properties, but nothing says I can't cut it in half.Fold Rope A in half. Lay it down next to Rope B, which is not folded at all. Light Rope B.Reminds me of some of the stupid questions in the Corvirtus test. I took one recently and felt like a 3rd grader. I'm Schmart, I swer.Make a plus sign the the ropes. Light any one end. 15 mins to get get to center, 30 to burn the other rope.Show More ResponsesMust be a crew of techies answering this question. The obvious answer is to look at a clock.lay both pieces of rope down so that end of rope A touches the end rope rope B light the end of either rope, after 30min have passed the flame will transfer to the other rope,when the rope is half burn 45 total min will have passed. so yes you can time 45min.45 minutes is easy. I would rather have an hour of light. Tie the ropes together, making one long rope. Light one end and get 1 hour.The Question is "Given only 1 match, can you time 45 minutes?". Option 1. You have a timing device and are allowed to use it - no prohibition stated in setup or question - of course you can "time 45 min" to the precision of your timing device. Option 2. We know: Ignition can occur at either end. From reaction start to reaction end of each rope takes 30min. We can not assume that the rope burns evenly, can be bent, lit up other than the ends or even transmit the flame to the outside of the rope (Think trapped chemical burn in a tube). Therefore we can NOT build a timing device.Put one rope in a straight line, bend the second rope into an O shape (with both ends touching one end of the first rope), when the first rope reaches its end, 30 minutes will have passed, and ignite the second rope. The second rope, which has both of its ends ignited at the same time, will meet at its center, timing 15 more minutes have passed. -> ///////////OLay down both ropes evenly side by side. Slide one rope down 1/2 the length of the other then light one of the ends.Make a "T" with the ropes. 1 rope burns in 30 min, that rope is touching the middle of the second rope, and with two equal halfs(30/2) it should burn in 15 mins.----------- -------------, then push them togetherFirst of all, the question is "Given 1 match, can you time 45 mins?"... well you can stand there with a match in your hand and time 45 mins with any stopwatch. Or is the question really can you time 45 mins using that match? Then using the match to create a shadow..... hem hem maybe not. Let assume the question was meant to be "can you burn both ropes in 45 mins?"... well it doesn't say anywhere that the match can only light one rope. I've lit many birthday cakes in my days and I promise that only one match can light a full array of candles. So if the ropes burn in 30 mins. and you light both of them with the one match then yes; the burning of the ropes should be done under 45 minutes. But then again.... maybe the question was "can you burn both ropes in EXACTLY 45 minutes?" Now the real answer I think is that the question need to be more clear :)Light one of the ropes from one side only. when it burns out completely (30 mins) light the second rope from BOTH sides. that will double the rate at which it burns, making it completely burnt out in 15 mins. Total 45 minShow More Responses***CORRECTION*** didn't realize the "one match only" make a loop and a long rope running out of it (like a key figure) light the loose end of the standing rope. it will burn in 30 min. When it reaches the end it will ignite both sides of the other rope, doubling the rate at which it burns (i.e. it will burn to completion in 15 min only) that's a total of 45 min.Keep the first rope straight, and the two tips of second rope touching one end of first rope. Now lit the other end first rope. So first rope takes 30 min to burn and transmit fire to two ends of second rope which will take 15 min to burn. So total of 30+15= 45 minThe answer is simple... Make a sundial with the match and the rope.CanKeep the ropes in this fashion----------》 《--------- And fire dem with opposite side burning. Now when both fire meet it wil be 15 mints...nw both have 15 mints remaining now bur first remain rope which will take 15 mints more and den burn second remaining rope which will take another 15 mints..so total 45 mints..isn't it simple ..;)The question does not state that the items in the question are required to provide the answer so... Take note of your start time. Take the first length of rope and lay it next to the match. Then, carefully inspect the second length of rope for any defects. If none are found, or even if there are defects present, place the rope on the ground in a straight line facing north to south. Place the first length of rope, which is tired to the match, approximately 5 feet to the north of the second length of rope. **Warning: This step requires quick action on your part** While the match is burning, tie the first length of rope to the match. Take the second length of rope and touch the north end to the match while it is still lit. Grasp the second length of rope in your left hand and spin 360 degrees counter clockwise and throw it as far as you can. Now go have a beer and keep an eye on your watch to see when the 45 minute timeframe has finished.

### ASIC Design Engineer at NVIDIA was asked...

Sep 21, 2010
 design a full adder with 2-1 mux7 AnswersFull Adder can be implemented by two half adder; a half adder can be implemented by a XOR and AND gate. XOR and AND gate can be implemented by 2:1 MUX.full adder can be got by 2 half adders and one OR gate; one half adder can be got by XOR, AND. Therefore, we need only OR, AND, XOR. All these three gates can be got by using MUX.?Can be implemented using 8 Muxes.Show More ResponsesJust need 6 2-to-1 mux. First draw the truth table and try to implement using two 4-to-1 mux, AB as select and Cin/~Cin as input. It should be quite easy. Then break each 4-to-1 mux to three 2-to-1 mux.sum = a xor b xor cin carry = (a xor b) cin + ab You can easiy make XOR, OR AND, NOT using 2:1 mux. So 8 mux ?!?For a full adder, both the SUM and Cout are probably needed, so you need 7 2:1 muxes for each of them, hence 14 muxes. The simplest solution would be a LUT (look up table) in my opinion. If you need to implement gates, then potentially more muxes are needed.if Mux(I1,I2,S) is a 2x1 mux module, then Sum = Mux( (Mux(C,C',B), Mux(C',C,B), A) which requires 3 2x1 mux. Carry = Mux( (Mux(0,C,B), Mux(C,1,B), A) which requires 3 2x1 mux.

### ASIC Design Engineer at NVIDIA was asked...

Mar 12, 2012
 design a combinational circuit which counts the number of 1s in a 7-bit input .7 Answersdepending on resource and timing constraints, you can use a cascade of adders, where you repeatdly add each bit starting with bit 7 to each other. this is slow because the critical path is on the Cin -> Cout. to improve, you can go further and use a 7bit decoder/any arrangement of decoder/column muxer + decoder for a lookup, which is essentially an SRAM array design to store this value so that next time you try to do this computation, you can directly access it. Essentially caching computation result. This requires extra circuitry overhead, but means you only have to compute the sums once.It can be done by two ways Clocked Circuit: Use a one bit adder and a register. Output of the register acts as 2nd input to the adder. Half adder can also be used. Combinational Circuit: We can do it in 4 full adders. For the adders A and B, let 6 bits be the inputs. For adders C, use the 7th bit and Carry of adder A and B. Adder C gives sum as bit 0. For adder D, use carry from all three adders. The sum is bit 1 and carry is bit 2.@Akash, Adder C should be the 7th bit and the sum of adder a and b right? not carryShow More Responses4 full adder is a waste, you can do some optimization to achieve the goal by using two full adder. Of course, you need to use some XOR gates, inverter, AND gates, and MUXesinput [6:0]; output sum; always@(input) begin sum = 0; sum = input[0]+input[1]+input[2]+input[3]+input[4]+input[5]+input[6]; end Lets verilog do the synthesis , this is a vaild combinational circuit design!!!@Akash: the question clearly states COMBINATIONAL circuit. A Clocked circuit is almost always sequentialFor this question you need 2 1-bit full-adder and 1 2-bits full adder. Let's call 7 bits as b0-b6. b0-b2 should be the input of 1-bit FA1 and b3-b5 for FA2. The output from FA1 and FA2 become 2-bits input of FA3 and b6 be the carry-in.

### ASIC Design Engineer at NVIDIA was asked...

Apr 20, 2012
 is there any benefit to use cache if there is read miss for every access?5 Answersno benefityou should probably think a little more about this problem before you just say there's no benefit, thought in most cases I do agree with u. you haven't said anything about write misses, and even though the delay contributed by them isn't as much as a read miss, i'd still mention it as a plus for having a cache, especially in write-back caches where you could potentially have a trace of just writes to locations brought in by your read misses, which means you get n number of cache write hits. Also make sure to mention ways to improve cache hit percentage by either increasing the cache size, changing the associativity of the cache, or by changing the compiler to optimize for the cache type (if we're talkin about an I-cache).Is pattern is such that there would be miss on every access, then there would no benefit of having a cache for both read misses and write misses. If it's a read miss for a block, then there would also be a write miss for that same block. Could you be more specific as to how it would benefit to have cache in such a scenario?Show More ResponsesThe question doesn't say anything about writes. So even if every read is a miss, the cache will help in processor performance by providing write hits. It is very common that we read and update the same variable. For instance a++ or any operation of this sort. So cache is beneficial.Agree with Divya. It means program is operating on the variable in plcae in memory. And also it is like cache flush after every write, else read may see hit again. Also you can think about register spills to memory due to pressure on available physical GPR registers, (compiler spills register to memory and loads that back, if it can't handle due to limited GPRs) . but again agree that there should NOT be read hit again during GPR register re-load. then it means Cache is auto-flushing that cache line after every write on that line. Here, there can be benefit as write on cache is local and flush can happen in happen background, but again debatable and benefit can be found only with modelling with this behavior for given set of applications :)

### ASIC Design Engineer at NVIDIA was asked...

Apr 19, 2012
 Complete the C function (body) that uses recursion to determine if the string is a palindrome4 Answersint isPalin(char *str){ int l = strlen(str); return isPalinHelper(str,0,l-1); } int isPalinHelper(char *str,int i,int j){ if(i#include #include int palindrome(const char* head,const char* tail) { int val; if (head >= tail) return 1; return (palindrome(head+1,tail-1) && (*tail == *head)); } int check_palindrome (const char* str) { const char* tail = str + strlen(str) - 1; const char* head = str; return palindrome(head,tail); } int main(int argc, void* argv[] ) { if (check_palindrome (argv[1])) printf("true\n"); else printf("false\n"); }At my previous solution, please ignore the local variable int val at the palindrome functionShow More Responsesbool palindrome(char* str, int len) { if(len<=1) return true; if(len == 2) if(str[0] == str[1]) return true; return (str[0] == str[len-1]) && palindrome(str+1, len-2); }

### ASIC Design Engineer at Marvell Semiconductor was asked...

May 23, 2014
 How many data bits needed to represent A*B+C, all are 8 bit unsigned5 Answers15bits is enough [0, 2^16-2^8]; 15 bits can represent [0, 2^16-1].(2^8-1)*(2^8-1)+2^8<2^8*2^8=2^16Show More ResponsesI think it should be 17 bits . (8+8) bits for '*', +1 bit for "+'.16 bit. It is because the worst condition is 0xFF*0xFF+0xFF, it is 0xFF*0x100. Result is 0xFF00. One or more comments have been removed. Please see our Community Guidelines or Terms of Service for more information.

### ASIC Engineer Intern at Infinera was asked...

Mar 27, 2014
 How do I connect two designs working at different clock speeds ?4 AnswersDon't knowClock synchronizers. I'm not sure though.pulse synchroniserShow More Responsespulse synchronizer

### ASIC Design Engineer at NVIDIA was asked...

Apr 19, 2012
 Design a divide by 3 counter. Bonus for 50% duty cycle5 AnswersTake 3 dual edge flip flops and create a Johnson's counter. The output will be divide by 3 with exactly 50% duty cycleis dual edge flip flop a kind of cheating?I think this is the fastest way to do it. http://www.onsemi.com/pub_link/Collateral/AND8001-D.PDF Of course, I would not have been able to just innovate this in the blue in the middle of an interview tough...Show More Responsesreg [2:0] counter1 ; reg [2:0] counter2 ; always @ (posedge clk_in) if (enable == 1'b0) counter1 <= 3'b001; else counter1 <= {counter1[1:0],counter1[2]}; always @ (negedge clk_in) if (enable == 1'b0) counter2 <= 3'b001; else counter2 <= {counter2[1:0],counter2[2]}; assign clk_out = (counter1[0]|counter2[0]); One or more comments have been removed. Please see our Community Guidelines or Terms of Service for more information.

### ASIC Design Engineer at NVIDIA was asked...

May 13, 2019
 Suppose you have a 4-bit shift register made using D-type flip flops with a positive Clock-to-Q delay and a hold time of 0. Is it possible for this circuit to have hold time violations? Why?3 AnswersYes, the circuit can still have hold time violation. For a circuit having hold time = 0, it simply means that the data has to remain constant until the clock edge if not after it. So, if the data changes before the clock edge its setup and hold time at once :-)No it can never have hold time violation since clk to q is +ive, that much delay will always be there so data will always remain constant till clk to q time.it may have hold violations if clock skew is more than data path delay

### ASIC Design Engineer at NVIDIA was asked...

Apr 19, 2012
 What would be behavior of a CMOS inverter if the nMOS and pMOS are interchanged? 3 AnswersIt will act as a weak bufferIt will be an inverter with its high output being Vdd-Vtn and low output being Vtp. Thus a bad inverter !!No. Mayank is right. It will act as a weak buffer with the high value being Vdd- Vtn and the low value being Vtp.
110 of 209 Interview Questions