본문 바로가기

All Posts83

[System Verilog] package(패키지)? 목차 SystemVerilog의 패키지(package)는 코드의 재사용성과 모듈화를 위한 핵심 기능 중 하나입니다. SystemVerilog에서 패키지는 언제 도입되었을까? 패키지는 SystemVerilog에서 새롭게 도입된 기능입니다. 기존 Verilog에는 패키지 개념이 없었고, 상수나 타입 정의를 공유하려면 include 방식에 의존해야 했습니다. 이는 코드 중복과 유지보수의 어려움이 있었습니다. SystemVerilog는 C/C++의 네임스페이스 개념을 차용하여 package를 도입함으로써, 모듈 간의 명확한 경계와 재사용 가능한 코드 구조를 가능하게 했습니다. Example패키지 사용 시 주의사항 1. 컴파일 순서 패키지는 사용되기 전에 반드시 컴파일되어야 합니다. 예: alu_pkg.sv →.. 2025. 6. 24.
합성(Synthesis) 이란? 목차 한마디로,RTL Design를 SDC와 UPF 그리고 실제 Fab에서 사용할 Standard Cell와 Hard Macro IP의 Liberty(DB로 변환해서 사용)까지 위 모든 input들을 기반으로 Gate-Level의 Net으로 바꾸는 과정입니다. 반도체 설계의 과정 중 하나인 합성(Synthesis)은 RTL 설계를 실제 하드웨어로 구현 가능한 게이트 수준(Gate-Level)의 회로로 변환하는 핵심 단계입니다. 합성이란 무엇인가? 합성은 HDL(Hardware Description Language)로 작성된 RTL 코드를 바탕으로, 논리 게이트 수준의 넷리스트(Netlist)를 생성하는 과정입니다. Register-Level에서 Gate-Level로 변환 합니다. Pre-Netlis.. 2025. 6. 24.
[Verilog & SV] task "automatic" vs "static" 목차 SystemVerilog에서 task를 정의할 때 automatic과 static의 차이는 단순한 문법 차이가 아니라, 변수의 저장 방식, 재진입성(reentrancy), 그리고 병렬 실행의 안정성에 큰 영향을 줍니다. 기본 개념구분static task (기본값)automatic task기본 동작지역 변수는 정적으로 저장됨지역 변수는 스택에 저장됨재진입성❌ 불가능 (동시 호출 시 충돌)✅ 가능 (병렬 호출 안전)메모리한 번만 할당, 공유됨호출마다 새로 할당사용 예시단순 순차 로직병렬 실행, 재귀 호출 등기본값static명시적으로 automatic 선언 필요예제static task 예시task count_static(); int i = 0; i++; $display("static i .. 2025. 6. 9.
[Linux] 작업 일시중지 및 돌아가기 Ctrl+C 실행중인 작업 종료Ctrl+Z 실행중인 작업 정지 (Stop)&명령어 뒤에 붙이면 background 작업example '$grep -v pass &'$ jobs일시정지된 작업 목록 보기$fg %[background number]​foreground에서 작업실행$bg %[background number] background에서 작업실행$kill %[background number]background의 작업을 종료$kil -9 [PID number]해당 process ID에 해당하는 작업 강제종료-9 옵션은 강제종료입니다. 2025. 4. 23.
[Linux] grep 목차 grep의 종류grep은 3가지 종류가 있습니다. egrp은 정규표현식만으로 검색하는 것이고, fgrep은 문자열로 검색하는 grep을 말하며 각각 grep의 -E, -F 옵션을 사용했을 때와 결과는 같습니다.명령어설명정규표현식 사용grep다중 패턴을 검색합니다.Oegrep정규 표현식 패턴으로 검색합니다.Ofgrep문자열 패턴으로 검색합니다.Xgrep 옵션-c : 일치하는 행의 수를 출력합니다.-i : 대소문자를 구별하지 않습니다.-v : 일치하지 않는 행만 출력합니다.-n : 포함된 행의 번호를 함께 출력합니다.-l : 패턴이 포함된 파일의 이름을 출력합니다.-w : 단어와 일치하는 행만 출력합니다.-x : 라인과 일치하는 행만 출력합니다.-r : 하위 디렉토리를 포함한 모든 파일에서 검색합니다... 2025. 4. 9.
[System Verilog] Mailbox? 목차 Mailbox?Similar to an unlimited FIFOSemaphore는 key를 이용해 Data Access를 제어하지만, Mailbox는 Data를 가지고 있다가 전달NameDescriptionfunction new (int bound);Mailbox 생성, bound (> 0)는 mailbox queue의 크기,bound = 0은 무제한의 mailboxfunction int num();Mailbox에 있는 message 수 반환task put (singular message);Mailbox에 message를 put,Mailbox의 공간이 없으면 get() 이전까지 차단task get (ref singular message);Mailbox에서 message 검색,가져올 메시지가 없으면.. 2025. 4. 9.
[Verilog & SV] 시프트 연산자(Shift Operators) 피연산자를 오른쪽 또는 왼쪽으로 이동시키고 크기는 일정하게 유지합니다.>> : 시프트된 비트가 손실되고 벡터가 0으로 채워집니다.>> : 왼쪽 이동 비트가 MSB로 채워집니다.피연산자는 unsigned으로 간주해야 합니다.​a = 4’b1010 b = 4’b10X0Character Operation performed Example Type>>Logical shift rightb >> 1 results 4’b010XBinaryLogical shift lefta Binary>>>Arithmetic shift rightb >>> 1 results 4’b110XBinaryArithmetic shift lefta Binary>>=Logic shift assigna >>= b (a = a >> b)BinaryLog.. 2025. 4. 9.
[Verilog & SV] 논리 연산자(Logical Operators) 목차 Logical Operatorsa = 3’b010 b = 3’b000Character Operation performed Example Type!Logical negation!(a && b) = 1’b1Unary&&Logical and (bothexpressions true)a && b = 1’b0Binary||Logical or (One or bothexpressions true)a || b = 1’b1Binary->Logical implicationexp1 -> exp2 is same with(!exp1 || exp2)BinaryLogical equivalenceexp1 exp2 is same with((exp1->exp2)&&(exp2->exp1))UnaryLogical implication.. 2025. 4. 9.
[Verilog & SV] Bitwise, 감소 연산자(Reduction Operators) 목차 Reduction Operator Reduction Operator들은 벡터를 단 하나의 비트로만 줄입니다.Bitwise 연산입니다.If there are the characters Z and X, the result can be a known value.Example​ a = 5’b10101 b = 4’b0011 c = 3’bz00 d = 3’bx011 Character Operation performed Example Type&And all bits&a = 1’b0, &d = 1’b0Unary~&Nand all bits~&a = 1’b1Unary|Or all bits|a = 1’b1, |c = 1’bXUnary~|Nor all bits~|a= 1’b0Unary^Xor all bits^a = 1’.. 2025. 4. 9.
반응형