基准代码中的错误

时间:2015-11-17 03:04:37

标签: verilog system-verilog iverilog

触发器结构代码和测试台代码

我不知道我犯了什么错误。我输出中的错误很少。

`timescale 1ns/1ps

module t_ff (
input clk,t,rst_n,
output reg q);

    always@(posedge clk ,negedge rst_n)
    begin
        if (!rst_n)
            q <= 1'b0;
        else if(t)
            q <= ~q;
        else
            q <= q;
    end

endmodule

@@@ test bench @@@@

`timescale 1ns/1ps

module tb_tff;
reg RST_n, CLK,T;
wire Q;

t_ff TFF (.clk(CLK) ,.rst_n(RST_n) ,.q( Q ),.t(T));

 initial begin
 RST_n = 1'b0;
 CLK =1'b0;
 T =1'b0;
  #5 RST_n = 1'b1;
  #13 RST_n = 1'b0;
 #7 RST_n = 1'b1;
  #45 $finish;
 end

 always #3 CLK = ~CLK;
 always #6 T = ~T;

always @(posedge CLK ,negedge RST_n)
  $strobe("time =%0t \t INPUT VALUES \t T =%b RST_n =%b \t OUTPUT VALUES 
Q=%d",$time,T,RST_n,Q);

endmodule

得到如下错误:

  

错误 - 使用[V2KS] Verilog IEEE 1364-2000语法

     

TFlipflop.v,4 Verilog 2000 IEEE 1364-2000使用的语法:组合   端口和类型声明。请用+ v2k编译以支持   这个结构。

     

错误 - 使用[V2KS] Verilog IEEE 1364-2000语法

     

TFlipflop.v,4使用Verilog 2000 IEEE 1364-2000语法:Ansi风格   港口申报。请使用+ v2k编译以支持此功能   构造

     

错误 - 使用[V2KS] Verilog IEEE 1364-2000语法

     

TFlipflop.v,6使用Verilog 2000 IEEE 1364-2000语法:逗号   分开的敏感度列表请用+ v2k编译以支持   这个结构。

     

解析设计文件'test_TFlipflop.v'

     

错误 - 使用[V2KS] Verilog IEEE 1364-2000语法

     

test_TFlipflop.v,使用了21 Verilog 2000 IEEE 1364-2000语法:   逗号分隔的敏感度列表。请用+ v2k编译   支持这种结构。

     

4个错误CPU时间:.036秒

1 个答案:

答案 0 :(得分:0)

似乎您的模拟器需要更新。试试新版本。所有这些都是有效的ANSI样式。以下是错误原因和一些解决方法

Error-[V2KS] Verilog IEEE 1364-2000 syntax used
TFlipflop.v, 4
Verilog 2000 IEEE 1364-2000 syntax used : Combined port and type 
 declaration.

我猜错误说output reg q无效,即使它是有效的ANSI样式。所以,做这样的事情:

module t_ff (input clk,t,rst_n,output q);
reg q;

// Alternate Non-ANSI style
module t_ff (clk,t,rst_n,q);
input clk,t,rst_n;
output q;
reg q;

接下来是:

Error-[V2KS] Verilog IEEE 1364-2000 syntax used
TFlipflop.v, 6
Verilog 2000 IEEE 1364-2000 syntax used : Comma separated sensitivity lists.

这也是有效的可合成声明,在testbench和design中使用如下:

always@(posedge clk or negedge rst_n) // use or

您还可以添加+v2k开关,然后重试。我已经在EDAPlayground模拟了您的代码,并且运行得非常好。