Pul*_*mon 10 verilog system-verilog
两者之间有什么区别吗?
@(posedge Clk);
a<= 1'b1;
Run Code Online (Sandbox Code Playgroud)
和
@(posedge Clk)
a<= 1'b1;
Run Code Online (Sandbox Code Playgroud)
注意Clk之后的分号.当我浏览测试平台时,我遇到了类似的代码行.我做了一些简单的实验,在模拟过程中找不到任何差异.由于分号的存在/不存在,这些行后面的代码的执行顺序是否会以任何方式改变?
dav*_*_59 15
任何程序语句的BNF语法基本上都是
statement_item :=
{procedural_timing_control} statement;
Run Code Online (Sandbox Code Playgroud)
这意味着您可以在任何语句前面有0个或更多时序控件.在你的例子中@(posedge Clk)是一个时间控制,a<= 1'b1;是声明.
如果您的示例位于fork/join中,则会出现行为差异,因为前者是两个语句; 后者是一个陈述.
fork
@(posedge Clk); a<=1'b1;
join
Run Code Online (Sandbox Code Playgroud)
在这种情况下,2个语句并行启动 - a不会等待分配posedge.
Mar*_*rty 12
你是对的 - 没有行为差异.
分号版本是:等等.做这个.非分号版本是:等等然后执行此操作.您有时会在单行中看到此表单:
@(posedge Clk) a<= 1'b1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3596 次 |
| 最近记录: |