Fix detecting missing reg types, bug1570.
This commit is contained in:
parent
b2c5f8e74e
commit
2aed499e00
2
Changes
2
Changes
|
|
@ -24,6 +24,8 @@ The contributors that suggested a given feature are shown in []. Thanks!
|
||||||
|
|
||||||
**** Support quoted arguments in -f files, bug1535. [Yves Mathieu]
|
**** Support quoted arguments in -f files, bug1535. [Yves Mathieu]
|
||||||
|
|
||||||
|
**** Fix detecting missing reg types, bug1570. [Jacko Dirks]
|
||||||
|
|
||||||
**** Fix multithreaded yield behavior when no work. [Patrick Stewart]
|
**** Fix multithreaded yield behavior when no work. [Patrick Stewart]
|
||||||
|
|
||||||
**** Fix bad-syntax crashes, bug1548, bug1550-1553, bug1557-1560, bug1563,
|
**** Fix bad-syntax crashes, bug1548, bug1550-1553, bug1557-1560, bug1563,
|
||||||
|
|
|
||||||
|
|
@ -601,7 +601,6 @@ public:
|
||||||
bool isProcAssignable() const {
|
bool isProcAssignable() const {
|
||||||
return (m_e==GPARAM || m_e==LPARAM || m_e==GENVAR
|
return (m_e==GPARAM || m_e==LPARAM || m_e==GENVAR
|
||||||
|| m_e==VAR
|
|| m_e==VAR
|
||||||
|| m_e==TRIWIRE || m_e==TRI0 || m_e==TRI1 || m_e==PORT
|
|
||||||
|| m_e==BLOCKTEMP || m_e==MODULETEMP || m_e==STMTTEMP
|
|| m_e==BLOCKTEMP || m_e==MODULETEMP || m_e==STMTTEMP
|
||||||
|| m_e==XTEMP || m_e==IFACEREF);
|
|| m_e==XTEMP || m_e==IFACEREF);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -331,7 +331,9 @@ private:
|
||||||
// Any variable
|
// Any variable
|
||||||
if (nodep->lvalue()
|
if (nodep->lvalue()
|
||||||
&& !VN_IS(nodep, VarXRef)) { // Ignore interface variables and similar ugly items
|
&& !VN_IS(nodep, VarXRef)) { // Ignore interface variables and similar ugly items
|
||||||
if (m_inProcAssign && !nodep->varp()->varType().isProcAssignable()) {
|
if (m_inProcAssign && !nodep->varp()->varType().isProcAssignable()
|
||||||
|
&& !nodep->varp()->isDeclTyped()
|
||||||
|
&& !nodep->varp()->isFuncLocal()) {
|
||||||
nodep->v3warn(PROCASSWIRE, "Procedural assignment to wire, perhaps intended var"
|
nodep->v3warn(PROCASSWIRE, "Procedural assignment to wire, perhaps intended var"
|
||||||
" (IEEE 2017 6.5): "
|
" (IEEE 2017 6.5): "
|
||||||
+nodep->prettyNameQ());
|
+nodep->prettyNameQ());
|
||||||
|
|
|
||||||
|
|
@ -121,12 +121,7 @@ public:
|
||||||
fl->v3warn(ENDLABEL,"End label '"<<*endnamep<<"' does not match begin label '"<<name<<"'");
|
fl->v3warn(ENDLABEL,"End label '"<<*endnamep<<"' does not match begin label '"<<name<<"'");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void setVarDecl(AstVarType type) {
|
void setVarDecl(AstVarType type) { m_varDecl = type; }
|
||||||
m_varDecl = type;
|
|
||||||
if (type != AstVarType::UNKNOWN && type != AstVarType::PORT) {
|
|
||||||
m_varDeclTyped = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void setDType(AstNodeDType* dtypep) {
|
void setDType(AstNodeDType* dtypep) {
|
||||||
if (m_varDTypep) { m_varDTypep->deleteTree(); m_varDTypep=NULL; } // It was cloned, so this is safe.
|
if (m_varDTypep) { m_varDTypep->deleteTree(); m_varDTypep=NULL; } // It was cloned, so this is safe.
|
||||||
m_varDTypep = dtypep;
|
m_varDTypep = dtypep;
|
||||||
|
|
@ -1306,7 +1301,7 @@ net_declaration<nodep>: // IEEE: net_declaration - excluding implict
|
||||||
;
|
;
|
||||||
|
|
||||||
net_declarationFront: // IEEE: beginning of net_declaration
|
net_declarationFront: // IEEE: beginning of net_declaration
|
||||||
net_declRESET net_type strengthSpecE net_scalaredE net_dataTypeE { VARDTYPE($5); }
|
net_declRESET net_type strengthSpecE net_scalaredE net_dataTypeE { VARDTYPE_NDECL($5); }
|
||||||
//UNSUP net_declRESET yINTERCONNECT signingE rangeListE { VARNET($2); VARDTYPE(x); }
|
//UNSUP net_declRESET yINTERCONNECT signingE rangeListE { VARNET($2); VARDTYPE(x); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ module Flop (
|
||||||
input clk,
|
input clk,
|
||||||
input d,
|
input d,
|
||||||
input rst_n,
|
input rst_n,
|
||||||
output q);
|
output logic q);
|
||||||
|
|
||||||
always @ (posedge clk or negedge rst_n) begin
|
always @ (posedge clk or negedge rst_n) begin
|
||||||
if (!rst_n) q <= 1'b0;
|
if (!rst_n) q <= 1'b0;
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,9 @@ module t (/*AUTOARG*/
|
||||||
res16
|
res16
|
||||||
);
|
);
|
||||||
input clk;
|
input clk;
|
||||||
output res;
|
output reg res;
|
||||||
output [7:0] res8;
|
output reg [7:0] res8;
|
||||||
output [15:0] res16;
|
output reg [15:0] res16;
|
||||||
|
|
||||||
|
|
||||||
wire [7:0] clkSet;
|
wire [7:0] clkSet;
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ endmodule
|
||||||
|
|
||||||
module flop_gated_latch(q,d,clk,en);
|
module flop_gated_latch(q,d,clk,en);
|
||||||
input d, clk, en;
|
input d, clk, en;
|
||||||
output q;
|
output reg q;
|
||||||
wire gated_clock;
|
wire gated_clock;
|
||||||
clock_gate_latch clock_gate(gated_clock, clk, en);
|
clock_gate_latch clock_gate(gated_clock, clk, en);
|
||||||
always @(posedge gated_clock) begin
|
always @(posedge gated_clock) begin
|
||||||
|
|
@ -29,7 +29,7 @@ endmodule
|
||||||
|
|
||||||
module flop_gated_flop(q,d,clk,en);
|
module flop_gated_flop(q,d,clk,en);
|
||||||
input d, clk, en;
|
input d, clk, en;
|
||||||
output q;
|
output reg q;
|
||||||
wire gated_clock;
|
wire gated_clock;
|
||||||
clock_gate_flop clock_gate(gated_clock, clk, en);
|
clock_gate_flop clock_gate(gated_clock, clk, en);
|
||||||
always @(posedge gated_clock) begin
|
always @(posedge gated_clock) begin
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ module rlr(sum,a,b,c,d,clk);
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
module add(sum,x,y,clk);
|
module add(sum,x,y,clk);
|
||||||
output sum;
|
output reg sum;
|
||||||
input x,y,clk;
|
input x,y,clk;
|
||||||
reg t1,t2;
|
reg t1,t2;
|
||||||
always @(posedge clk) begin
|
always @(posedge clk) begin
|
||||||
|
|
@ -114,7 +114,7 @@ module add(sum,x,y,clk);
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
module add2(sum,x,y,clk);
|
module add2(sum,x,y,clk);
|
||||||
output sum;
|
output reg sum;
|
||||||
input x,y,clk;
|
input x,y,clk;
|
||||||
reg t1,t2;
|
reg t1,t2;
|
||||||
always @(posedge clk) begin
|
always @(posedge clk) begin
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,9 @@ module t_embed1_child (/*AUTOARG*/
|
||||||
input bit_in;
|
input bit_in;
|
||||||
output bit_out;
|
output bit_out;
|
||||||
input [30:0] vec_in;
|
input [30:0] vec_in;
|
||||||
output [30:0] vec_out;
|
output logic [30:0] vec_out;
|
||||||
input [123:0] wide_in;
|
input [123:0] wide_in;
|
||||||
output [123:0] wide_out;
|
output logic [123:0] wide_out;
|
||||||
output did_init_out;
|
output did_init_out;
|
||||||
|
|
||||||
input is_ref;
|
input is_ref;
|
||||||
|
|
|
||||||
|
|
@ -12,10 +12,10 @@ module t_embed1_wrap (/*AUTOARG*/
|
||||||
|
|
||||||
/*AUTOINOUTMODULE("t_embed1_child")*/
|
/*AUTOINOUTMODULE("t_embed1_child")*/
|
||||||
// Beginning of automatic in/out/inouts (from specific module)
|
// Beginning of automatic in/out/inouts (from specific module)
|
||||||
output bit_out;
|
output bit bit_out;
|
||||||
output [30:0] vec_out;
|
output bit [30:0] vec_out;
|
||||||
output [123:0] wide_out;
|
output bit [123:0] wide_out;
|
||||||
output did_init_out;
|
output bit did_init_out;
|
||||||
input clk;
|
input clk;
|
||||||
input bit_in;
|
input bit_in;
|
||||||
input [30:0] vec_in;
|
input [30:0] vec_in;
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,10 @@ sub gen {
|
||||||
|
|
||||||
my $fh = IO::File->new(">$filename");
|
my $fh = IO::File->new(">$filename");
|
||||||
$fh->print("// Generated by t_emit_memb_limit.pl\n");
|
$fh->print("// Generated by t_emit_memb_limit.pl\n");
|
||||||
$fh->print("module t (i,clk,o);\n");
|
$fh->print("module t (i, clk, o);\n");
|
||||||
$fh->print(" input clk;\n");
|
$fh->print(" input clk;\n");
|
||||||
$fh->print(" input i;\n");
|
$fh->print(" input i;\n");
|
||||||
$fh->print(" output o;\n");
|
$fh->print(" output logic o;\n");
|
||||||
for (my $i=0; $i<($n+1); ++$i) {
|
for (my $i=0; $i<($n+1); ++$i) {
|
||||||
$fh->print(" logic r$i;\n");
|
$fh->print(" logic r$i;\n");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ module t_extend_class_v (/*AUTOARG*/
|
||||||
);
|
);
|
||||||
|
|
||||||
input [31:0] in;
|
input [31:0] in;
|
||||||
output [31:0] out;
|
output logic [31:0] out;
|
||||||
|
|
||||||
always @* begin
|
always @* begin
|
||||||
// When "in" changes, call my method
|
// When "in" changes, call my method
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,15 @@
|
||||||
// This file ONLY is placed into the Public Domain, for any use,
|
// This file ONLY is placed into the Public Domain, for any use,
|
||||||
// without warranty, 2019 by Wilson Snyder.
|
// without warranty, 2019 by Wilson Snyder.
|
||||||
|
|
||||||
task tsk(output fo);
|
task tsk(output tfo);
|
||||||
assign fo = 1'b0;
|
tfo = 1'b0;
|
||||||
endtask
|
endtask
|
||||||
|
|
||||||
module t (/*AUTOARG*/
|
module t (/*AUTOARG*/
|
||||||
// Outputs
|
// Outputs
|
||||||
to
|
to
|
||||||
);
|
);
|
||||||
output to[2:0];
|
output reg to[2:0];
|
||||||
|
|
||||||
integer i = 0;
|
integer i = 0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ module t_mem_slot (Clk, SlotIdx, BitToChange, BitVal, SlotToReturn, OutputVal);
|
||||||
input BitToChange;
|
input BitToChange;
|
||||||
input BitVal;
|
input BitVal;
|
||||||
input [1:0] SlotToReturn;
|
input [1:0] SlotToReturn;
|
||||||
output [1:0] OutputVal;
|
output reg [1:0] OutputVal;
|
||||||
|
|
||||||
reg [1:0] Array[2:0];
|
reg [1:0] Array[2:0];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -162,13 +162,13 @@ module FooMemImpl(
|
||||||
input a_wen,
|
input a_wen,
|
||||||
input [7:0] a_addr,
|
input [7:0] a_addr,
|
||||||
input [7:0] a_wdata,
|
input [7:0] a_wdata,
|
||||||
output [7:0] a_rdata,
|
output reg [7:0] a_rdata,
|
||||||
|
|
||||||
input b_clk,
|
input b_clk,
|
||||||
input b_wen,
|
input b_wen,
|
||||||
input [7:0] b_addr,
|
input [7:0] b_addr,
|
||||||
input [7:0] b_wdata,
|
input [7:0] b_wdata,
|
||||||
output [7:0] b_rdata
|
output reg [7:0] b_rdata
|
||||||
);
|
);
|
||||||
|
|
||||||
/* verilator lint_off MULTIDRIVEN */
|
/* verilator lint_off MULTIDRIVEN */
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,8 @@ struct packed {
|
||||||
} struct2;
|
} struct2;
|
||||||
|
|
||||||
module t (
|
module t (
|
||||||
output [63:0] s1,
|
output logic [63:0] s1,
|
||||||
output [63:0] s2
|
output logic [63:0] s2
|
||||||
);
|
);
|
||||||
initial struct1 = 64'h123456789_abcdef0;
|
initial struct1 = 64'h123456789_abcdef0;
|
||||||
always_comb s1 = struct1;
|
always_comb s1 = struct1;
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -47,6 +47,7 @@
|
||||||
output bad_reout_port
|
output bad_reout_port
|
||||||
^~~~~~~~~~~~~~
|
^~~~~~~~~~~~~~
|
||||||
%Error: t/t_var_dup_bad.v:72: Duplicate declaration of signal: 'bad_rewire'
|
%Error: t/t_var_dup_bad.v:72: Duplicate declaration of signal: 'bad_rewire'
|
||||||
|
: ... note: ANSI ports must have type declared with the I/O (IEEE 2017 23.2.2.2)
|
||||||
wire bad_rewire;
|
wire bad_rewire;
|
||||||
^~~~~~~~~~
|
^~~~~~~~~~
|
||||||
t/t_var_dup_bad.v:69: ... Location of original declaration
|
t/t_var_dup_bad.v:69: ... Location of original declaration
|
||||||
|
|
|
||||||
|
|
@ -26,22 +26,22 @@ module t (/*AUTOARG*/
|
||||||
input i1a2 [1:0];
|
input i1a2 [1:0];
|
||||||
input [93:0] i94a3 [2:0];
|
input [93:0] i94a3 [2:0];
|
||||||
|
|
||||||
output o1;
|
output logic o1;
|
||||||
output [7:0] o8;
|
output logic [7:0] o8;
|
||||||
output [15:0] o16;
|
output logic [15:0] o16;
|
||||||
output [31:0] o32;
|
output logic [31:0] o32;
|
||||||
output [63:0] o64;
|
output logic [63:0] o64;
|
||||||
output [64:0] o65;
|
output logic [64:0] o65;
|
||||||
output [127:0] o128;
|
output logic [127:0] o128;
|
||||||
output [512:0] o513;
|
output logic [512:0] o513;
|
||||||
output o1a2 [1:0];
|
output logic o1a2 [1:0];
|
||||||
output [93:0] o94a3 [2:0];
|
output logic [93:0] o94a3 [2:0];
|
||||||
|
|
||||||
input [0:0] ibv1 /*verilator sc_bv*/;
|
input [0:0] ibv1 /*verilator sc_bv*/;
|
||||||
input [15:0] ibv16 /*verilator sc_bv*/;
|
input [15:0] ibv16 /*verilator sc_bv*/;
|
||||||
|
|
||||||
output [0:0] obv1 /*verilator sc_bv*/;
|
output logic [0:0] obv1 /*verilator sc_bv*/;
|
||||||
output [15:0] obv16 /*verilator sc_bv*/;
|
output logic [15:0] obv16 /*verilator sc_bv*/;
|
||||||
|
|
||||||
always @ (posedge clk) begin
|
always @ (posedge clk) begin
|
||||||
o1 <= i1;
|
o1 <= i1;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
%Error-PROCASSWIRE: t/t_wire_beh1364_bad.v:22: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'w'
|
||||||
|
: ... In instance t
|
||||||
|
w = '0;
|
||||||
|
^
|
||||||
|
%Error-PROCASSWIRE: t/t_wire_beh1364_bad.v:23: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'o'
|
||||||
|
: ... In instance t
|
||||||
|
o = '0;
|
||||||
|
^
|
||||||
|
%Error-PROCASSWIRE: t/t_wire_beh1364_bad.v:24: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'oa'
|
||||||
|
: ... In instance t
|
||||||
|
oa = '0;
|
||||||
|
^~
|
||||||
|
%Error: Exiting due to
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
// DESCRIPTION: Verilator: Verilog Test module
|
||||||
|
//
|
||||||
|
// This file ONLY is placed into the Public Domain, for any use,
|
||||||
|
// without warranty, 2018 by Wilson Snyder.
|
||||||
|
|
||||||
|
module t (/*AUTOARG*/
|
||||||
|
// Outputs
|
||||||
|
o, oa, ro, roa
|
||||||
|
);
|
||||||
|
|
||||||
|
wire w;
|
||||||
|
reg r;
|
||||||
|
output o;
|
||||||
|
output [1:0] oa;
|
||||||
|
output reg ro;
|
||||||
|
output reg [1:0] roa;
|
||||||
|
//1800 only:
|
||||||
|
//output var vo;
|
||||||
|
//output var [1:0] voa;
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
w = '0; // Error
|
||||||
|
o = '0; // Error
|
||||||
|
oa = '0; // Error
|
||||||
|
r = '0; // Not an error
|
||||||
|
ro = '0; // Not an error
|
||||||
|
roa = '0; // Not an error
|
||||||
|
//vo = '0; // Not an error
|
||||||
|
//voa = '0; // Not an error
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
%Error-PROCASSWIRE: t/t_wire_beh1800_bad.v:22: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'w'
|
||||||
|
: ... In instance t
|
||||||
|
w = '0;
|
||||||
|
^
|
||||||
|
%Error-PROCASSWIRE: t/t_wire_beh1800_bad.v:23: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'o'
|
||||||
|
: ... In instance t
|
||||||
|
o = '0;
|
||||||
|
^
|
||||||
|
%Error-PROCASSWIRE: t/t_wire_beh1800_bad.v:24: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'oa'
|
||||||
|
: ... In instance t
|
||||||
|
oa = '0;
|
||||||
|
^~
|
||||||
|
%Error: Exiting due to
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); die; }
|
||||||
|
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||||
|
#
|
||||||
|
# Copyright 2003 by Wilson Snyder. This program is free software; you can
|
||||||
|
# redistribute it and/or modify it under the terms of either the GNU
|
||||||
|
# Lesser General Public License Version 3 or the Perl Artistic License
|
||||||
|
# Version 2.0.
|
||||||
|
|
||||||
|
scenarios(vlt => 1);
|
||||||
|
|
||||||
|
lint(
|
||||||
|
verilator_flags2 => ["--lint-only --language 1800-2017"],
|
||||||
|
fails => 1,
|
||||||
|
expect_filename => $Self->{golden_filename},
|
||||||
|
);
|
||||||
|
|
||||||
|
ok(1);
|
||||||
|
1;
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
// DESCRIPTION: Verilator: Verilog Test module
|
||||||
|
//
|
||||||
|
// This file ONLY is placed into the Public Domain, for any use,
|
||||||
|
// without warranty, 2018 by Wilson Snyder.
|
||||||
|
|
||||||
|
module t (/*AUTOARG*/
|
||||||
|
// Outputs
|
||||||
|
o, oa, ro, roa, vo, voa
|
||||||
|
);
|
||||||
|
|
||||||
|
wire w;
|
||||||
|
reg r;
|
||||||
|
output o;
|
||||||
|
output [1:0] oa;
|
||||||
|
output reg ro;
|
||||||
|
output reg [1:0] roa;
|
||||||
|
// 1800 only
|
||||||
|
output var vo;
|
||||||
|
output var [1:0] voa;
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
w = '0; // Error
|
||||||
|
o = '0; // Error
|
||||||
|
oa = '0; // Error
|
||||||
|
r = '0; // Not an error
|
||||||
|
ro = '0; // Not an error
|
||||||
|
roa = '0; // Not an error
|
||||||
|
vo = '0; // Not an error
|
||||||
|
voa = '0; // Not an error
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
%Error-CONTASSREG: t/t_wire_beh_bad.v:11: Continuous assignment to reg, perhaps intended wire (IEEE 2005 6.1; Verilog only, legal in SV): 'r'
|
|
||||||
: ... In instance t
|
|
||||||
assign r = 1'b1;
|
|
||||||
^
|
|
||||||
%Error-PROCASSWIRE: t/t_wire_beh_bad.v:12: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'w'
|
|
||||||
: ... In instance t
|
|
||||||
always @ (r) w = 1'b0;
|
|
||||||
^
|
|
||||||
%Error: Exiting due to
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
// DESCRIPTION: Verilator: Verilog Test module
|
|
||||||
//
|
|
||||||
// This file ONLY is placed into the Public Domain, for any use,
|
|
||||||
// without warranty, 2018 by Wilson Snyder.
|
|
||||||
|
|
||||||
module t (/*AUTOARG*/);
|
|
||||||
|
|
||||||
wire w;
|
|
||||||
reg r;
|
|
||||||
|
|
||||||
assign r = 1'b1;
|
|
||||||
always @ (r) w = 1'b0;
|
|
||||||
|
|
||||||
endmodule
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
%Error-PROCASSWIRE: t/t_wire_behp1364_bad.v:20: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'w'
|
||||||
|
: ... In instance t
|
||||||
|
w = '0;
|
||||||
|
^
|
||||||
|
%Error-PROCASSWIRE: t/t_wire_behp1364_bad.v:21: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'o'
|
||||||
|
: ... In instance t
|
||||||
|
o = '0;
|
||||||
|
^
|
||||||
|
%Error-PROCASSWIRE: t/t_wire_behp1364_bad.v:22: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'oa'
|
||||||
|
: ... In instance t
|
||||||
|
oa = '0;
|
||||||
|
^~
|
||||||
|
%Error: Exiting due to
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); die; }
|
||||||
|
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||||
|
#
|
||||||
|
# Copyright 2003 by Wilson Snyder. This program is free software; you can
|
||||||
|
# redistribute it and/or modify it under the terms of either the GNU
|
||||||
|
# Lesser General Public License Version 3 or the Perl Artistic License
|
||||||
|
# Version 2.0.
|
||||||
|
|
||||||
|
scenarios(vlt => 1);
|
||||||
|
|
||||||
|
lint(
|
||||||
|
verilator_flags2 => ["--lint-only --language 1364-2001"],
|
||||||
|
fails => 1,
|
||||||
|
expect_filename => $Self->{golden_filename},
|
||||||
|
);
|
||||||
|
|
||||||
|
ok(1);
|
||||||
|
1;
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
// DESCRIPTION: Verilator: Verilog Test module
|
||||||
|
//
|
||||||
|
// This file ONLY is placed into the Public Domain, for any use,
|
||||||
|
// without warranty, 2018 by Wilson Snyder.
|
||||||
|
|
||||||
|
module t (
|
||||||
|
output o,
|
||||||
|
output [1:0] oa,
|
||||||
|
output reg ro,
|
||||||
|
output reg [1:0] roa
|
||||||
|
//1800 only:
|
||||||
|
//output var vo;
|
||||||
|
//output var [1:0] voa;
|
||||||
|
);
|
||||||
|
|
||||||
|
wire w;
|
||||||
|
reg r;
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
w = '0; // Error
|
||||||
|
o = '0; // Error
|
||||||
|
oa = '0; // Error
|
||||||
|
r = '0; // Not an error
|
||||||
|
ro = '0; // Not an error
|
||||||
|
roa = '0; // Not an error
|
||||||
|
//vo = '0; // Not an error
|
||||||
|
//voa = '0; // Not an error
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
%Error-PROCASSWIRE: t/t_wire_behp1800_bad.v:20: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'w'
|
||||||
|
: ... In instance t
|
||||||
|
w = '0;
|
||||||
|
^
|
||||||
|
%Error-PROCASSWIRE: t/t_wire_behp1800_bad.v:21: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'o'
|
||||||
|
: ... In instance t
|
||||||
|
o = '0;
|
||||||
|
^
|
||||||
|
%Error-PROCASSWIRE: t/t_wire_behp1800_bad.v:22: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'oa'
|
||||||
|
: ... In instance t
|
||||||
|
oa = '0;
|
||||||
|
^~
|
||||||
|
%Error: Exiting due to
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); die; }
|
||||||
|
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||||
|
#
|
||||||
|
# Copyright 2003 by Wilson Snyder. This program is free software; you can
|
||||||
|
# redistribute it and/or modify it under the terms of either the GNU
|
||||||
|
# Lesser General Public License Version 3 or the Perl Artistic License
|
||||||
|
# Version 2.0.
|
||||||
|
|
||||||
|
scenarios(vlt => 1);
|
||||||
|
|
||||||
|
lint(
|
||||||
|
verilator_flags2 => ["--lint-only --language 1800-2017"],
|
||||||
|
fails => 1,
|
||||||
|
expect_filename => $Self->{golden_filename},
|
||||||
|
);
|
||||||
|
|
||||||
|
ok(1);
|
||||||
|
1;
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
// DESCRIPTION: Verilator: Verilog Test module
|
||||||
|
//
|
||||||
|
// This file ONLY is placed into the Public Domain, for any use,
|
||||||
|
// without warranty, 2018 by Wilson Snyder.
|
||||||
|
|
||||||
|
module t (
|
||||||
|
output o,
|
||||||
|
output [1:0] oa,
|
||||||
|
output reg ro,
|
||||||
|
output reg [1:0] roa,
|
||||||
|
// 1800 only
|
||||||
|
output var vo,
|
||||||
|
output var [1:0] voa
|
||||||
|
);
|
||||||
|
|
||||||
|
wire w;
|
||||||
|
reg r;
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
w = '0; // Error
|
||||||
|
o = '0; // Error
|
||||||
|
oa = '0; // Error
|
||||||
|
r = '0; // Not an error
|
||||||
|
ro = '0; // Not an error
|
||||||
|
roa = '0; // Not an error
|
||||||
|
vo = '0; // Not an error
|
||||||
|
voa = '0; // Not an error
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
Loading…
Reference in New Issue