Full Custom IC One Chip 6

2023. 7. 18. 10:47[Harman] 세미콘(semiconductor) 아카데미-반도체설계/Full Custom IC One Chip 설계

728x90

메탈과 메탈 사이에는 어떠한 기생성분이 생기는지 공정사에서 검사.

공정사에서 LPE파일을 제작 -> 이 파일을 가지고 우리가 그린 Layout의 내부 기생성분들이 어떻게 되어있는지 등을 확인하 수 있다.

 

위 기능을 통해 layout에서 생성되는 기생성분들을 확인.

 

Assura - Run Quantus

 

Output : Extracted View를 선택

 

GND로 설정하여 캐패시터의 기준점을 잡아줘야 한다. / Enable HRCx를 체크 해제 해야 한다.

 

successfuly

 

RCX0가 생성된 것을 볼 수 있다.

 

RCX0를 통해 내부 저항이나 생성되는 기생성분들을 확인할 수 있다.

 

이제 Schematic에서 시뮬레이션으로 들어가서 환경설정을 해주면 된다.

 

 

시뮬레이션의 우선순위를 정할 수 있다. 우선순위는 space를 기준으로 앞에있는것이 우선순위가 더욱 높다.

 

우선순위를 RCX0를 해준다. 만약 RCX0가 없다면 Schematic이 실행된다.

 

에러발생. 에러는 처음만든 RCX0에서 오류가 있기 때문이다.

 

처음에 만든 RCX0는 Include Model로 되어있어 X / Do Not Include를 해줘서 RCX에서 생성되는 기생성분의 모델명을 없애줘야 한다. (Include Model을 해주면 생성되는 기생성분의 모델명이 생겨버림)

 

RCX가 생성된 것을 볼 수 있다.

 

RCX1로 우선순위 변경

 

AC_gain과 RCX1을 시뮬레이션 돌려본 결과 (정확한 시뮬레이션 결과X)

 

기존의 넷리스트 / 추가된 넷리스트

 

AC_SWEEP에서 값이 변경되는 것을 확인할 수 있다.

 

초기에 시뮬레이션을 돌려 오차값을 없애도 포스트 레이아웃에서 시뮬레이션을 하면 나중에 다시 오차값이 발생한다. (AC_trans)

 

초기 DC TRANS / RCX1을 적용한 그래프 비교

 


 

AC_SWEEP   하늘색: 기본 시뮬레이션 / 파란색: RCX1(POST layout)

 

AC_trans 빨간색 : 기본 시뮬레이션 / 초록색 : RCX1(POST layout)

 

DC_Trans_cap 초록색: 기본 시뮬레이션 / 붉은색: RCX1(POST layout) 

 

 


기존 Layout / DRC -> LVS ->  RCX시켜준 후의 모습

 

내부 기생성분들을 확인할 수 있다.

 

맨위 : fingering 적용하지 않은 것 / 중간 : 기본 시뮬레이션 / 맨밑 : fingering 적용 시킨 것

 


 

기본 Full Custom IC Design 과정

 

공정회사에는 GDS file을 보내야 한다. 공정회사에선 GDS파일을 가지고 Layout을 뽑아낸다.

 

GDS File Export

 

GDS파일 내보내기 / File -> Export -> Stream...

 

스트림으로 layout시킬 파일 선택

 

90나노 공정을 Technology Library로 선택

 

APLLY를 통해 내보낸다.

 

이제 새로운 Library를 생성하여 새로 생성한 라이브러리에 GDS파일을 저장해본다.

 

이제 Export시킨 파일을 Import시켜야 한다.
Import시킬 파일을 선택하여 Apply하면 된다.

 

 


VCO : 전압을 이용해서 내가 원하는 주파수 발진기를 만드는 것. V에 따라서 주파수가 결정된다.

 

통신칩에서 주파수 합성이 가장 중요. PLL은 페이저를 맞추는 것.
Phase가 틀어진 것을 VCO를 통해 잡아준다. 기준주파수와 펄스를 만들어주는 Detector와의 틀어진 주파수를 VCO가 잡아주는 역할을 한다. 아날로그 파트에서 PLL은 매우 중요하다. / DCO : 디지털 코드를 이용해서 주파수를 조정하는 개념

 

VCO의 디자인 이슈

 

 

단점 : Large error 실제 칩을 만들기가 봅잡하다. 이 단점을 절충한게 Ring oscillator
앞과 뒤의 오차값을 이용해 Ring oscillator를 만든다. 오실레이터에도 VCO가 들어가 있다.

 

전압컨트롤을 밑에서 할 수 있게 한다. KVCO : 튜닝 range - 이 공식을 이용해 특정한 범위를 지정할 때 사용

 

우측은 버퍼 / VCO에서 버퍼는 타이밍을 맞출 떄 사용
A와 B의 게이트 딜레이를 고려해서 C앞에 버퍼를 연결해 위의 게이트 딜레이를 해소시켜야 한다. / 버퍼에선 PMOS, NMOS한개씩만 들어가면 된다.   -> 이 버퍼를 이용해 타이밍을 맞출 수 있다.

 

해당부분은 Current Mirror

해당 ring vco의 버퍼 개념은 옛날 논문에서 나왔다. -> 버퍼의 개념을 사용하기 때문에 설명.

 

 

이제 RING VCO를 만들기위해 라이브러리를 하나 만들어준다.
만든 라이브러리에 이전에 만든 Fingering시킨 인버터를 해당 라이브러리에 복사해준다.

 

해당 부분이 RING CVO의 버퍼

 

버퍼에 해당하는 파일을 만들기위해 복사해준다.

 

BUF를 만들어주고 가장먼저 심볼을 바꿔 줘야한다.

 

인버터의 버블을 제거해주고 버퍼로 심볼을 수정해준다.

 

그다음 인버터의 Schematic을 2개 연결하여 반전된 OUT을 재반전시켜준다.
이제 버퍼를 만들었으니 MAIN Schematic이 필요

 

VCO의 Schematic을 만들어주기 위해 Cell View를 해서 만들어준다.

 

만든 셀에 NAND GATE3개 + 인버터 1개를 만들어준다.

 

래치는 위와같이 피드백이 된다. 피드백 : 발진, 이전의 데이터가 현재에도 유지되게 한다. 이전의 출력이 현재에도 이어져 출력되게 할 수 있다. 

 

RING VCO의 위에는 PMOS

 

RING VCO의 아래에는 NMOS

 

NAND GATE의 PMOS, NMOS를 복사해서 VCO에 붙혀준다.
PMOS와 NMOS를 연결해준다.

 

Current mirror에서 해당 부분은 전압을 조절해서 받는입장

 

전체적인 Schematic

 

전원단 핀을 만든다.

 

VDD, VC

 

Net Highlighting을 통해 잘 연결되어있는 것을 확인할 수 있다.

 

 

OUTPUT은 되먹임되는 곳과 OUT을 선택

 

trans를 선택하여 30n입력

 

발진시킬 곳을 선택

 

위의 타이밍도의 과정을 반복시키기 위해 사용

 

 

 

오른쪽의 파형이 더욱 각진 이유 : 버퍼를 사용했기 때문

 

 

위의 파형에서 값이 linear하게 변하는 것을 voltage gain이라 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Jitter : 타임 도메인 영역 / Phase noise : 주파수 도메인 영역

 

 

 

 

 

PSS의 결과값 / 안정적인 주파수를 낼 수 있는 주파수가 5GHz

 

 

Frequency : 5G / Oscillator : node+ : OUT, node- : gnd! / harmonic : 5

 

Results - Direct Plot - Main Form

 

이 상태에서 OUT을 누르게 되면 밑의 그래프가 출력된다.

 

현재 출력이 5.0141GHz로 안정적이다.

PSS는 주파수의 조절 진동 등이 위상이 튀는 행위들만 검출을한다. 튀는 높이값을 측정하기때문에 많을 수록 -값으로 나타나게되고 빈도가 낮다면 0db쪽으로 나타나게 된다.

 


 

 

 

 

 

설정한 후 Plot을 누른다.
1MHz일때와 10MHz일때를 측정해야 한다. / frequency의 동작점이 어느정도의 범위를 벗어나는지 확인하기 위해 1MHz일때와 10MHz일때를 측정한다.

 


  • Eye Diagram

 

 

 

 

center eyes X

 

center eyes O

 

Eye Period : 2n

 

주파수가 5GHz가 나오는 것을 확인할 수 있다.

 

 

 

 

 

GUI창을 통해서도 Eye Diagram을 설정할 수 있다.

 

 


  • 버퍼의 Layout

둘 사이의 간격을 붙여줘야 한다.
또한 중간에 메탈을 연결해줘야한다.
중간을 연결하고 겹쳐지는 OUT과 IN을 없애줘야한다.

 

중간 사이사이에 메탈을 연결해준다,

 

인버터 3개 + 버퍼 layout
기존 layout에서 명기한 wire name은 불러오면 영향을 받지 않는다. 그래서 새로 wire name을 입력해줘야 한다.