如何解决如何了解 Cadence XMVLOG 编译器支持哪个 SystemVerilog?
我需要将我的 SV 模拟环境从 Questa 移动到 Xcelium 20.9。
我在使用 xmvlog
编译文件时遇到问题,而使用 vlog
没有问题。
这就是我所做的。
-
确保工具链安装正确:我从 edaplayground 运行了这个简单的例子。它工作正常。我也能在 Simvision 中看到波浪
-
尝试更复杂的设计,其中包括一些类和包。
这里是我无法继续的地方:我无法编译包。我试图简化文件并提取一个最小的非工作示例。
文件如下所示:
package test_pkg;
task wait (ref logic clock,int cycl_num);
for (int k = 0; k < cycl_num; k++) begin
@(posedge clock);
end
endtask : wait
endpackage
所以,一个任务的简单包。
运行 xrun test/test_pkg.sv
:
这里有很多错误。我注意到的一件事是在任务声明的开头添加 void
解决了其中的一些问题。
问题出在任务定义上,因为如果删除它我可以编译。
我也为 xmvlog 尝试了以下选项
-sv 强制 SystemVerilog 编译
-sysv2005 只启用 SV-2005 及更早的关键字
-sysv2009 只启用 SV-2009 及更早的关键字
但没有运气。 知道这里有什么问题吗?如何指定正确的 SystemVerilog 版本?
解决方法
问题在于您的代码,而不是 Cadence 模拟器。
一个问题是,wait
是一个 Verilog 关键字,不应将其用作 task
名称。请参阅 IEEE Std 1800-2017,第 9.4 节 程序时序控制;它也是 1364 Std 的一部分。 Questa 应该给你一个错误。
您需要将名称更改为其他名称,例如 wait_clk
。您还需要在 endtask
关键字之后更改它。
另一个问题是 Cadence 在使用 ref
时也会给我错误。
task wait_clk (ref logic clock,int cycl_num);
|
xmvlog: *E,REFANA : reference argument is illegal inside static task-function declaration.
task wait_clk (ref logic clock,int cycl_num);
|
xmvlog: *E,REFANA : reference argument is illegal inside static task-function declaration.
我认为您不需要将这些输入作为参考。如果是这种情况,那么您可以简单地将其删除:
package test_pkg;
task wait_clk (logic clock,int cycl_num);
for (int k = 0; k < cycl_num; k++) begin
@(posedge clock);
end
endtask : wait_clk
endpackage
但是,如果您确实需要 ref
,可以使用 nchelp
获取更多详细信息:
nchelp xmvlog REFANA
xmhelp: 20.09-s009: (c) Copyright 1995-2021 Cadence Design Systems,Inc.
xmvlog/REFANA =
A SystemVerilog reference argument,declared in the formal argument list
of a task or function,must always be an automatic variable. The enclosing
task or function declaration must therefore use the 'automatic' keyword
to promote all of its formal arguments into automatic variables.
如果您只是想让 clock
成为 ref
:
package test_pkg;
task automatic wait_clk (ref logic clock,input int cycl_num);
for (int k = 0; k < cycl_num; k++) begin
@(posedge clock);
end
endtask : wait_clk
endpackage
您不应将 void
用于 task
。这样做并没有真正解决任何问题。它只是让编译器走上了不同的道路。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。