• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

verilog中事件event的用法

event变量声明为:
event var;
event触发为:->var;
捕获触发为:@(var);

10个时间单位后reset_trigger事件被触发,捕获后将reset设置一个时钟周期再触发reset_done_trigger。之后再分别设置10个周期的随机信号给enable和reset。

`timescale 1ns/100ps
module event_test;
event reset_trigger;
event reset_done_trigger;
reg clk;
reg reset;
reg enable;

initial
begin
        clk = 0;
        forever #5 clk = ~clk;
end

initial begin
 forever begin
  @(reset_trigger);
  @(negedge clk);
  reset = 1;
  @(negedge clk);
  reset = 0;
  -> reset_done_trigger;
 end
end

initial
begin
 #10 -> reset_trigger;
 @(reset_done_trigger);
 fork
  repeat (10) begin
   @(negedge clk);
   enable = $random;
  end
  repeat (10) begin
   @(negedge clk);
   reset = $random;
  end
 join
end
endmodule

posted on 2021-10-27 22:06  SOC验证工程师  阅读(896)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3