a landmark day
- After having “clean (and vacuum) the apartment” for well over a month on my todo list, I am proudly striking it out today.
- Running perilously short on food supplies for 10 days…I finally stocked up for atleast a month today. My refrigerator was empty except for a bottle of milk (and two eggs, which will possibly remain there for another month or two)
- My bath’s shower head was broken 3 weeks ago. I unscrewed it, kept it aside and was using the water directly from the pipe without shower head for bath. Not fun, I know. And yes, I bought new one today. (side note: this happened with me back in Pakistan as well, and I didn’t replace it for 8 months)
- Not only my refrigerator was empty…I had no sugar for past three days so all tea/coffee were consumed unsweetened. Got a jar today.
- I haven’t registered with a GP (doctor) since moving in this area…been over 6 months. Woke up early to do this as well…but when I went there they told me they don’t register on weekends. Not sure when am I going to make a second attempt.
- Also, I changed the bedsheets today..after..err..I don’t know the last time I did that
So yes, a very once-in-a-lifetime kind of a day which I hope never comes again
Typical ASIC Workflow
Recently I was tasked to recode a very small piece of hardware with some changes that will potentially optimize its present state. What seemed like a pretty easy and straightforward task turned out to be a nightmare for two days. Since it wasn’t critical I was hellbent on doing it all myself without asking anyone for help. Although it was a very small hardware unit, it involved the complete ASIC flow, almost.
I started by looking at the current operations performed by the module and made a simplistic block diagram of what is going on within it. The task was basically to reduce the area of and make it work at some new frequency i.e. the operation was required to be performed in certain nanoseconds. So, I wrote the code again from scratch with the changes in mind to improve its performance and then it was time to test it. Usually writing code is the easy part of ASIC design if you know what to do. But will it get done as you want it is a different game altogether. (more…)
Six Month Review
Exactly six months ago was my first ever day at a full time job. I was understandably nervous, hardly knew anything about working in a big company and had no idea about how to tackle seemingly huge design issues which I was introduced to in the first week. I wasn’t worried about the latter because that is exactly what I came here to learn.
I am probably slotted to have a 6-month review meeting with my manager soon, but I am not sure if that will happen or not because I did have one 3-month review which wasn’t really planned. And the fact that I’ve had one review meeting, I am absolutely comfortable at the thought of having the second one, if that happens now. One reason for that is I am quite satisfied with my performance so far, not top notch (I can certainly do better), but good enough. Secondly, and more importantly I am lucky to have a really cool manager, who thought I was doing well at our earlier review.
Regardless of what the company review holds, I did a quick self-review to see how far I’ve come in these last 6 months. Result: I’ve covered a lot of ground. From having absolutely no idea about environment variables in Linux and not knowing that merely selecting by mouse copies the item and middle click pastes it, I now feel at home using Linux, so much that I hardly use my Windows machine at work. Having never scripted before, now I am quite proficient in Python, know that TCL is a pain in the ass and okay working in Perl. So much so that whenever I see repetition in anything I write a quick Python script to do the work for me. Obviously, task management and scheduling is done there too.
Now the major part of the job is hardware design in VHDL and within a day after starting proper design, I wrote more VHDL code than I did in my entire time at uni. I’ve learned some of the tricks the pros use to optimize the design, although there is a long long way to go here. I’ve also been given various design parts with some tentative deadlines, which makes me feel good.
Although I have come a long way in these six months, I also have a list of things which I specifically want to learn and excel in. It will take time, but I have a feeling I am on track.
I cannot thank Allah enough for making this easy, fun, informative and exactly as I wanted (a dream job).
Joys of being an ASIC Designer
After spending hours and hours of deciphering a set of specs written by someone else you start writing code for hardware that will perform a certain set of operations. Usually the specs contain inputs and outputs and a lot of details of how things should be processed in between. Translating the pseudo-code in hardware is not an easy task. Usually something is missing in that doc.
Anyway, you code and code, and keep looking at the number of lines of code you’ve reached while adding those shitty comments which not even you can understand after an hour. Then goes an attempt to compile the code and obviously when there are hundreds of lines of hardware code it can’t compile in the first attempt. It shouldn’t. Then pops up a list of errors which in many cases is not that helpful to sort out the problems. Code finally compiles after fixing those bugs. Time for a celebratory break. Coffee?
Quickly write a test environment (testbench) to make sure the output of your hardware is correct. Trust me, it won’t be. You’ll be lucky if you’re getting an output. If and when you do get an output signal, it obviously won’t be correct because you missed something small in your hardware. Good thing that these days you can code a hardware and simulate it. It can take hours (or days) to find those issues and finally come up with the correct output after testing for all corner cases. This is one of the moments you’d want to savour being an ASIC designer. It doesn’t come very often. Go ahead and celebrate because tough times lie ahead.
To be continued…
