@(posedge clk) begin end.... 和 @(thoughtge clk); 有什么区别?

问题描述 投票:0回答:1

有什么区别:

forever begin
    @posedge(clk) begin // no semi-colon
        if(vif.sof == 1) begin
             //some code here
        end
    end
 end


forever begin
    @posedge(clk); // <- with semi-colon
        if(vif.sof == 1) begin
           //some code here
        end
end
   

与 @(posege clk) 一起使用的 begin..end 有区别吗?

verilog system-verilog
1个回答
2
投票
程序代码中的

@

#
event_controls本身并不是语句;它们是后面的语句的前缀。 statement 可以是一个简单的语句,如赋值,也可以是一个块,如 begin/end 或 fork/join。只要允许单个语句,就允许使用块。

当你写下

@(posedge clk);
时,真的是
@(posedge clk) null_statement;

我应该给你足够的信息来回答你的问题,但这里有另一种变化:

forever 
        @posedge(clk)
        if(vif.sof == 1) begin
           //some code here
        end

现在

@(posedge clk)
后面是否有分号有很大的区别。

© www.soinside.com 2019 - 2024. All rights reserved.