일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CLOCK GATING
- Makefile compile
- linux c++ 컴파일
- 이진수 곱셈 알고리즘
- pytest-pythonpath 설치 오류
- linux makefile 작성
- systolic array
- makefile
- 데이터 해저드
- CDC
- 클럭 게이팅
- 대구 반도체 설계기업 특화
- gcc 컴파일
- 딥러닝 가속기
- pygraphviz 설치 오류
- Pyverilog 실행
- DNN Accelerator
- DNN 가속기
- 컨벌루션 연산
- 남산업힐
- pyverilog 설치 오류
- CUDA
- Data HAzard
- AMBA
- Design DNN Accelerator
- Pyvrilog tutorial
- linux c 컴파일
- gpgpu-sim
- Pyverilog 튜토리얼
- Pyverilog 설치
- Today
- Total
목록Digital logic (40)
오늘은 맑음
CDC상황에서 handshake에 대해서 알아본 내용에 대해 적어보겠습니다. *_high가 붙은 신호는 동작 주파수가 높은 클럭 도메인의 신호이며, *_low가 붙은 신호는 동작 주파수가 낮은 클럭 도메인의 신호입니다. clk_high와 clk_low의 비율은 1.5:1로, synchronizer의 F/F chain은 2단으로 설정했습니다. 모든 req/ack신호는 synchronizer를 통과합니다. A에서 B로 req를 보냄 (a -> b) B에서 req를 받으면 A로 ack를 보냄(c -> d) A에서 ack를 받으면 req를 내림 B가 A에서 ack를 내린 것을 확인(e ~> f)하면 ack를 내림 A에서 ack가 내려간 것을 확인(g~>h) 위의 handshake가 정상적으로 동작하기 위해서 선..
Digital logic에서 assert와 deassert라는 표현이 사용되는 상황은 다음의 표 1과 같습니다. assertdeassertactive high값이 0에서 1로 변할 때값이 1에서 0으로 변할 때active low값이 1에서 0으로 변할 때값이 0에서 1로 변할 때 위의 표현이 사용된 예시를 문서에서 찾아보았습니다. The source uses the VALID signal to indicate when valid information is available. The VALID signal must remain asserted, meaning set to high, until the destination accepts the information. Signals that remain ass..
과거에 STA(Static Timing Analysis) 수업을 들으며 정리했던 글이 있는데, 추가로 설명을 달고자 작성해봅니다. Timing analysis (tistory.com) Timing analysis 어떠한 로직을 설계한 후 타이밍을 분석 negative slack이 발생하여 타이밍에서 문제가 되는 경우 이를 해결하는 방법 일반적으로 setup time안에 데이터가 들어오지 않거나 hold time동안 데이터를 유지 wh00300.tistory.com STA의 결과로 나온 negative slack으로 인해 longest path로 리포트된 경로를 RTL level에서 해결하는 방법입니다. 현재 아는 내용에서 설명해보겠습니다. 혹시 틀린 부분이나 보완사항이 있다면 댓글 부탁드립니다. 앞으로 ..
서로 다른 clock domain끼리 multi-bit의 데이터를 주고 받는 방법 중 gray code와 async fifo를 이용한 방법에 대해 알아보겠습니다. 이 전 글에서 알아본 것 처럼 2개 혹은 3개 이상의 fifo chain을 이용해서 CDC를 해결하는 할 수 있지만 이 방법은 multi-bit의 데이터를 주고 받기에는 적합하지 않습니다. 이유는 clock skew와 같은 이유로 모든 데이터가 동일한 타이밍에 switching되지 않을 수 있기 때문입니다. 아래 그림 1은 CLK domain의 128bit의 DATA가 CLK' domain으로 전달되는 모습입니다. 128bit의 데이터 중 1번 bit가 skew로 인해 CLK'의 posedge에 제대로 전달되지 않은 모습입니다. 이러한 상황에서..
Verilog HDL에서 random 숫자를 생성해보도록 하겠습니다. Random 신호는 데이터를 랜덤으로 넣어주거나, 혹은 모듈의 동작 신호를 random으로 만들어서 테스트할 때 사용될 수 있습니다. random신호를 만드는 방법은 두 가지가 있습니다. 1. $random : 32bit signed random value 2. $urandom : 32bit unsigned random value 3. $urandom_range(min-val,max-val) 그리고 random/urandom 뒤에 % 숫자를 사용하게 되면 입력한 숫자만큼 moduler 연산이 되어 필요한 만큼 random 데이터를 만들수 있습니다. 예시는 아래와 같습니다. 1. 3비트의 random 레지스터를 만들고 8로 모듈러한 un..
CMOS(complementary metal-oxide semiconductor) CMOS는 서로 성격이 다른 nMOS와 pMOS로 이루어져 있습니다. nMOS pull-down network pMOS pull-up network nMOS는 pull-down network고, pMOS는 pull-up network입니다. 이렇게 서로 다른 두 MOSFET으로 이루어진게 CMOS입니다. nMOS는 pull-down network이므로 전압을 인가하면 전류가 흐르고, 전압을 인가하지 않으면 전류가 흐르지 않습니다. pMOS는 pull-up network이므로 전압을 인가하면 전류가 끊기고 전압을 인가하지 않으면 전류가 흐릅니다. CMOS는 그림 2와 같이 VDD에 연결된 pMOS와 GND에 연결된 nMOS로..