System verilog 如何删除if语句中的保留代码

System verilog 如何删除if语句中的保留代码,system-verilog,System Verilog,试图使这段现有代码更加紧凑 if(argA) { struct_A_s addr; Chunk of common code; } else if(argB) { struct_B_s addr Chunk of common code; `enter code here` } else { struct_C_s addr; Chunk of common code; } I wish to do

试图使这段现有代码更加紧凑

if(argA) {
     struct_A_s addr;
     Chunk of common code;
   }
   else if(argB) {
      struct_B_s addr
      Chunk of common code;
  `enter code here` }
   else {
      struct_C_s  addr;
      Chunk of common code;
   }

I wish to do something similar to the lines below.
写在addr下面的方式没有得到正确的结构

   if(argA) {
      struct_A_s addr;
   }
   else if(argB) {
      struct_B_s addr
   }
   else {
       struct_C_s  addr;
   }

Chunk of common code;

有什么想法吗?

您的第二组代码是在零时间内执行的,没有时间增量,因此在解析此代码之后,您的结果结构可能仍然未知,直到稍后的增量时间。我的猜测是,在“公共代码块”中存在某种程度的延迟,导致addr值被更新。

如果不理解
addr
公共代码中是如何使用的,很难说。最有可能使用
addr
作为参数为公共代码创建函数。然后,您只需在条件子句中使用函数名。您在非SystemVerilog中显示的代码。谢谢Serge-dave_59,Yes:),大括号基本上是开始和结束。您确实需要提供更多的细节,以及它如何不提供正确的结构。