qinzhanao的个人空间 https://blog.eetop.cn/880778 [收藏] [复制] [分享] [RSS]

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

日志

hdl中的for循环

已有 1358 次阅读| 2016-1-18 16:36 |个人分类:verilog

天气: 阴雨
心情: 平静
         代码:
  genvar ii;
  generate
    for (ii = 0; ii < 512; ii = ii + 1) begin : instruction_gen
      initial begin    //这段逻辑不能综合的原因是将逻辑放在了initial块中!
      // Load SWRITEs
        if(ii < NUM_SWRITES) begin
          instruction[ii] = swrite_instruction[(ii+1)*64-1:ii*64];
        // Load NWRITE_Rs
        end else if(ii < (NUM_SWRITES + NUM_NWRITERS)) begin
          instruction[ii] = nwriter_instruction[(ii-NUM_SWRITES+1)*64-1:(ii-NUM_SWRITES)*64];
        // Load NWRITEs
        end else if(ii < (NUM_SWRITES + NUM_NWRITERS + NUM_NWRITES)) begin
          instruction[ii] = nwrite_instruction[(ii-NUM_SWRITES-NUM_NWRITERS+1)*64-1:(ii-NUM_SWRITES-NUM_NWRITERS)*64];
        // Load NREADs
        end else if(ii < (NUM_SWRITES + NUM_NWRITERS + NUM_NWRITES + NUM_NREADS)) begin
          instruction[ii] = nread_instruction[(ii-NUM_SWRITES-NUM_NWRITERS-NUM_NWRITES+1)*64-1:(ii-NUM_SWRITES-NUM_NWRITERS-NUM_NWRITES)*64];
        // Load DBs
        end else if(ii < (NUM_SWRITES + NUM_NWRITERS + NUM_NWRITES + NUM_NREADS + NUM_DBS)) begin
          instruction[ii] = db_instruction[(ii-NUM_SWRITES-NUM_NWRITERS-NUM_NWRITES-NUM_NREADS+1)*64-1:(ii-NUM_SWRITES-NUM_NWRITERS-NUM_NWRITES-NUM_NREADS)*64];
        // Load MSGs
        end else if(ii < (NUM_SWRITES + NUM_NWRITERS + NUM_NWRITES + NUM_NREADS + NUM_DBS + NUM_MSGS)) begin
          instruction[ii] = msg_instruction[(ii-NUM_SWRITES-NUM_NWRITERS-NUM_NWRITES-NUM_NREADS-NUM_DBS+1)*64-1:(ii-NUM_SWRITES-NUM_NWRITERS-NUM_NWRITES-NUM_NREADS-NUM_DBS)*64];
        end else begin
          instruction[ii] = 64'h0;
        end
      end
    end
  endgenerate
//////////////////////////////////////
      根据verilog-2001语法,for循环是可以被综合的,具体用在组合逻辑中的代码展开。比如对同一个信号或者模块连续赋值,或者例化多个重复性模块。
      但是,上述代码是不可以被综合的。
      仔细观察,这段代码主要逻辑放在了initial块中,本身就不可综合,其次,即使把initial块去除,也无法综合,因为for中存在判断逻辑。所以这段逻辑主要用在仿真中。
     真实设计中,尽量不要用for。

点赞

评论 (0 个评论)

facelist

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

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

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 5

    粉丝
  • 2

    好友
  • 0

    获赞
  • 1

    评论
  • 505

    访问数
关闭

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

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

GMT+8, 2024-5-9 05:16 , Processed in 0.021902 second(s), 14 queries , Gzip On, Redis On.

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