IT/ASIC | FPGA 2024. 4. 30.
AXI 프로토콜 테스트 환경 설계 1 - 인터페이스 모델 정의
주의!!! 코드는 아직 검증되기 전입니다. 전체적인 구조를 잡기 위해 올려두는 부분이니 그대로 활용이 불가합니다. AXI (Advanced eXtensible Interface) 버스는 ARM이 설계한 고성능, 고대역폭의 시스템 온 칩(SoC) 버스 인터페이스입니다. AXI는 AMBA (Advanced Microcontroller Bus Architecture) 사양의 일부로서, 특히 대용량 데이터 처리와 복잡한 시스템 설계에 적합한 인터페이스를 제공합니다. 이제 AXI의 주요 구성 요소와 특징을 자세히 설명해 드리겠습니다.AXI 인터페이스 주요 특징성능: 다중 마스터 및 슬레이브 구성을 지원하여 고성능 멀티프로세서 시스템 설계에 적합합니다.확장성: 모듈식 설계를 통해 다양한 구성 요소와의 효과적인 통합..
IT/ASIC | FPGA 2024. 2. 20.
Verilog - Parameter, deparam 사용법
모듈내에 데이터 비트등을 선언할때 정의를 하도록 하려면 Parameter 방법을 이용해야 한다. Hard-fix 코드로 박아두면 항상 문제가 생기곤 했다. 귀찮아도 꼭 미리 해두자 Parameter 선언 인스턴스 생성시에 데이터 비트를 지정하게 하는 방법은 모듈을 만들때 아래처럼 파라메터 값을 받아 처리하도록 하는 것이다. C/C++ 코드의 생성자 함수내의 파라메터를 같은 개념이지 module #() ; 아래 예제는 여기서 가져왔다. https://docs.xilinx.com/r/en-US/ug901-vivado-synthesis/Parameters-Example-Verilog module myreg (clk, clken, d, q); parameter SIZE = 1; input clk, clken; ..
IT/ASIC | FPGA 2024. 2. 16.
Verilog - Metastable, CDC (clock domain crossing) 정리
ASIC, FPGA 설계시에 CDC clock domain crossing 내용을 알고 있는지 물어보는 사람이 많은 것 같네요. 제가 알고 있는 방법이 너무 간단해서 이게 꼭 공고에 나올만한 내용인지 모르겠지만 (내가 모르는 무엇인가가 엄청 있는건가요? ^^;;;;) 결론적으로, 클럭이 다른 도메인 사이의 시그널 교환에서는 반드시 무조건 필수적으로 metastable 상태가 전달 되지 않도록 Multi-stage synchronizer 를 사용하면 해결된다는 것!! 참고한 글은 유명한 블로그 님들의 글입니다. https://secondspot.tistory.com/18
IT/ASIC | FPGA 2024. 2. 16.
Verilog - 합성에 유리한 coding 스타일
HDL(Verilog, VHDL, ...) 머든 실제 합성이 설계한 대로 되지 않으면 완전 무용지물이다. 코딩때 부터 신경써야 하는데, 많이 까먹었네. 따로 정리한 문서를 찾아보자. 일단 아래글을 찾아와서, 정리해보자. (지금 정리중...읽고 내 생각 넣고 머 이렇게) 예제나 설명에 대한 자세한 내용은 아래 해당 블로그 님의 글을 방문해서 보심이 맞는것 같습니다. https://trts1004.tistory.com/12108949 일단은 제 개인 공부용으로 복사해서 정리중.... 추가로 자료가 하나더 있다. 엄청 기본적인것인데 5분이면 읽어본다. 함 읽어보자. 1. 블록도를 그려라, 라벨을 붙이고, 시그널 적고, width 명기하자. 2. 타이밍도를 그려라 최대한 자세하게 3. 합성 가능한 코드 템플릿(..
IT/ASIC | FPGA 2024. 2. 16.
Verilog - 곱셈이 합성이 되나요?
verilog에서 * operator를 사용하면 곱셈 전용 조합회로가 합성되는건가요? 이런 질문을 구글링에서 본적이 있다. 아무 생각없이 사용하다가, 타이밍 오류가 없으면 그냥 넘어갔던 것인데, 합성툴이 기본적인것은 컴포넌트가 있는 것 같아, 별로 개의치 않고 설계 했고, 프로토콜 설계에 있어서는 대부분 곱하기 나누기는 사용하지 않았었다. 아무튼 답변도 있어서 일단 저장 https://www.inflearn.com/questions/1065809/14%EC%9E%A5-%EC%A7%88%EB%AC%B8 네, 현업에서도 Verilog 로 곱셈을 기술할때, * 을 사용합니다. Synthesis (합성) 과정을 통해서, targeting 하는 공정 lib 에 있는 * (곱셈 layout) 을 사용하기 때문이고요..
IT/ASIC | FPGA 2024. 2. 15.
Xilinx - Vivado RAM 초기화 값 입력 - coe 파일
Vivado 에서 RAM을 만들때 초기값을 넣어 줄 수 있다. 파일 포맷은 coe 파일인데 Vivado 에서 바로 에디팅 할 수 있다. COE 파일 생성 그냥 그림으로 남겨둔다. 아래처럼 쓰면 된다. radix = 16; pattern = 3 0 3 1 0 1 1 3 0 2 2 2 3 0 1 1 3 0 3; 다른 예제 파일도 아래 링크에서 찾아볼 수 있다. https://docs.xilinx.com/r/2021.2-English/ug896-vivado-ip/COE-File-Examples ****************************************************************** ************* Example of Virtex Bit Correlator.COE ****..
IT/ASIC | FPGA 2024. 2. 15.
Verilog - 파이썬으로 테스트 벤치 작성하기 cocotb - 킵
파이썬으로 테스트벤치를 작성하도록 도와주는 파이썬 프로젝트가 있어 일단 킵 이름은 cocotb 라고 하네 공식 사이트는 여기 https://docs.cocotb.org/en/stable/index.html cocotb cocotb is a COroutine based COsimulation TestBench environment for verifying VHDL and SystemVerilog RTL using Python. 일단 지원되는 시뮬레이터 종류는 다음과 같다. cocotb 기본 골격 A typical cocotb testbench requires no additional HDL code. The DUT is instantiated as the toplevel in the simulator wi..
IT/ASIC | FPGA 2024. 2. 15.
Verilog - RGMII 샘플 코드 - 북마크
Verilog 로 구현된 RGMII 코드가 있어서 일단 공유한다. RGMII 는 이데넷 PHY칩과 MAC 사이의 통신 방법이라고 보면 된다. 일단 아래 블로그글을 참고하자. https://www.circuitden.com/blog/23 CircuitDen | Artin Isagholian This article is for hardcore digital design wizards who don’t want to use any intermediate processors (kiss your software team goodbye) or proprietary IPs to communicate with their FPGAs via an ethernet connection. All you need is a PC,..
IT/ASIC | FPGA 2024. 2. 15.
Verilog 기초 - case 문
Verilog 기초 문법과 관련된 것도 하나씩 정리해 보자. 오늘은 case 문이다. if 문과는 다르게 병력적으로 우선순위 없이 생긴다는 장점이 있다. 반드시 우선순위가 필요하다면 if else 문을 사용해야 하며, 같은 조건에서 mux 하는 로직 같은 경우에는 case 문을 활용하면 된다. 아래 문법과 예제는 다음 사이트에서 참고하였다. https://vlsiverify.com/verilog/case-statement/ Case 문법 기본 문법은 다음과 같다. case() : : : : begin ... ... end default: endcase 사실 예제로 보는 게 가장 낫다. Case 예제 module case_example; reg [2:0] data; always @(data) begin c..
IT/ASIC | FPGA 2024. 2. 5.
Verilog - flatten array - 2차원 배열 1차원으로 변환
Verilog 에서 포트로 넘길때 2차원 배열이 되지 않는다는 슬픈 진실이 있네 ㅜㅜ 일단 보통 합성할 때 합성툴에서 다 자동으로 해줄 듯 한데 이를 손으로 해야 한다니 일단 방법은 알아두자고 https://stackoverflow.com/questions/28623819/how-to-flatten-array-in-verilog How to flatten array in Verilog As Verilog does not allow to pass the array as input to module, so how can we flatten any array in Verilog. Suppose I have this array: parameter [31:0] A [0:31]; wire [31:0] B I wan..
IT/ASIC | FPGA 2024. 2. 2.
Xilinx Vivado - 핀 할당 하기 Constraints 추가
Xilinx Vivado에서 원하는 핀을 할당 하려면 Constraints 파일을 추가해야 한다. 아니면 랜덤으로 막 핀을 Assign 하므로 하드웨어설계도와 맞출 필요가 있다. 참고로, FPGA하드웨어 핀을 선택하기 위해서는 기본적으로 어떤 핀을 뽑아야 할지 처음에는 랜덤으로 돌린 후에 하드웨어 설계를 진행하는 경우가 일반적이다. 아무튼 핀 할당을 해보자. 위의 그림처럼 수정하기를 눌러본다. 새로 만드는 것이므로 과감하게 "Create File"을 누른다. 나타나는 창에 원하는 이름만 딱 쓰고, OK 하면 그럼 다음과 같이 파일이 하나 생성됨을 볼 수 있다. 그럼 왼쪽 트리창에 하나 추가되어 있는데, 아시다시피 빈파일이다. 전구 모양 버튼 "Language Template" 을 누르면 기본 문법 구문을..
IT/ASIC | FPGA 2019. 11. 18.
불량분석 (Failure Analysis) EOS Test, I-V Curve - 반도체 테스트
FA, EOS Test, I-V Curve, 불량분석(Failure Analysis) - 반도체 테스트 물건을 팔면 다가 아니다. 여기저기 시장에서 불량이라고 분석을 요구하는 곳이 엄청나게 많다. 일일이 다 대응해 줄 수 있는 것은 아니지만, 리포트를 요구하는 업체들이 있으면 상당히 곤란하다. 중소기업의 경우, 어쩔 수 없이 외부 업체에 의뢰를 맡길 수 밖에 없다. 아래에 소개된 Microchip의 경우를 보면 이 과정을 위해 Lab을 따로 마련하고 있어, 과정이 표준화 되어 있고 대응일정이 비교적 명확하다. (부러움 ^^;;;) 무튼, 대부분의 문제를 EOS 문제로 생각하고 대응하게 되는데, 테스트 (Electrical Overstress)는 반도체 부품, 회로에 초과된 전자기적 신호 및 과전압에 의해..