전체 글 21

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를 호출하여 사용하고, 혹은 그 반대, 즉 s..

하드웨어 검증 언어, 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..

ASIC vs FPGA - ASIC과 FPGA의 차이점

반도체의 대표적인 두 종류인 ASIC과 FPGA에 대해 알아보자. 이는 디지털 IC를 만드는 가장 대표적인 제조방법 두 가지이다. 1. ASIC " Application Specific Integrated Circuit " 주문형(맞춤형) 반도체로 트랜지스터와 연결선이 놓여질 위치에 제한을 두지 않은 반도체 설계 방식이다. FPGA보다 저렴하고 빠르며 전력 효율이 좋다. 하지만 칩이 한 번 완성되면 수정이 어렵기 때문에 초기 비용이 많이 들어 충분한 검증의 과정이 필요하다. 이러한 특징에 따라 대량 생산에 적합하다. 일반적으로 ASIC으로 칩을 생산하기 전에 FPGA를 사용하여 회로를 검증하게 된다. 2. FPGA " Field Programmable Gate Array " 트랜지스터와 연결선이 놓여질 ..

DRAM의 대역폭을 높일 수 있는 방법

대역폭 = 메모리 버스의 폭(W) * 메모리 클럭 주파수 - 메모리 버스의 폭 = 메모리 입출력 라인 개수 (bit) - 메모리 클럭 주파수 = 메모리 동작 속도 (MHz) 1. 메모리 입출력 포트의 개수를 늘린다. 2. 메모리 자체 클럭 주파수를 높인다. 3. 메모리를 병렬화하여 접근하는 Interleaving 메모리를 여러개의 모듈로 나누어 여러 메모리로 동시에 접근 가능하도록 하는 기법 → 파이프라인

조합 논리회로 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 " 출력값이 입력값과 이전 입력들의 영향을 받는 논리회로 " 출력이 입력값과 더불어 이전..