일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- makefile
- DNN 가속기
- 데이터 해저드
- 남산업힐
- gcc 컴파일
- Pyverilog 설치
- Pyverilog 튜토리얼
- DNN Accelerator
- CUDA
- Design DNN Accelerator
- 컨벌루션 연산
- CDC
- CLOCK GATING
- pytest-pythonpath 설치 오류
- pygraphviz 설치 오류
- AMBA
- systolic array
- linux c 컴파일
- Pyverilog 실행
- gpgpu-sim
- 딥러닝 가속기
- linux c++ 컴파일
- Pyvrilog tutorial
- Data HAzard
- Makefile compile
- 클럭 게이팅
- linux makefile 작성
- pyverilog 설치 오류
- 대구 반도체 설계기업 특화
- 이진수 곱셈 알고리즘
- Today
- Total
목록Digital logic (40)
오늘은 맑음
오늘은 디지털 회로 설계 과정 중 Front-End 과정에 대해서 알아보겠습니다. 설계 과정은 간단하게 Front End 과정과 Back End 과정으로 나눌 수 있습니다. Front End과정은 VHDL/Verilog HDL을 통해서 설계한 디자인을 합성해서 gate단위의 netlist로 만드는 과정입니다. Back End과정은 합성을 통해 나온 netlist를 Chip으로 만들기 위해 module의 위치정보와 wire를 연결하는 과정(Place & Routing)과 P&R과정을 거쳐 나온 디자인에 대해 timing violation(setup/hold violation)이 문제가 없는지 Timing Analysis를 수행하는 과정입니다. Front End 디자인 무엇을 설계할지 전체적인 구조를 디자인..
디지털 회로를 설계하다 보면 상태가 1(HIGH)일 때 동작하는 신호가 있고 0(LOW)일 때 동작하는 신호가 있습니다. 상태가 1일 때 동작하는 회로를 active high, 상태가 0일 때 동작하는 회로를 active low라고 합니다. 사람마다 표기하기 나름이지만 일반적으로 active low로 동작하는 신호에는 negative라는 의미의 n이 붙습니다. 대표적으로 reset 신호가 있죠. if(!nRST) begin a
feedback loop는 나쁜 회로다. 조합 회로를 구성할 때 Combinational feedback loop가 없어야 한다. 라고 기술된 내용을 본 적이있을겁니다. 오늘은 combinational feedback loop에 대해서 알아보겠습니다. 먼저 Conbinational feedback loop는 회로에 치명적입니다. feedback loop는 출력된 데이터가 다음 출력되는 데이터에 영향을 끼치는 구조를 의미합니다. 여기서 조심해야 하는 feedback loop란 출력이 안정되지 않는 loop를 의미합니다. 출력이 안정된 loop의 간단한 예시는 아래와 같습니다. 출력이 불안정한 loop의 간단한 예시는 or gate 대신 exclusive or gate가 위치하는 loop입니다. exclus..
오늘은 Clock Skew에 대해서 알아보겠습니다. Clock Skew는 칩 내부의 물리적인 특성에 의해서 발생할 수 있습니다. 일반적으로 RTL Simulation에서는 어떠한 배선의 길이, 온도, 공정의 조건을 주지 않고 ideal(이상적인)한 상태라고 가정합니다. 따라서 Simulation에서는 Skew와 같은 non-ideal(비이상적인)한 현상을 확인할 수 없고, backend과정에서 확인할 수 있습니다. 클록 스큐를 표현한 그림은 아래와 같습니다. 클록을 생성하는 모듈에서 주기 T의 클록을 생성했습니다. 생성 된 동일한 클록을 A와 B모듈에서 받는다고 했을 때 아래와 같은 현상이 발생할 수 있습니다. A와 B에서 동일한 클록을 받지만, B에서는 delay가 발생해서 A와 같은 타이밍에 받지 못..
verilog 뿐만 아니라 c/c++에서도 모두 비트연산자와 산술연산자가 있습니다. 논리 연산자는 두 값의 참과 거짓을 반환하고, 비트 연산자는 두 개의 값의 비트를 연산한 결과를 반환합니다. 비트연산자와 논리연산자의 비교 verilog에서 simulation을 통해 결과를 한번 알아보겠습니다. 입력 신호는 아래와 같습니다. in_data1 : 4비트의 입력 in_data2 : 4비트의 입력 출력 신호는 아래와 같습니다. out_logical_and : in_data1 && in_data2 out_logical_or : in_data1 || in_data2 out_bit_and : in_data1 & in_data2 out_bit_or : in_data1 | in_data2 시뮬레이션 결과는 다음과 같습..
verilog hdl을 설계하다 보면 전체 비트에서 일부를 떼어서 사용하는 경우가 발생합니다.예를 들면, 16-bit color range를 예로 들겠습니다. 16-bit에서 RGB color range는 위와 같습니다.만약 input [15:0] pixel로 위의 값이 들어올 때 R, G, B를 따로 찢어야 할 때 다음과 같이 표현할 수 있습니다. reg [4:0] red = pixel[15:11];reg [5:0] green = pixel[10:5];reg [4:0] blue = pixel[4:0]; 이런 식으로 전체 데이터중 일부를 잘라서 할당하는 행위를 part select라고 합니다. 음.. 그런데 이렇게 상수로 넣게 되면 사용되는 bitwidth가 변경되었을 때 하나하나 수작업 해줘야겠죠?? ..