如何通过系统verilog中的for循环连接信号以实现所需的属性

问题描述 投票:0回答:0

我有一个名为

signal
的信号,这是信号的定义:

signal = |{`PS.iptile0.psst0.cols1.active_signal,
           `PS.iptile0.psst1.cols1.active_signal,
           `PS.iptile0.psst2.cols1.active_signal,
           `PS.iptile0.psst3.cols1.active_signal,
           `PS.iptile1.psst0.cols1.active_signal,
           `PS.iptile1.psst1.cols1.active_signal,
           `PS.iptile1.psst2.cols1.active_signal,
           `PS.iptile1.psst3.cols1.active_signal};

我想做的是通过 for 循环实现这个属性 这是我当前的代码:

logic signal
logic [TILE*PARTS-1:0] signal_new;

generate
  for (genvar i = 0; i < TILE; i++) begin
    for (genvar j = 0; j < PARTS; j++) begin
        assign signal_new[i*PARTS+j] = {`PS.iptile${i}.psst${j}.cols1.active_signal};
    end
  end
endgenerate
signal = | {signal_new};

但是它显示语法错误:

Error-[SE] Syntax error
token is '.'
line: assign signal_new[i*PARTS+j] = {`PS.iptile${i}.psst${j}.cols1.active_signal};

根据我的理解,这是因为 signal_new 我正在尝试使用“.”进行连接。但我们只能连接一个字符串而不是一个逻辑。 无论如何我可以解决这个问题吗?

注意: 我想要

PS.iptile0.psst0.cols1.active_signal
这样而不是这样
PS.iptile[0].psst[0].cols1.active_signal
这就是为什么我不能使用

{`PS.iptile[i].psst[j].cols1.active_signal};
concatenation system-verilog
© www.soinside.com 2019 - 2024. All rights reserved.