在系统 verilog/uvm 中处理定义的最佳方式是什么
what is the best way to handle defines in system verilog/uvm
我有一个被很多团队使用的验证组件。我有一个 define
说 ADDRESS_WIDTH
,我将它设置为所有团队所有要求的最大值。
但这看起来不是理想的解决方案。有没有一种方法可以用 SV/UVM 的方式来处理。
我想了几个办法
- 我在代理中将其列为
parameter
,以便人们可以使用 defparams
来更新它,但我也需要一种单独处理 interfaces
的方法。
这留下了一个潜在的漏洞,有人可能会更新一个地方而不更改另一个地方。
还有一个命令行选项可以更新定义,但如果参数列表太多,这不是理想的解决方案。
我可以有一个单独的defines
文件,每个人都可以有自己的defines
文件,但这取决于编译顺序。
请让我知道还有哪些其他更好的解决方案。
提前致谢。
使用 package
定义 interface
和验证组件将使用并因此保持同步的参数。每个团队都可以修改包以满足他们的需要。
创建另一个包,指定这些参数值的合法范围,并让接口或验证使用断言来检查团队包的值。
我有一个被很多团队使用的验证组件。我有一个 define
说 ADDRESS_WIDTH
,我将它设置为所有团队所有要求的最大值。
但这看起来不是理想的解决方案。有没有一种方法可以用 SV/UVM 的方式来处理。
我想了几个办法
- 我在代理中将其列为
parameter
,以便人们可以使用defparams
来更新它,但我也需要一种单独处理interfaces
的方法。
这留下了一个潜在的漏洞,有人可能会更新一个地方而不更改另一个地方。
还有一个命令行选项可以更新定义,但如果参数列表太多,这不是理想的解决方案。
我可以有一个单独的
defines
文件,每个人都可以有自己的defines
文件,但这取决于编译顺序。
请让我知道还有哪些其他更好的解决方案。
提前致谢。
使用 package
定义 interface
和验证组件将使用并因此保持同步的参数。每个团队都可以修改包以满足他们的需要。
创建另一个包,指定这些参数值的合法范围,并让接口或验证使用断言来检查团队包的值。