UVM中的`ifdef求助
时间:10-02
整理:3721RD
点击:
求助各路大神。在张强那本书里,基本上所有的UVM组件或class都是定义在`ifdef和`endif之间。
有两个不明白的地方:
1、定义这个有什么用?是类似于单片机C语言吗?但很少是*.svh,更多的是.sv。
2、为什么要将class定义在这里面呢?
没有找到明确的答案,特此求助!
有两个不明白的地方:
1、定义这个有什么用?是类似于单片机C语言吗?但很少是*.svh,更多的是.sv。
2、为什么要将class定义在这里面呢?
没有找到明确的答案,特此求助!
因為 class 有可能在很多的 file 被 include, 避免 compiler 因重覆讀此 class 而會認為 class (module) 被重覆定義而報錯.
謝謝您的回答。大致明白了,就是還有些似懂非懂,得靠自己實踐了
Thank you for replying, just learning
所以尽量少用include,用的多了可读性差
2楼正解
你是不是把'ifndef写成‘ifdef了?
1. 'ifdef可以在在makefile里通过vcs指令来决定是否运行'ifdef到`endif之间的代码
2. ‘ifndef可以防止你漏掉或者重复compile某个class。例如结合`ifndef可以将验证环境按照env,agent,sequence, sequencer等分成不同子文件夹,每个文件夹下建一个package文件,将当前文件下所有的sv都include到这个package文件里,然后所有的package文件互相import。这样在写其他class时就基本不需要用到include
我不喜欢楼上的这种写法,我更倾向于把所有环境文件统一放到一个文件列表里进行编译与维护
防止重复编译class使用
mark一下!
原来如此,明白了,谢谢您
mark.
防止重复编译class。重复编译有些编译器需要设置影响效率