System verilog (vlog-2110)非法引用网络“;开始&引用;A「&引用;B";

System verilog (vlog-2110)非法引用网络“;开始&引用;A「&引用;B";,system-verilog,System Verilog,为什么会出现这种错误? 我不明白,开始,A和B在敏感度列表中声明。。 代码是测试台上的一个程序。这个设计是一个多重的。 开始,A和B是我设计的信号,我需要这些信号在变量中工作 当我使用questasim运行RTL模拟时,错误会跳转。我试图将分配更改为blockin,但没有用 我还试图改变我的信号声明的方式,但什么也没有改变 program estimulos(input CLOCK, RESET,input logic START,input logic signed[7:0] A, B,out

为什么会出现这种错误? 我不明白,开始,A和B在敏感度列表中声明。。 代码是测试台上的一个程序。这个设计是一个多重的。 开始,A和B是我设计的信号,我需要这些信号在变量中工作

当我使用questasim运行RTL模拟时,错误会跳转。我试图将分配更改为blockin,但没有用

我还试图改变我的信号声明的方式,但什么也没有改变

program estimulos(input CLOCK, RESET,input logic START,input logic signed[7:0] A, B,output logic signed[15:0] S,output logic END_MULT,

  reg [15:0] cola_targets   [$],
  reg [15:0] target,pretarget,salida_obtenida,
  reg FINAL);

//esto nos permitirá utilziar el operador ## para los ciclcos de reloj

covergroup valores_X;    
  idea1A:coverpoint A;
  idea2B:coverpoint B;
endgroup;      


//declaraciones de tres objetos
  Bus busInst; //objeto de la clase para RSCG
  valores_X veamos; //objeto del covergroup

task monitor_input;
   begin
     while (1)
       begin       
         @(posedge CLOCK);
         if (START==1'b1)
           begin
             pretarget=A*B;//funcion ideal de obtencion de la multiplicación
            cola_targets={pretarget,cola_targets};//meto el valor deseado en la cola
           end
        end
   end
 endtask
 // defino mo
  task monitor_output;
   begin
     while (1)
       begin       
         @(posedge CLOCK);
         if (END_MULT==1'b1)
           begin
            target= cola_targets.pop_back();
             assert (salida_obtenida==target) else $error("operacion mal realizada");
           end
        end
   end
 endtask 


  initial
begin
    busInst = new;
    veamos=new;
    fork
      monitor_input;
      monitor_output;
    join_none
  while ( veamos.get_coverage()<25)
    begin
       busInst.paresA.constraint_mode(1);
        busInst.paresB.constraint_mode(1);
        busInst.imparesA.constraint_mode(0);
        busInst.imparesB.constraint_mode(0);
       $display("pruebo con paresA, paresB");
       assert (busInst.randomize()) else    $fatal("randomization failed");
        A<= busInst.A;  
        B<= busInst.B;
        veamos.sample();
            @(posedge CLOCK);
       START <= 1;
        @(posedge CLOCK);
       START <= 0;
      @(negedge END_MULT);
   end
   $stop;
end
endprogram
program estimulos(输入时钟、复位、输入逻辑启动、输入逻辑签名[7:0]A、B、输出逻辑签名[15:0]S、输出逻辑结束,
reg[15:0]可口可乐目标[$],
注册[15:0]目标,预目标,salida_obtenida,
最终注册);
//不允许任何人在歌剧院演出
覆盖群valores_X;
idea1A:覆盖点A;
idea2B:覆盖点B;
端基;
//目标声明
巴士业务//克拉斯公园酒店
瓦洛雷斯·维阿莫斯//覆盖群目标
任务监视器输入;
开始
而(1)
开始
@(posedge时钟);
如果(开始==1'b1)
开始
预目标=A*B//多重理想函数
cola_targets={pretarget,cola_targets}//梅托·埃尔·瓦罗·德塞多·恩拉·科拉
结束
结束
结束
结束任务
//迪诺莫
任务监视器输出;
开始
而(1)
开始
@(posedge时钟);
if(END_MULT==1'b1)
开始
target=cola_targets.pop_back();
assert(salida_obtenida==target)else$error(“操作错误”);
结束
结束
结束
结束任务
最初的
开始
busInst=新的;
veamos=新的;
叉
监控输入;
监控输出;
加入

虽然(veamos.get_coverage()您的问题是因为
START
A
B
都是网络。(请参阅)。从
初始
(或
始终
块)驱动网络是非法的。但您为什么还要驱动输入?

开始,A,B是
输入
s。您正在尝试修改它。