编写一个创建模块dut实例的测试平台

描述

题目说明

编写一个创建模块dut实例(具有任何实例名称)的测试平台,并创建一个时钟信号来驱动模块的clk输入。时钟周期为 10 ps。时钟应初始化为零,其第一个转换为 0 到 1。

CLK

模块端口声明

 

module top_module ( );

 

题目解析

生成clock有很多种方式,常见的就是forever和always。

 

timeunit 1ps ;
timeprecision 1ps ;
module top_module ( );   
    logic clk ;
    
    dut u1_dut(
               .clk(clk)
              );
    
    initial begin
        clk <= 1'b0 ;
    end

    
    always #5 clk <= ~clk ;

 
endmodule
CLK

 

点击Submit,等待一会就能看到下图结果:

CLK

注意图中的Ref是参考波形,Yours是你的代码生成的波形,网站会对比这两个波形,一旦这两者不匹配,仿真结果会变红。

这一题就结束了。

Problem 174-tb1

题目说明

创建一个 Verilog 测试台,它将为输出 A 和 B 生成以下波形

CLK

模块端口声明

 

module top_module ( output reg A, output reg B );

 

题目解析

initial+# n即可。

 

timeunit 1ps ;
timeprecision 1ps ;
module top_module ( output logic A, 
                    output logic B );//

    
    // generate input patterns here
    initial begin
        A <=1'b0 ;
        B <=1'b0 ;
        #10 ;
        A <= 1'b1 ;
        B <= 1'b0 ;
        #5 ;
        A <= 1'b1 ;
        B <= 1'b1 ;
        #5 ;
        A <= 1'b0 ;
        B <= 1'b1 ;
        #20 ;
        A <= 1'b0 ;
        B <= 1'b0 ;
    end
endmodule


CLK

 

点击Submit,等待一会就能看到下图结果:

CLK

注意图中的Ref是参考波形,Yours是你的代码生成的波形,网站会对比这两个波形,一旦这两者不匹配,仿真结果会变红。

这一题就结束了。

Problem 175-and

题目说明

给给定的与门写测试文件,波形参考下图。

CLK

模块端口声明

 

module top_module();

 

题目解析

和上一题类似。

 

timeunit 1ps ;
timeprecision 1ps ;
 
module top_module();
    logic  [1:0]in ;
    wire logic out ;
    
    andgate u_andgate(
                      .in(in),
                      .out(out)
    );
    
    initial begin
        in <= 2'b00 ;
        #10 ;
        in <= 2'b01 ;
        #10 ;
        in <= 2'b10 ;
        #10 ;
        in <= 2'b11 ;
    end  
        
endmodule

CLK

 

点击Submit,等待一会就能看到下图结果:

CLK

注意图中的Ref是参考波形,Yours是你的代码生成的波形,网站会对比这两个波形,一旦这两者不匹配,仿真结果会变红。

这一题就结束了。

Problem 176-tb2

题目说明

给定一个q7电路,按照下图编写testbench:

CLK

模块端口声明

 

module top_module();

 

题目解析

 

timeunit 1ps ;
timeprecision 1ps ;

module top_module();
    logic  clk ;
    logic  in ;
    logic [2:0] s ;
    wire logic out ;
    
    q7 u1_q7(
        .clk (clk),
        .in     (in ),
        .s      (s  ),
        .out    (out)
    );
    
    initial begin
        clk <= 1'b0 ;
        forever
        #5 clk <= ~clk ;
    end
    
    initial begin
        in <= 1'b0 ;
        s  <= 3'd2 ;
        #10 ;
        in <= 1'b0 ;
        s  <= 3'd6 ;
        #10 ;
        in <= 1'b1 ;
        s  <= 3'd2 ;
        #10 ;
        in <= 1'b0 ;
        s  <= 3'd7 ;
        #10 ;
        in <= 1'b1 ;
        s  <= 3'd0 ;
        #30 ;
        in <= 1'b0 ;
        s  <= 3'd0 ;
    end
        
endmodule
CLK

 

点击Submit,等待一会就能看到下图结果:

CLK

注意图中的Ref是参考波形,Yours是你的代码生成的波形,网站会对比这两个波形,一旦这两者不匹配,仿真结果会变红。

这一题就结束了。

Problem 177-tff

题目说明

给题目中给定的tff编写测试文件。

模块端口声明

 

module top_module ();

 

题目解析

 

timeunit 1ps ;
timeprecision 1ps ;
module top_module ();
    logic clk ;
    logic reset ;
    logic t ;
    wire logic q ;
    
    tff u_tff(
        .clk (clk  ),
        .reset (reset),
        .t      (t    ),
        .q      (q    )
    );
    
    initial begin
        clk <= 1'b0 ;
        forever
        #5
        clk <= ~clk ;
    end
    
    initial begin
        reset <= 1'b0 ;
        t <= 1'b0 ;
        #3;
        reset <= 1'b1 ;
        t <= 1'b1 ;
        #10;
        reset <= 1'b0 ;
        t <= 1'b1 ;

    end

 
endmodule
CLK

 

点击Submit,等待一会就能看到下图结果:

CLK

注意图中的Ref是参考波形,Yours是你的代码生成的波形,网站会对比这两个波形,一旦这两者不匹配,仿真结果会变红。

这一题就结束了。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分