我正在尝试模拟 N 位全加器的 SystemVerilog 代码,但收到此错误:
错误(10161):full_adder_tb.sv(73)处的 Verilog HDL 错误:对象“std” 没有声明。验证对象名称是否正确。如果名字是 正确,声明对象。
为什么说“std”未声明?我使用quartus prime软件来模拟代码。
这是我的测试平台代码。
module full_adder_tb;
timeunit 1ns;
timeprecision 1ps;
localparam N = 8 ;
logic signed[N-1:0] A,B,S;
logic ci,co;
N_bit_adder #(.N(N)) dut(.*);
initial begin
A = 8'd80 ;
B = 8'd12 ;
#1 assert({co,S}==A+B+ci)
$display("OK");
else $error("Not OK");
repeat(10) begin
#9
std::randomize(ci);
#1
assert({co,S} == A+B+ci) $display("OK");
else $error("Error occurred");
end
end
endmodule
有人知道这个问题的解决办法吗?
我在不同的网站上搜索过,但代码似乎没有错误。但是,它给出了错误消息“std”未声明。
我在使用另外 2 个模拟器时没有遇到任何错误。在 EDAPlayground 上尝试您的代码。
这可能是 Quartus 中的一个错误,或者您可能需要以某种方式启用此功能。请参阅工具文档。
如果您简单地省略,您的代码可能会起作用
std::
randomize(ci);
作为替代方案,您可以尝试:
ci = $urandom_range(1);
请参阅 IEEE Std 1800-2017,第 18.13.2 节 $urandom_range()