공부 기록/회로설계 11

반도체 칩 회로설계 Flow, front-end 부터 back-end 까지

이번 포스팅에서는 반도체 칩을 만들기 위한 설계 과정에 대해 알아보자.회로설계 엔지니어라면 전반적인 flow를 파악하고 있어야 하지만,실무를 하다 보면 "내가 하는 일"만 생각하게 된다.. 앞으로 알아볼 전반적인 flow에 대해 알고 있으면 보다넓은 안목으로 후에 발생할 문제들에 대해 대비한 robust 한 회로를 설계할 수 있다. 반도체 칩 설계 Flow 반도체 칩은 크게 위와 같은 flow에 따라 설계된다. RTL Coding > Verification > Synthetis > STA > Gate-level Simulation > Formal Verification 까지가 front-end 단계이고, 이후 Floor Plan > P&R > Sign-off Verification이 back-end 단계..

[Verilog] 베릴로그 function vs task

이번 포스팅에서는 베릴로그에서 function과 task에 대해 정리해보았다.Function과 task는 반복되는 코드를 줄이기 위해 베릴로그에서 제공하는 기능이다.비슷한 듯 하지만, function과 task에는 차이가 있으니 이에 유의하여 살펴보자.0. Overview베릴로그에서 function/task는 사용하고자 하는 모듈 내 혹은 별도의 파일에 정의할 수 있다. 별도의 파일에 함수를 define하는 경우, 해당 파일을 `include 구문을 통해 포함시켜야한다.FunctionTask최소 1개 이상의 input 존재함input 제약없음output/inout 없음output/inout 제약없음return 값 존재함output port를 통해 값 전달 가능함다른 function만 호출 가능함 (tas..

반도체 회로설계 헷갈리지만 중요한 개념, jitter, skew, slack, slew 란?

반도체 회로설계를 하는데에 자주 언급되는 jitter, skew, slack, slew 그 개념 차이에 대해 알아보자.헷갈리지만 서로 다른 개념을 갖는 특성값이므로, 각각을 정확하게 이해하는 것이 중요하다. 0. Jitter (지터)" 디지털 신호 파형이 시간축상으로 흐트러 지는 현상  "Clock signal이라 함은 일정한 주기를 갖는데 각 주기마다 조금씩 차이가 날 때 이를 jitter라고 정의한다.일정한 주기를 가져야 하는데 주기가 변하는 특성이기 때문에, uncertainty가 발생하여 좋지 않은 특성이다. 1. Skew (스큐)" 가장 빨리 도달하는 clock과 가장 늦게 도달하는 clock의 차이 "Skew(스큐)란 보통 clock signal의 특성으로도 이해할 수 있는데,가장 빨리 도달하..

Verilog에서 C code 사용이 가능한 Direct Programming Interface (DPI) 개념 및 사용법

0. Direct Programming Interface (DPI) 란?Direct Programming Interface (DPI)란 system verilog와 C (혹은 C++)간의 인터페이스로, 상호 간 task 혹은 function을 export/import 하여 사용할 수 있도록 하는 인터페이스이다. 하드웨어 설계 후 검증을 위해 system verilog를 가장 많이 사용할 것이다. C 언어만을 사용하여 하드웨어를 제어하는 데에는 보통 아래와 같은 어려움이 있다. 하드웨어 접근 (access) 자체가 어렵다.Delay를 모델링할 수 없다.이러한 C언어의 제약사항을 DPI를 사용하여 극복할 수 있다. C 코드에서 verilog로 작성된 task를 호출하여 사용하고, 혹은 그 반대, 즉 syst..

하드웨어 검증 언어, System Verilog 란? - Testbench, DUT

회로설계 엔지니어라면 System Verilog가 익숙할 것이라 생각된다. System Verilog는 하드웨어 검증용 프로그래밍 언어이다. Verilog, VHDL과 같은 hardware description language (HDL)로 설계된 하드웨어 설계물을 검증하기 위한 객체 지향 기반 프로그래밍 언어 (Object-Oriented Programming) 이다. 본 포스팅에서는 System Verilog의 기초에 대해 알아보도록 하자. 0. 개요 Verilog, VHDL과 같은 hardware description language를 통해 설계된 하드웨어 모델을 HDL을 사용하여 검증하는 데에는 한계가 있다. 설계에서 검증의 중요성이 커짐에 따라 이를 위해 기존 verilog가 확장된 System ..

[Verilog] reg vs wire - reg와 wire의 차이점

Verilog 언어의 reg와 wire 자료형에 대해 알아보자. 1. reg " Data를 저장하기 위한 변수 " Reg는 data를 저장하기 위한 변수로 다음 값이 할당되기 전까지 현재 값을 유지하므로 procedural assignment를 구현할 때 사용된다. Initial/always block 구문 내에서 출력으로는 반드시 reg를 사용해야 한다. Combinational logic과 sequential logic을 구현할 때 모두 사용 가능하다. 하지만 reg를 사용하여 combinational logic을 구현하면 현재 값을 유지할 필요가 없기 때문에 wire처럼 합성된다. ※ reg과 register는 같은 말이다? reg와 register의 개념이 동일한 것은 아니다. reg라는 자료형을..

[Verilog] Blocking Assignment vs Non-Blocking Assignment - 베릴로그 절차형 할당문의 종류

Procedural assignment의 종류에는 blocking assignment와 non-blocking assignment가 있다. 각 할당문과 그 차이에 대해 알아보자. 1. Blocking Assignment " 기술된 순서대로 동작하는 할당문 " Blocking assignment는 그 이름에서도 알 수 있듯, 현재 statement가 수행되는 동안 block 처리가 되어 다음 statement가 수행되지 않는다. 따라서, 다음 statement에서는 업데이트된 값을 사용하며, 기본적으로 zero-delay를 갖는다. 할당 연산자 = 을 사용한다. 2. Non-Blocking Assignment " 기술 순서와 무관하게 동시에 수행되는 할당문 " Non-Blocking assignment는 ..

[Verilog] Continuous Assignment vs Procedural Assignment - 베릴로그 연속 할당 vs 절차형 할당

Verilog에서 값을 할당하는 구문은 Continuous Assignment와 Procedural Assignment 두 가지가 있다. 각 할당문과 그 차이에 대해서 알아보자. 1. Continuous Assignment - 연속 할당 " Net형 객체에 값을 할당하는 구문 " Continuous assignment 연속 할당문은 assign문을 통해 net형 객체에 값을 할당한다. =의 우변에 값의 변화가 생기면, 즉 이벤트가 발생하면 좌변의 객체에 그 값을 할당하게 된다. 모든 continuous assignment는 우선순위가 없이 우변의 이벤트에 따라 수행되기 때문에, 할당문의 기술순서가 시뮬레이션 결과에 영향을 끼치치 않는다. 연속 할당문을 사용하여 조합논리회로인 combinational lo..

조합 논리회로 vs 순차 논리회로 - Combinational vs Sequential Logic Circuit

논리회로는 조합 논리회로와 순차 논리회로 크게 두 가지로 분류된다. 1. 조합 논리회로 - Combinational Logic Circuit " 출력값이 입력값에만 영향을 받는 논리회로 " Logic gate, 즉 기본게이트로 구성된 네트워크로 입/출력을 가지는 회로이다. 출력은 입력값에만 의존하며 cycle과 클럭이 없다. Logic을 최적화하기 위해 카르노맵, boolean algebra, Quine-Mcclusky, Espresso 등을 사용한다. 조합 논리회로는 가산기, 인코더, 멀티플렉서, BCD 및 7 세그먼트 변환기 회로 등에 사용된다. 2. 순차 논리회로 - Sequential Logic Circuit " 출력값이 입력값과 이전 입력들의 영향을 받는 논리회로 " 출력이 입력값과 더불어 이전..