Skip to content
DevBJ

Category: FPGA/ASIC

FPGA/ASIC 카테고리에 작성된 글 목록입니다.

FPGA/ASIC Roadmap

Verilog RTL을 작성하고 simulation과 synthesis 결과를 확인할 때 다시 찾는 기준을 순서대로 정리합니다.

문법을 길게 설명하지 않고, 코드가 어떤 시점에 값을 바꾸며 어떤 회로로 합성되는지 확인하는 글을 묶어둡니다.

UVM 기본 흐름

  1. UVM sequence와 driver 사이에서 response를 주고받는 방법

    sequence, driver, virtual interface 사이의 transaction 흐름을 연결합니다.

Tcl 자동화

  1. Tcl 리스트에서 여러 값을 안전하게 제외하는 방법

    Tcl list와 script를 안전하게 조작하는 짧은 예제를 다룹니다.

  2. Tcl 명령을 여러 줄로 나눠 작성하는 방법

    Tcl list와 script를 안전하게 조작하는 짧은 예제를 다룹니다.

  3. Verilog와 SystemVerilog filelist를 find로 만드는 방법

    RTL filelist 생성과 도구 실행 옵션을 재현 가능하게 정리합니다.

CDC와 reset

  1. 비동기 reset은 왜 해제할 때 동기화해야 할까

    clock domain crossing과 reset 해제 시점을 안전하게 다룹니다.

AXI 프로토콜

  1. AXI4 burst에서 AxSIZE와 AxLEN 계산하기

    AXI4 transaction의 burst 크기와 길이를 계산합니다.

RTL 작성과 검증

  1. SystemVerilog에서 rising edge를 한 clock pulse로 만들기

    입력 이벤트를 동기화하고 RTL 동작을 검증합니다.

  2. Verilog testbench를 시작할 때 HDL과 cocotb 중 고르는 기준

    입력 event를 다루고 testbench로 RTL 동작을 확인합니다.

  3. WaveDrom으로 clock과 bus timing diagram 그리기

    입력 event를 다루고 testbench로 RTL 동작을 확인합니다.

  4. Emacs Verilog mode AUTO_TEMPLATE로 입력 tie-off하기

    RTL 편집과 자동 port 연결에서 확인할 점을 다룹니다.

Vivado 보드 시작

  1. Windows에 AMD Vivado를 설치하는 방법

    AMD 공식 installer에서 Vivado와 사용할 FPGA device family를 골라 Windows에 설치합니다.

  2. Vivado에서 Nexys A7 핀을 XDC로 할당하는 방법

    Vivado 프로젝트에 XDC 파일을 추가하고 Nexys A7의 클럭과 입출력 핀을 연결합니다.

  3. Vivado에서 Nexys A7 bitstream을 생성하고 FPGA에 올리는 방법

    Vivado에서 bitstream을 생성하고 Hardware Manager로 Nexys A7 FPGA를 program합니다.

  4. Windows에서 Nexys A7 UART를 Tera Term으로 확인하는 방법

    Windows에서 Nexys A7의 USB-UART COM 포트를 찾고 Tera Term으로 수신을 확인합니다.

Verilog RTL 기본

  1. Verilog blocking과 non-blocking은 언제 나눠 써야 하나

    조합회로와 순차회로에서 blocking과 non-blocking 할당을 나누는 기준입니다.

  2. Verilog case 문에서 default와 latch를 함께 확인하는 방법

    조건문과 할당 규칙을 기준으로 합성 가능한 RTL을 작성합니다.

  3. Verilog 숫자 literal과 signed vector의 폭 확인하기

    조건문과 할당 규칙을 기준으로 합성 가능한 RTL을 작성합니다.

  4. Verilog parameter는 named override로 지정하고 defparam은 피하기

    조건문과 할당 규칙을 기준으로 합성 가능한 RTL을 작성합니다.

  5. SystemVerilog 배열을 flat bus로 묶고 byte slice 선택하기

    조건문과 할당 규칙을 기준으로 합성 가능한 RTL을 작성합니다.

  6. Verilog 곱셈 연산자 *는 FPGA에서 어떻게 합성될까

    조건문과 할당 규칙을 기준으로 합성 가능한 RTL을 작성합니다.

  7. SystemVerilog package를 공유할 때 compile order 확인하기

    조건문과 할당 규칙을 기준으로 합성 가능한 RTL을 작성합니다.

Vivado 보드와 메모리

  1. Vivado에서 MCS 파일을 SPIx4로 만드는 방법

    Vivado bitstream의 SPI bus width와 configuration clock을 설정하고 SPIx4 MCS 파일을 만듭니다.

  2. Vivado FPGA 내부 RAM 구성과 COE 초기화 방법

    Vivado 내부 RAM 구현 방식을 고르고 IP 초기값과 동작을 확인합니다.

  3. Vivado FIFO Generator에서 8-bit, 1024-depth FIFO 설정하기

    Vivado에서 메모리와 FIFO를 구성하고 보드 동작에 연결합니다.

최근 글