Можно ли использовать одно и то же выражение в операторе case, включенном в другой оператор case в SystemVerilog?

У меня есть тестовый стенд SystemVerilog, в котором я хочу использовать оператор case в других case операторах моей программы.

Например, у меня есть:

    task a(string b,string c)
    case(b)
     "a1": x(x1,case(c) "b1":y=1; "b2":y=2;);
     "a2": x(x2,case(c) "b3":y=4; "b4":y=5;);

Это структура, которую я хочу реализовать, чтобы использовать случай со строкой c в нескольких разных элементах case.


person Alin Tudor    schedule 15.04.2021    source источник
comment
Это может помочь показать нам, что вы хотите сделать, используя if/else инструкции, которые, как вы знаете, будут работать.   -  person dave_59    schedule 15.04.2021


Ответы (1)


Если я правильно угадаю, x представляет задачу или функцию, и вы пытаетесь передать оператор case в качестве аргумента. правильно? невозможно.

Но это должно работать:

 task a(string b,string c)
    case(c)
      "b1": y = 1;
      "b2": y = 2;
      ...
    endcase

    case(b)
     "a1": x(x1,y);
     "a2": x(x2,y);

или для случая в случае общего использования begin / end:

     "a1": begin
            x=x1;
            case(c) 
              "b1":y=1; 
              "b2":y=2;
            endcase
           end
     "a2": begin
            x = x2;
            case(c)
              "b3": y=3;
              "b4": y= 4;
            endcase
           end
      endcase
person Serge    schedule 15.04.2021