Dump 받기

RTL 2011. 2. 11. 10:54

Waveform으로 확인이 힘들거나 너무 데이터가 많아서 복잡할 때에는 simlulation을 통해 dump를 받아서 확인해보아야 한다.
여기서는 simulation에서 데이터를 dump받는 방법을 알아보도록 한다.

메모리 내용을 dump받는 법을 간단한 예를 들어 알아보도록 하자

initial
begin
fp_dump = $fopen("filename");
end

always @(path_of_clk)
begin
if (path_of_starting_dump_signal)
begin
          #1000
          for (i=start_address; i<end_address; i=i+4)
          begin
                   $fwrite(fp_dump, "%x\n", mem[7:0]);
                   $fwrite(fp_dump, "%x\n", mem[15:8]);
                   $fwrite(fp_dump, "%x\n", mem[23:16]);
                   $fwrite(fp_dump, "%x\n", mem[31:24]);
          end                 
end
end

위의 initial에 해당하는 부분은 file pointer를 만들어주는 부분이고
always문 안에 있는 내용이 실제로 dump를 하는 부분이다.
일단 module의 동작이 모두 끝나 dump가 가능한 상황이 되면
(위의 예에서는 path_of_starting_dump_signal이 pulse로 주어지는 경우이다.)
memory의 내용을 start_address부터 end_address까지 32bit씩 dump한다.

위와 같은 방법으로 memory의 내용을 dump받아 활용할 수 있다.

'RTL' 카테고리의 다른 글

Power Consumption 줄이는 첫단계  (0) 2011.02.11
Simulation 자동 종료하기  (0) 2011.02.11
Clock Control  (0) 2011.02.10
AXI narrow write operation  (0) 2010.11.24
SystemVerilog Syntax vi Plug-in  (0) 2010.06.14
Posted by sunshowers
,