RBA::CellInstArray.new issue

edited May 2015 in Ruby Scripting

Hi Matthias,

I wrote a ruby script to merge two database with a 0_TOP cell, and it works fine to output a gds file, however it failed to output a oasis file.

newtop = layout.add_cell("0_TOP")

(0..(layout.cells-1)).each do |ci|
  if layout.cell_name(ci) == "test1_abc_TOP"
    layout.cell(newtop).insert(RBA::CellInstArray.new(ci, RBA::Trans.new(RBA::Point.new(0, 0)), RBA::Point::new(2000, 0), RBA::Point::new(0, 2000), 0, 0) )
  end
end

(0..(layout.cells-1)).each do |ci|
  if layout.cell_name(ci) == "test2_abc_TOP"
    layout.cell(newtop).insert(RBA::CellInstArray.new(ci, RBA::Trans.new(RBA::Point.new(0, 20000)), RBA::Point::new(2000, 0), RBA::Point::new(0, 2000), 0, 0) )
  end
end

layout.write("output.oas")

If I modify the CellInstArray section from

layout.cell(newtop).insert(RBA::CellInstArray.new(ci, RBA::Trans.new(RBA::Point.new(0, 0)), RBA::Point::new(2000, 0), RBA::Point::new(0, 2000), 0, 0) )

to

layout.cell(newtop).insert(RBA::CellInstArray.new(ci, RBA::Trans.new(RBA::Point.new(0, 0)) ) )

It works fine to output oasis file, is it a bug or I made any mistake about that ?

Thanks for your kindly help~

Best Regards,

chhung

Comments

  • edited November -1

    Hi chhung,

    Arrays with dimensions 0x0 are illegal for OASIS (see the last two arguments to CellInstArray). For GDS2 they can be produced, although their interpretation is implementation-dependent.

    I'd not use 0x0 arrays. If you want to create a single-instance array, use the second form. Only use the first form if you really want to create an array and make sure the dimensions are 1 at least.

    Matthias

Sign In or Register to comment.