IT/ASIC | FPGA 2024. 5. 2.
AXI Burst 모드 사용시 프로토콜 길이 정보들 - AxSIZE, AxLEN
AXI(Avanced eXtensible Interface) 프로토콜에서 awsize는 각 전송 중에 전송되는 데이터의 크기를 지정합니다. awsize 값은 2의 거듭제곱 단위로 전송되는 바이트 수를 나타내는 3비트 바이너리 값입니다.awsize 값에 따른 데이터 크기는 다음과 같습니다:000 : 1 바이트001 : 2 바이트010 : 4 바이트011 : 8 바이트100 : 16 바이트101 : 32 바이트110 : 64 바이트111 : 128 바이트AXI에서 burst는 연속적인 메모리 위치로 데이터를 읽거나 쓰는 작업을 말합니다. awsize 값과 awlen (버스트 길이) 값을 설정하여 전체 데이터 양을 결정할 수 있습니다. awlen 값은 전송할 비트 수 - 1을 나타냅니다.예를 들어, 총 4번의..
IT/ASIC | FPGA 2024. 4. 30.
AXI 프로토콜 테스트 환경 설계 5 - 컴파일 환경 설정
주의!!! 코드는 아직 검증되기 전입니다. 전체적인 구조를 잡기 위해 올려두는 부분이니 그대로 활용이 불가합니다. VCS (Verilog Compiled Simulator)는 Synopsys에서 제공하는 고성능 시뮬레이션 도구입니다. VCS를 사용하여 SystemVerilog 코드를 컴파일하고 테스트하기 위해 필요한 환경 설정 파일과 명령 파일을 생성하는 과정은 다음과 같습니다.1. 환경 설정 파일 (vcs_setup.tcl)VCS에서 사용할 환경 설정을 위한 TCL 스크립트 파일을 만듭니다. 이 파일은 컴파일 옵션, 라이브러리 경로, 그리고 기타 필요한 설정을 포함할 수 있습니다.# 파일: vcs_setup.tclset VCS_HOME /path/to/vcs/installation# VCS 컴파일 옵..
IT/ASIC | FPGA 2024. 4. 30.
AXI 프로토콜 테스트 환경 설계 4 - 슬레이브 모듈
주의!!! 코드는 아직 검증되기 전입니다. 전체적인 구조를 잡기 위해 올려두는 부분이니 그대로 활용이 불가합니다. AXI 슬레이브 모듈을 설계할 때, 이 모듈은 마스터로부터의 쓰기 및 읽기 요청을 수용하고 처리할 수 있어야 합니다. 여기서는 쓰기 요청을 받아 메모리에 데이터를 저장하는 간단한 슬레이브 모듈을 구현해 보겠습니다. 슬레이브 모듈은 AXI 프로토콜의 응답 메커니즘을 활용하여 마스터에게 쓰기 완료 신호를 보내야 합니다.다음은 SystemVerilog를 사용한 AXI 슬레이브 모듈의 기본 구현입니다:슬레이브 모듈의 코드를 수정하여 리셋 시 모든 상태 및 신호를 초기화하고, 주요 동작 시점에서 $display 디버깅 메시지를 추가하겠습니다. 이는 동작을 명확히 추적하고 초기 상태에서 'X'값이 발생..
IT/ASIC | FPGA 2024. 4. 30.
AXI 프로토콜 테스트 환경 설계 3 - 마스터 설계
주의!!! 코드는 아직 검증되기 전입니다. 전체적인 구조를 잡기 위해 올려두는 부분이니 그대로 활용이 불가합니다. AXI 마스터 모듈을 설계할 때는 AXI 프로토콜을 준수해야 합니다. 이 예제에서는 마스터 모듈이 기본적인 쓰기 및 읽기 작업을 수행할 수 있도록 간단하게 구현해 보겠습니다. 이 마스터 모듈은 주소, 데이터, 그리고 컨트롤 신호를 슬레이브로 전송하고, 응답을 처리할 수 있어야 합니다.다음은 SystemVerilog를 사용한 AXI 마스터 모듈의 기본 구현입니다:AXI 마스터 모듈을 수정하여 리셋 시 모든 상태 및 신호를 초기화하고, 각 상태 변화시에 적절한 $display 디버깅 메시지를 추가하여 이벤트를 추적할 수 있도록 했습니다. 또한, 주석도 보강하여 코드의 가독성을 높였습니다.modu..
IT/ASIC | FPGA 2024. 4. 30.
AXI 프로토콜 테스트 환경 설계 2 - 테스트벤치 구성
주의!!! 코드는 아직 검증되기 전입니다. 전체적인 구조를 잡기 위해 올려두는 부분이니 그대로 활용이 불가합니다. 하드웨어 설계에서 '탑 다운(top-down)' 방식은 전체 시스템의 아키텍처와 주요 기능을 먼저 설계하고, 그 후에 점차적으로 세부 구성 요소로 들어가는 방법입니다. 반면, '바텀 업(bottom-up)' 방식은 가장 낮은 수준의 구성 요소들을 먼저 설계하고 이를 통합하여 상위 수준의 시스템을 구축하는 방식입니다.AXI 버스 트랜잭터를 설계할 때 '탑 다운' 접근 방식을 취한다면, 가장 먼저 전체 시스템의 테스트벤치를 설계하는 것으로 시작할 수 있습니다. 이 접근 방식의 장점은 전체 시스템의 요구 사항과 인터페이스를 먼저 파악할 수 있다는 것입니다. 이로 인해 시스템을 구성하는 각 모듈이..
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. 4. 22.
HDL 파일 리스트 텍스트 파일 만들기
디자인을 로딩할때 파일 리스트를 하나 만들어 두면 편하다. 여러 폴더로 막 나누어서 관리하면 리스트를 뽑아 내려고 계속 ls 해서 텍스트 추출해서 정리하고 쉽지 않다. 간단하게 *.v 파일을 찾아서 파일리스트 텍스트 파일로 만들어 주는 명령어 셋을 소개 find /path/to/top/directory -name "*.v" > filelist.f 결과는 아래처럼 이렇게 파일 목록이 filelist.f 로 저장된다. RTL/SYSREG/CL\_3.src.v RTL/SYSREG/CL\_3.v RTL/SYSREG/REG0.v RTL/SYSREG/REG1.v RTL/SYSREG/REG2.v RTL/SYSREG/REG3.v 혹시나 ls 에서 파일명만 뽑아 내고 싶다면, 명령어 출력에서 파일 이름만을 뽑아내기 위해..
IT/ASIC | FPGA 2024. 4. 9.
ETM 모델이란? 타이밍 분석에 사용되는 모델
"Extracted Timing Model (ETM)"은 반도체 설계의 타이밍 정보를 포함하는 모델을 말합니다. 이 모델은 설계의 물리적 레이아웃에서 추출되며, 회로의 타이밍 성능을 분석하고 예측하는 데 사용됩니다. ETM은 일반적으로 회로의 지연 시간, 전환 시간, 셋업 및 홀드 시간 등의 타이밍 파라미터를 포함합니다. 직접적인 "Extracted Timing Model" 예제를 제공하는 것은 제한되어 있으며, 특히 구체적인 숫자나 파라미터 값은 설계마다 상당히 다를 수 있습니다. 하지만 간단한 형식의 예를 들어 설명할 수 있습니다: # ETM for a simple NAND gate .model NAND2_ETM .input A, B .output Y .timing A -> Y, rise, 0.1ns..
IT/ASIC | FPGA 2024. 4. 8.
메모리 용량 별 어드레스 비트 표 정리
맨날 계산하는거 그냥 테이블로 하나 쭉 넣어뒀다. 참고용 이제 각 용량에 필요한 어드레스 비트 수, 해당 비트 버스 예시, 그리고 각각의 최대 주소값을 "_"를 뒤에서부터 채워서 대문자로 표현한 테이블을 업데이트했습니다. 용량 (바이트) 필요한 어드레스 비트 수 비트 버스 (예: addr[3:0]) 최대 주소값 (예: 0xFF_FFFF) 1.0 KB 10 addr[9:0] 0x3FF 2.0 KB 11 addr[10:0] 0x7FF 4.0 KB 12 addr[11:0] 0xFFF 8.0 KB 13 addr[12:0] 0x1FFF 16.0 KB 14 addr[13:0] 0x3FFF 32.0 KB 15 addr[14:0] 0x7FFF 64.0 KB 16 addr[15:0] 0xFFFF 128.0 KB 17 a..
IT/ASIC | FPGA 2024. 4. 5.
[용어 도움말] EMA???
`Power domain EMA 값`을 확인한다는 메시지가 있습니다. 조금 설명을 부가할 수 있을까? > 실제 값과는 다르지만, EMA 분석 예시를 간단하게 설명하자면: "SVT 디바이스의 전력 도메인 A에서 측정된 전류 밀도가 1.5mA/um^2로, 이는 재료의 장기 신뢰성을 위한 안전 기준 1.2mA/um^2를 초과합니다. 이러한 초과는 잠재적인 전자 이동 문제를 지적하며, 설계 최적화가 필요함을 나타냅니다." 이처럼 EMA 값은 전류 밀도를 기준으로 하여 전자 이동에 대한 신뢰성 문제를 예측합니다. 설계 에서 그럼 어떤식으로 개선할 수 잇을까요? 트랙의 폭을 넓히거나, 추가 메탈 레이어를 사용하여 전류 분산을 개선 > 전류 밀도를 초과하는 문제를 개선하기 위한 방법으로는, 트랙의 폭을 넓히거나, 추..
IT/리눅스 2024. 4. 5.
실행한 프로세스 ID 가져오는 방법
방금 실행한 프로세스의 ID (PID)를 가져오는 방법에는 여러 가지가 있습니다. 다음은 몇 가지 일반적인 방법입니다: 1. $! 변수 사용하기 리눅스 쉘에서, $! 변수는 가장 최근에 백그라운드로 실행된 작업의 PID를 저장합니다. 만약 프로세스를 백그라운드로 실행했다면, 이 변수를 사용해 해당 PID를 쉽게 얻을 수 있습니다. your_command & echo $! 이 명령어는 your_command를 백그라운드에서 실행한 후, 바로 그 PID를 출력합니다. 2. ps 명령어와 함께 사용하기 ps 명령어는 시스템의 현재 실행 중인 프로세스 목록을 보여주며, 이를 통해 방금 실행한 프로세스의 PID를 찾을 수 있습니다. 예를 들어, 특정 명령어 이름으로 실행된 프로세스의 PID를 찾으려면 다음과 같이..
IT/리눅스 2024. 4. 5.
작업중인 프로세스 강제로 죽이기
kill -9 %1 명령어는 리눅스에서 특정 작업(job)이나 프로세스를 강제 종료시키는 데 사용됩니다. kill: 프로세스에 시그널(signal)을 보내는 명령어입니다. 기본적으로 TERM (terminate) 시그널을 보내어 프로세스에 종료를 요청합니다. -9: SIGKILL 시그널을 나타냅니다. 이는 가장 강력한 종료 시그널로, 운영 체제에게 프로세스를 즉시 종료하도록 요청합니다. SIGKILL은 프로세스에 의해 무시될 수 없으며, 정상적인 종료 절차를 밟지 않고 즉시 종료시킵니다. %: 이 기호는 작업 제어를 위해 사용되며, 일반적으로 백그라운드에서 실행 중인 작업을 지정할 때 사용됩니다. 예를 들어, %1은 현재 쉘 세션의 첫 번째 백그라운드 작업을 의미합니다. 올바른 사용 예는 kill -9 ..
IT/리눅스 2024. 4. 5.
작업을 잠시 백그라운드로 돌려두고 작업하기
Ctrl+Z로 중지한 프로세스를 다루는 것은 리눅스 시스템에서 작업 관리의 기본적인 부분입니다. 이 기능을 통해 사용자는 여러 작업을 더 유연하게 관리할 수 있습니다. 리눅스 터미널에서 프로세스 관리와 관련된 단축키는 주로 명령 실행 중지, 작업의 백그라운드/포그라운드 전환 등에 사용됩니다. Ctrl+Z로 프로세스를 일시 중지한 직후에, 단축키만으로 직접 작업을 백그라운드나 포그라운드로 재개하는 직접적인 방법은 제한적입니다. 그러나 일반적인 작업 관리에 유용한 단축키는 다음과 같습니다: Ctrl+Z: 현재 실행 중인 프로세스를 일시 중지하고 백그라운드로 보냅니다. fg: 가장 최근에 백그라운드로 보낸 프로세스를 포그라운드로 재개합니다. 이 명령은 단축키는 아니지만, 자주 사용됩니다. bg: 가장 최근에 ..