Object cannot be created here in ReportDatabase::load - command-line alternatives?

Hello,

I have a script that takes a DRC report file and does some analysis on the related layout. I started from this forum entry to load the ReportDatabase:

alv = RBA::LayoutView::current
rdb_index = alv.create_rdb("database_name")
rdb = alv.rdb(rdb_index)
rdb.load('my_drc.db')

This works great when executed interactively, but now I'd like to change the script to be executed on the command line. The problem is that RBA::LayoutView::current doesn't exist there, so I tried to create the rdb object explicitly:

rdb = RBA::ReportDatabase.new
rdb.load('my_drc.db')

But the load call failed with the following exception:

Object cannot be created here in LayoutView::create_rdb

Is there a non-interactive version of the RBA::LayoutView#create_rdb method somewhere, or a different workaround?

Comments

  • edited May 2017

    Well, at least I found a workaround, by starting KLayout in Non-GUI mode (hidden views) instead of Non-GUI mode (database only, implies -nc):

    klayout  -z  -r my_script.rb  my_layout.gds
    

    Otherwise I'd use the -zz parameter instead of -z to run scripts through the command line.

  • edited May 2017

    Hi Chris,

    I need to look into this. Actually the database object is supposed to be taken from a view. It's was not designed initially to live standalone. That's why the constructor fails (actually it's a late initialization that fails).

    I don't recall the reason why a database object needs the views (-z instead of -zz). Maybe it can be enhanced such that you can use it standalone too.

    Thanks for reporting this issue,

    Matthias

Sign In or Register to comment.