Project

General

Profile

Actions

Bug #8862

closed

VerilogIeeeTestCase.runTest_12_08_02_1: java.lang.IllegalArgumentException

Added by Sergey Smolov almost 6 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Target version:
Start date:
05/07/2018
Due date:
% Done:

0%

Estimated time:
Detected in build:
master
Platform:
Published in build:

Description

The stack trace:

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.elaborator.VerilogElaborator.expand(VerilogElaborator.java:266)
    at ru.ispras.verilog.parser.elaborator.VerilogElaborator.start(VerilogElaborator.java:181)
    at ru.ispras.verilog.parser.VerilogSyntaxBackends.start(VerilogSyntaxBackends.java:56)
    at ru.ispras.verilog.parser.VerilogTranslator.start(VerilogTranslator.java:163)
    at ru.ispras.verilog.parser.sample.VerilogPrinter.main(VerilogPrinter.java:45)
    at ru.ispras.verilog.parser.VerilogIeeeTestCase.runTest(VerilogIeeeTestCase.java:1813)
    at ru.ispras.verilog.parser.VerilogIeeeTestCase.runTest(VerilogIeeeTestCase.java:1799)
    at ru.ispras.verilog.parser.VerilogIeeeTestCase.runTest_12_08_02_1(VerilogIeeeTestCase.java:1119)

The target Verilog module:
// IEEE Std 1364-2005
//   12. Hierarchical structures
//     12.8 Elaboration
//       12.8.2 Early resolution of hierarchical names
//         In order to comply with this algorithm, hierarchical names in some defparam statements
//         will need to be resolved prior to the full elaboration of the hierarchy. It is possible
//         that when elaboration is complete, rules for name resolution would dictate that a
//         hierarchical name in a defparam statement would have resolved differently had early
//         resolution not been required. This could result in a situation where an identical
//         hierarchical name in some other statement in the same scope would resolve differently
//         from the one in the defparam statement. Below is an example of a design
//         that has this problem.

module m;
  m1 n();
endmodule

module m1;
  parameter p = 2;

  defparam m.n.p = 1;

  initial $display (m.n.p);

  generate
    if (p == 1) begin : m
      m2 n();
    end
  endgenerate

endmodule

module m2;
  parameter p = 3;
endmodule

Actions

Also available in: Atom PDF