【问题标题】:Saving verilog testbench output to file将verilog测试台输出保存到文件
【发布时间】:2015-02-05 02:47:50
【问题描述】:

我已经编写了一个小的 Verilog 代码和它的测试平台。它包含在下面.. 我想将测试台结果捕获到文件(AA2.txt)中。但是,当我运行模拟器时,“结果”显示在监视器上,并且 AA2.txt 文件为空。 你能帮我弄清楚我错过了什么吗?你能解释一下吗?谢谢。 巴尔图普勒

    `timescale 1ns / 1ps

////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer:
//
// Create Date:   16:57:34 12/04/2014
// Design Name:   ADC_SAMPLE
// Module Name:   C:/Xilinx131/SOC/SOC501V2/ADC_SAMPLE_tb.v
// Project Name:  SOC501V2
// Target Device:  
// Tool versions:  
// Description: 
//
// Verilog Test Fixture created by ISE for module: ADC_SAMPLE for review with Honeywell
//
// Dependencies:
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
////////////////////////////////////////////////////////////////////////////////

module ADC_SAMPLE_tb;

    // Inputs
    reg CLK;
    reg ASM_SEL;
    reg [11:0] ADC_BUS;
    reg [7:0] ADC_Wait_Time;

    // Outputs
    wire [7:0] ASM_HB;
    wire [7:0] ASM_LB;
    wire AS_SConv;
    wire AS_OE;
    wire ASM_FLAG;
    wire [3:0] S;

    parameter PERIOD = 100;
    parameter real DUTY_CYCLE = 0.5;
    parameter OFFSET = 0;


    // Instantiate the Unit Under Test (UUT)
    ADC_SAMPLE uut (
        .CLK(CLK), 
        .ASM_SEL(ASM_SEL), 
        .ADC_BUS(ADC_BUS), 
        .ADC_Wait_Time(ADC_Wait_Time), 
        .ASM_HB(ASM_HB), 
        .ASM_LB(ASM_LB), 
        .AS_SConv(AS_SConv), 
        .AS_OE(AS_OE), 
        .ASM_FLAG(ASM_FLAG), 
        .S(S)
    );

    initial begin
        // Initialize Inputs
        CLK = 0;
        ASM_SEL = 1;
        ADC_BUS = 12'hABC;
        ADC_Wait_Time = 4;
    end

   initial    
    begin
        #OFFSET;
        forever
        begin
            CLK = 1'b1;
            #(PERIOD-(PERIOD*DUTY_CYCLE)) CLK = 1'b0;
            #(PERIOD*DUTY_CYCLE);
        end
    end 


    initial begin
        // Wait 100 ns for global reset to finish
        // Add stimulus here
        #200 ASM_SEL=1;
        #150 ASM_SEL=0;

    end


    integer h1;

    initial
    h1 = $fopen("AA2.dmp");//did not work as a seperate init/begin block..


    begin//No initial for $stobe
    always @ (posedge CLK)
    $monitor(h1,"    %d,    %b,    %b,    %h,    %h,    %b,    %b,    %b,    %h",
                h1,CLK, ASM_SEL,/* ADC_BUS,ADC_Wait_Time,*/ASM_HB,ASM_LB,
                AS_SConv, AS_OE, ASM_FLAG,
                S); end

    initial
    begin
  $display("ADC_SAMPLE_tb simulator output");
  $display ("h1,CLK, ASM_SEL,ASM_HB,ASM_LB,AS_SConv, AS_OE, ASM_FLAG,S");

    end
    initial
//  begin
    #2000 $fclose (h1);
//  end


endmodule

【问题讨论】:

  • 您希望哪一行将数据写入“AA2.dump”?我看到的唯一输出是 STDOUT 而不是文件。

标签: verilog


【解决方案1】:

我想你可能只需要使用

  • $fwrite 而不是 $display
  • $fmonitor 而不是 $monitor

$display$monitor 命令只写入标准输出,但 $fwrite$fmonitor 允许您将输出写入您以 h1 打开的文件。

【讨论】:

  • @BhalTulpule,如果答案是正确的,请您接受它,以便其他人不回答。任何其他好的答案也可以投票,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多