brunch

EP.59 [반취#18]디지털 설계자에게 필요한 준비물

EP.57을 먼저 보고 오시면 좋습니다!

by 도체반쌤

안녕하세요, 삼성전자 회로설계 직무 엔지니어 도체반쌤입니다. EP.57 [반취#17] 디지털 설계자에게 필요한 준비물 (https://brunch.co.kr/@docheban77/61)에서 아래와 같이 글을 마무리 지었었는데요, 오늘은 해당 에피소드의 후속 편을 공유드리려 합니다.



디지털 설계자도 마음만 먹으면 이론상으로는,

스파이스 시뮬레이션을 진행할 수 있습니다.


하지만, 현실적으로 디지털 설계자가 스파이스 시뮬레이션을 진행할 수 있을까요?

아니요


사실, 스파이스 시뮬레이션만큼 설계를 검증할 수 있는 정확한 방법론은 없습니다. 하지만, 디지털 설계자가 스파이스 시뮬레이션을 진행하는 것은 현시대 과제들에서는 불가능한 경우가 많습니다. 그 이유는 넷리스트를 구성하는 트랜지스터의 숫자가 수천억 개가 넘는 과제가 대부분이기 때문입니다. 수천억 개가 넘는 트랜지스터의 연결에 대해, HSPICE 툴로 아날로그 분석을 진행하는 것은 현세대 슈퍼컴퓨터로도 상당한 시간이 소요될 수 있습니다. (추후에 양자 컴퓨터로는 빠른 분석이 가능할 지도 모르겠습니다.)


스파이스 시뮬레이션을 할 수 없는, 디지털 설계자는 다음 두 가지 준비물을 가지고 로직 시뮬레이션 검증을 진행합니다.

1. Standard Cell의 Behavior Model
2. Standard Cell의 Liberty

WHAT IS A Behavior Model?

아래 인버터 회로는 PMOS 1개와 NMOS 1개로 구성되어 있는 CMOS 구조인데요, 인버터 회로의 목적은 Input A 신호가 VDD(High) 일 때, Output Out 신호를 VSS(Low)로 만드는 한편, Input A 신호가 VSS(Low) 일 때, Output Out 신호를 VDD(High)로 만드는 것이랍니다. 이렇게 말로 인버터라는 회로를 표현한 것을 "Behavior Model"이라고 합니다.

인버터 셀 CMOS 회로 구성. 출처 : 삼성전자 DS부문 공식 홈페이지

그리고, 실제 디지털 설계자가 다루는 인버터 회로의 Behavior Model은 다음과 같습니다. 텍스트 한 줄 한 줄을 지금 이해하기보다는 직관적으로 인버터 회로를 내부 트랜지스터 언급 없이 Logical 특성만으로 표현했다는 사실에 집중할 필요가 있습니다. 아래 "INV"라는 이름으로 정의한 모듈인 인버터 셀의 Behavior Model은 Verilog라는 언어로 텍스트화된 것입니다. 참고로, "~"은 "NOT"을 의미하며 Signal의 반전을 의미합니다.


module INV

Input A

Output Out

Out = ~A

endmodule



위와 같은 방식으로 NAND, NOR, FLIP-FLOP 등 모든 CMOS Cell 들을 Logical 특성(진리표)을 기반으로 텍스트로 표현할 수 있고, 이를 Behavior Model이라고 한답니다. 디지털 설계자들이 트랜지스터 레벨의 넷리스트를 다루지 않고, 셀(게이트) 레벨 넷리스트를 다루기 때문에 트랜지스터의 Behavior Model(PDK)이 아닌, 셀의 Behavior Model이 필요합니다. 그리고 CMOS 스탠다드 셀의 Behavior Model은 텍스트라는 것을 기억해야 합니다.


WHAT IS A LIBERTY?

디지털 설계자가 로직 시뮬레이션 검증을 위해 필요한 두 번째 준비물인 LIBERTY 파일은 역시 텍스트입니다. 셀의 Behavior Model이 있으니, 셀의 Timing 정보 혹은 Power 정보를 담은 파일이 있으면 단순 Summation 작업으로 로직 시뮬레이션 검증이 가능한 것이죠. 예를 들어, 아래와 같이 인버터 셀 두 개를 연결한 회로를 시뮬레이션한다고 가정해 봅시다.

인버터 셀 두 개를 연결한 회로


위 회로는 사실 트랜지스터 기준으로는 4개만 활용된 아주 간단한 회로기 때문에 스파이스 시뮬레이션으로 아날로그 검증하는 것이 가능한 회로입니다. 하지만 우리는 이러한 셀들이 수억 개 연결된 회로의 로직 시뮬레이션을 수행해야 하는 디지털 설계자의 입장을 고려해야 하는 것입니다.

트랜지스터 레벨의 회로로 변환한 모습

다시 돌아와서, 인버터 두 개를 연결한 회로의 로직 시뮬레이션을 위해 필요한 Liberty 파일 정보는 다음과 같습니다.

인버터 셀 하나에 대해, Input 신호를 넣었을 때 Output 신호가 변환되기까지 최대 3ns, 최소 2ns 소요된다.
인버터 셀의 Liberty 파일이 포함해야 하는 정보 예시

한 가지 중요한 사실은, Liberty 파일에 반영할 셀의 타이밍 정보와 파워 정보는 셀 하나에 대한 스파이스 시뮬레이션을 진행하여 추출한다는 사실입니다.


자, 이제 우리는 인버터 두 개를 연결한 회로의 로직 검증을 진행할 수 있습니다. 인버터 셀의 Behavior Model을 아는 우리는 IN 신호가 VSS(Low)에서 VDD(High)로 변경되면 O1 신호는 VDD에서 VSS로 변경되고 O2는 이어서 VSS에서 VDD로 변경된다는 사실을 알 수 있습니다. 더불어, 한 셀당 최대 3ns, 최소 2ns가 소요되므로, IN 신호부터 O2 신호까지는 최대 6ns, 최소 4ns가 소요된다는 것도 알 수 있습니다. 이것이 바로 로직 시뮬레이션 Concept입니다. 제가 로직 시뮬레이션의 타이밍 검증을 예시로 표현하였지만, 파워 검증도 동일한 방식으로 진행할 수 있는 것이죠.

인버터 셀 두 개를 연결한 회로


오늘 글을 정리하자면,

디지털 설계자는 ①스탠다드 셀의 Behavior Model과 ②Liberty 파일만 있으면 로직 시뮬레이션 검증을 진행할 수 있다는 사실입니다.
keyword