Skip to content

enable lec check#3880

Merged
maliberty merged 15 commits intoThe-OpenROAD-Project:masterfrom
keplertech:signoff-single-commit
Feb 17, 2026
Merged

enable lec check#3880
maliberty merged 15 commits intoThe-OpenROAD-Project:masterfrom
keplertech:signoff-single-commit

Conversation

@nanocoh
Copy link
Contributor

@nanocoh nanocoh commented Feb 10, 2026

No description provided.

Signed-off-by: Noam Cohen <noam.chn1@gmail.com>
@maliberty
Copy link
Member

I see some errors that look like tool issues on your side, eg ng45/swerv

[2026-02-10T22:12:14.527Z] [2026-02-10 22:12:13.459] [info] [KeplerFormal.cpp:263] Found top design: swerv
[2026-02-10T22:12:14.527Z] [2026-02-10 22:12:13.681] [error] [KeplerFormal.cpp:339] Workflow failed: Anonymous instance in SNLPath constructor.
[2026-02-10T22:12:14.527Z] child process exited abnormally

@nanocoh
Copy link
Contributor Author

nanocoh commented Feb 11, 2026

I see some errors that look like tool issues on your side, eg ng45/swerv

[2026-02-10T22:12:14.527Z] [2026-02-10 22:12:13.459] [info] [KeplerFormal.cpp:263] Found top design: swerv [2026-02-10T22:12:14.527Z] [2026-02-10 22:12:13.681] [error] [KeplerFormal.cpp:339] Workflow failed: Anonymous instance in SNLPath constructor. [2026-02-10T22:12:14.527Z] child process exited abnormally

A lot of issues are regarding instances that need to be cleaned before dumping the verilog through "write_verilog -remove_cells", will need to edit it one by one but there might be also tool issues indeed among the tests.

Working on cleaning it all one by one and will update the pr right after.

Noam Cohen added 3 commits February 11, 2026 10:44
Signed-off-by: Noam Cohen <noam.chn1@gmail.com>
Signed-off-by: Noam Cohen <noam.chn1@gmail.com>
Signed-off-by: Noam Cohen <noam.chn1@gmail.com>
@nanocoh
Copy link
Contributor Author

nanocoh commented Feb 12, 2026

We filtered the majority of config issues.

Some issues remain on the tool that we are solving.

There is also one issue in the verilog parsing level for which @xtofalex have some comments:

Parser error: syntax error, unexpected ESCAPED_IDENTIFIER_TK, expecting '(
That can be found on ibex asap7 for example.

@maliberty
Copy link
Member

There is a pending fix for a Verilog escaping issue. Perhaps that is what you are seeing. What does that line look like?

@nanocoh
Copy link
Contributor Author

nanocoh commented Feb 12, 2026

There is a pending fix for a Verilog escaping issue. Perhaps that is what you are seeing. What does that line look like?

It very might well be the case here. Will let @xtofalex comment on what he saw.

@nanocoh
Copy link
Contributor Author

nanocoh commented Feb 12, 2026

In case it is a pending fix, I can disable it for now in the related test cases.

@xtofalex
Copy link

There is a pending fix for a Verilog escaping issue. Perhaps that is what you are seeing. What does that line look like?

We saw an escaping issue coming from the OpenSTA Verilog dumper when reading results/ihp-sg13g2/ibex/base/4_before_rsz_lec.v

%Error: 4_before_rsz_lec.v:70061:7: syntax error, unexpected IDENTIFIER-for-type, expecting ')'
70061 |     .Y\[32:1\]({net462,
      |       ^~~~~~~~~~~~~~~~~
        ... See the manual at https://verilator.org/verilator_doc.html?v=5.044 for more assistance.
%Error: Exiting due to 1 error(s)
zsh: exit 1     verilator --lint-only -Wall 4_before_rsz_lec.v

The line should be: ".\Y[32:1] ({net462,".

From quick analysis, the problem comes from:
https://github.com/The-OpenROAD-Project/OpenSTA/blame/e872c55bfe1c005cb0dae8cd281f986dd39cfd34/verilog/VerilogWriter.cc#L391

where in "void VerilogWriter::writeInstBusPin" :

fprintf(stream_, ".%s({", network_->name(port));

should be replace with something like in "void VerilogWriter::writeInstPin" :

 string net_vname = netVerilogName(net_name);

@maliberty, If this is not related to the pending fix you are referring to, I can open an issue in OpenSTA.

@povik
Copy link
Contributor

povik commented Feb 12, 2026

@xtofalex looks to be related to the pending fix. See #3826

@xtofalex
Copy link

@xtofalex looks to be related to the pending fix. See #3826

Yes thanks !

Noam Cohen and others added 3 commits February 12, 2026 23:15
Signed-off-by: nanocoh <noam.chn1@gmail.com>
Signed-off-by: nanocoh <noam.chn1@gmail.com>
Signed-off-by: Noam Cohen <noam.chn1@gmail.com>
@nanocoh nanocoh force-pushed the signoff-single-commit branch 2 times, most recently from c8c391f to 1d3c987 Compare February 16, 2026 08:40
Noam Cohen and others added 4 commits February 16, 2026 09:46
Copy link
Member

@maliberty maliberty left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm curious about the ones with DISABLE_LEC_CHECK=1 - do you plan to look at those later?

run_equivalence_test
}
if { [env_var_exists_and_non_empty LEC_CHECK] } {
if { ![env_var_exists_and_non_empty DISABLE_LEC_CHECK] } {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The variable should be defined and documented in variables.yaml (e.g. EQUIVALENCE_CHECK). It is better to have positive names to avoid having double negatives like DISABLE_LEC_CHECK=false. Let's use LEC_CHECK with the default=1.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

proc write_lec_verilog { filename } {
if { [env_var_exists_and_non_empty REMOVE_CELLS_FOR_EQY] } {
write_verilog -remove_cells $::env(REMOVE_CELLS_FOR_EQY) $::env(RESULTS_DIR)/$filename
if { [env_var_exists_and_non_empty REMOVE_CELLS_FOR_LEC] } {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

REMOVE_CELLS_FOR_LEC in variables.yaml

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

export MACRO_PLACE_HALO ?= 3 3

export ROUTING_LAYER_ADJUSTMENT = 0.3
export REMOVE_CELLS_FOR_LEC = TAPCELL* No newline at end of file
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be better to put this in the platform rather than every design's config.mk. Use ?= so it can be overridden if needed.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Noam Cohen added 3 commits February 17, 2026 14:57
…lls in platform instead of designs

Signed-off-by: Noam Cohen <noam.chn1@gmail.com>
Signed-off-by: Noam Cohen <noam.chn1@gmail.com>
Signed-off-by: Noam Cohen <noam.chn1@gmail.com>
@nanocoh
Copy link
Contributor Author

nanocoh commented Feb 17, 2026

I'm curious about the ones with DISABLE_LEC_CHECK=1 - do you plan to look at those later?

We disabled all designs with the pending fix for Verilog escaping. We will of-course turn them on and verify them in another pr when the fix is integrated.

Signed-off-by: nanocoh <noam.chn1@gmail.com>
@maliberty maliberty merged commit 01bc23c into The-OpenROAD-Project:master Feb 17, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants