首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在always_comb中生成SystemVerilog内部块

在always_comb中生成SystemVerilog内部块
EN

Stack Overflow用户
提问于 2021-07-26 09:02:56
回答 1查看 845关注 0票数 0

我知道您不能在generate中的always_comb块中使用SystemVerilog,但是我想做一些类似于下面所示的事情,而且我也不知道如何才能做到这一点。

代码语言:javascript
复制
genvar i, j;
generate
for (i = 0; i < 4; i++) begin
    always_comb begin 
        unique case (STATE) 
            0: begin
               ...
               for(j = 0; j < 8; j++)
                   var[j*8+2*i+1:j*8+2*i] = 2'b11;
            end
            ...
        endcase

    end
end
endgenerate

现在,它给出了以下编译错误:Unknown range in part select --任何帮助都将被接收。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-26 13:42:00

  1. var是verilog中的关键字,它不能用作variable.
  2. genvar j不能在系统verilog中的始终block.
  3. partselect中进行修改,必须至少有一个恒定的宽度。

所以,你需要

int

  • your

  • var重命名为

  • j声明为非genvar变量的其他变量,即宽度总是2,因此您可以使用系统verilog +:-: range var实际上不再需要系统verilog中的generate..endgenerate标记。H 228G 229

以下是一个例子:

代码语言:javascript
复制
genvar i;
//generate
  for (i = 0; i < 4; i++) begin: loop
    always_comb begin 
        unique case (STATE) 
            0: begin
               //...
              for(int j = 0; j < 8; j++)
                v[j*8+2*i +: 2] = 2'b11;
                   //v[j*8+2*i+1:j*8+2*i] = 2'b11;
            end
            //...
        endcase
    end
  end
//endgenerate
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68527115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档