Macros 两个宏;“完成”;彼此

Macros 两个宏;“完成”;彼此,macros,system-verilog,Macros,System Verilog,编辑:似乎现在正在工作 我正在尝试编写两个宏,用于包装任何代码。例如: `define start_of_macro()begin\ fork\ begin\ #20us;\ end\ begin\ end 第二部分: `define end_of_macro()begin\ end\ join_any disable_fork;\ end 并使用类似这样的方式: `start_of_macro while(1)begin #20ns; end `end_of_m

编辑:似乎现在正在工作

我正在尝试编写两个宏,用于包装任何代码。例如:

`define start_of_macro()begin\
fork\
  begin\
    #20us;\
  end\
  begin\
end
第二部分:

`define end_of_macro()begin\
  end\
join_any disable_fork;\
end
并使用类似这样的方式:

`start_of_macro
  while(1)begin #20ns; end
`end_of_macro
由于每个宏本身都不合法,所以我不断地出错。有什么办法克服这个问题吗


提前谢谢

我猜你是想在等待20微秒的同时做出一些事情。在开始宏中有一个额外的
end
。应该是:

`define start_of_macro()\
  begin\
    fork\
      begin\
        #20us;\
      end\
      begin
`define end_of_macro()\
      end\
    join_any\
    disable_fork;\
  end
在关闭宏中还有一个额外的
begin
。应该是:

`define start_of_macro()\
  begin\
    fork\
      begin\
        #20us;\
      end\
      begin
`define end_of_macro()\
      end\
    join_any\
    disable_fork;\
  end

宏展开后,介于打开宏和关闭宏之间的代码将驻留在
开始
(从
开始
)和
结束
(从
结束
)之间。

我想你是在尝试与20微秒的等待并行。在开始宏中有一个额外的
end
。应该是:

`define start_of_macro()\
  begin\
    fork\
      begin\
        #20us;\
      end\
      begin
`define end_of_macro()\
      end\
    join_any\
    disable_fork;\
  end
在关闭宏中还有一个额外的
begin
。应该是:

`define start_of_macro()\
  begin\
    fork\
      begin\
        #20us;\
      end\
      begin
`define end_of_macro()\
      end\
    join_any\
    disable_fork;\
  end

宏展开后,介于打开宏和关闭宏之间的代码将位于
开始
(从
开始
)和
结束
(从
结束
)之间。

您没有显示足够的代码来提供帮助。请记住,文本宏对SystemVerilog语法一无所知,所以应该确定每个宏本身不是合法的SystemVerilog语法。但是您需要向我们显示您希望结果是什么样子。请确保
)begin
之间有一个空格,并且在teer`\`之后不应有空格。您没有显示足够的代码来提供帮助。请记住,文本宏对SystemVerilog语法一无所知,所以应该确定每个宏本身不是合法的SystemVerilog语法。但是您需要向我们展示您希望结果是什么样子。确保在
)begin
之间有一个空格,并且在teer`\`之后不应该有空格。它是宏宏的结尾,不需要
begin
/
end
语句。它是宏的结尾,不需要
begin
/
end
语句。