Open-Source Projects: Issueshttps://forge.ispras.ru/https://forge.ispras.ru/favicon.ico?16490126692020-02-06T10:22:06ZOpen-Source Projects
Redmine MicroTESK - Bug #10102 (Closed): incorrect ld scripts for x86 test programshttps://forge.ispras.ru/issues/101022020-02-06T10:22:06ZSergey Smolovsmolov@ispras.ru
<p>For x86 test programs emulation on QEMU4V, the following approach can be used. Test program should be compiled as <em>bootable drive</em> and run on QEMU4V ("-hda" option). The following linker script should be generated:<br /><pre>
SECTIONS
{
/* The BIOS loads the code from the disk to this location.
* We must tell that to the linker so that it can properly
* calculate the addresses of symbols we might jump to.
*/
. = 0x7c00;
.text :
{
__start = .;
*(.text)
/* Place the magic boot bytes at the end of the first 512 sector of the disk. */
. = 0x1FE;
SHORT(0xAA55)
}
}
</pre></p>
<p>Now ld scripts look as follows:<br /><pre>
ENTRY(_start)
SECTIONS
{
. = 0x7C00;
.text : { *(".text")}
. = 0x8000;
.data : { *(".data")}
.bss : { *(".bss COMMON")}
. = ALIGN(8);
. = . + 0x10000;
stack_top = .;
}
</pre></p> Verilog Translator - Bug #9993 (New): if two modules are passed to the tool and one includes anot...https://forge.ispras.ru/issues/99932019-12-18T12:43:15ZSergey Smolovsmolov@ispras.ru
<p>Suppose there are two files with Verilog modules: <em>a.v</em> and <em>b.v</em> (<em>a.v</em> contains "a" module, b.v contains "b" module). Module "a" includes module "b".</p>
<p>When the following args are used for the tool:<br /><pre>
a.v b.v --include-path /path/to/b/file --module-name a
</pre><br />the tool hangs. These arguments seem to be strange, because "b" module appears two times in the command line.<br />More adequate diagnostics should be shown here, and, of course, no freezes.</p> Verilog Translator - Bug #9902 (New): java.lang.IllegalArgumentException: Descriptor for '<var na...https://forge.ispras.ru/issues/99022019-11-01T16:20:57ZSergey Smolovsmolov@ispras.ru
<p>When running the tool on the <a href="https://github.com/ispras/hdl-benchmarks/blob/master/hdl/iwls05/faraday/rtl/DMA/hdl/dma_chsel.v" class="external">dma_chsel.v</a> and <a href="https://github.com/ispras/hdl-benchmarks/blob/master/hdl/iwls05/faraday/rtl/DMA/hdl/dma_rrarb.v" class="external">dma_rrarb.v</a> modules the following error log appears:<br /><pre>
ru.ispras.verilog.parser.VerilogIwlsTestCase > runTest_dma_chsel STANDARD_ERROR
java.lang.IllegalArgumentException: Descriptor for 'dma_chsel.arb_chcsr_reg' has not been found: {dma_chsel.HCLK=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.HRSTn=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.dma_req=(BIT_VECTOR 8):(SHIFT 0), dma_chsel.dma_ack=(BIT_VECTOR 8):(SHIFT 0), dma_chsel.dma_tc=(BIT_VECTOR 8):(SHIFT 0), dma_chsel.csr=(BIT_VECTOR 8):(SHIFT 0), dma_chsel.sync=(BIT_VECTOR 8):(SHIFT 0), dma_chsel.de_err_notify=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.c0csr=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c0cfg=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c0sad=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c0dad=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c0llp=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c0tsz=(BIT_VECTOR 12):(SHIFT 0), dma_chsel.c0abt=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.c0llpen=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.c1csr=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c1cfg=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c1sad=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c1dad=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c1llp=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c1tsz=(BIT_VECTOR 12):(SHIFT 0), dma_chsel.c1abt=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.c1llpen=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.c2csr=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c2cfg=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c2sad=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c2dad=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c2llp=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c2tsz=(BIT_VECTOR 12):(SHIFT 0), dma_chsel.c2abt=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.c2llpen=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.c3csr=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c3cfg=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c3sad=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c3dad=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c3llp=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c3tsz=(BIT_VECTOR 12):(SHIFT 0), dma_chsel.c3abt=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.c3llpen=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.c4csr=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c4cfg=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c4sad=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c4dad=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c4llp=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c4tsz=(BIT_VECTOR 12):(SHIFT 0), dma_chsel.c4abt=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.c4llpen=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.c5csr=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c5cfg=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c5sad=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c5dad=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c5llp=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c5tsz=(BIT_VECTOR 12):(SHIFT 0), dma_chsel.c5abt=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.c5llpen=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.c6csr=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c6cfg=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c6sad=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c6dad=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c6llp=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c6tsz=(BIT_VECTOR 12):(SHIFT 0), dma_chsel.c6abt=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.c6llpen=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.c7csr=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c7cfg=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c7sad=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c7dad=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c7llp=(BIT_VECTOR 32):(SHIFT 0), dma_chsel.c7tsz=(BIT_VECTOR 12):(SHIFT 0), dma_chsel.c7abt=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.c7llpen=(BIT_VECTOR 1):(SHIFT 0), dma_chsel.arb_ch_sel=(BIT_VECTOR 3):(SHIFT 0)}
at ru.ispras.fortress.util.InvariantChecks.checkTrue(InvariantChecks.java:53)
at ru.ispras.fortress.util.InvariantChecks.checkNotNull(InvariantChecks.java:109)
at ru.ispras.verilog.parser.transformer.VerilogTransformerVariableSubstitute$1.apply(VerilogTransformerVariableSubstitute.java:121)
at ru.ispras.fortress.transformer.NodeTransformer.applyRule(NodeTransformer.java:169)
at ru.ispras.fortress.transformer.NodeTransformer.onOperationEnd(NodeTransformer.java:229)
at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:173)
at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123)
at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:160)
at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123)
at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:160)
at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123)
at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:160)
at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123)
at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:160)
at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123)
at ru.ispras.fortress.expression.ExprTreeWalker.visit(ExprTreeWalker.java:93)
at ru.ispras.fortress.transformer.NodeTransformer.walk(NodeTransformer.java:54)
at ru.ispras.fortress.transformer.Transformer.transform(Transformer.java:230)
at ru.ispras.fortress.transformer.Transformer.transform(Transformer.java:213)
at ru.ispras.verilog.parser.transformer.VerilogTransformerVariableSubstitute.shiftRanges(VerilogTransformerVariableSubstitute.java:95)
at ru.ispras.verilog.parser.transformer.VerilogTransformerVariableSubstitute.transform(VerilogTransformerVariableSubstitute.java:142)
at ru.ispras.verilog.parser.transformer.VerilogTransformerComposite.transform(VerilogTransformerComposite.java:57)
at ru.ispras.verilog.parser.transformer.VerilogTransformer.transform(VerilogTransformer.java:177)
at ru.ispras.verilog.parser.transformer.VerilogTransformer.transform(VerilogTransformer.java:189)
at ru.ispras.verilog.parser.transformer.VerilogTransformer.onDeclarationBegin(VerilogTransformer.java:67)
at ru.ispras.verilog.parser.walker.VerilogNodeVisitor$13.onBegin(VerilogNodeVisitor.java:385)
at ru.ispras.verilog.parser.walker.VerilogNodeVisitor.onBegin(VerilogNodeVisitor.java:700)
at ru.ispras.verilog.parser.core.TreeWalker.onBegin(TreeWalker.java:102)
at ru.ispras.verilog.parser.core.TreeWalker.start(TreeWalker.java:81)
at ru.ispras.verilog.parser.transformer.VerilogTransformer.run(VerilogTransformer.java:52)
at ru.ispras.verilog.parser.elaborator.VerilogInstantiator.instantiate(VerilogInstantiator.java:145)
at ru.ispras.verilog.parser.elaborator.VerilogInstantiator.instantiateDescriptor(VerilogInstantiator.java:124)
at ru.ispras.verilog.parser.elaborator.VerilogDesign$Builder.build(VerilogDesign.java:102)
at ru.ispras.verilog.parser.elaborator.VerilogElaborator.start(VerilogElaborator.java:246)
at ru.ispras.verilog.parser.VerilogSyntaxBackends.start(VerilogSyntaxBackends.java:55)
at ru.ispras.verilog.parser.VerilogTranslator.start(VerilogTranslator.java:187)
at ru.ispras.verilog.parser.sample.VerilogPrinter.main(VerilogPrinter.java:45)
at ru.ispras.verilog.parser.util.VerilogBenchmarkTest.runTest(VerilogBenchmarkTest.java:111)
at ru.ispras.verilog.parser.util.VerilogBenchmarkTest.runTest(VerilogBenchmarkTest.java:71)
at ru.ispras.verilog.parser.util.VerilogBenchmarkTest.runTest(VerilogBenchmarkTest.java:45)
at ru.ispras.verilog.parser.VerilogIwlsTestCase.runTest_dma_chsel(VerilogIwlsTestCase.java:51)
</pre></p>
<p>To reproduce the bug, run <strong>ru.ispras.verilog.parser.VerilogIwlsTestCase#runTest_dma_chsel</strong> test from <em>Retrascope Test Suite</em> project.</p> Verilog Translator - Bug #9798 (Closed): ru.ispras.verilog.parser.sample.Bug9798TestCase: incorre...https://forge.ispras.ru/issues/97982019-08-27T08:47:02ZSergey Smolovsmolov@ispras.ru
<p>For the following module:<br /><pre>
module bv_non_zero_idx(in, clk, out);
input [2:1] in;
input clk;
output [1:0] out;
reg [1:0] data;
assign out = data;
always @(posedge clk)
begin
if (in[2:2] == 1'b1)
begin
data <= 2'b11;
end
if (in[1:1] == 1'b0)
begin
data <= 2'b01;
end
end
endmodule
</pre></p>
<p>the VerilogPrinter engine produces the following output:<br /><pre>
module bv_non_zero_idx(in /* DECL: in */, clk /* DECL: clk */, out /* DECL: out */, in /* DECL: in */, clk /* DECL: clk */, out /* DECL: out */);
input [00000000000000000000000000000010 /* 00000000000000000000000000000010 */:00000000000000000000000000000001 /* 00000000000000000000000000000001 */] in;
input clk;
output [00000000000000000000000000000001 /* 00000000000000000000000000000001 */:00000000000000000000000000000000 /* 00000000000000000000000000000000 */] out;
reg [00000000000000000000000000000001 /* 00000000000000000000000000000001 */:00000000000000000000000000000000 /* 00000000000000000000000000000000 */] data;
assign out /* DECL: out */ = data /* data */;
always
@(posedge clk /* clk */)
begin: block.0
if((in[00000000000000000000000000000010:00000000000000000000000000000010] == 1) /* (EQ (BVEXTRACT 00000000000000000000000000000010 00000000000000000000000000000010 in) 1) */)
/* ASSERT: (in[00000000000000000000000000000010:00000000000000000000000000000010] == 1) /* (EQ (BVEXTRACT 00000000000000000000000000000010 00000000000000000000000000000010 in) 1) */ */
begin: block.1
data /* DECL: data */ <= 11 /* 11 */;
end
else
/* ASSERT: ! (in[00000000000000000000000000000010:00000000000000000000000000000010] == 1) /* (NOT (EQ (BVEXTRACT 00000000000000000000000000000010 00000000000000000000000000000010 in) 1)) */ */
begin: block.2
end
end
if((in[00000000000000000000000000000001:00000000000000000000000000000001] == 0) /* (EQ (BVEXTRACT 00000000000000000000000000000001 00000000000000000000000000000001 in) 0) */)
/* ASSERT: (in[00000000000000000000000000000001:00000000000000000000000000000001] == 0) /* (EQ (BVEXTRACT 00000000000000000000000000000001 00000000000000000000000000000001 in) 0) */ */
begin: block.3
data /* DECL: data */ <= 01 /* 01 */;
end
else
/* ASSERT: ! (in[00000000000000000000000000000001:00000000000000000000000000000001] == 0) /* (NOT (EQ (BVEXTRACT 00000000000000000000000000000001 00000000000000000000000000000001 in) 0)) */ */
begin: block.4
end
end
end
endmodule
WARN: Can't cast (BVEXTRACT 2 2 in) to (BIT_VECTOR 1) type; no changes.
@(posedge clk)
begin: block.0
if((in[2:2] == 1))
begin: block.1
bv_non_zero_idx.data <= 11;
end
else
begin: block.2
end
end
if((in[1:1] == 0))
begin: block.3
bv_non_zero_idx.data <= 01;
end
else
begin: block.4
end
end
end
assign out = bv_non_zero_idx.data;
</pre></p>
<p>Here params for BVEXTRACT operation of <strong>in</strong> variable are incorrect: an offset should be taken into account</p> Verilog Translator - Bug #9296 (Closed): vcegar-tests/cache_coherence/two_processor_bin_2.v:46: i...https://forge.ispras.ru/issues/92962018-10-04T10:47:05ZSergey Smolovsmolov@ispras.ru
<p>The 46th line of <em>two_processor_bin_2.v</em> file:<br /><pre><code class="text syntaxhl" data-language="text">assign ND_inB = (master_outA ) ? ND_inA : (ndB && !bus_ackB);
</code></pre><br />produces the error via model checking:<br /><pre>
illegal types of "then" and "else" expressions : unsigned word[1] and boolean
</pre><br />The <em>ND_inA</em> variable has 1-bit vector dataType ("then"), but the "ndB && !bus_ackB" expression ("else") is represented by the VeriTrans as follows: (AND (EQ bus_ackB 0) (NOT (EQ ndB 0))).<br />So it has Boolean data type since all operations are logic, not bitvector-oriented.</p> Verilog Translator - Bug #9282 (Closed): ru.ispras.verilog.parser.sample.DataMemTestCase: DEBUG: ...https://forge.ispras.ru/issues/92822018-09-15T08:58:10ZSergey Smolovsmolov@ispras.ru
<p>In the <strong>ru.ispras.verilog.parser.sample.DataMemTestCase</strong> log the following record appears:<br /><pre>
DEBUG: Reduce: (BVEXTRACT 0 7 mem_access_addr)
</pre><br />It comes from the following fragment of the Verilog '_data_mem.v_' module:<br /><pre><code class="text syntaxhl" data-language="text">wire [`DATA_MEM_ADDR_WIDTH-1 : 0] ram_addr = mem_access_addr[`DATA_MEM_ADDR_WIDTH-1 : 0];
</code></pre><br />The Fortress node that is created from the right hand side expression of this assignment is incorrect, because the first param of BVEXTRACT operation should be greater or equal to the second one.</p> Verilog Translator - Task #9251 (Closed): calculate type of index for bit-vector arrayshttps://forge.ispras.ru/issues/92512018-08-29T13:16:51ZSergey Smolovsmolov@ispras.ru
<p>Now the index type for bit vector array variables is set to 32-bit.<br />It should be calculated more precisely.</p> Verilog Translator - Bug #9250 (Closed): ru.ispras.verilog.parser.sample.IfStageTestCase: src/tes...https://forge.ispras.ru/issues/92502018-08-29T07:53:19ZSergey Smolovsmolov@ispras.ru
<p>The test produces the following error log:<br /><pre>
...
ERROR: src/test/verilog/rest-tests/mips16/IF_stage.v line 31:9 missing KW_BEGIN at 'pc'
ERROR: src/test/verilog/rest-tests/mips16/IF_stage.v line 31:9 missing KW_BEGIN at 'pc'
ERROR: src/test/verilog/rest-tests/mips16/IF_stage.v line 31:9 missing KW_BEGIN at 'pc'
java.lang.StackOverflowError
at ru.ispras.verilog.parser.grammar.VerilogParser.number(VerilogParser.java)
at ru.ispras.verilog.parser.grammar.VerilogParser.primary(VerilogParser.java:26555)
at ru.ispras.verilog.parser.grammar.VerilogParser.expression_0(VerilogParser.java:23694)
at ru.ispras.verilog.parser.grammar.VerilogParser.expression_1(VerilogParser.java:23770)
at ru.ispras.verilog.parser.grammar.VerilogParser.expression_2(VerilogParser.java:23865)
at ru.ispras.verilog.parser.grammar.VerilogParser.expression_3(VerilogParser.java:23997)
at ru.ispras.verilog.parser.grammar.VerilogParser.expression_4(VerilogParser.java:24167)
at ru.ispras.verilog.parser.grammar.VerilogParser.expression_5(VerilogParser.java:24333)
at ru.ispras.verilog.parser.grammar.VerilogParser.expression_6(VerilogParser.java:24503)
at ru.ispras.verilog.parser.grammar.VerilogParser.expression_7(VerilogParser.java:24673)
at ru.ispras.verilog.parser.grammar.VerilogParser.expression_8(VerilogParser.java:24843)
at ru.ispras.verilog.parser.grammar.VerilogParser.expression_9(VerilogParser.java:25013)
at ru.ispras.verilog.parser.grammar.VerilogParser.expression_10(VerilogParser.java:25183)
at ru.ispras.verilog.parser.grammar.VerilogParser.expression_11(VerilogParser.java:25353)
at ru.ispras.verilog.parser.grammar.VerilogParser.expression_12(VerilogParser.java:25523)
at ru.ispras.verilog.parser.grammar.VerilogParser.expression_13(VerilogParser.java:25693)
at ru.ispras.verilog.parser.grammar.VerilogParser.expression_14(VerilogParser.java:25868)
at ru.ispras.verilog.parser.grammar.VerilogParser.expression(VerilogParser.java:26037)
at ru.ispras.verilog.parser.grammar.VerilogParser.discrete_assignment_statement(VerilogParser.java:12931)
...
</pre></p> Verilog Translator - Bug #9239 (Closed): ru.ispras.verilog.parser.sample.Mips16CoreTopTestCase: j...https://forge.ispras.ru/issues/92392018-08-20T10:55:53ZSergey Smolovsmolov@ispras.ru
<p>The tool's error log includes the following:<br /><pre>
ERROR: ../src/test/verilog/rest-tests/mips16/IF_stage.v line 31:24 extraneous input ''b0' expecting SEMI
DEBUG: Expanding macro '8' ...
DEBUG: End of the token source 'null'
DEBUG: Expanding macro '8' ...
DEBUG: End of the token source 'null'
ERROR: ../src/test/verilog/rest-tests/mips16/IF_stage.v line 39:25 extraneous input ''d1' expecting SEMI
</pre></p> Verilog Translator - Bug #9224 (Closed): ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_...https://forge.ispras.ru/issues/92242018-08-16T08:08:58ZSergey Smolovsmolov@ispras.ru
<p>The test case produces the following error:<br /><pre>
ERROR: Function declaration '$random' has not been found
1 error(s), 0 warning(s)
java.lang.IllegalArgumentException
at ru.ispras.fortress.util.InvariantChecks.checkTrue(InvariantChecks.java:53)
at ru.ispras.fortress.util.InvariantChecks.checkTrue(InvariantChecks.java:38)
at ru.ispras.fortress.util.InvariantChecks.checkFalse(InvariantChecks.java:68)
at ru.ispras.verilog.parser.VerilogTranslator.exit(VerilogTranslator.java:104)
at ru.ispras.verilog.parser.processor.VerilogStaticChecker.checkFunctionCall(VerilogStaticChecker.java:573)
at ru.ispras.verilog.parser.processor.VerilogStaticChecker.access$000(VerilogStaticChecker.java:63)
at ru.ispras.verilog.parser.processor.VerilogStaticChecker$ExprTreeVisitor.onOperationBegin(VerilogStaticChecker.java:88)
at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:139)
at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123)
at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:160)
at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123)
at ru.ispras.verilog.parser.processor.VerilogStaticChecker.checkReference(VerilogStaticChecker.java:391)
at ru.ispras.verilog.parser.processor.VerilogStaticChecker.checkReference(VerilogStaticChecker.java:403)
at ru.ispras.verilog.parser.processor.VerilogStaticChecker.checkReference(VerilogStaticChecker.java:420)
at ru.ispras.verilog.parser.processor.VerilogStaticChecker.checkReference(VerilogStaticChecker.java:446)
at ru.ispras.verilog.parser.processor.VerilogStaticChecker.onAssignBegin(VerilogStaticChecker.java:114)
at ru.ispras.verilog.parser.walker.VerilogNodeVisitor$2.onBegin(VerilogNodeVisitor.java:253)
at ru.ispras.verilog.parser.walker.VerilogNodeVisitor.onBegin(VerilogNodeVisitor.java:700)
at ru.ispras.verilog.parser.core.TreeWalker.onBegin(TreeWalker.java:102)
at ru.ispras.verilog.parser.core.TreeWalker.start(TreeWalker.java:87)
at ru.ispras.verilog.parser.VerilogSyntaxBackend.start(VerilogSyntaxBackend.java:80)
at ru.ispras.verilog.parser.VerilogSyntaxBackends.start(VerilogSyntaxBackends.java:55)
at ru.ispras.verilog.parser.VerilogTranslator.start(VerilogTranslator.java:170)
at ru.ispras.verilog.parser.sample.VerilogPrinter.main(VerilogPrinter.java:45)
at ru.ispras.verilog.parser.VerilogBenchmarkTest.runTest(VerilogBenchmarkTest.java:72)
at ru.ispras.verilog.parser.VerilogBenchmarkTest.runTest(VerilogBenchmarkTest.java:58)
at ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_PCI_BUS_Verilog_MV_files_PCInorm(VerilogTexas97TestCase.java:476)
</pre></p>
<p>To reproduce the bug, run <strong>ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_PCI_BUS_Verilog_MV_files_PCInorm</strong> test case.</p> Verilog Translator - Bug #9222 (Closed): ru.ispras.verilog.parser.VerilogVisVerilog2SmvTestCase.r...https://forge.ispras.ru/issues/92222018-08-15T09:05:31ZSergey Smolovsmolov@ispras.ru
<pre>
java.lang.IllegalStateException: Parameter is not a value: LOGLENGTH
at ru.ispras.fortress.expression.NodeOperation.getParams(NodeOperation.java:289)
at ru.ispras.fortress.expression.NodeOperation.getDataType(NodeOperation.java:197)
at ru.ispras.fortress.expression.Node.isType(Node.java:177)
at ru.ispras.fortress.expression.ExprUtils.isType(ExprUtils.java:84)
at ru.ispras.verilog.parser.processor.VerilogExprTransformer$3.apply(VerilogExprTransformer.java:216)
at ru.ispras.fortress.transformer.NodeTransformer.applyRule(NodeTransformer.java:169)
at ru.ispras.fortress.transformer.NodeTransformer.onOperationEnd(NodeTransformer.java:229)
at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:173)
at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123)
at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:160)
at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123)
at ru.ispras.fortress.expression.ExprTreeWalker.visit(ExprTreeWalker.java:93)
at ru.ispras.fortress.transformer.NodeTransformer.walk(NodeTransformer.java:54)
at ru.ispras.fortress.transformer.Transformer.transform(Transformer.java:230)
at ru.ispras.verilog.parser.processor.VerilogExprTransformer.transform(VerilogExprTransformer.java:62)
at ru.ispras.verilog.parser.elaborator.VerilogTransformer.transform(VerilogTransformer.java:180)
at ru.ispras.verilog.parser.elaborator.VerilogTransformer.transform(VerilogTransformer.java:191)
at ru.ispras.verilog.parser.elaborator.VerilogTransformer.transform(VerilogTransformer.java:210)
at ru.ispras.verilog.parser.elaborator.VerilogTransformer.onAssignBegin(VerilogTransformer.java:77)
at ru.ispras.verilog.parser.walker.VerilogNodeVisitor$2.onBegin(VerilogNodeVisitor.java:253)
at ru.ispras.verilog.parser.walker.VerilogNodeVisitor.onBegin(VerilogNodeVisitor.java:700)
at ru.ispras.verilog.parser.core.TreeWalker.onBegin(TreeWalker.java:102)
at ru.ispras.verilog.parser.core.TreeWalker.start(TreeWalker.java:81)
at ru.ispras.verilog.parser.elaborator.VerilogTransformer.run(VerilogTransformer.java:54)
at ru.ispras.verilog.parser.elaborator.VerilogCallCollector.transform(VerilogCallCollector.java:55)
at ru.ispras.verilog.parser.elaborator.VerilogElaborator.addProcess(VerilogElaborator.java:460)
at ru.ispras.verilog.parser.elaborator.VerilogElaborator.expand(VerilogElaborator.java:324)
at ru.ispras.verilog.parser.elaborator.VerilogElaborator.start(VerilogElaborator.java:194)
at ru.ispras.verilog.parser.VerilogSyntaxBackends.start(VerilogSyntaxBackends.java:55)
at ru.ispras.verilog.parser.VerilogTranslator.start(VerilogTranslator.java:170)
at ru.ispras.verilog.parser.sample.VerilogPrinter.main(VerilogPrinter.java:45)
at ru.ispras.verilog.parser.VerilogBenchmarkTest.runTest(VerilogBenchmarkTest.java:72)
at ru.ispras.verilog.parser.VerilogBenchmarkTest.runTest(VerilogBenchmarkTest.java:58)
at ru.ispras.verilog.parser.VerilogVisVerilog2SmvTestCase.runTest_Sampleq_twoFifo1(VerilogVisVerilog2SmvTestCase.java:121)
</pre>
<p>This bug comes from the fact, that 'LOGLENGTH' parameter was not substituted by it's value '2'in the resulting representation of the 'twoFifo1.v' Verilog module. The module includes the following code:<br /><pre><code class="text syntaxhl" data-language="text">/*
*
* Taken from VIS Benchmarks <ftp://vlsi.colorado.edu/pub/vis/vis-verilog-models-1.3.tar.gz>
* Modified by Ahmed Irfan <irfan@fbk.eu>
*
*/
module sampleq (reset, inaddr, validin, readin, clkin, bus_gnt_raw,
outaddr, validout, outisaread, readheadentry);
...
parameter LOGLENGTH = 2; //no. of bits required to encode
// head/tail pointers
reg [LOGLENGTH-1:0] readtail; // points to the next incoming read address
reg [LOGLENGTH-1:0] readhead; // points to the next outgoing read address
wire readfull, writefull, readempty, writeempty;
...
// read queue is full
assign readfull = (((readtail +1)&{LOGLENGTH{1'b1}}) == readhead);
...
endmodule // sampleq
</code></pre></p> Verilog Translator - Bug #9212 (Closed): ru.ispras.verilog.parser.VerilogVisVerilog2SmvTestCase.r...https://forge.ispras.ru/issues/92122018-08-11T15:08:03ZSergey Smolovsmolov@ispras.ru
<p>Here is the test output:<br /><pre>
Module name: lunc
Including file '/home/ssedai/projects/veritrans/src/test/verilog/verilog2smv-vis-tests/Vlunc/vlunc.v' ...
/home/ssedai/projects/veritrans/src/test/verilog/verilog2smv-vis-tests/Vlunc/vlunc.v line 115:31 missing COLON at '('
/home/ssedai/projects/veritrans/src/test/verilog/verilog2smv-vis-tests/Vlunc/vlunc.v line 115:36 mismatched input ':' expecting SEMI
/home/ssedai/projects/veritrans/src/test/verilog/verilog2smv-vis-tests/Vlunc/vlunc.v line 116:9 mismatched input '?' expecting LPAREN
/home/ssedai/projects/veritrans/src/test/verilog/verilog2smv-vis-tests/Vlunc/vlunc.v line 116:23 mismatched input ':' expecting SEMI
/home/ssedai/projects/veritrans/src/test/verilog/verilog2smv-vis-tests/Vlunc/vlunc.v line 117:9 mismatched input '?' expecting LPAREN
/home/ssedai/projects/veritrans/src/test/verilog/verilog2smv-vis-tests/Vlunc/vlunc.v line 117:14 mismatched input ':' expecting LPAREN
/home/ssedai/projects/veritrans/src/test/verilog/verilog2smv-vis-tests/Vlunc/vlunc.v line 118:9 mismatched input '?' expecting LPAREN
/home/ssedai/projects/veritrans/src/test/verilog/verilog2smv-vis-tests/Vlunc/vlunc.v line 118:26 mismatched input ':' expecting SEMI
/home/ssedai/projects/veritrans/src/test/verilog/verilog2smv-vis-tests/Vlunc/vlunc.v line 123:12 missing RPAREN at '('
/home/ssedai/projects/veritrans/src/test/verilog/verilog2smv-vis-tests/Vlunc/vlunc.v line 125:1 mismatched input 'else' expecting KW_END
/home/ssedai/projects/veritrans/src/test/verilog/verilog2smv-vis-tests/Vlunc/vlunc.v line 126:13 mismatched input '<=' expecting LPAREN
ru/ispras/verilog/parser/grammar/VerilogTreeBuilder.g: node from after line 99:52 mismatched tree node: <mismatched token: [@516,2641:2643='end',<50>,127:4], resync=moduletransform(in,Lcmd,Ucmd,Ncmd,Ccmd,out);input[7:0]in;inputLcmd;inputUcmd;inputNcmd;inputCcmd;output[7:0]out;assignout=Lcmd?toLower(in):Ucmd?toUpper(in):Ncmd?in:Ccmd?changeCase(in):8'hxx;function[7:0]toLower;input[7:0]in;begin:_toLowerif(isUpper(in))toLower<=in+8'h20;elsetoLower<=in;endendfunctionfunction[7:0]toUpper;input[7:0]in;begin:_toUpperif> expecting <UP>
Starting the backend 'static-checker'...
Declaration of 'regIn[]' has been found: DECLARATION(regIn)
Declaration of 'dataOut[]' has been found: DECLARATION(dataOut)
Instance: c
Module: control
Port connection: null
Port connection: set clock
Port connection: null
Port connection: set reset
Port connection: null
Port connection: set in
Port connection: null
Port connection: set Lcmd
Port connection: null
Port connection: set Ucmd
Port connection: null
Port connection: set Ncmd
Port connection: null
Port connection: set Ccmd
Declaration of 'clock[]' has been found: DECLARATION(clock)
Declaration of 'reset[]' has been found: DECLARATION(reset)
Declaration of 'regIn[]' has been found: DECLARATION(regIn)
Declaration of 'Lcmd[]' has been found: DECLARATION(Lcmd)
Declaration of 'Ucmd[]' has been found: DECLARATION(Ucmd)
Declaration of 'Ncmd[]' has been found: DECLARATION(Ncmd)
Declaration of 'Ccmd[]' has been found: DECLARATION(Ccmd)
Instance: t
Declaration of 'regIn[]' has been found: DECLARATION(regIn)
Declaration of 'Lcmd[]' has been found: DECLARATION(Lcmd)
Declaration of 'Ucmd[]' has been found: DECLARATION(Ucmd)
Declaration of 'Ncmd[]' has been found: DECLARATION(Ncmd)
Declaration of 'Ccmd[]' has been found: DECLARATION(Ccmd)
Declaration of 'transformed[]' has been found: DECLARATION(transformed)
Declaration of 'clock[]' has been found: DECLARATION(clock)
Declaration of 'reset[]' has been found: DECLARATION(reset)
Declaration of 'dataOut[]' has been found: DECLARATION(dataOut)
Declaration of 'regIn[]' has been found: DECLARATION(regIn)
Declaration of 'dataOut[]' has been found: DECLARATION(dataOut)
Declaration of 'transformed[]' has been found: DECLARATION(transformed)
Declaration of 'regIn[]' has been found: DECLARATION(regIn)
Declaration of 'dataIn[]' has been found: DECLARATION(dataIn)
Declaration of 'clock[]' has been found: DECLARATION(clock)
Declaration of 'reset[]' has been found: DECLARATION(reset)
Declaration of 'dataIn[]' has been found: DECLARATION(dataIn)
Declaration of 'dataOut[]' has been found: DECLARATION(dataOut)
Declaration of 'clock[]' has been found: DECLARATION(clock)
Declaration of 'reset[]' has been found: DECLARATION(reset)
Declaration of 'dataIn[]' has been found: DECLARATION(dataIn)
Declaration of 'dataOut[]' has been found: DECLARATION(dataOut)
Declaration of 'Lcmd[]' has been found: DECLARATION(Lcmd)
Declaration of 'Ucmd[]' has been found: DECLARATION(Ucmd)
Declaration of 'Ncmd[]' has been found: DECLARATION(Ncmd)
Declaration of 'Ccmd[]' has been found: DECLARATION(Ccmd)
Declaration of 'prev[]' has been found: DECLARATION(prev)
Declaration of 'clock[]' has been found: DECLARATION(clock)
Declaration of 'reset[]' has been found: DECLARATION(reset)
Declaration of 'prev[]' has been found: DECLARATION(prev)
Declaration of 'prev[]' has been found: DECLARATION(prev)
Declaration of 'in[]' has been found: DECLARATION(in)
Declaration of 'load[]' has been found: DECLARATION(load)
Declaration of 'prev[]' has been found: DECLARATION(prev)
Declaration of 'clock[]' has been found: DECLARATION(clock)
Declaration of 'reset[]' has been found: DECLARATION(reset)
Declaration of 'Ncmd[]' has been found: DECLARATION(Ncmd)
Declaration of 'Lcmd[]' has been found: DECLARATION(Lcmd)
Declaration of 'Ucmd[]' has been found: DECLARATION(Ucmd)
Declaration of 'Ccmd[]' has been found: DECLARATION(Ccmd)
Declaration of 'load[]' has been found: DECLARATION(load)
Declaration of 'in[]' has been found: DECLARATION(in)
Declaration of 'Lcmd[]' has been found: DECLARATION(Lcmd)
Declaration of 'Ucmd[]' has been found: DECLARATION(Ucmd)
Declaration of 'Ncmd[]' has been found: DECLARATION(Ncmd)
Declaration of 'Ccmd[]' has been found: DECLARATION(Ccmd)
Declaration of 'Lcmd[]' has been found: DECLARATION(Lcmd)
Declaration of 'Ucmd[]' has been found: DECLARATION(Ucmd)
Declaration of 'Ncmd[]' has been found: DECLARATION(Ncmd)
Declaration of 'Ccmd[]' has been found: DECLARATION(Ccmd)
Declaration of 'Lcmd[]' has been found: DECLARATION(Lcmd)
Declaration of 'Ucmd[]' has been found: DECLARATION(Ucmd)
Declaration of 'Ncmd[]' has been found: DECLARATION(Ncmd)
Declaration of 'Ccmd[]' has been found: DECLARATION(Ccmd)
Declaration of 'Lcmd[]' has been found: DECLARATION(Lcmd)
Declaration of 'Ucmd[]' has been found: DECLARATION(Ucmd)
Declaration of 'Ncmd[]' has been found: DECLARATION(Ncmd)
Declaration of 'Ccmd[]' has been found: DECLARATION(Ccmd)
Declaration of 'Lcmd[]' has been found: DECLARATION(Lcmd)
Declaration of 'Ucmd[]' has been found: DECLARATION(Ucmd)
Declaration of 'Ncmd[]' has been found: DECLARATION(Ncmd)
Declaration of 'Ccmd[]' has been found: DECLARATION(Ccmd)
Declaration of 'clock[]' has been found: DECLARATION(clock)
Declaration of 'reset[]' has been found: DECLARATION(reset)
Declaration of 'in[]' has been found: DECLARATION(in)
Declaration of 'Lcmd[]' has been found: DECLARATION(Lcmd)
Declaration of 'Ucmd[]' has been found: DECLARATION(Ucmd)
Declaration of 'Ncmd[]' has been found: DECLARATION(Ncmd)
Declaration of 'Ccmd[]' has been found: DECLARATION(Ccmd)
Declaration of 'clock[]' has been found: DECLARATION(clock)
Declaration of 'reset[]' has been found: DECLARATION(reset)
Declaration of 'in[]' has been found: DECLARATION(in)
Declaration of 'Lcmd[]' has been found: DECLARATION(Lcmd)
Declaration of 'Ucmd[]' has been found: DECLARATION(Ucmd)
Declaration of 'Ncmd[]' has been found: DECLARATION(Ncmd)
Declaration of 'Ccmd[]' has been found: DECLARATION(Ccmd)
Starting the backend 'printer'...
module lunc(clock /* DECL: clock */, reset /* DECL: reset */, dataIn /* DECL: dataIn */, dataOut /* DECL: dataOut */, clock /* DECL: clock */, reset /* DECL: reset */, dataIn /* DECL: dataIn */, dataOut /* DECL: dataOut */);
input clock;
inout reset;
input [00000000000000000000000000000111:00000000000000000000000000000000] dataIn;
output [00000000000000000000000000000111:00000000000000000000000000000000] dataOut;
reg [00000000000000000000000000000111:00000000000000000000000000000000] dataOut;
reg [00000000000000000000000000000111:00000000000000000000000000000000] regIn;
wire [00000000000000000000000000000111:00000000000000000000000000000000] transformed;
wire Lcmd;
wire Ucmd;
wire Ncmd;
wire Ccmd;
initial
begin
regIn /* DECL: regIn */ = 00000000000000000000000000000000;
dataOut /* DECL: dataOut */ = 00000000000000000000000000000000;
end
/* DECL: control */
control c
(
.clock(clock)
.reset(reset)
.in(regIn)
.Lcmd(Lcmd)
.Ucmd(Ucmd)
.Ncmd(Ncmd)
.Ccmd(Ccmd)
);
/* DECL: null */
transform t
(
regIn
Lcmd
Ucmd
Ncmd
Ccmd
transformed
);
always
@(posedge clock)
begin
if(reset)
/* ASSERT: reset */
begin
dataOut /* DECL: dataOut */ <= 00000000000000000000000000000000;
regIn /* DECL: regIn */ <= 00000000000000000000000000000000;
end
else
/* ASSERT: ! reset */
begin
dataOut /* DECL: dataOut */ <= transformed;
regIn /* DECL: regIn */ <= dataIn;
end
end
end
endmodule
module control(clock /* DECL: clock */, reset /* DECL: reset */, in /* DECL: in */, Lcmd /* DECL: Lcmd */, Ucmd /* DECL: Ucmd */, Ncmd /* DECL: Ncmd */, Ccmd /* DECL: Ccmd */, clock /* DECL: clock */, reset /* DECL: reset */, in /* DECL: in */, Lcmd /* DECL: Lcmd */, Ucmd /* DECL: Ucmd */, Ncmd /* DECL: Ncmd */, Ccmd /* DECL: Ccmd */);
input clock;
input reset;
input [00000000000000000000000000000111:00000000000000000000000000000000] in;
output reg Lcmd;
output reg Ucmd;
output reg Ncmd;
output reg Ccmd;
reg Lcmd;
reg Ucmd;
reg Ncmd;
reg Ccmd;
wire load;
reg [00000000000000000000000000000111:00000000000000000000000000000000] prev;
initial
begin
Lcmd /* DECL: Lcmd */ = 00000000000000000000000000000000;
Ucmd /* DECL: Ucmd */ = 00000000000000000000000000000000;
Ncmd /* DECL: Ncmd */ = 00000000000000000000000000000001;
Ccmd /* DECL: Ccmd */ = 00000000000000000000000000000000;
prev /* DECL: prev */ = 00000000000000000000000000000000;
end
always
@(posedge clock)
if(reset)
/* ASSERT: reset */
prev /* DECL: prev */ <= 00000000000000000000000000000000;
else
/* ASSERT: ! reset */
prev /* DECL: prev */ <= in;
end
assign load /* DECL: load */ = (prev == 00011011);
always
@(posedge clock)
if(reset)
/* ASSERT: reset */
begin
Ncmd /* DECL: Ncmd */ <= 00000000000000000000000000000001;
Lcmd /* DECL: Lcmd */ <= 00000000000000000000000000000000;
Ucmd /* DECL: Ucmd */ <= 00000000000000000000000000000000;
Ccmd /* DECL: Ccmd */ <= 00000000000000000000000000000000;
end
else
/* ASSERT: ! reset */
if(load)
/* ASSERT: load */
begin
case(in)
01001100:
/* ASSERT: (in === 01001100) */
begin
Lcmd /* DECL: Lcmd */ <= 00000000000000000000000000000001;
Ucmd /* DECL: Ucmd */ <= 00000000000000000000000000000000;
Ncmd /* DECL: Ncmd */ <= 00000000000000000000000000000000;
Ccmd /* DECL: Ccmd */ <= 00000000000000000000000000000000;
end
01010101:
/* ASSERT: (in === 01010101) */
begin
Lcmd /* DECL: Lcmd */ <= 00000000000000000000000000000000;
Ucmd /* DECL: Ucmd */ <= 00000000000000000000000000000001;
Ncmd /* DECL: Ncmd */ <= 00000000000000000000000000000000;
Ccmd /* DECL: Ccmd */ <= 00000000000000000000000000000000;
end
01001110:
/* ASSERT: (in === 01001110) */
begin
Lcmd /* DECL: Lcmd */ <= 00000000000000000000000000000000;
Ucmd /* DECL: Ucmd */ <= 00000000000000000000000000000000;
Ncmd /* DECL: Ncmd */ <= 00000000000000000000000000000001;
Ccmd /* DECL: Ccmd */ <= 00000000000000000000000000000000;
end
01000011:
/* ASSERT: (in === 01000011) */
begin
Lcmd /* DECL: Lcmd */ <= 00000000000000000000000000000000;
Ucmd /* DECL: Ucmd */ <= 00000000000000000000000000000000;
Ncmd /* DECL: Ncmd */ <= 00000000000000000000000000000000;
Ccmd /* DECL: Ccmd */ <= 00000000000000000000000000000001;
end
default:
/* ASSERT: ! ((((in === 01001100) || (in === 01010101)) || (in === 01001110)) || (in === 01000011)) */
begin
Lcmd /* DECL: Lcmd */ <= 0;
Ucmd /* DECL: Ucmd */ <= 0;
Ncmd /* DECL: Ncmd */ <= 0;
Ccmd /* DECL: Ccmd */ <= 0;
end
end
end
else
/* ASSERT: ! load */
begin
end
end
end
endmodule
Starting the backend 'design-elaborator'...
Expanding node 'MODULE(lunc)'...
Bindings: {clock=clock, reset=reset, dataIn=dataIn, dataOut=dataOut, regIn=regIn, transformed=transformed, Lcmd=Lcmd, Ucmd=Ucmd, Ncmd=Ncmd, Ccmd=Ccmd}
Variables: {clock=DECLARATION(clock), reset=DECLARATION(reset), dataIn=DECLARATION(dataIn), dataOut=DECLARATION(dataOut), regIn=DECLARATION(regIn), transformed=DECLARATION(transformed), Lcmd=DECLARATION(Lcmd), Ucmd=DECLARATION(Ucmd), Ncmd=DECLARATION(Ncmd), Ccmd=DECLARATION(Ccmd)}
Module 'transform' cannot be found
</pre><br />To reproduce the bug, uncomment the <strong>runTest_Vlunc_vlunc</strong> method in <strong>ru.ispras.verilog.parser.VerilogVisVerilog2SmvTestCase</strong></p> Verilog Translator - Bug #9211 (Closed): java.lang.IllegalArgumentException at ru.ispras.verilog....https://forge.ispras.ru/issues/92112018-08-11T15:04:26ZSergey Smolovsmolov@ispras.ru
<pre>
java.lang.IllegalArgumentException
at ru.ispras.fortress.util.InvariantChecks.checkTrue(InvariantChecks.java:53)
at ru.ispras.fortress.util.InvariantChecks.checkTrue(InvariantChecks.java:38)
at ru.ispras.fortress.util.InvariantChecks.checkNotNull(InvariantChecks.java:95)
at ru.ispras.verilog.parser.model.basis.VerilogPathItem.<init>(VerilogPathItem.java:41)
at ru.ispras.verilog.parser.model.VerilogModule.addDeclaration(VerilogModule.java:193)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_module(VerilogTreeBuilder.java:674)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_root(VerilogTreeBuilder.java:509)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.startRule(VerilogTreeBuilder.java:459)
at ru.ispras.verilog.parser.VerilogFrontend.startBuilder(VerilogFrontend.java:251)
at ru.ispras.verilog.parser.VerilogFrontend.startBuilder(VerilogFrontend.java:256)
at ru.ispras.verilog.parser.VerilogFrontend.start(VerilogFrontend.java:271)
at ru.ispras.verilog.parser.VerilogFrontend.start(VerilogFrontend.java:275)
at ru.ispras.verilog.parser.VerilogTranslator.start(VerilogTranslator.java:162)
at ru.ispras.verilog.parser.sample.VerilogPrinter.main(VerilogPrinter.java:45)
at ru.ispras.verilog.parser.VerilogBenchmarkTest.runTest(VerilogBenchmarkTest.java:64)
at ru.ispras.verilog.parser.VerilogBenchmarkTest.runTest(VerilogBenchmarkTest.java:50)
</pre>
<p>To reproduce the bug, run any of the following test cases:<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_SDLX_misc_Mux<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_SDLX_misc_Add4<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_PDLX_misc_Mux<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_PDLX_misc_ThreeBitReg<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_PDLX_misc_OneBitReg<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_SDLX_misc_DataMem<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_PDLX_misc_DataMem<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_PDLX_misc_Clock<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_PDLX_misc_ZTest<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_SDLX_misc_Clock<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_SDLX_misc_ZTest<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_SDLX_misc_SignExt<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_PDLX_misc_InstMem<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_PDLX_misc_SignExt<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_PDLX_misc_Add4<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_PDLX_misc_Register<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_PDLX_RegFile<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_SDLX_RegFile<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_SDLX_misc_OneBitReg<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_PDLX_misc_FiveBitReg<br /> ru.ispras.verilog.parser.VerilogTexas97TestCase.runTest_DLX_SDLX_misc_Register</p> Verilog Translator - Bug #9210 (Closed): java.lang.IllegalArgumentException at ru.ispras.fortress...https://forge.ispras.ru/issues/92102018-08-11T15:01:58ZSergey Smolovsmolov@ispras.ru
<pre>
java.lang.IllegalArgumentException
at ru.ispras.fortress.util.InvariantChecks.checkTrue(InvariantChecks.java:53)
at ru.ispras.fortress.util.InvariantChecks.checkTrue(InvariantChecks.java:38)
at ru.ispras.fortress.util.InvariantChecks.checkNotNull(InvariantChecks.java:95)
at ru.ispras.fortress.expression.NodeOperation.<init>(NodeOperation.java:117)
at ru.ispras.fortress.expression.NodeOperation.<init>(NodeOperation.java:70)
at ru.ispras.fortress.expression.NodeOperation.<init>(NodeOperation.java:52)
at ru.ispras.fortress.expression.Nodes.bvuge(Nodes.java:436)
at ru.ispras.verilog.parser.model.basis.VerilogReference.getNode(VerilogReference.java:209)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_primary(VerilogTreeBuilder.java:6368)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_operation(VerilogTreeBuilder.java:6198)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_expression(VerilogTreeBuilder.java:6053)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_concatenation(VerilogTreeBuilder.java:7194)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_primary(VerilogTreeBuilder.java:6328)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_operation(VerilogTreeBuilder.java:6198)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_expression(VerilogTreeBuilder.java:6053)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_extended_expression(VerilogTreeBuilder.java:5328)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_assignment(VerilogTreeBuilder.java:5265)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_assign_statement(VerilogTreeBuilder.java:4283)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_statement(VerilogTreeBuilder.java:4020)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_case_statement_item(VerilogTreeBuilder.java:5506)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_case_statement(VerilogTreeBuilder.java:4828)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_statement(VerilogTreeBuilder.java:4090)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_block_statement(VerilogTreeBuilder.java:5164)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_statement(VerilogTreeBuilder.java:4110)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_procedure(VerilogTreeBuilder.java:3579)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_item(VerilogTreeBuilder.java:959)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_module(VerilogTreeBuilder.java:667)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.ast_root(VerilogTreeBuilder.java:509)
at ru.ispras.verilog.parser.grammar.VerilogTreeBuilder.startRule(VerilogTreeBuilder.java:459)
at ru.ispras.verilog.parser.VerilogFrontend.startBuilder(VerilogFrontend.java:251)
at ru.ispras.verilog.parser.VerilogFrontend.startBuilder(VerilogFrontend.java:256)
at ru.ispras.verilog.parser.VerilogFrontend.start(VerilogFrontend.java:271)
at ru.ispras.verilog.parser.VerilogFrontend.start(VerilogFrontend.java:275)
at ru.ispras.verilog.parser.VerilogTranslator.start(VerilogTranslator.java:162)
at ru.ispras.verilog.parser.sample.VerilogPrinter.main(VerilogPrinter.java:45)
at ru.ispras.verilog.parser.VerilogBenchmarkTest.runTest(VerilogBenchmarkTest.java:64)
at ru.ispras.verilog.parser.VerilogBenchmarkTest.runTest(VerilogBenchmarkTest.java:50)
</pre>
<p>To reproduce the bug, run ru.ispras.verilog.parser.VerilogVisVerilog2SmvTestCase.runTest_Palu_palu test case.</p> Verilog Translator - Bug #9202 (Closed): ru.ispras.verilog.parser.sample.PjIcuIcctl1TestCase: jav...https://forge.ispras.ru/issues/92022018-08-10T07:49:52ZSergey Smolovsmolov@ispras.ru
<p>The testcase stack trace is:<br /><pre>
java.lang.ArrayIndexOutOfBoundsException: 3
at ru.ispras.verilog.parser.calculator.VerilogOperations$33.calculate(VerilogOperations.java:718)
at ru.ispras.fortress.calculator.OperationGroup.calculate(OperationGroup.java:145)
at ru.ispras.fortress.transformer.Reducer$OperationRule.apply(Reducer.java:148)
at ru.ispras.fortress.transformer.NodeTransformer.applyRule(NodeTransformer.java:169)
at ru.ispras.fortress.transformer.NodeTransformer.updateNode(NodeTransformer.java:179)
at ru.ispras.fortress.transformer.NodeTransformer.onOperationEnd(NodeTransformer.java:227)
at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:173)
at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123)
at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:160)
at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123)
at ru.ispras.fortress.expression.ExprTreeWalker.visit(ExprTreeWalker.java:93)
at ru.ispras.fortress.transformer.NodeTransformer.walk(NodeTransformer.java:54)
at ru.ispras.fortress.transformer.Reducer.reduce(Reducer.java:184)
at ru.ispras.fortress.transformer.Reducer.reduce(Reducer.java:249)
at ru.ispras.verilog.parser.processor.VerilogExprTransformer.reduce(VerilogExprTransformer.java:78)
at ru.ispras.verilog.parser.processor.VerilogExprTransformer.transform(VerilogExprTransformer.java:63)
at ru.ispras.verilog.parser.elaborator.VerilogTransformer.transform(VerilogTransformer.java:180)
at ru.ispras.verilog.parser.elaborator.VerilogTransformer.transform(VerilogTransformer.java:191)
at ru.ispras.verilog.parser.elaborator.VerilogTransformer.transform(VerilogTransformer.java:210)
at ru.ispras.verilog.parser.elaborator.VerilogTransformer.onAssignStatementBegin(VerilogTransformer.java:83)
at ru.ispras.verilog.parser.walker.VerilogNodeVisitor$3.onBegin(VerilogNodeVisitor.java:265)
at ru.ispras.verilog.parser.walker.VerilogNodeVisitor.onBegin(VerilogNodeVisitor.java:700)
at ru.ispras.verilog.parser.core.TreeWalker.onBegin(TreeWalker.java:102)
at ru.ispras.verilog.parser.core.TreeWalker.start(TreeWalker.java:81)
at ru.ispras.verilog.parser.elaborator.VerilogTransformer.run(VerilogTransformer.java:54)
at ru.ispras.verilog.parser.elaborator.VerilogVariableSubstitutor.transform(VerilogVariableSubstitutor.java:47)
at ru.ispras.verilog.parser.elaborator.VerilogInstantiator.instantiate(VerilogInstantiator.java:105)
at ru.ispras.verilog.parser.elaborator.VerilogInstantiator.instantiateProcess(VerilogInstantiator.java:83)
at ru.ispras.verilog.parser.elaborator.VerilogDesign$1$1.next(VerilogDesign.java:181)
at ru.ispras.verilog.parser.elaborator.VerilogDesign$1$1.next(VerilogDesign.java:169)
at ru.ispras.verilog.parser.sample.VerilogDesignPrinter.start(VerilogDesignPrinter.java:36)
at ru.ispras.verilog.parser.VerilogDesignBackends.start(VerilogDesignBackends.java:56)
at ru.ispras.verilog.parser.VerilogTranslator.start(VerilogTranslator.java:169)
at ru.ispras.verilog.parser.sample.VerilogPrinter.main(VerilogPrinter.java:45)
at ru.ispras.verilog.parser.sample.VerilogPrinterTestCase.runTest(VerilogPrinterTestCase.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:114)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:57)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:66)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:109)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:377)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
</pre></p>