Fix "output reg name=expr;" syntax error. [Martin Scharrer]

git-svn-id: file://localhost/svn/verilator/trunk/verilator@1027 77ca24e4-aefa-0310-84f0-b9a241c72d87
This commit is contained in:
Wilson Snyder 2008-04-14 21:10:34 +00:00
parent 95395a8b87
commit a9281f2c37
5 changed files with 31 additions and 22 deletions

View File

@ -7,6 +7,8 @@ indicates the contributor was also the author of the fix; Thanks!
**** Add error message when modules have duplicate names. [Stefan Thiede] **** Add error message when modules have duplicate names. [Stefan Thiede]
**** Fix "output reg name=expr;" syntax error. [Martin Scharrer]
**** Fix multiple .v files being read in random order. [Stefan Thiede] **** Fix multiple .v files being read in random order. [Stefan Thiede]
* Verilator 3.661 2008/04/04 * Verilator 3.661 2008/04/04

View File

@ -376,7 +376,7 @@ class AstSenTree;
// Trailing E indicates this type may have empty match // Trailing E indicates this type may have empty match
%type<modulep> modHdr %type<modulep> modHdr
%type<nodep> modPortsE portList port %type<nodep> modPortsE portList port
%type<nodep> portV2kArgs portV2kList portV2kSecond portV2kSig %type<nodep> portV2kArgs portV2kList portV2kSecond portV2kInit portV2kSig
%type<nodep> portV2kDecl portDecl varDecl %type<nodep> portV2kDecl portDecl varDecl
%type<nodep> modParArgs modParSecond modParDecl modParList modParE %type<nodep> modParArgs modParSecond modParDecl modParList modParE
%type<nodep> modItem modItemList modItemListE modOrGenItem %type<nodep> modItem modItemList modItemListE modOrGenItem
@ -384,7 +384,7 @@ class AstSenTree;
%type<nodep> genItem genItemList genItemBegin genItemBlock genTopBlock genCaseListE genCaseList %type<nodep> genItem genItemList genItemBegin genItemBlock genTopBlock genCaseListE genCaseList
%type<nodep> dlyTerm minTypMax %type<nodep> dlyTerm minTypMax
%type<fileline> delay %type<fileline> delay
%type<varp> sigAndAttr sigId sigIdRange sigList regsig regsigList regSigId %type<varp> sigAndAttr sigId sigIdRange regsig regsigList regSigId
%type<varp> netSig netSigList %type<varp> netSig netSigList
%type<rangep> rangeListE regrangeE anyrange rangeList delayrange portRangeE %type<rangep> rangeListE regrangeE anyrange rangeList delayrange portRangeE
%type<varp> param paramList %type<varp> param paramList
@ -513,7 +513,12 @@ portV2kList: portV2kSecond { $$ = $1; }
// Called only after a comma in a v2k list, to allow parsing "input a,b" // Called only after a comma in a v2k list, to allow parsing "input a,b"
portV2kSecond: portV2kDecl { $$ = $1; } portV2kSecond: portV2kDecl { $$ = $1; }
| portV2kSig { $$ = $1; } | portV2kInit { $$ = $1; }
;
portV2kInit: portV2kSig { $$=$1; }
| portV2kSig '=' expr
{ $$=$1; $$->addNext(new AstInitial($2,new AstAssign($2, new AstVarRef($2,V3Parse::s_varAttrp->name(),true), $3))); }
; ;
portV2kSig: sigAndAttr { $$=$1; $$->addNext(new AstPort(CRELINE(),V3Parse::s_pinNum++, V3Parse::s_varAttrp->name())); } portV2kSig: sigAndAttr { $$=$1; $$->addNext(new AstPort(CRELINE(),V3Parse::s_pinNum++, V3Parse::s_varAttrp->name())); }
@ -530,15 +535,11 @@ regsigList: regsig { $$ = $1; }
| regsigList ',' regsig { $$ = $1;$1->addNext($3); } | regsigList ',' regsig { $$ = $1;$1->addNext($3); }
; ;
portV2kDecl: varRESET varInput v2kVarDeclE signingE regrangeE portV2kSig { $$ = $6; } portV2kDecl: varRESET portDirection v2kVarDeclE signingE regrangeE portV2kInit { $$ = $6; }
| varRESET varInout v2kVarDeclE signingE regrangeE portV2kSig { $$ = $6; }
| varRESET varOutput v2kVarDeclE signingE regrangeE portV2kSig { $$ = $6; }
; ;
// IEEE: port_declaration - plus ';' // IEEE: port_declaration - plus ';'
portDecl: varRESET varInput v2kVarDeclE signingE regrangeE sigList ';' { $$ = $6; } portDecl: varRESET portDirection v2kVarDeclE signingE regrangeE regsigList ';' { $$ = $6; }
| varRESET varInout v2kVarDeclE signingE regrangeE sigList ';' { $$ = $6; }
| varRESET varOutput v2kVarDeclE signingE regrangeE sigList ';' { $$ = $6; }
; ;
varDecl: varRESET varReg signingE regrangeE regsigList ';' { $$ = $5; } varDecl: varRESET varReg signingE regrangeE regsigList ';' { $$ = $5; }
@ -568,11 +569,12 @@ varGenVar: yGENVAR { VARDECL(GENVAR); }
varReg: yREG { VARDECL(REG); } varReg: yREG { VARDECL(REG); }
| yINTEGER { VARDECL(INTEGER); } | yINTEGER { VARDECL(INTEGER); }
; ;
varInput: yINPUT { VARIO(INPUT); }
; //IEEE: port_direction
varOutput: yOUTPUT { VARIO(OUTPUT); } portDirection: yINPUT { VARIO(INPUT); }
; | yOUTPUT { VARIO(OUTPUT); }
varInout: yINOUT { VARIO(INOUT); } | yINOUT { VARIO(INOUT); }
// | yREF { VARIO(REF); }
; ;
// IEEE: signing - plus empty // IEEE: signing - plus empty
@ -731,10 +733,6 @@ regSigId: yaID rangeListE { $$ = V3Parse::createVariable(CRELINE(), *$1, $2);
sigId: yaID { $$ = V3Parse::createVariable(CRELINE(), *$1, NULL); } sigId: yaID { $$ = V3Parse::createVariable(CRELINE(), *$1, NULL); }
; ;
sigList: sigAndAttr { $$ = $1; }
| sigList ',' sigAndAttr { $$ = $1; $1->addNext($3); }
;
regsig: regSigId sigAttrListE {} regsig: regSigId sigAttrListE {}
; ;

1
test_regress/t/.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
t_dos*.pl -crlf

View File

@ -23,8 +23,10 @@ module t (/*AUTOARG*/
`endif `endif
wire [7:0] osizedreg; // From sub of t_inst_v2k_sub.v wire [7:0] osizedreg; // From sub of t_inst_v2k_sub.v
wire [1:0] tied;
wire [3:0] tied_also;
hello hsub; hello hsub (.tied_also);
t_inst_v2k_sub sub t_inst_v2k_sub sub
( (
@ -33,6 +35,7 @@ module t (/*AUTOARG*/
// verilator lint_off IMPLICIT // verilator lint_off IMPLICIT
.oonewire (oonewire), .oonewire (oonewire),
// verilator lint_on IMPLICIT // verilator lint_on IMPLICIT
.tied (tied[1:0]),
// Inputs // Inputs
.isizedwire (isizedwire[7:0]), .isizedwire (isizedwire[7:0]),
.ionewire (ionewire)); .ionewire (ionewire));
@ -49,6 +52,8 @@ module t (/*AUTOARG*/
if (high != 2'b11) $stop; if (high != 2'b11) $stop;
if (oonewire !== 1'b1) $stop; if (oonewire !== 1'b1) $stop;
if (isizedwire !== 8'd8) $stop; if (isizedwire !== 8'd8) $stop;
if (tied != 2'b10) $stop;
if (tied_also != 4'b1010) $stop;
$write("*-* All Finished *-*\n"); $write("*-* All Finished *-*\n");
$finish; $finish;
end end
@ -57,8 +62,10 @@ module t (/*AUTOARG*/
endmodule endmodule
module hello; module hello(tied_also);
initial $write ("Hello\n"); initial $write ("Hello\n");
output reg [3:0] tied_also = 4'b1010;
endmodule endmodule
// Local Variables: // Local Variables:

View File

@ -1,4 +1,4 @@
// $Id:$ -*- Verilog -*- // $Id$ -*- Verilog -*-
// DESCRIPTION: Verilator: Verilog Test module // DESCRIPTION: Verilator: Verilog Test module
// //
// This file ONLY is placed into the Public Domain, for any use, // This file ONLY is placed into the Public Domain, for any use,
@ -10,7 +10,8 @@ module t_inst_v2k_sub
output reg [7:0] osizedreg, output reg [7:0] osizedreg,
output wire oonewire /*verilator public*/, output wire oonewire /*verilator public*/,
input [7:0] isizedwire, input [7:0] isizedwire,
input wire ionewire input wire ionewire,
output reg [1:0] tied = 2'b10
); );
assign oonewire = ionewire; assign oonewire = ionewire;