【常见 Error & Bug】Vivado仿真报错 ERROR: [XSIM 43-3322] 解决方法

问题发现

在进行 DDR3 实验时,仿真时出现以下报错信息。

ERROR: [XSIM 43-3322] Static elaboration of top level Verilog design unit(s) in library work failed.

谷歌翻译为:错误:[XSIM 43-3322]顶层Verilog设计单元在库工作中静态精化失败。

解决办法

经过仔细检查,发现出现这个报错主要可能有以下两种原因:

例化名写错

initial begin
	force inst_top_ddr3_init.user_clk              = user_clk;  //用户控制时钟
	//写指令FIFO控制模块
	force inst_top_ddr3_init.fifo_wr_cmd_en        = fifo_wr_cmd_en;
	force inst_top_ddr3_init.fifo_wr_cmd_brust_len = fifo_wr_cmd_brust_len;
	force inst_top_ddr3_init.fifo_wr_cmd_addr      = fifo_wr_cmd_addr;
	force inst_top_ddr3_init.fifo_wr_cmd_instr     = fifo_wr_cmd_instr;
	//写数据FIFO控制模块
	force inst_top_ddr3_init.fifo_wr_data_en       = fifo_wr_data_en;
	force inst_top_ddr3_init.fifo_wr_data          = fifo_wr_data;
	//读指令FIFO控制模块
	force inst_top_ddr3_init.fifo_rd_cmd_en        = fifo_rd_cmd_en;
	force inst_top_ddr3_init.fifo_rd_cmd_brust_len = fifo_rd_cmd_brust_len;
	force inst_top_ddr3_init.fifo_rd_cmd_addr      = fifo_rd_cmd_addr;
	force inst_top_ddr3_init.fifo_rd_cmd_instr     = fifo_rd_cmd_instr;
	//读数据FIFO控制模块
	force inst_top_ddr3_init.fifo_rd_data_en       = fifo_rd_data_en;

	//数据获取
	force rst                = inst_top_ddr3_init.inst_ddr3_arbit.rst;
	force rd_end             = inst_top_ddr3_init.rd_end;
	force fifo_rd_data_count = inst_top_ddr3_init.fifo_rd_data_count;
	force fifo_wr_cmd_full   = inst_top_ddr3_init.fifo_wr_cmd_full;
	force wr_end             = inst_top_ddr3_init.wr_end;
end

top_ddr3_init inst_top_ddr3_init (
		.ddr3_dq      (ddr3_dq),
		.ddr3_dqs_n   (ddr3_dqs_n),
		.ddr3_dqs_p   (ddr3_dqs_p),
		.ddr3_addr    (ddr3_addr),
		.ddr3_ba      (ddr3_ba),
		.ddr3_ras_n   (ddr3_ras_n),
		.ddr3_cas_n   (ddr3_cas_n),
		.ddr3_we_n    (ddr3_we_n),
		.ddr3_reset_n (ddr3_reset_n),
		.ddr3_ck_p    (ddr3_ck_p),
		.ddr3_ck_n    (ddr3_ck_n),
		.ddr3_cke     (ddr3_cke),
		.ddr3_cs_n    (ddr3_cs_n),
		.ddr3_dm      (ddr3_dm),
		.ddr3_odt     (ddr3_odt),
		.sys_clk      (sys_clk),
		.rst_n        (rst_n)
	);

以上部分代码为例,在 testbench 文件中利用 force 语句对信号进行绑定时,刚开始的语句中inst_top_ddr3_init.wr_end的inst_top_ddr3_init写成了top_ddr3_init,也就是用了顶层模块的模块名,而不是用的顶层的例化名,因此就出现了以上的报错,

在顶层创建任务时,任务不存在

initial begin
    #100
    wr_cmd_fifo_en();
end

//创建写指令FIFO使能
// task wr_cmd_fifo_en;
// 	begin
// 		@ (negedge rst);
// 		@ (negedge fifo_wr_cmd_full);
// 		@ (posedge user_clk);
// 		@ (posedge user_clk);
// 		@ (posedge user_clk);
// 		@ (posedge user_clk);
// 		@ (posedge user_clk);
// 		@ (posedge user_clk);
// 		@ (posedge user_clk);
// 		@ (posedge user_clk);
// 		fifo_wr_cmd_en <= 'd1;
// 		@ (posedge user_clk);
// 		fifo_wr_cmd_en <= 'd0;		
// 	end	
// endtask

比如以上情况,当在 testbench 中调用 task 任务时,但是此时task所调用的任务名不存在,或者被注释了(当时注释错了),此时进行仿真也会出现以上报错。

目前我所遇到这个报错的原因主要有这两个。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linest-5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值