TPSRAM,DPSRAM TB코드 문법 질문
begin: tpsram_write
@(posedge clk);
for (int i=0;i<DEPTH;i++) begin
we <= 1;
wa <= i;
wd <= 'h10+i;
@(posedge clk);//필요한 이유
end
we <= 0; @(posedge clk);
end
@(posedge clk); for문 마지막과 begin문 마지막에 필요한 이유가 뭔가요?
주석 처리 후 시뮬레이션을 돌려보니 for문에 맞게 wa값과 wd값이 업데이트가 되지 않았습니다.
혹시 system verilog에서 for문과 begin문을 작성하면 @(posedge clk)을 해주는 것이 규칙인가요?
답변 2
0
네 안녕하세요, 답변 남겨드립니다.
for문 마지막에 @(posedge clk)가 필요한 이유는 문법때문이 아니라, 실제 그러한 동작을 의도했기 때문입니다. @라는것이 이벤트 트리거라서, 그 이벤트가 발생할 때에만 아래 구문을 이어가게 되어있습니다.
- for 루프 내에서 we, wa, wd와 같은 신호를 업데이트한 후, 다음 클럭 사이클에서 이 신호들이 실제로 반영되도록 하기 위해 @(posedge clk)를 사용합니다. 클럭의 상승 에지에서 신호가 업데이트되므로, 이 시점을 명시적으로 지정해 주어야 합니다.
begin문 마지막에 @(posedge clk) 또한 마찬가지입니다.
- begin 블록이 끝나는 시점에서도 클럭의 상승 에지에서 신호가 안정적으로 반영되도록 하기 위해 @(posedge clk)를 사용합니다. 이는 블록 내의 모든 신호가 클럭에 동기화되어 업데이트되도록 보장합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
이광언님, 질문 주셔서 감사합니다.
SystemVerilog에서 @(posedge clk); 문장은 시뮬레이션에서 시계를 기반으로 동작이 진행되도록 하기 위한 동기화 포인트입니다. 초기 begin문과 for문의 마지막에 있는 @(posedge clk);는 각각의 시계 싸이클에 따라 동작을 제어합니다.
@(posedge clk);을 for문 내 반복 과정에서 추가하면, 매 반복마다 클럭의 상승 에지에서 for문의 내부 블록이 실행됩니다. 이렇게 해야wa와wd의 값이 매 클럭 싸이클마다 올바르게 갱신됩니다.
- 만약
@(posedge clk);가 없다면 for문 내부의 모든 할당이 클럭의 영향을 받지 않고 즉시 연속적으로 실행되므로, 원하는 디지털 로직의 동작을 수행하지 않습니다.
따라서, SystemVerilog에서는 for문과 begin문 내에서 클럭 신호에 맞춰 동작을 보장하기 위해 @(posedge clk);을 사용하는 것이 통상적입니다.
이해가 되지 않거나 추가 질문이 있으시다면 언제든지 문의해 주세요.
여기에서 내용을 더 확인하실 수 있습니다.
강의 만료일 연장 신청
0
31
2
강의자료 pdf파일
0
89
2
수강기간변경
0
75
2
프로그램 종류
0
89
1
안녕하세요 강의 도중 궁금한 점 있어서 질문드립니다!
0
85
1
수강기간 변경관련
0
65
2
수강기간 만료
0
72
2
수강 연장 문의
0
71
2
I2C SCL_Synched, SDA_Synched 질문
0
83
1
no data path질문
0
102
3
SRAM 강의 modelsim 시뮬레이션에서 inner 메모리를 Objects 리스트에서 찾으려고 하는데 안보입니다.
0
88
2
DataMem 스펙 질문
0
54
1
Hamming Code 질문
0
66
1
W_CRC 값 질문하기
0
60
1
Precharge에 대한 질문
0
167
1
tpsram spec 질문
0
64
2
학습 관련 질문 있습니다!
0
87
2
[과제7] AXI 통신 프로토콜 설계하기 문의드립니다
0
94
2
SRAM 강의 TB 작성 후 waveform 확인시에 dout이 모두 don't care 처리 관련 질문드립니다.
0
105
5
SRAM Interface Behavior(Diagram) 질문
0
133
3
vivado와 quartus 프로그램의 systhesis 결과 차이에 대해 궁금한 점 있습니다
0
185
2
tool 질문
0
92
2
CDC 메타스태빌리티 질문
0
66
1
SRAM module RTL viewer 이상
0
97
2





