zoukankan      html  css  js  c++  java
  • 学习测试脚本编写(一)


    verilog中,一般:

      input默认为wire型;

      output信号可以是wire型,也可以是reg型(在always或initial中被赋值);

      inout是双向信号,一般将其设为tri型,表示其有多个驱动源;

    测试脚本编写步骤:1、例化 2、激励 3、结果

    在测试脚本中:

      input—>reg

      output—>wire

      inout—>wire

    1、时钟信号产生

    方法1:
    parameter PERIOD = 20;

    initial begin
    clk = 0;

    forever #(PERIOD/2) clk = ~clk;
    end


    方法2:

    parameter PERIOD = 20;

    always begin

    #(PERIOD/2) clk = 0;
    #(PERIOD/2) clk = 1;
    end


    2、复位信号产生

    方法1:封装成一个task,复位的时候直接调用

    initial begin
    rst_task(100);//定义复位时间
    $stop;

    task reset_task;
    input [15:0] reset_time;
    begin
    rst = 0;
    #rst_time;
    rst = 1;
    end

    endtask

    方法2:
    initial begin

    rst = 0;
    #100;
    rst = 1;
    #2000;
    $stop;

    举个例子:

     1 `timescale 1 ns/ 1 ns
     2 module tx_module_vlg_tst();
     3 
     4     reg CLK;
     5     reg RSTn;
     6     reg [7:0] TX_Data;
     7     reg TX_En_Sig;
     8     // wires                                               
     9     wire TX_Done_Sig;
    10     wire TX_Pin_Out;
    11 
    12 //--------------------------------------------------------    
    13 tx_module i1 ( 
    14     .CLK(CLK),
    15     .RSTn(RSTn),
    16     .TX_Data(TX_Data),
    17     .TX_Done_Sig(TX_Done_Sig),
    18     .TX_En_Sig(TX_En_Sig),
    19     .TX_Pin_Out(TX_Pin_Out)
    20 );
    21 
    22 //--------------------------------------------------------
    23 initial                                                
    24 begin                                                  
    25     RSTn = 0; #1000 RSTn = 1;
    26     CLK = 1; forever #25 CLK = ~CLK;
    27 end
    28 
    29 //--------------------------------------------------------
    30 reg [3:0] i;
    31 
    32 always@(posedge CLK or negedge RSTn)
    33     if(!RSTn)
    34         begin
    35             TX_En_Sig <= 1'b0;
    36             TX_Data <= 8'd0;
    37             i <= 4'd0;
    38         end
    39     else
    40         case(i)
    41             
    42             0:
    43             if(TX_Done_Sig) begin TX_En_Sig <= 1'b0;i <= i +1'b1;end
    44             else begin TX_Data <= 8'b0101_0101;TX_En_Sig <= 1'b1;end
    45             
    46             1:
    47             i <= i;
    48         endcase
    49 
    50 //--------------------------------------------------------                                                                                                       
    51 endmodule
  • 相关阅读:
    weexpack build android 和 weexpack run android 报错 及 解决方案
    weexapp 开发流程(三)其他页面创建
    svn 创建分支、切换分支 及 合并分支 操作
    github 新建远程仓库 及 删除远程仓库
    photoshop 前端常用技巧
    vue2.0 常用的 UI 库
    weex 小结
    Android-studio 连接真机 调试weex项目
    js中Math之random,round,ceil,floor的用法总结
    基于canvas图像处理的图片 灰色图像
  • 原文地址:https://www.cnblogs.com/loves6036/p/5070648.html
Copyright © 2011-2022 走看看