• 【HDLBits 刷题 15】Verification Writing Testbenches


    目录

    写在前面

    Verification Writing Testbenches

    clock

    Tb/tb1

    Tb/and

    Tb/tb2

    Tb/tff


    写在前面

    以下的解题方法不一定为最佳解决方案,有更好的方法欢迎提出,共同学习,共同进步!

    终于完成了 HDLBits 刷题,虽然说难度不大,但是有些题目题目还是有锻炼价值的,值得一刷。

    Verification Writing Testbenches

    clock

    提供一个具有以下声明的模块:

    module dut ( input clk ) ;

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

    1. module top_module();
    2. reg clk;
    3. initial begin
    4. clk = 'd0;
    5. end
    6. always #5 clk = ~clk;
    7. dut dut_inst(
    8. clk
    9. );
    10. endmodule

    Tb/tb1

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

    1. module top_module ( output reg A, output reg B );//
    2. // generate input patterns here
    3. initial begin
    4. A = 'd0;
    5. B = 'd0;
    6. #10
    7. A = 'd1;
    8. #5
    9. B = 'd1;
    10. #5
    11. A = 'd0;
    12. #20
    13. B = 'd0;
    14. end
    15. endmodule

    Tb/and

    您将获得以下要测试的 AND 门:

    1. module andgate (
    2. input [1:0] in,
    3. output out
    4. );

    通过生成以下时序图,编写一个实例化此 AND 门并测试所有 4 种输入组合的测试平台:

    1. module top_module();
    2. reg [1:0] in;
    3. wire out;
    4. initial begin
    5. in = 'd0;
    6. #10
    7. in = 'd1;
    8. #10
    9. in = 'd2;
    10. #10
    11. in = 'd3;
    12. end
    13. andgate andgate_inst(in, out);
    14. endmodule

    Tb/tb2

    下面的波形设置 clk、in 和 s:

    模块 q7 具有以下声明:

    1. module q7 (
    2. input clk,
    3. input in,
    4. input [2:0] s,
    5. output out
    6. );

    编写一个测试平台,实例化模块 q7 并完全按照上述波形所示生成这些输入信号。

    1. module top_module();
    2. reg clk;
    3. reg in;
    4. reg [2:0] s;
    5. wire out;
    6. initial begin
    7. clk = 'd0;
    8. in = 'd0;
    9. s = 'd2;
    10. #10
    11. s = 'd6;
    12. #10
    13. in = 'd1;
    14. s = 'd2;
    15. #10
    16. in = 'd0;
    17. s = 'd7;
    18. #10
    19. in = 'd1;
    20. s = 'd0;
    21. #30
    22. in = 'd0;
    23. end
    24. always #5 clk = ~clk;
    25. q7 q7_inst (clk, in, s, out);
    26. endmodule

    Tb/tff

    您将获得一个具有以下声明的 T 触发器模块:

    1. module tff (
    2. input clk,
    3. input reset, // active-high synchronous reset
    4. input t, // toggle
    5. output q
    6. );

    编写一个测试平台,该测试平台实例化一个tff,并将重置T触发器,然后将其切换到“1”状态。

    1. module top_module ();
    2. reg clk;
    3. reg reset;
    4. reg t;
    5. wire q;
    6. initial begin
    7. clk = 'd0;
    8. reset = 'd1;
    9. #10
    10. reset = 'd0;
    11. end
    12. always #5 clk = ~clk;
    13. always @(posedge clk) begin
    14. if (reset) begin
    15. t <= 'd0;
    16. end
    17. else begin
    18. t <= 'd1;
    19. end
    20. end
    21. tff tff_inst(clk, reset, t, q);
    22. endmodule
  • 相关阅读:
    Set 数据构造函数
    代码随想录算法训练营第四十九天| 139.单词拆分
    【2022毕业季】从毕业到转入职场
    怎么快速给文件从1到100命名
    mysql_config_editor的配置
    pytorch初学笔记(七):神经网络基本骨架 torch.nn.Module
    【Spring从入门到实战】第1讲:为什么要学习Spring框架?
    地狱挖掘者系列#1
    LVM 原理及动态调整空间使用
    永恒之蓝漏洞复现
  • 原文地址:https://blog.csdn.net/m0_61298445/article/details/126562142