首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统verilog中行编译器指令的工作

系统verilog中行编译器指令的工作
EN

Stack Overflow用户
提问于 2022-04-12 05:34:08
回答 1查看 98关注 0票数 0

请有人解释一下系统verilog中的“行编译器指令”的工作原理,试图从LRM读取它,但无法理解它

EN

回答 1

Stack Overflow用户

发布于 2022-04-12 06:51:20

` `line指令的工作原理与C (What does #line mean?)等其他语言中的工作原理相同。

主要使用的工具是从另一种语言生成SystemVerilog代码的工具,这样由生成的SystemVerilog代码生成的任何消息都可以指向原始代码,而不是已翻译的代码。这甚至适用于展开SystemVerilog宏的工具,也是一个很好的例子。假设我有这个5行文件top.sv

代码语言:javascript
复制
module top;
`include "defines.h"
   `M(A)
   `M(B)
  initial x.x=0; // elaboration error
endmodule

这5行文件定义.h

代码语言:javascript
复制
int i1;
`define M(arg) \
   int L1_``arg; \
   int L2_``arg;
int i2;

SystemVerilog宏预处理器的输出是这26行文件out.sv

代码语言:javascript
复制
`begin_keywords "1800-2017"

`line 1 "top.sv" 0
module top;
  
`line 1 "defines.h" 1
int i1;
  


`line 4 "defines.h" 0

int i2;

`line 6 "defines.h" 0

`line 2 "top.sv" 2

        int L1_A;     int L2_A;
        int L1_B;     int L2_B;
  initial x.x=0;
endmodule
   

`end_keywords

如果我试图编译并运行这个out.sv文件,则会在top.v的第5行而不是out.sv的第22行报告错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71837567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档