Add regression tests for task non-ANSI port declarations
Check that it is possible to define the data type of a non-ANSI task port in a separate declaration from the port direction. Add tests for both the type declared before the port direction and for the type declared after the port direction. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
This commit is contained in:
parent
ee81ac2f85
commit
db33dbfbcc
|
|
@ -0,0 +1,22 @@
|
||||||
|
// Check that it is possible to declare the data type for an enum type task port
|
||||||
|
// separately from the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
typedef enum integer {
|
||||||
|
A, B
|
||||||
|
} T;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
input x;
|
||||||
|
T x;
|
||||||
|
if (x == B && $bits(x) == $bits(T)) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial t(B);
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
// Check that it is possible to declare the data type for an enum type task port
|
||||||
|
// before the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
typedef enum integer {
|
||||||
|
A, B
|
||||||
|
} T;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
T x;
|
||||||
|
input x;
|
||||||
|
if (x == B && $bits(x) == $bits(T)) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial t(B);
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
// Check that it is possible to declare the data type for an atom2 type task
|
||||||
|
// port separately from the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
input x;
|
||||||
|
int x;
|
||||||
|
if (x == 10 && $bits(x) == $bits(int)) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial t(10);
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
// Check that it is possible to declare the data type for an atom2 type task
|
||||||
|
// port before the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
int x;
|
||||||
|
input x;
|
||||||
|
if (x == 10 && $bits(x) == $bits(int)) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial t(10);
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
// Check that it is possible to declare the data type for an integer type task
|
||||||
|
// port separately from the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
input x;
|
||||||
|
integer x;
|
||||||
|
if (x == 10 && $bits(x) == $bits(integer)) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial t(10);
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
// Check that it is possible to declare the data type for an integer type task
|
||||||
|
// port before the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
integer x;
|
||||||
|
input x;
|
||||||
|
if (x == 10 && $bits(x) == $bits(integer)) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial t(10);
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
// Check that it is possible to declare the data type for a packed array type
|
||||||
|
// task port separately from the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
typedef logic [7:0] T1;
|
||||||
|
typedef T1 [3:0] T2;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
input x;
|
||||||
|
T2 x;
|
||||||
|
if (x[0] == 1 && x[1] == 2 && x[2] == 3 && x[3] == 4 &&
|
||||||
|
$bits(x) == $bits(T2)) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
static T2 val;
|
||||||
|
val[0] = 8'h1;
|
||||||
|
val[1] = 8'h2;
|
||||||
|
val[2] = 8'h3;
|
||||||
|
val[3] = 8'h4;
|
||||||
|
t(val);
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
// Check that it is possible to declare the data type for a packed array type
|
||||||
|
// task port before the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
typedef logic [7:0] T1;
|
||||||
|
typedef T1 [3:0] T2;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
T2 x;
|
||||||
|
input x;
|
||||||
|
if (x[0] == 1 && x[1] == 2 && x[2] == 3 && x[3] == 4 &&
|
||||||
|
$bits(x) == $bits(T2)) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
static T2 val;
|
||||||
|
val[0] = 8'h1;
|
||||||
|
val[1] = 8'h2;
|
||||||
|
val[2] = 8'h3;
|
||||||
|
val[3] = 8'h4;
|
||||||
|
t(val);
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
// Check that it is possible to declare the data type for a real type task port
|
||||||
|
// separately from the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
input x;
|
||||||
|
real x;
|
||||||
|
if (x == 1.23) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial t(1.23);
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
// Check that it is possible to declare the data type for a real type task port
|
||||||
|
// before the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
real x;
|
||||||
|
input x;
|
||||||
|
if (x == 1.23) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial t(1.23);
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
// Check that it is possible to declare the data type for a string type task
|
||||||
|
// port separately from the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
input x;
|
||||||
|
string x;
|
||||||
|
if (x == "TEST") begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial t("TEST");
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
// Check that it is possible to declare the data type for a string type task
|
||||||
|
// port before the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
string x;
|
||||||
|
input x;
|
||||||
|
if (x == "TEST") begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial t("TEST");
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
// Check that it is possible to declare the data type for a struct type task
|
||||||
|
// port separately from the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
typedef struct packed {
|
||||||
|
reg [31:0] x;
|
||||||
|
reg [7:0] y;
|
||||||
|
} T;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
input x;
|
||||||
|
T x;
|
||||||
|
if (x.x == 10 && x.y == 20 && $bits(x) == $bits(T)) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
static T val;
|
||||||
|
val.x = 10;
|
||||||
|
val.y = 20;
|
||||||
|
t(val);
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
// Check that it is possible to declare the data type for a struct type task
|
||||||
|
// port before the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
typedef struct packed {
|
||||||
|
reg [31:0] x;
|
||||||
|
reg [7:0] y;
|
||||||
|
} T;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
input x;
|
||||||
|
T x;
|
||||||
|
if (x.x == 10 && x.y == 20 && $bits(x) == $bits(T)) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
static T val;
|
||||||
|
val.x = 10;
|
||||||
|
val.y = 20;
|
||||||
|
t(val);
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
// Check that it is possible to declare the data type for a time type task port
|
||||||
|
// separately from the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
input x;
|
||||||
|
time x;
|
||||||
|
if (x == 10 && $bits(x) == $bits(time)) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial t(10);
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
// Check that it is possible to declare the data type for a time type task port
|
||||||
|
// before the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
time x;
|
||||||
|
input x;
|
||||||
|
if (x == 10 && $bits(x) == $bits(time)) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial t(10);
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
// Check that it is possible to declare the data type for a vector type task
|
||||||
|
// port separately from the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
input [7:0] x;
|
||||||
|
reg [7:0] x;
|
||||||
|
if (x == 10 && $bits(x) == 8) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial t(10);
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
// Check that it is possible to declare the data type for a vector type task
|
||||||
|
// port before the direction for non-ANSI style port declarations.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
task t;
|
||||||
|
reg [7:0] x;
|
||||||
|
input [7:0] x;
|
||||||
|
if (x == 10 && $bits(x) == 8) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
|
initial t(10);
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -604,6 +604,14 @@ task_init_assign normal,-g2009 ivltests
|
||||||
task_init_var1 normal,-g2009 ivltests
|
task_init_var1 normal,-g2009 ivltests
|
||||||
task_init_var2 normal,-g2009 ivltests
|
task_init_var2 normal,-g2009 ivltests
|
||||||
task_init_var3 normal,-g2009 ivltests
|
task_init_var3 normal,-g2009 ivltests
|
||||||
|
task_nonansi_enum1 normal,-g2005-sv ivltests
|
||||||
|
task_nonansi_enum2 normal,-g2005-sv ivltests
|
||||||
|
task_nonansi_int1 normal,-g2005-sv ivltests
|
||||||
|
task_nonansi_int2 normal,-g2005-sv ivltests
|
||||||
|
task_nonansi_parray1 normal,-g2005-sv ivltests
|
||||||
|
task_nonansi_parray2 normal,-g2005-sv ivltests
|
||||||
|
task_nonansi_struct1 normal,-g2005-sv ivltests
|
||||||
|
task_nonansi_struct2 normal,-g2005-sv ivltests
|
||||||
task_port_types1 normal,-g2009 ivltests
|
task_port_types1 normal,-g2009 ivltests
|
||||||
task_port_types2 normal,-g2009 ivltests
|
task_port_types2 normal,-g2009 ivltests
|
||||||
task_scope2 normal,-g2009 ivltests
|
task_scope2 normal,-g2009 ivltests
|
||||||
|
|
|
||||||
|
|
@ -1609,6 +1609,14 @@ task_inpad normal ivltests # Validates input of task should pad w/ 0
|
||||||
task_iotypes normal ivltests # task ports with types.
|
task_iotypes normal ivltests # task ports with types.
|
||||||
task_iotypes2 normal ivltests # task ports with types.
|
task_iotypes2 normal ivltests # task ports with types.
|
||||||
task_mem normal ivltests
|
task_mem normal ivltests
|
||||||
|
task_nonansi_integer1 normal ivltests
|
||||||
|
task_nonansi_integer2 normal ivltests
|
||||||
|
task_nonansi_real1 normal ivltests
|
||||||
|
task_nonansi_real2 normal ivltests
|
||||||
|
task_nonansi_time1 normal ivltests
|
||||||
|
task_nonansi_time2 normal ivltests
|
||||||
|
task_nonansi_vec1 normal ivltests
|
||||||
|
task_nonansi_vec2 normal ivltests
|
||||||
task_noop normal ivltests # Task with no contents.
|
task_noop normal ivltests # Task with no contents.
|
||||||
task_noop2 CO ivltests # Task *really* with no contents.
|
task_noop2 CO ivltests # Task *really* with no contents.
|
||||||
task_omemw2 normal ivltests
|
task_omemw2 normal ivltests
|
||||||
|
|
|
||||||
|
|
@ -95,6 +95,8 @@ recursive_task CE ivltests
|
||||||
task_init_var1 CE,-pallowsigned=1 ivltests
|
task_init_var1 CE,-pallowsigned=1 ivltests
|
||||||
task_init_var2 CE,-pallowsigned=1 ivltests
|
task_init_var2 CE,-pallowsigned=1 ivltests
|
||||||
task_init_var3 CE,-pallowsigned=1 ivltests
|
task_init_var3 CE,-pallowsigned=1 ivltests
|
||||||
|
task_nonansi_int1 normal,-g2005-sv,-pallowsigned=1 ivltests
|
||||||
|
task_nonansi_int2 normal,-g2005-sv,-pallowsigned=1 ivltests
|
||||||
task_port_types1 CE,-pallowsigned=1 ivltests
|
task_port_types1 CE,-pallowsigned=1 ivltests
|
||||||
task_port_types2 CE,-pallowsigned=1 ivltests
|
task_port_types2 CE,-pallowsigned=1 ivltests
|
||||||
test_work14 CE ivltests
|
test_work14 CE ivltests
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue