반응형

verilog 4

[Verilog 팁] 폭 없는 파라미터에 ~ 썼다가 ||가 항상 TRUE 되는 함정

요약~(비트 NOT) + 사이즈 안 줬던 파라미터 → 32 bit로 확장돼서 사고 난다.!(논리 NOT) 은 1-bit 불리언이므로 조건식엔 얘가 안전하다.파라미터/상수엔 반드시 bit/logic 타입이나 [0:0] 식 크기를 붙여라.실무에서 if (~USE_EN || valid) 같은 식은 “항상 1”로 고정될 수 있다.→ 시뮬 파형 안 뜨고, 합성 땐 로직 통채로 날아감.👶 왜 이런 일이?상황 시뮬레이터 내부에서 벌어지는 일parameter USE_EN = 1; (폭 없음)32-bit 정수 32'h0000_0001 로 변신~USE_EN32'hFFFF_FFFE (LSB만 0)`~USE_EN → valid가 바뀌어도 결과는 1→ 파형 평평, 디버그 지옥. 🛠️ 실전 회피법체크리스트 한 줄 팁논리 조..

공부/Verilog 2025.05.02

[개인 공부] Skid Buffer란?

두 줄 정리.stall 발생시 (수신측이 데이터 받을 준비가 안 된 경우), buffer 내부의 register가 데이터를 잠깐 저장.이후 데이터 받을 준비 됐을 때 전달.  1. 왜 스키드 버퍼인가?AXI 기반 설계에서는 데이터가 빠르게 처리되지만, 파이프라인상의 어느 한 부분에서 스톨(stall) 신호가 발생하면 데이터가 유실될 위험이 있습니다.문제 상황:조합 논리(Combinatorial Logic) vs. 레지스터드(Registered) 신호:파이프라인에서 스톨 신호가 조합 논리로 생성되면 타이밍 여유가 부족할 수 있습니다. 반면, 스톨 신호를 레지스터드 방식으로 처리하면 이전 단계에서는 이미 데이터를 넘겨버려서 데이터가 유실될 가능성이 생깁니다.스키드 버퍼의 역할:데이터 보존: 스톨 상황에서 입..

공부/NPU 2025.04.08

[그냥 공부]#2 signed & unsigned

Signed type의 표현을 부호화 시켰기에 표현가능한 수의 범위가 절반으로 줄어듬 [$-2^{n-1}$~$ 2^{n-1}-1$] (MSB의 숫자가 0 = 양수 1 = 음수) Unsigned 부호가 없음 [$0$~$ 2^{n}-1$] (양수만 존재) 일반적으로 연산을 할 때 Signed + Signed , Unsigned + Unsigned 이렇게 부호를 통일시켜 연산을 한다면 오류가 발생할 일이 없다. 하지만, 불가피하게 Unsigned + Signed로 연산을 하게 될 경우 연산 과정에서 $Signed를 통해 부호를 통일시켜준다. 이때 그냥 $signed 에 값을 넣으면 MSB가 초기에는 1(음수)을 지니므로 1'b0을 통해 부호를 재 정의해 주자. 다음은 unsigned 값을 가진 num1과 si..

공부/Verilog 2022.03.06

[그냥 공부]#1 등가 연산자 , 타이밍 제어

등가 연산자 if(a !== b) 다음과 같은 ( !== )연산자를 사용하는 이유는 우리가 if 문을 동작하기 위해 필요한 참 & 거짓 값을 정확하게 얻으려면 논리 결과값이 0 또는 1로 출력되어야 한다. 하지만, if( a != b ) 와 같은 연산자를 이용하면 a 와 b 가 x or z 의 값을 지녔을 시 논리 결과값이 X 로 출력이 되어 버그가 생긴다. 타이밍 제어 always @( posedge clock or posedge reset) 와 같은 코드에서 or 연산자 대신 , (콤마) 도 사용 가능하다. 이는 clock 신호가 상승 클럭이거나 reset 신호가 상승일 때 동작함을 이야기한다. 여기서 @ 는 사건 제어를 지정하는 데 사용된다. @ (clock) q = d; // q=d 는 신호 클럭..

공부/Verilog 2022.03.01
728x90
반응형