안녕하세요, xmodel 2025.02버전과 UCIE모델을 사용하고 있습니다.
tb_MB_top_x1에서 eye,ber을 주어진 테스트 벤치에서 돌리고자 하는데
ber에서는 addsignal이 먹히지 않고,
eye에서는 plotwave 에러가 뜨면서 Xwave도 열리지가 않습니다.
해결방법이 있을까요?
안녕하세요, 문의주셔서 감사합니다.
1. 먼저 XWAVE 실행 시, .jez로 로드된 경우 BER을 제외한 다른 signal이 plot되지 않는 문제에 대해 답변 드리겠습니다.
tb_MB_top_x1에서 BER을 측정하기 위해 tb_meas_ber.sv 테스트벤치를 사용하고 있습니다.

// TESTBENCH tb_meas_ber.sv
`include "xmodel.h"
module tb_meas_ber ();
parameter t_init = 300e-9; // locking time
// DUT TRX_top
tb_MB_top_x1 DUT (.*);
//probing
initial begin
$xmodel_dumpfile("xmodel.fsdb");
$xmodel_progress();
$xmodel_dumpvars(DUT.RX);
end
probe_ber #(.start(t_init), .mode("int"), .length(23), .width(16)) IBER (.in(DUT.RX.dout_fifo), .in_ref({16{`zero_xbit}}), .clk(DUT.RX.clk_write0));
endmodule
이 테스트벤치는 시뮬레이션 파형을 xmodel.fsdb 파일로 저장합니다. 따라서 다른 신호를 확인하시려면, XWAVE 하단의 "+Add Signals" 버튼을 클릭하신 후, "Signal Browser" 창에서 "Waveform File"을 fsdb 형식으로 로드하여 원하는 신호를 추가해 주시기 바랍니다.

참고로, waveform file이 .jez 형식으로 로드된 경우에는 probe_ber primitive의 결과(BER)만 plot하실 수 있습니다
2. tb_meas_eye 테스트벤치에서 XWAVE 실행 시 plotwave error가 발생하는 문제에 대해 답변 드리겠습니다.
Eye Diagram 확인을 위해 tb_meas_eye.sv 테스트벤치를 사용하고 있으며, Testbench Editor의 "Commands" 옵션 내 "Commands for Plotting Simulation Results" 섹션에서 cmd.py 스크립트를 이용하여 Eye Diagram을 plot하도록 설정되어 있습니다.

최근 cmd.py 파일 형식이 변경됨에 따라 plotwave error가 발생하고 있으므로, 이 문제를 해결하시려면 cmd.py 스크립트를 수정해 주셔야 합니다.
Testbench Editor의 "Design" 옵션에 있는 "Dependent Cellviews and Files"의 목록에서 cmd.py를 선택한 후, 하단의 "Edit" 버튼을 클릭하여 스크립트를 수정하실 수 있습니다.

스크립트 수정 시, 다음과 같이 plot_eyediag 함수의 괄호 안에 포함된 "signal=" 부분을 제거해 주시기 바랍니다. 이후, Netlist를 다시 생성하고 XWAVE를 실행하면 Eye Diagram을 정상적으로 확인하실 수 있습니다.
* "signal=" 제거 전:
load_file('sweep.run/sweep.1/xmodel.jez')
load_file('sweep.run/sweep.2/xmodel.jez')
data_p = 1.0/32e9
t_lock = 400e-9
t_stop = -1
woFFE_name = 'W0:tb_meas_eye.DUT.RX.IRXDP.'
wFFE_name = 'W1:tb_meas_eye.DUT.RX.IRXDP.'
add_analysis_page("Eye Diagram Outputs")
plot_eyediag(signal=woFFE_name+'in'
,trigger=[woFFE_name+'clk_dsk[3]', woFFE_name+'clk_dsk[2]', woFFE_name+'clk_dsk[1]', woFFE_name+'clk_dsk[0]',]
,period=data_p, t_start=t_lock, t_stop=t_stop, stat=True)
plot_eyediag(signal=wFFE_name+'in'
,trigger=[wFFE_name+'clk_dsk[3]', wFFE_name+'clk_dsk[2]', wFFE_name+'clk_dsk[1]', wFFE_name+'clk_dsk[0]',]
,period=data_p, t_start=t_lock, t_stop=t_stop, stat=True)
* "signal=" 제거 후:
load_file('sweep.run/sweep.1/xmodel.jez')
load_file('sweep.run/sweep.2/xmodel.jez')
data_p = 1.0/32e9
t_lock = 400e-9
t_stop = -1
woFFE_name = 'W0:tb_meas_eye.DUT.RX.IRXDP.'
wFFE_name = 'W1:tb_meas_eye.DUT.RX.IRXDP.'
add_analysis_page("Eye Diagram Outputs")
plot_eyediag(woFFE_name+'in'
,trigger=[woFFE_name+'clk_dsk[3]', woFFE_name+'clk_dsk[2]', woFFE_name+'clk_dsk[1]', woFFE_name+'clk_dsk[0]',]
,period=data_p, t_start=t_lock, t_stop=t_stop, stat=True)
plot_eyediag(wFFE_name+'in'
,trigger=[wFFE_name+'clk_dsk[3]', wFFE_name+'clk_dsk[2]', wFFE_name+'clk_dsk[1]', wFFE_name+'clk_dsk[0]',]
,period=data_p, t_start=t_lock, t_stop=t_stop, stat=True)
이 답변이 문제 해결에 도움이 되셨기를 바라며, 추가로 도움이 필요하시면 Community 게시판 혹은 support@scianalog.com로 연락 주시면 감사하겠습니다.
Please login or Register to submit your answer