温文2尔雅的个人空间 https://blog.eetop.cn/955266 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

The statements in this 'always' block are outside the scope 解决办法

已有 4631 次阅读| 2013-10-8 18:15

The statements in this 'always' block are outside the
 scope of the synthesis policy的解决办法

我源代码如下,特别是红色显示部分。红色显示部分就是错误的原因。

always @(posedge CLK or negedge RESET)
begin
if (~RESET)
begin
wrtaddr_para <= 3'b0;
rdaddr_para  <= 3'b0;
para0 <= 84'h00; 
para1 <= 84'h00;
para2 <= 84'h00;
para3 <= 84'h00;
para_empty <= 1'b1;
end
else
begin
if (wrtsent_ready & (~para_empty))
begin
rdaddr_para <= rdaddr_para + 1;
case (rdaddr_para[1:0])
2'b01: wrtsent_para <= para1;
2'b10: wrtsent_para <= para2;
2'b11: wrtsent_para <= para3;
default: wrtsent_para <= para0;
endcase
end
end
if (wrtaddr_para == rdaddr_para)
para_empty <= 1'b1;
else
para_empty <= 1'b0;
end

修改后的代码如下:把这部分代码放到整个if...else的begin...end模块中。
always @(posedge CLK or negedge RESET)
begin
if (~RESET)
begin
wrtaddr_para <= 3'b0;
rdaddr_para  <= 3'b0;
para0 <= 84'h00; 
para1 <= 84'h00;
para2 <= 84'h00;
para3 <= 84'h00;
para_empty <= 1'b1;
end
else
begin
if (wrtsent_ready & (~para_empty))
begin
rdaddr_para <= rdaddr_para + 1;
case (rdaddr_para[1:0])
2'b01: wrtsent_para <= para1;
2'b10: wrtsent_para <= para2;
2'b11: wrtsent_para <= para3;
default: wrtsent_para <= para0;
endcase
end
if (wrtaddr_para == rdaddr_para)
para_empty <= 1'b1;
else
para_empty <= 1'b0;
end
end

源代码很长,我是为了说明问题,随意截取了一部分代码。如果直接把他粘贴走去验证这个错误,恐怕要失望了。

点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 5

    获赞
  • 4

    评论
  • 363

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-27 22:53 , Processed in 0.028167 second(s), 13 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部