'Package'에 해당되는 글 3건

  1. 2015.08.05 Package parasitic SPICE model extractor from IBIS file
  2. 2013.09.17 최근 고속 칩 트랜드 - Solving SI/PI issue on chip(package) level
  3. 2011.12.02 패키지와 커넥터로 보는 Return Path

Package parasitic SPICE model extractor from IBIS file

도구/기타 2015. 8. 5. 22:00

IBIS 파일 안에는 디바이스(component)의 버퍼 정보 외에도 각 핀들에 대한 패키지 기생 정보 즉 패키지의 R, L, C 값에 대한 정보가 담겨 있다. 보통 시뮬레이터들은 이 정보를 활용하여 시뮬레이션을 할 수 있다. 시뮬레이션에 패키지 정보를 포함시킬 수도 있고 뺄 수도 있다. 보통 핀에서 프로빙을 할 경우에 문제가 되지 않지만 다이(die)에서 신호 프로빙을 할 경우, 패키지 정보가 포함 되지 않는 시뮬레이터들이 많다. 이 경우 정확도를 위해 패키지 정보를 포함 시키려면 불편함을 감수하면 패키지 기생 값을 R,L,C 모델로 스키메틱에서 그려야 하는 수고를 해야한다. - Hyperlynx 같은 툴은 사용자의 추가 노력 없이 핀에서 프로빙 할 지 다이에서 할 지 고를 수 있는 옵션이 있어서 편하다. 

아무튼, 핀 수가 좀 많으면 이것을 일일이 그리는 것도 은근히 시간 많이 걸리고 귀찮다. 부품 평균 값으로 쓸 수도 있지만 그것은 어디까지나 평균 값인 것이고 핀에 따라서 편차가 클수도 있으므로 개별 핀의 기생 값을 사용하는 것이 바람직할 것이다. 암튼, 매뉴얼로 값 넣다 보면 실수하기도 쉽고... 귀찮다. 그래서, IBIS 파일에서 핀의 패키지 기생 R, L, C 값을 읽고 자동으로 SPICE 모델을 만들어 주는 툴을 만들어 보았다.


rlc spice model generator from ibs 150802.xlsm


그냥 급하게 만들어 본 것이라 제약 사항이 좀 있다.

*.ibs 파일의 형식은 windows 형식(LF+CR) 텍스트 파일이어야 한다. UNIX 형식(LF)은 오류가 난다. 일부 *.ibs 파일은 유닉스 형식을 저장되는 경우가 있으므로 확인해야 한다. 워드로 읽어서 저장할 때 윈도우 형식으로 저장하면 쉽게 형식을 바꿀 수 있다. 그 외에 2번 실행시 파일 저장 안되는 오류 등 몇가지 버그들이 있지만 사용에 큰 지장은 없다. 필요하다면 VBA 소스 코드를 수정해서 사용하면 된다.

부가적으로 SPICE 모델 추출 외에 각 핀의 패키지 내 wire impedance와 propagation delay 리스트를 작성해 준다.

아래는 사용 과정이다.

먼저, 탐색기에서 rlc spice model generator form ibs 150802.xlm를 클릭하여 실행한다.


매크로 보안 경고가 뜨면 '콘텐츠 사용'을 눌러 프로그램을 실행 시키다.


IBIS 파일을 찾는 파일 열기 다이얼로그가 열리면 모델 추출을 원하는 *.ibs 파일을 찾아서 연다.


프로그램이 즉시 실행되어 ZnTD라는 시트가 생성되며, 각 핀의 패키지 impedance와 propagation delay 가 자동 계산되어 리스트로 보여진다.


첫 번째 시트(Sheet1)를 클릭하면 방금 읽어 들인 IBIS 파일이 보여진다.


이제 방금 엑셀 매크로를 실행한 폴더를 다시 보면 IBIS 파일 안에 정의된 부품 이름으로 된 폴더가 생긴 것을 확인할 수 있다. 폴더 하나를 들어가 보면 각 해당 핀 별로 기생 SPICE 모델이 생긴것을 확인할 수 있다.


모든 핀에 대한 SPICE 모델이 부품 폴더 안에 들어 있다.  그 중 하나를 텍스트 에디터로 열면 아래 처럼 자동으로 생성된 모델으 확인할 수 있다.





'도구 > 기타' 카테고리의 다른 글

Wave 2 Table  (0) 2018.09.03
Spreadsheet Schematic Editor for Allegro  (0) 2016.12.05
패키지/커넥터 핀맵 작성기  (0) 2016.11.21
누적 공차 계산기  (0) 2016.07.03
몬테카를로 시뮬레이션  (0) 2016.07.02
:

최근 고속 칩 트랜드 - Solving SI/PI issue on chip(package) level

원 포인트 레슨 2013. 9. 17. 20:00

 칩의 동작 속도가 고속화 되면서 가장 크게 문제가 되는 부분은 칩과 칩 간에 인터커넥션(interconnection)에서 임피던스 불일치(impedance discontinuities) 이다. 이 문제는 칩의 출력 임피던스와 인터커녁션 - PCB의 trace라고 생각해자 - 의 임피던스 불일치에서 발생한다. 따라서 보드 상에서 칩과 trace 시작 부분 사이에 터미네이션(termination) 저항을 넣거나 trace 종단과 파워 혹은 그라운드 사이에 터미네이션 저항을 넣어서 임피던스를 매칭시켜 주는 일을 한다. 그런데 여기에는 2가지 문제가 있을 수 있다. 하나는 신호 수가 매우 많을 경우 저항이 차지 하는 면적이 너무 많아져서 칩 근처에 저항을 배치하지 못하게 되는 문제가 발생할 수 있다. 결과적으로 칩과 저항의 거리가 멀어져 터미네이션 성능이 저하 될 수 있다. 다른 하나는 칩에서 나온 신호가 저항을 경유하기 위해서 스트립 라인에서 보드 외각으로 비아를 경유하여 나온 후에 다시 비아를 경유하여 스트립 라인으로 들어갈 경우 GHz 대역 신호의 품질이 나빠질 수 있는 문제가 있다. 이런 문제를 해결 하기 위하여 오래 전부터 칩 내부에 터미네이션 저항 기능을 넣어서 사용할 수 있게 한 칩들이 있다. 이 기능은 활성화 될 수도 있고 꺼질 수도 있다. 이런 기능은 업체별로 부르는 용어가 다른데 대표적인 것으로 다음과 같은 용어가 있다. 

ODT(On-Die Termination)

OCT(On-Chip Termination)

DCI(Digitally Controlled Impedance)

 ODT 기능이 없을 경우, 아래 그림처럼 보드 상에서 디스크릿 저항으로 터미네이션을 해주어야 한다.

칩 내부에 터미네이션 기능이 있는 경우는 아래 그림과 같다.

 위처럼 내부 터미네이션을 이용하는 대표적인 칩으로는 DDRx DRAM과 FPGA 같은 칩들이 있다. 이런 칩들은 ODT 기능으로 SI 문제의 제일 큰 비중을 차지 하는 임피던스 불연속 문제를 해결한다.


 최근 칩 트렌드는 고속화도 있지만 저전압화도 같이 진행되고 있다. 저 전압화의 영향으로 voltage tolerance 마진이 부족해지고 있다. 전통적으로 PI 문제는다음과 같이 해결한다. 고주파 영역 노이즈를 억제하기 위해서 칩 세라믹 커패시터를 칩 주변에 배치하고 저주파 영역 노이즈르 억제하기 위해서 보드상 아무 곳에나 벌크 커패시터를 배치한다. 이 때 고주파 영역에서 디커플링 성능은 마운팅 조건에 따라서 많이 달라질 수 있다. 가장 성능이 좋으면서 보드의 영향을 덜 받게 커패시터를 배치하는 방법은 패키지 보드에 커패시터를 배치하는 것이다. 그렇게 하면 상당히 고성능의 커패시터를 구현할 수 있다.

 위 사진은 VERTEX-7 FPGA의 패키지 사진이다. 칩이 마운트되어 있는 패키지 보드에 칩 커패시터들이 실장되어 있다. 이 커패시터들은 보드에 부착되는 커패시터들 보다 매우 우수한 성능을 갖는다. 해당 칩의 데이터시트(아래 그림 참조)에 있는 ESL 값이 보드에 부착된 커패시터 들에 비해서 상당히 작은 것을 알 수 있다(보드에 부착시 대략 1 nH 이상 될 것이다) .

 VERTEX-7 FPGA는 패키지 내부에 고성능 고주파 커패시터를 내장하고 있기 때문에, 보드에서는 uF 단위 이상의 중간 주파수 노이즈 이하 억제 커패시터들만 붙여주면 된다. 주의할 것은 저전압 추세에서 저주파 영역은 ESR 값이 작은 커패시터를 사용해야 한다는 점이다.


- 위 그림(혹은 사진) 및 표는 Stratix-5 와 Vertex-7 데이터시트 및 해당 제품 회사 홈페이지에서 가져온 것이다.

:

패키지와 커넥터로 보는 Return Path

원 포인트 레슨 2011. 12. 2. 14:58
 아래 그림은 10년 전쯤에 컴퓨터 메인 메모리로 주로 사용되던 DDR1 SDRAM 패키지이다.

 66핀 중에서 VDD핀 3개, GND핀 3개, VDDQ핀 5개 VSSQ핀 5개가 사용되었다. VDD/VSS핀과 비교해서 VDDQ/VSSQ핀이 5/3배 더 많다. 이것으로 우리는 core보다 I/O 에서 더 큰 다이나믹 전류를 소모한다는 것을 알 수 있다. 아마도 5/3정도 더 소모한다고 생각해도 될 것이다. 눈여결 볼 것은 DQ 신호들 주변에 VDDQ/VSSQ가 중점적으로 배치되고 ADD/CMD 신호에는 VDDQ/VSSQ가 없다는 점이다. 이것으로 우리는 DQ신호는 VDDQ/VSSQ를 return path로 사용하는 것이 VDD/VSS를 return path로 사용하는 것보다 좋다는 것을 알 수 있다. 그렇게 한다면 ADD/CMD 신호는 VDD/VSS를 return path로 삼는 것이 좋을 것이다.  또 하나 알 수 있는 것은 DQ신호가 ADD/CMD 신호에 비해서 훨씬 고속이거나 다이나믹 전류를 많이 소모한다는 것을 알 수 있다(VDDQ/VSSQ가 VDD/VDDQ보다 더 많으니까).

 아래 그림은 요즘 컴퓨터 메인 메모리로 주로 사용되는 DDR3 SDRAM 패키지이다.

 96볼 중에서 VDD 9개, GND 12개, VDDQ 9개, VSSQ 9개가 사용되었다. 핀 수량으로 비교해 보면 VDD/GND와 VDDQ/VSSQ의 비율이 비슷하다. 즉 core와 IO의 전류 소모가 비슷하다는 것을 의미한다. 위의 DDR1과 비교하면 DDR3에서는 core 전류가 상대적으로 I/O 전류보다 더 많이 증가했다는 뜻이다. 이것은 아마도 셀 수가 예전에 비해서 대폭 증가하면서 core 전류가 증가했기 때문일 것이다.

 요즘 사용되는 DDR3가 예전에 사용되었던 DDR1보다 전류 소모량이 줄어든 점을 감안한다면 power/ground 핀 수가 줄어들어야 할 것인데, 왜 오히려 증가했을까? 그것은 신호의 고속화(rising/fall time 감소)로 인해 증가하는 ground bounce를 때문이다. 핀 수를 늘리면 return path의 inductance를 줄이는 효로 ground bounce를 줄일 수 있다. 줄어든 ground bounce는 낮아진 사용전압 조건에서 줄어든 마진을 다시 높여준다.

 DDR3에서 눈여겨 볼 부분 중에 하나는 power/gournd 핀들이 가장자리로 몰려있는 점이다. 일반적으로 DDR1에서 VDDQ/VSSQ처럼 신호선 사이에 핀들이 적당히 골고루 배치되는 것이 SI관점에서 유리할텐데 왜 바깥으로 몰아서 배치했을까? 아마도 그것은 DDR3가 대부분 모듈형태로 제작이 되며 모듈로 제작될 때 양면 배치로 인하여 디커플링 커패시터의 위치가 패키지의 바로 옆자리로 오기 때문에 양 옆 가장자리로 배치를 한 것으로 보인다(디커플링 커패시터 효과 극대화). 위 패키지만 본다면 DDR3에서는 DQ는 VDDQ/VSSQ를 return path로 하고 ADD/CMD는 VDD/VSS를 return path로 하는 것이 바람직해 보인다. 그런데 실제 모듈로 구현될 때는 VDD와 VDDQ가 보드레벨에서 merge되고 VSS와 VSSQ가 merge되기 때문에 앞에 말한 것처럼 return reference를 삼지 않고 DQ는 VSS(Q)를 return path로, ADD/CMD는 VDD(Q)를 return path로 삼는다. 아래 그림은 실제 DDR3 모듈의 한 예이다.

 
 6층으로 구성이 된다. 위에부터 1층으로 시작해서 제일 아래가 6층이다. DQ 신호는 위나 아래가 VSS(Q) plane으로 구성되어 return path를 형성시켜 준다. ADD/CMD의 경우 위나 아래가 VDD(Q) plane으로 구성되어 return path를 형성시켜준다. 
 모듈의 하단 커넥터 부위를 보자. return pin(VDD(Q) 혹은 VSS(Q)) 1개당 2개의 신호 핀이 할당 되었다. 이 비율은 패키지에서의 할당 비율과 비슷하다. 만약 return pin당 신호 수량을 늘린다면, return 핀으로 흐르는 return 전류는 좀 더 큰 inductance를 경험하게 될 것이고 노이즈는 좀 더 커질 것이다. DDR 모듈의 경우 규격화되어 있으므로 규격에 맞추어 디자인하면 되지만, custom 보드를 디자인할 경우엔 보드와 보드의 연결에서 connector 핀 할당에 신중을 해야 한다.

 모듈에서의 reference 규칙은 메인보드에서도 그대로 적용이 된다. 그래야 board-to-board간의 신호 전송이 문제없이 이루어질 수 있기 때문이다.
 

: