我正在尝试在我的代码中使用事件触发( - >)。这会合成吗?
always @(posedge clk) begin
count <= count + 1;
-> x;
end
always @(x) flag = 1;
这只是一个示例代码。我想要做的是,当计数中有一个事件我希望将标志置高时,否则它应该保持低位。在我的情况下,计数值在每7个时钟周期后增加。我可以使用事件触发吗?如果不是我能做些什么来满足我的要求?
答案 0 :(得分:0)
您不应该在可综合代码中执行此操作。虽然有些工具可能能够创建等效逻辑,但几乎总有一种替代方法应该使用。例如,您的代码可以重写为:
always @(posedge clk) begin
count <= count + 1;
-> x;
end
always @(count) flag = 1;
答案 1 :(得分:0)
如果工具选择支持,可以合成任何可以在仿真中执行的内容。但大多数RTL综合工具都不支持这一点。
在您的简单情况下,您可以使用任务调用(或SystemVerilog中的void函数调用)替换事件触发器。
always @(posedge clk) begin
count <= count + 1;
x;
end
task x;
flag <= 1;
endtask
答案 2 :(得分:-1)
某些软件可以合成它,但它不是一个好的代码。如果这样做,您的代码将不同步。 要同步,所有«always»语句必须在clk的相同边缘切换。