Friday, December 31, 2010

Test of posting via email


The Mail-to-Blogger feature turns any email account into a blog-posting application. In Settings | Email you can create a Mail-to-Blogger address which you will use to send posts via email to your blog.

welcome you to : http://analogandrfic.blogspot.com

Wednesday, December 29, 2010

15 Toughest Interview Questions (and Answers!)

1. Why do you want to work in this industry?


Bad answer:

"I love to shop. Even as a kid, I spent hours flipping through catalogs."

Tip:

Don't just say you like it. Anyone can do that. Focus instead on your history with that particular industry, and if you can, tell a success story.


Good answer:

"I've always loved shopping, but my interest in retail marketing really started when I worked at a neighborhood boutique. I knew that our clothes were amazing, but that we weren't marketing them properly. So I worked with management to come up with a marketing strategy that increased our sales by 25 percent in a year. It was great to be able to contribute positively to an industry I feel so passionate about, and to help promote a product I really believed in."


2. Tell us about yourself.

Bad answer:

"I graduated four years ago from the University of Michigan, with a bachelor's in biology--but I decided that wasn't the right path for me. So I switched gears and got my first job, working in sales for a startup. Then I went on to work in marketing for a law firm. After that, I took a few months off to travel. Finally, I came back and worked in marketing again. And now, here I am, looking for a more challenging marketing role."


Tip:

Instead of giving a chronological work history, focus on your strengths and how they pertain to the role. If possible, illustrate with examples.

Good answer:

"I'm really energetic, and I'm a great communicator. Working in sales for two years helped me build confidence and taught me the importance of customer loyalty. I've also got a track record of success. In my last role, I launched a company newsletter, which helped us build on our existing relationships and create new ones. Because of this, we ended up seeing a revenue increase of 10 percent over two years. I'm also very interested in how companies can use web tools to better market themselves, and would be committed to building on your existing platform."


3. What do you think of your previous boss?



Bad answer:

"He was completely incompetent, and a nightmare to work with, which is why I've moved on."



Tip:

Remember that if you get the job, many of the people interviewing you will someday be your previous bosses. The last thing they want is to hire someone they know will badmouth them. Instead of trashing your former employer, stay positive, and focus on what you learned from him (no matter how awful he really was).



Good answer:

"My last boss taught me the importance of time management, didn't pull any punches, and was extremely deadline-driven. His no-nonsense attitude pushed me to work harder, and to meet deadlines I never even thought were possible."


4. Why are you leaving your current role?

Bad answer:

"I can't stand my boss, or the work I'm doing."

Tip:

Again, stay away from badmouthing your job or employer. Focus on the positive.

Good answer:

"I've learned a lot from my current role, but now I'm looking for a new challenge, to broaden my horizons, and to gain a new skill set--all of which I see the potential for in this job."


5. Where do you see yourself in five years?

Bad answer:

"Relaxing on a beach in Maui," or "Doing your job."

Tip:

There's really no right answer to this question, but the interviewer wants to know that you're ambitious, career-oriented, and committed to a future with the company. So instead of sharing your dream for early retirement, or trying to be funny, give an answer that illustrates your drive and commitment.

Good answer:

"In five years I'd like to have an even better understanding of this industry. Also, I really love working with people. Ultimately, I'd like to be in some type of managerial role at this company, where I can use my people skills and industry knowledge to benefit the people working for me, and the company as a whole."


6. What's your greatest weakness?

Bad answer:

"I work too hard," or for the comedian, "Blonds."

Tip:

This question is a great opportunity to put a positive spin on something negative, but you don't want your answer to be a cliche--joking or not. Instead, try to use a real example of a weakness you have learned to overcome.

Good answer:

"I've never been very comfortable with public speaking--which, as you know, can be a hindrance in the workplace. Realizing this was a problem, I asked my previous employer if I could enroll in a speech workshop. I took the class, and was able to overcome my lifelong fear. Since then, I've given several presentations to audiences of over 100 high-level executives--I still don't love it, but no one else can tell!"


7. What salary are you looking for?

Bad answer:

"In my last job I earned $35,000--so now I'm looking for $40,000."

Tip:

"If you can avoid it, don't give an exact number. The first person to name a price in a salary negotiation loses. Instead, reiterate your commitment to the job itself. If you have to, give a broad range based on research you've conducted on that particular role, in your particular city."

Good answer:

"I'm more interested in the role itself than the pay. That said, I'd expect to be paid the appropriate range for this role, based on my five years of experience. I also think a fair salary would bear in mind the high cost of living here in New York City."

8. Why should I hire you?

Bad answer:

"I'm the best candidate for the role."

Tip:

A good answer will reiterate your qualifications, and will highlight what makes you unique.

Good answer:

"I've been an executive assistant for the past ten years--my boss has said time and time again that without me, the organization would fall apart. I've also taken the time to educate myself on some of the software I regularly use (but didn't really understand the ins and outs of). I'm an Excel whiz now, which means I can work faster, and take over some of what my boss would traditionally have had to do herself. What's good enough for most people is never really good enough for me."

9. What is your greatest failure, and what did you learn from it?

Bad answer:

"I never finished law school--and everything that's happened since has taught me that giving up, just because the going gets tough, is a huge mistake."

Tip:

You don't want to highlight a true major regret--especially one that exposes an overall dissatisfaction with your life. Instead, focus on a smaller (but still significant) mishap, and how it has made you a better professional.

Good answer:

"When I was in college, I took an art class to supplement my curriculum. I didn't take it very seriously, and assumed that, compared to my engineering classes, it would be a walk in the park. My failing grades at midterm showed me otherwise. I'd even jeopardized my scholarship status. I knew I had to get my act together. I spent the rest of the semester making up for it, ended up getting a decent grade in the class. I learned that no matter what I'm doing, I should strive to do it to the best of my ability. Otherwise, it's not worth doing at all."

10. How do you explain your gap in employment?

Bad answer:

"I was so tired of working, and I needed a break," or "I just can't find a job."

Tip:

Employment gaps are always tough to explain. You don't want to come across as lazy or unhireable. Find a way to make your extended unemployment seem like a choice you made, based on the right reasons.

Good answer:

"My work is important to me, so I won't be satisfied with any old job. Instead of rushing to accept the first thing that comes my way, I'm taking my time and being selective to make sure my next role is the right one."

11. When were you most satisfied in your job?


Bad answer:

“I was most satisfied when I did well, and got praised for my work.”

Don’t give vague answers. Instead, think about something you did well and enjoyed that will be relevant at this new job. This is an opportunity for you to share your interests, prove that you’re a great fit for the job and showcase your enthusiasm.

Good answer:

I’m a people person. I was always happiest — and most satisfied — when I was interacting with customers, making sure I was able to meet their needs and giving them the best possible customer experience. It was my favorite part of the job, and it showed – I was rated as “Good or Excellent” 95% of the time. Part of the reason I’m interested in this job is that I know I’d have even more interaction with customers, on an even more critical level."

12. What did you like least about your last job?


Bad answer:

“A lack of stability. I felt like the place could collapse around me at any time.”

Try and stay away from anything that draws on the politics, culture or financial health of your previous employer. No matter how true it might be, comments like these will be construed as too negative. Also, you don’t want to focus on a function that might be your responsibility in the next role. So think of something you disliked in your last job, but that you know for sure won’t be part of this new role.

Good answer:

“There was nothing about my last job that I hated, but I guess there were some things I liked less than others. My previous role involved traveling at least twice a month. While I do love to travel, twice a month was a little exhausting — I didn’t like spending quite so much time out of the office. I’m happy to see that this role involves a lot less travel.”

13. Describe a time when you did not get along with a co-worker.


Bad answer:

“I’m easy to get along with, so I’ve never had any kind of discord with another coworker.”

Interviewers don’t like these types of ‘easy out’ answers. And besides, they know you are probably not telling the truth. Think of a relatively benign (but significant) instance, and spin it to be a positive learning experience.

Good answer:

“I used to lock heads with a fellow nurse in the INCU ward. We disagreed over a lot of things — from the care of patients to who got what shifts to how to speak with a child’s family. Our personalities just didn’t mesh. After three months of arguing, I pulled her aside and asked her to lunch. At lunch, we talked about our differences and why we weren’t getting along. It turns out, it was all about communication. We communicated differently and once we knew that, we began to work well together. I really believe that talking a problem through with someone can help solve any issue.”


14. What motivates you?


Bad answer:

“Doing a good job and being rewarded for it.”

It’s not that this answer is wrong — it’s just that it wastes an opportunity. This question is practically begging you to highlight your positive attributes. So don’t give a vague, generic response — it tells them very little about you. Instead, try and use this question as an opportunity to give the interviewer some insight into your character, and use examples where possible.

Good answer:

“I’ve always been motivated by the challenge of meeting a tough deadline — in my last role, I was responsible for a 100% success rate in terms of delivering our products on time and within budget. I know that this job is very fast-paced, and deadline-driven — I’m more than up for the challenge. In fact, I thrive on it.”

15. How would your friends describe you?


Bad answer:

“I’m a really good listener.”

While being a good listener is a great personality trait, your employer probably doesn’t care all that much. It’s unlikely that they’re hiring you to be a shoulder to cry on. You’ll want to keep your answer relevant to the job you’re interviewing for — and as specific as possible. If you can, insert an example.

Good answer:

“My friends would probably say that I’m extremely persistent — I’ve never been afraid to keep going back until I get what I want. When I worked as a program developer, recruiting keynote speakers for a major tech conference, I got one rejection after another – this was just the nature of the job.But I really wanted the big players — so I wouldn’t take no for an answer. I kept going back to them every time there was a new company on board, or some new value proposition. Eventually, many of them actually said “yes” — the program turned out to be so great that we doubled our attendees from the year before. A lot of people might have given up after the first rejection, but it’s just not in my nature. If I know something is possible, I have to keep trying until I get it."

Tuesday, December 21, 2010

Revisit of OP AMP Design

Revisited OP AMP design in a current project to design a single-ended OP amp with low power and narrow bandwidth. Below is a few tips summarized from the design:

1. Open loop is always stable.

2. Maximum loop gain, loop gain, and gain margin.
   Loop gain T=F*A,wk:corresponding to phase margin; F=0 for open loop, F=1 for a unity gain source follower (the worst case for stability);
Maximum loop gain, corresponding to 180 phase; phase margin =0;
gain margin = maximum loop gain - loop gain


3. Current mirror
    cascoded current mirror to improve current source impedance

4. high gain is achieved with telescopic or folded cascode topology;

5. Common mode feed back makes no sense for single-ended output

6. Input offset voltage,CMRR and PSRR to simulate with mismatch

7. Compensation of Op-amp: to move the location of poles.

Friday, December 10, 2010

Simulation of ft and gm/Id in Cadence

1.Simulation of ft

The transistor ft is simulated with current gain in ac simulation.  Below is a simple schematic to simulate ft.


Plot the current gain:

dB20(i("NM0:d" ?result "ac-ac")/i("NM0:g" ?result "ac-ac"))

Or you can use the results browser under "Tool" menu to show the results:
1. Open the Results Browser
2. Select the output data directory, raw/psf/...
3. Select the results, ac-ac
4. Right mouse button on NM0:d and select calculator
5. Right mouse button on NM0:g and select calculator
6. Select divide, "/" from the calculator keypad
7. Select, dB20 from the "Math" functions


Netlist:
simulator lang=spectre


global 0

parameters ICE=100u VCE=5

//

// these model files should be available in the samples directory

//

include "./models/NPNlower.scs"

include "./models/cornerMos.scs" section=TNTP



V0 (net014 0) vsource dc=VCE type=dc



// MOSFET ft

// NOTE: the element instance names have been changed

// the default names are shown in the bjt section

// IREFERENCE --> 0V voltage source

// IFEEDBACK --> current-controlled, current source

IIN (net014 net9) isource dc=ICE mag=1 type=dc

IREFERENCE (net6 0) vsource dc=0 type=dc

IFEEDBACK (net9 0) cccs gain=1.0 probe=IREFERENCE

NM0 (net014 net9 net6 0) nmos24 w=24u l=1.5u m=10



// BJT ft

IIN_BIPOLAR (net014 net025) isource dc=ICE mag=1 type=dc

IREF_BIPOLAR (net012 0) vsource dc=0 type=dc

IFDBK_BIPOLAR (net025 0) cccs gain=1.0 probe=IREF_BIPOLAR

Q0 (net014 net025 net012 0) NPNlower



ac ac start=1 stop=100G annotate=status

save NM0:g NM0:d Q0:c Q0:b 
2.Simulation of gm/Id

the simpliest way of simulate it is:

Run DC analysis. Sweeping variable is Vgs (just connect Vgs to Vdc and sweep Vdc voltage).


Then using calculator take IS of drain or drain current. Click "Special function" and select "deriv"

Then click "x<->y", then "/"(devide) and "erplot"

or you can refer to:

http://www.eecs.tufts.edu/~ryun01/gmid_ruida.pdf

Skill and Ocean Scripts Tutorial

Ocean Turorial:

1. a good beginner's guide: http://homerreid.ath.cx:81/misc/ocean/index.shtml

Some tips:
(1)

The default behavior of the Spectre simulator is to save the values of node voltages, but not device currents, after an analysis. This behavior can be changed with the save statement. This statement has a number of different usage models, all of which are demonstrated in the following:

ocean>  save('v "vdd" "outp" "outn")
"outn"
ocean>  save('i "fdopamp/M5/D" "fdopamp/M6/D")
"fdopamp/M6/D"
ocean>  save('allv)
allv
ocean>  save('alli)
alli
ocean>  save('all)
all
The first two examples save lists of particular node voltages or device currents, according as the first argument to the save call is 'v or 'i. The third and fourth examples save all node voltages and all device currents, while the last example saves all node voltages and all device currents.
The save command obviously corresponds to the .out statement in Celerity, but has the added feature that output variables saved in one analysis can be removed from a subsequent analysis. In Celerity, once you declare a .out, it's there until you change netlists, which can be inconvenient. For example, you may want to save a large ' number of outputs for a quick DC temperature sweep, but then you don't want all those outputs taking up memory and disk space when you later want to run a long transient analysis. So this is one (the only?) way in which ocean is superior to Celerity.
Having used one of the above lines to tell the simulator to save the device currents in which we're interested.

(2) view DC operation points:

ocean>  selectResults('dcOpInfo)
stdobj@0x1979408
ocean>  report(?name "/fdopamp/M1")

Type : bsim3v3
/fdopamp/M1     
 cdg= -1.00089e-13     cgb= -9.45704e-15     ids= 9.99962e-05 
 vgs= 0.854671         vds= 2.57445          vbs= -0.645329   
 vth= 0.694184         vdsat= 0.165582       gm= 0.000997972 
 gds= 8.65771e-07      gmbs= 0.000205937     betaeff= 0.00683843  
 cjd= 3.40119e-14      cjs= 4.54965e-14      cgg= 2.94677e-13 
 cgd= -7.79803e-15     cgs= -2.77422e-13     gmoverid= 9.9801  
 cbg= -4.06171e-14     cdd= 7.7983e-15       cds= 1.11609e-13 
 cdb= -1.93184e-14     csg= -1.53971e-13     csd= 3.85201e-19 
 css= 1.82945e-13      csb= -2.89743e-14     pwr= 0.000257435 
 cbd= -6.53294e-19     cbs= -1.71319e-14     cbb= 5.77497e-14 
 ron= 25745.5          aid= 9.99962e-05      ibulk= -5.53649e-18
 reversed= 0           region= 2             type= 0   

t
ocean> 

ocean>   report(?name "/fdopamp/M1" ?param "vgs")

Type : bsim3v3
/fdopamp/M1     
         vgs    = 0.854671        

t
ocean>  report(?param "vgs")

/fdopamp/M7     
         vgs    = -1.19637
/fdopamp/M8     
         vgs    = -1.19637        
...
...
/fdopamp/M13    
         vgs    = 0.567388        
/fdopamp/M19    
         vgs    = 0.634848        
t 
report(?type "bsim3v3")

Type : bsim3v3
/fdopamp/M7     
     cdg  = -2.02344e-13    cgb = -4.05936e-14   ids = 6.59845e-05     
...
...
     reversed    = 0        region    = 2        type    = 1
t
ocean>  
  • dataTypes(), which prints a list of all possible values you can assign to the ?type parameter in a call to report(), and
  • outputs(), which prints a list of all possible values you can assign to the ?name parameter in a call to report().
(3) invoke ocean from command line
Invoke ocean from the UNIX command line 
with IO redirection. The command line syntax I recommend is:
 % ocean < mycirc.ocn > /dev/null &
or, if you want to save the simulator's text output,  
 % ocean < mycirc.ocn > mycirc.log 2>&1 &
Even better is
 % bsub -i mycirc.ocn -o mycirc.log ocean
This farms out your job to a machine in a server farm.
(You have to have LSF set up in your domain for this to work.)
Then, having run the ocean job as a background process, you can monitor its progress with % tail -f mycirc.out, where mycirc.out is the name of the file you opened with outfile in your ocean script.
 
(4) an example:
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ; oneshot.ocn -- ocean script to analyze delay     
 ;             -- and pulse length of a one-shot   
 ;             -- multivibrator
 ;             --
 ; Homer Reid  -- 6/19/2002
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ; boilerplate code: create output file, print 
 ; greeting message, set some global variables 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 of=outfile("./oneshot.out" "w")
 fprintf(of "\n\n** oneshot.ocn (Homer Reid 6/2002)\n\n")
 drain(of)
 
 VDD=3.3
 CaseList=list("c0" "c1" "c2" "c3" "c4"
  "c5" "c6" "c8" "c9" "c10" "c11" "c12")
 TempList=list(-40 25 120)
 

In this section we're just handling the trivial stuff: creating the output file, writing a greeting message, and initializing some global variables. If we wanted to restrict our case analysis to only a couple of cases, or add more temperatures, we would do it by modifying the CaseList or TempList lists we define here.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ; specify netlist and results directory
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 simulator('spectre)
 dir="/home/homer/circuits/emerald/spectre/oneshot"
 cktfile=strcat(dir "/spectre/schematic/netlist/netlist")
 design(cktfile)
 resultsDir(dir)
 

Here we're telling the simulator where to find the circuit netlist and where to write the results. In the startc0.ocn file, which we used in doing console-based simulations, we used relative path specifications (i.e. referenced from the current working directory) in the design and resultsDir commands. That's fine for console-based interactive stuff, but for batch-mode scripts it's better to use absolute paths. For one thing, you might not always be sure of the current working directory in which you're running, and moreover you may eventually want to fire off ten or twelve versions of a simulation, each with slightly different results directories, so it's good to get in the habit of being explicit.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ; loop over process and temperature
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 Earliest=1.0
 Shortest=1.0
 Latest=0.0
 Longest=0.0
 foreach( Case CaseList
  foreach( Temp TempList
 

Here we're initiating our double loop. We use the foreach structure to assign Case and Temp sequentially to each value in their respective lists.
;
   ; Set model file and simulation temperature.
   ;
   part1="$ICDS_CKTSIM_SW/lib/$ICDS_TECH/sim/spc/"
   part2="$ICDS_SIM_DATECODE/$ICDS_TECH.scs"
   model1=strcat(part1 part2)
   modelFile( list(model1 Case) )
   temp(Temp)
 

At the beginning if each iteration of the loop, we use the modelFile and temp commands to set the process and temperature for this simulation.
;
   ; Run transient analysis and find start time 
   ; and length of pulse.
   ;
   analysis('tran ?stop 3u ?maxstep 1n) 
   run()
   selectResults('tran)
   trise=cross( v("m1g") VDD/2 1 'rising)
   tfall=cross( v("m1g") VDD/2 1 'falling)
   plength=tfall-trise
   if( (trise < Earliest) Earliest=trise )
   if( (trise > Latest)   Latest=trise )
   if( (plength < Shortest) Shortest=plength ) 
   if( (plength > Longest) Longest=plength ) 
   fprintf(of "case %3s, temp %3d: ",Case,Temp)
   fprintf(of "pulse comes at ")
   fprintf(of "%7.3f ns ",trise*1.0e9) 
   fprintf(of "and lasts for ")
   fprintf(of "%7.3f ns\n",plength*1.0e9)
   drain(of)
 
  ) ; foreach (Temp TempList)
 ) ; foreach (Case CaseList)
 

This is heart of the loop. We run a transient analysis out to 3 us, then grab the results with selectResults. We use the cross function (see below) to get the times at which the pulse rises and falls. Then we check if the pulse delay or length are the longest or shortest we've seen so far (and save if so) and log the results to the output file.
fprintf(of "Earliest / Latest:  ")
 fprintf(of "%7.3f / " Earliest*1e9)
 fprintf(of "%7.3f ns\n" Latest*1e9)
 fprintf(of "Shortest / Longest: ")%
 fprintf(of "%7.3f / " Shortest*1e9)
 fprintf(of "%7.3f ns\n" Longest*1e9)
 fprintf(of "\n\nThank you for your support.\n\n");
 close(of)
 

We print the final results and close out with the all-important Bartles & Jaymes Wine Coolers parting salutation.
 
 Invoke ocean from the UNIX command line 
with IO redirection. The command line syntax I recommend is:
 % ocean < mycirc.ocn > /dev/null &
or, if you want to save the simulator's text output,  
 % ocean < mycirc.ocn > mycirc.log 2>&1 &
Even better is
 % bsub -i mycirc.ocn -o mycirc.log ocean
This farms out your job to a machine in a server farm.
(You have to have LSF set up in your domain for this to work.)
Then, having run the ocean job as a background process, you can monitor its progress with % tail -f mycirc.out, where mycirc.out is the name of the file you opened with outfile in your ocean script.

SKILL tutorial:

1. A goole book: CAD Scripting Languages
http://books.google.com.sg/books?id=v8l72QBDzD0C