<@U020J2W6Q84> Any chance that you update OL to a ...
# openlane
h
@donn Any chance that you update OL to a newer CVC version? The one currently used (d172016a791af3089b28070d80ad92bdfef9c585) does not build in our Docker, this one does work fine (6295fd962aa0fbd11937018867797d01aff17778). Since you have removed the version check bypass recently there is no clean way for us to use the newer CVC (or is there?). @Mitch Bailey
I am still not getting the version check logic in OpenLane, maybe you could provide a quick’n’easy way to convince OL to use a different CVC version.
One thing that I can think of when building: Build a patch set, checkout the version OL wants, then patch it. @Georg Zachl Do you have a better idea?
m
Trying to get CVC to work with openlane led to a very limited solution. Also, there’s a verilog simulator named
cvc
that’s also installed sometimes. I’ve changed the name to
cvc_rv
in the most recent version. There’s also this repo https://github.com/d-m-bailey/extra_be_checks.git that uses
cvc
(my version) along with a setup for running device level lvs.
mpw-7
is the most recent branch. It may be a while before we get everything incorporated into openlane.
h
@Mitch Bailey If I send you the crash log, would it be possible that you provide a patch for d172016a791af3089b28070d80ad92bdfef9c585? Maybe a hint what is the minimum change required to fix it would be already helpful.
m
Sure!
h
Here you go:
Copy code
bash-5.1# make
make  all-recursive
make[1]: Entering directory '/foss/designs/cvc'
Making all in src
make[2]: Entering directory '/foss/designs/cvc/src'
/bin/sh ../ylwrap cdlParser.yy y.tab.c <http://cdlParser.cc|cdlParser.cc> y.tab.h `echo <http://cdlParser.cc|cdlParser.cc> | sed -e s/cc$/hh/ -e s/cpp$/hpp/ -e s/cxx$/hxx/ -e s/c++$/h++/ -e s/c$/h/` y.output cdlParser.output -- bison -y -d
/foss/designs/cvc/src/cdlParser.yy:24.1-9: warning: POSIX Yacc does not support %skeleton [-Wyacc]
   24 | %skeleton "<http://lalr1.cc|lalr1.cc>"
      | ^~~~~~~~~
/foss/designs/cvc/src/cdlParser.yy:24.11-20: warning: POSIX Yacc does not support string literals [-Wyacc]
   24 | %skeleton "<http://lalr1.cc|lalr1.cc>"
      |           ^~~~~~~~~~
/foss/designs/cvc/src/cdlParser.yy:25.1-8: warning: POSIX Yacc does not support %require [-Wyacc]
   25 | %require "3.0"
      | ^~~~~~~~
/foss/designs/cvc/src/cdlParser.yy:25.10-14: warning: POSIX Yacc does not support string literals [-Wyacc]
   25 | %require "3.0"
      |          ^~~~~
/foss/designs/cvc/src/cdlParser.yy:27.1-7: warning: POSIX Yacc does not support %define [-Wyacc]
   27 | %define parser_class_name {CCdlParser}
      | ^~~~~~~
/foss/designs/cvc/src/cdlParser.yy:27.1-38: warning: deprecated directive: '%define parser_class_name {CCdlParser}', use '%define api.parser.class {CCdlParser}' [-Wdeprecated]
   27 | %define parser_class_name {CCdlParser}
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      | %define api.parser.class {CCdlParser}
/foss/designs/cvc/src/cdlParser.yy:29.1-7: warning: POSIX Yacc does not support %define [-Wyacc]
   29 | %define parse.assert
      | ^~~~~~~
/foss/designs/cvc/src/cdlParser.yy:31.1-5: warning: POSIX Yacc does not support %code [-Wyacc]
   31 | %code requires {
      | ^~~~~
/foss/designs/cvc/src/cdlParser.yy:46.1-15: warning: POSIX Yacc does not support %initial-action [-Wyacc]
   46 | %initial-action
      | ^~~~~~~~~~~~~~~
/foss/designs/cvc/src/cdlParser.yy:52.1-7: warning: POSIX Yacc does not support %define [-Wyacc]
   52 | %define parse.trace
      | ^~~~~~~
/foss/designs/cvc/src/cdlParser.yy:53.1-7: warning: POSIX Yacc does not support %define [-Wyacc]
   53 | %define parse.error verbose
      | ^~~~~~~
/foss/designs/cvc/src/cdlParser.yy:55.1-5: warning: POSIX Yacc does not support %code [-Wyacc]
   55 | %code
      | ^~~~~
/foss/designs/cvc/src/cdlParser.yy:63.18-30: warning: POSIX Yacc does not support string literals [-Wyacc]
   63 | %token CDL_EOF 0 "END-OF-FILE"
      |                  ^~~~~~~~~~~~~
/foss/designs/cvc/src/cdlParser.yy:64.15-22: warning: POSIX Yacc does not support string literals [-Wyacc]
   64 | %token SUBCKT "SUBCKT"
      |               ^~~~~~~~
/foss/designs/cvc/src/cdlParser.yy:65.13-18: warning: POSIX Yacc does not support string literals [-Wyacc]
   65 | %token ENDS "ENDS"
      |             ^~~~~~
/foss/designs/cvc/src/cdlParser.yy:74.12-16: warning: POSIX Yacc does not support string literals [-Wyacc]
   74 | %token EOL "EOL"
      |            ^~~~~
/foss/designs/cvc/src/cdlParser.yy:110.9-14: warning: POSIX Yacc does not support %empty [-Wyacc]
  110 | 	%empty {
      |         ^~~~~~
/foss/designs/cvc/src/cdlParser.yy: warning: fix-its can be applied.  Rerun with option '--update'. [-Wother]
updating location.hh
updating position.hh
updating stack.hh
updating cdlParser.hh
make  all-am
make[3]: Entering directory '/foss/designs/cvc/src'
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT cvc.o -MD -MP -MF .deps/cvc.Tpo -c -o cvc.o <http://cvc.cc|cvc.cc>
mv -f .deps/cvc.Tpo .deps/cvc.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT cdlParser.o -MD -MP -MF .deps/cdlParser.Tpo -c -o cdlParser.o <http://cdlParser.cc|cdlParser.cc>
mv -f .deps/cdlParser.Tpo .deps/cdlParser.Po
/bin/sh ../ylwrap cdlScanner.ll lex.yy.c <http://cdlScanner.cc|cdlScanner.cc> -- flex
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT cdlScanner.o -MD -MP -MF .deps/cdlScanner.Tpo -c -o cdlScanner.o <http://cdlScanner.cc|cdlScanner.cc>
mv -f .deps/cdlScanner.Tpo .deps/cdlScanner.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CCdlParserDriver.o -MD -MP -MF .deps/CCdlParserDriver.Tpo -c -o CCdlParserDriver.o <http://CCdlParserDriver.cc|CCdlParserDriver.cc>
mv -f .deps/CCdlParserDriver.Tpo .deps/CCdlParserDriver.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CCircuit.o -MD -MP -MF .deps/CCircuit.Tpo -c -o CCircuit.o <http://CCircuit.cc|CCircuit.cc>
mv -f .deps/CCircuit.Tpo .deps/CCircuit.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CCondition.o -MD -MP -MF .deps/CCondition.Tpo -c -o CCondition.o <http://CCondition.cc|CCondition.cc>
mv -f .deps/CCondition.Tpo .deps/CCondition.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CConnection.o -MD -MP -MF .deps/CConnection.Tpo -c -o CConnection.o <http://CConnection.cc|CConnection.cc>
mv -f .deps/CConnection.Tpo .deps/CConnection.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CConnectionCount.o -MD -MP -MF .deps/CConnectionCount.Tpo -c -o CConnectionCount.o <http://CConnectionCount.cc|CConnectionCount.cc>
mv -f .deps/CConnectionCount.Tpo .deps/CConnectionCount.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CCvcDb.o -MD -MP -MF .deps/CCvcDb.Tpo -c -o CCvcDb.o <http://CCvcDb.cc|CCvcDb.cc>
mv -f .deps/CCvcDb.Tpo .deps/CCvcDb.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CCvcDb_error.o -MD -MP -MF .deps/CCvcDb_error.Tpo -c -o CCvcDb_error.o <http://CCvcDb_error.cc|CCvcDb_error.cc>
mv -f .deps/CCvcDb_error.Tpo .deps/CCvcDb_error.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CCvcDb_init.o -MD -MP -MF .deps/CCvcDb_init.Tpo -c -o CCvcDb_init.o <http://CCvcDb_init.cc|CCvcDb_init.cc>
mv -f .deps/CCvcDb_init.Tpo .deps/CCvcDb_init.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CCvcDb_interactive.o -MD -MP -MF .deps/CCvcDb_interactive.Tpo -c -o CCvcDb_interactive.o <http://CCvcDb_interactive.cc|CCvcDb_interactive.cc>
mv -f .deps/CCvcDb_interactive.Tpo .deps/CCvcDb_interactive.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CCvcDb_main.o -MD -MP -MF .deps/CCvcDb_main.Tpo -c -o CCvcDb_main.o <http://CCvcDb_main.cc|CCvcDb_main.cc>
mv -f .deps/CCvcDb_main.Tpo .deps/CCvcDb_main.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CCvcDb_print.o -MD -MP -MF .deps/CCvcDb_print.Tpo -c -o CCvcDb_print.o <http://CCvcDb_print.cc|CCvcDb_print.cc>
mv -f .deps/CCvcDb_print.Tpo .deps/CCvcDb_print.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CCvcDb_utility.o -MD -MP -MF .deps/CCvcDb_utility.Tpo -c -o CCvcDb_utility.o <http://CCvcDb_utility.cc|CCvcDb_utility.cc>
mv -f .deps/CCvcDb_utility.Tpo .deps/CCvcDb_utility.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CCvcParameters.o -MD -MP -MF .deps/CCvcParameters.Tpo -c -o CCvcParameters.o <http://CCvcParameters.cc|CCvcParameters.cc>
mv -f .deps/CCvcParameters.Tpo .deps/CCvcParameters.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CDevice.o -MD -MP -MF .deps/CDevice.Tpo -c -o CDevice.o <http://CDevice.cc|CDevice.cc>
mv -f .deps/CDevice.Tpo .deps/CDevice.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CEventQueue.o -MD -MP -MF .deps/CEventQueue.Tpo -c -o CEventQueue.o <http://CEventQueue.cc|CEventQueue.cc>
mv -f .deps/CEventQueue.Tpo .deps/CEventQueue.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CFixedText.o -MD -MP -MF .deps/CFixedText.Tpo -c -o CFixedText.o <http://CFixedText.cc|CFixedText.cc>
mv -f .deps/CFixedText.Tpo .deps/CFixedText.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CInstance.o -MD -MP -MF .deps/CInstance.Tpo -c -o CInstance.o <http://CInstance.cc|CInstance.cc>
mv -f .deps/CInstance.Tpo .deps/CInstance.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CModel.o -MD -MP -MF .deps/CModel.Tpo -c -o CModel.o <http://CModel.cc|CModel.cc>
mv -f .deps/CModel.Tpo .deps/CModel.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CNormalValue.o -MD -MP -MF .deps/CNormalValue.Tpo -c -o CNormalValue.o <http://CNormalValue.cc|CNormalValue.cc>
mv -f .deps/CNormalValue.Tpo .deps/CNormalValue.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CParameterMap.o -MD -MP -MF .deps/CParameterMap.Tpo -c -o CParameterMap.o <http://CParameterMap.cc|CParameterMap.cc>
mv -f .deps/CParameterMap.Tpo .deps/CParameterMap.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CPower.o -MD -MP -MF .deps/CPower.Tpo -c -o CPower.o <http://CPower.cc|CPower.cc>
mv -f .deps/CPower.Tpo .deps/CPower.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CSet.o -MD -MP -MF .deps/CSet.Tpo -c -o CSet.o <http://CSet.cc|CSet.cc>
mv -f .deps/CSet.Tpo .deps/CSet.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CvcMaps.o -MD -MP -MF .deps/CvcMaps.Tpo -c -o CvcMaps.o <http://CvcMaps.cc|CvcMaps.cc>
mv -f .deps/CvcMaps.Tpo .deps/CvcMaps.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT CVirtualNet.o -MD -MP -MF .deps/CVirtualNet.Tpo -c -o CVirtualNet.o <http://CVirtualNet.cc|CVirtualNet.cc>
mv -f .deps/CVirtualNet.Tpo .deps/CVirtualNet.Po
gcc -DHAVE_CONFIG_H -I. -I..     -O3  -MT exitfail.o -MD -MP -MF .deps/exitfail.Tpo -c -o exitfail.o exitfail.c
mv -f .deps/exitfail.Tpo .deps/exitfail.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT gzstream.o -MD -MP -MF .deps/gzstream.Tpo -c -o gzstream.o gzstream.C
mv -f .deps/gzstream.Tpo .deps/gzstream.Po
gcc -DHAVE_CONFIG_H -I. -I..     -O3  -MT obstack.o -MD -MP -MF .deps/obstack.Tpo -c -o obstack.o obstack.c
mv -f .deps/obstack.Tpo .deps/obstack.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT resource.o -MD -MP -MF .deps/resource.Tpo -c -o resource.o <http://resource.cc|resource.cc>
mv -f .deps/resource.Tpo .deps/resource.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT utility.o -MD -MP -MF .deps/utility.Tpo -c -o utility.o <http://utility.cc|utility.cc>
mv -f .deps/utility.Tpo .deps/utility.Po
g++ -DHAVE_CONFIG_H -I. -I..     -O3 -std=gnu++11 -MT mmap_file_pool.o -MD -MP -MF .deps/mmap_file_pool.Tpo -c -o mmap_file_pool.o mmap_file_pool.cpp
mv -f .deps/mmap_file_pool.Tpo .deps/mmap_file_pool.Po
g++  -O3 -std=gnu++11  -static-libstdc++ -static-libgcc -o cvc cvc.o cdlParser.o cdlScanner.o CCdlParserDriver.o CCircuit.o CCondition.o CConnection.o CConnectionCount.o CCvcDb.o CCvcDb_error.o CCvcDb_init.o CCvcDb_interactive.o CCvcDb_main.o CCvcDb_print.o CCvcDb_utility.o CCvcParameters.o CDevice.o CEventQueue.o CFixedText.o CInstance.o CModel.o CNormalValue.o CParameterMap.o CPower.o CSet.o CvcMaps.o CVirtualNet.o exitfail.o gzstream.o obstack.o resource.o utility.o mmap_file_pool.o  -lz -lreadline -lcurses -lhistory
/usr/bin/ld: CCvcDb_error.o: in function `CCvcDb::FindAllOverVoltageErrors()':
<http://CCvcDb_error.cc:(.text+0x50fc)|CCvcDb_error.cc:(.text+0x50fc)>: warning: the use of `tmpnam' is dangerous, better use `mkstemp'
make[3]: Leaving directory '/foss/designs/cvc/src'
make[2]: Leaving directory '/foss/designs/cvc/src'
Making all in scripts
make[2]: Entering directory '/foss/designs/cvc/scripts'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/foss/designs/cvc/scripts'
Making all in src_py
make[2]: Entering directory '/foss/designs/cvc/src_py'
pyinstaller -F check_cvc.spec --clean
119 INFO: PyInstaller: 5.5
119 INFO: Python: 3.9.10
121 INFO: Platform: Linux-5.10.124-linuxkit-aarch64-with-glibc2.34
option(s) not allowed:
  --onedir/--onefile
makespec options not valid when a .spec file is given
make[2]: *** [Makefile:451: check_cvc] Error 1
make[2]: Leaving directory '/foss/designs/cvc/src_py'
make[1]: *** [Makefile:401: all-recursive] Error 1
make[1]: Leaving directory '/foss/designs/cvc'
make: *** [Makefile:342: all] Error 2
m
What version of bison are you using? Recently changed to require
Copy code
bison 3.3
h
We have
bison (GNU Bison) 3.7.4
We try to build
d172016a791af3089b28070d80ad92bdfef9c585
which is quite old…
m
I see. CVC is out of date then. You’re building your own docker image?
Can you change the CVC commit in
$OPENLANE_ROOT/dependencies/tool_metadata.yml
?
h
Yes, we build our own Docker. We can easily change the commit hash to a newer one (which we did up to recently), but now OpenLane complains that the versions of CVC don’t match. OpenLane wants exactly to see
d172016a791af3089b28070d80ad92bdfef9c585
, and the OpenLane folks removed the switch where you can bypass the version checks easily (now it is a parameter to
flow.tcl
, which is inconvenient in our case).
Can you change the CVC commit in
$OPENLANE_ROOT/dependencies/tool_metadata.yml
?
I guess we can. Would that be your preferred solution? Problem is, on each build we have to 1. Manually switch the CVC version (we now pull it automatically from the OL dependecies) 2. Patch the
$OPENLANE_ROOT/dependencies/tool_metadata.yml
For now a simple patch to CVC to compile would be easier for us until OL migrates to a newer CVC, which would be the solution to go in my view. Can you push OL to upgrade?
m
I’ll look into it. Sorry for the inconvenience.
h
@Mitch Bailey I just implemented a fix, issues closed. Here is the patch that solves the issue:
Copy code
diff --git a/src_py/Makefile.am b/src_py/Makefile.am
index ef930fc..14b6260 100644
--- a/src_py/Makefile.am
+++ b/src_py/Makefile.am
@@ -9,11 +9,13 @@ checkcvc_sources = ResultFile.py \
 	summaryGUI.py \
 	utility.py
 
-all : check_cvc
+all : ;
+
+install : ;
 
 check_cvc : $(checkcvc_sources) check_cvc.spec
 	pyinstaller -F check_cvc.spec --clean
 	cp dist/check_cvc .
 
-install : check_cvc
+install_check_cvc : check_cvc
 	cp check_cvc ${exec_prefix}/bin
m
Ok, it wasn’t the bison version, but the pyinstaller that was causing problems.