8.2i XST  –  XST在“if else”块中仅分配总线的某些位时挂起-Altera-Intel社区-FPGA CPLD-ChipDebug

8.2i XST – XST在“if else”块中仅分配总线的某些位时挂起

问题描述

XST在“if else”块中仅分配总线的某些位时挂起。

示例代码:

================================================== ==========

进程(rst_i,clk_i)

开始

如果rst_i =’1’那么

general_error <=(others =>’0’);

elsif clk_i =’1’和clk_i’event然后

对于f在0到31循环中

如果hw_int_error(f)=’1’那么

general_error(0)<=’1′;

elsif sw_int_error(f)=’1’然后

general_error(1)<=’1′;

elsif cpc_int_error(f)=’1’然后

general_error(2)<=’1′;

万一;

结束循环;

万一;

结束过程;

==================================================

上面的代码导致XST挂起。

解决/修复方法

当有可以推断寄存器的构造时,XST会挂起。

上面的示例代码将导致锁存器,因为并非所有的总线位都被分配。

要解决此问题,您可以在“if else”块中分配总线的所有位,它将正常工作。

更正示例代码:

==============================================

进程(rst_i,clk_i)

开始

如果rst_i =’1’那么

general_error <=(others =>’0’);

elsif clk_i =’1’和clk_i’event然后

对于f在0到31循环中

如果hw_int_error(f)=’1’那么

general_error <= x“0000_0001”;

elsif sw_int_error(f)=’1’然后

general_error <= x“0000_0002”;

elsif cpc_int_error(f)=’1’然后

general_error <= x“0000_0004”;

万一;

结束循环;

万一;

结束过程;

===========================================

Xilinx目前正在调查XST中针对此问题的修复方法。目前没有安排修复程序。

请登录后发表评论

    没有回复内容