情形一:改变宏的值
rtl中如下:
`define U_DLY 1always @(posedge clk or negedge rst_n)beginif (~rst_n)dout <= #`U_DLY 12'h0;...
end
诉求:验证过程中,希望在某些仿真里U_DLY为0。
我有尝试在验证平台的top_tb里重新定义U_DLY但是无效。不知道为啥,大家可以建议指正解惑。
解决方法:在编译脚本里+define+U_DLY=0
./cfg.mk (验证环境的仿真脚本)ifneq ($(findstring target_no_dly,$(mode)), )//如果仿真mode是 target_no_dlyCOMPILE_USER_OPTS += +define+U_DLY=0//U_DLY 就会是 0...
endif
情形二:改变rtl的参数值
rtl中如下:
module loadline
#( parameter PARA_A = 11,parameter PARA_B = 10
)
(input [PARA_A:0] signal_a,...output [PARA_B:0] signal_d
)...endmodule
诉求:希望在验证的时候 PARA_A = 10
解决方法:在验证平台的top_tb中重新定义 。找个地儿直接写上 下边这行就ok了
defparam top_tb.U_LOADLINE.PARA_A = 10;
ok,祝大家今天也愉快自洽的一天!