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: 가장 최근에 ..
IT/리눅스 2024. 4. 4.
tee 명령 - 표준 출력을 파일로 저장하자
tee 명령어는 Unix 및 Unix 계열 시스템에서 사용되는 유틸리티로, 표준 입력으로부터 받은 데이터를 표준 출력과 하나 이상의 파일로 동시에 출력하는 기능을 합니다. 이 명령어는 파이프라인에서 매우 유용하게 사용되며, 명령어의 실행 결과를 화면에 보여주면서 동시에 파일에도 기록하고 싶을 때 자주 사용됩니다. 기본 사용법 some_command | tee output_file 이 경우, some_command의 실행 결과가 output_file에 저장되면서 동시에 화면에도 출력됩니다. 주요 옵션 -a 또는 --append: 파일에 데이터를 추가합니다. 이 옵션이 없으면, output_file의 내용이 명령어 실행 시 지워지고 새로운 내용으로 대체됩니다. some_command | tee -a outp..
IT/리눅스 2024. 4. 4.
백그라운드 작업을 다시 fg로 가져오기
백그라운드에서 실행 중인 작업을 다시 포그라운드로 가져오고 싶다면, fg 명령어를 사용하면 됩니다. 다음은 이 과정을 단계별로 설명합니다: 먼저, 현재 세션에서 실행 중인 백그라운드 작업의 목록을 확인합니다. 이를 위해 jobs 명령어를 사용할 수 있습니다. 이 명령은 모든 백그라운드 작업과 각 작업에 할당된 번호를 보여줍니다. jobs jobs 명령의 출력에서, 포그라운드로 가져오고 싶은 작업의 번호를 확인합니다. 이 번호는 대괄호([]) 안에 표시됩니다. 이제, fg 명령어와 함께 해당 작업 번호를 사용하여 백그라운드 작업을 포그라운드로 이동시킬 수 있습니다. 예를 들어, 백그라운드 작업 번호가 1인 작업을 포그라운드로 가져오고 싶다면 다음과 같이 입력합니다: fg %1 여기서 %1은 jobs 명령어..
IT/IoT | Hardware 2024. 4. 3.
DDR PHY, 컨트롤러 역할은?
설명이 너무나 상식적이고 기본적인 이야기일 수 있지만, DDR 컨트롤러와 PHY (Physical Layer)는 메모리 접근 및 데이터 전송 과정에서 중요한 역할을 담당합니다. 이 둘은 서로 밀접하게 연결되어 있으며, 각각의 역할 분담을 통해 시스템의 전반적인 메모리 성능을 관리합니다. DDR 컨트롤러의 역할 DDR 컨트롤러는 시스템의 메모리 관리를 담당하는 주요 구성 요소입니다. 그 주요 역할은 다음과 같습니다: 메모리 접근 관리: 컨트롤러는 프로세서로부터의 메모리 접근 요청을 받아, 이를 처리합니다. 메모리 읽기 및 쓰기 요청을 적절히 스케줄링하고 실행합니다. 주소 매핑과 번역: 메모리 주소를 관리하며, 논리적 주소를 물리적 주소로 변환합니다. 데이터 버퍼링 및 캐싱: 데이터 전송 효율을 높이기 위해..