Level: Intern
Round: Full Journey · Type: Multiple Types · Difficulty: 7/10 · Duration: 240 min · Interviewer: Unfriendly
Topics: SystemVerilog, Computer Architecture, UVM, Constraints, Class Inheritance, Polymorphism, Virtual Functions, Assertions, Semaphore, Mailbox, Python, Sorting Algorithms, OOP
Location: San Francisco Bay Area
Interview date: 2026-02-16
2.10 HM Interview:
I was asked about the usage of fork join/join_none/join_any. I had to generate five groups of non-overlapping random memory regions using constraints. The interviewer asked about the components of a testbench (likely testing my UVM knowledge, which I didn't have). I was given a date and asked how to find the palindrome date before that date (explain the approach, no code required). The HM was very helpful and gave me many hints since I had forgotten the syntax of SystemVerilog, and also briefly explained the basic framework of UVM. I asked about the progress of the chip the team was working on. I was told to review SV.
2.16 Round 1:
I was first asked how I tested the projects on my resume. Since one project was OoO, I was asked some related questions (how OoO is implemented, branch predictor, register renaming).
I had to choose a language and write code to output the value of each leaf node of a given binary tree. Then, I was tested on some simple SV constraints (upper and lower limits, weighted distributions). I was then asked some random computer architecture questions: what is VLIW, cache coherence protocols. I hadn't worked with async FIFOs, so I wasn't asked any related questions. During the Q&A, I asked what projects the intern would be involved in.
Round 2:
After the self-introduction, I started the coding questions. First, I implemented an edge detector, then did a lot of SV questions: constraint, class inheritance/polymorphism (mainly testing virtual functions). I wrote assertions to test the edge detector I just wrote, and the probability of a->b generating b (what is the difference between adding or not adding solve before). I felt like I did seven or eight questions in one go, but they were not difficult, and I basically did them all. I even went overtime by a few minutes. During the Q&A, I asked about the work experience at Apple and praised the chip they made.
2.19 Round 3:
I did a few SV questions, which felt much more difficult than the previous two rounds. I was immediately asked if I had used UVM, and then tested on semaphore/mailbox, which I had never learned and couldn't do at all. I had to implement 10 non-repeating random numbers using constraints; 10 random numbers, where only three are repeated twice; simulate drawing playing cards with constraints, random numbers/suits, requiring no duplicates and balanced probability each time; and class virtual function. Finally, I was asked if I could write Python and asked to write a sorting algorithm. I used bubble sort.
During the Q&A, I asked for their opinion on DV.