Home Forums Nazca how to do design rule check by nazca

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #6177
    alien007
    Member

    Hi Everyone,

    I am a fresh hand in nazca design, so i am confused when i want do DRC in nazca. I did not find any information right now, could anyone help me? thanks!

    #6184
    Ronald
    Keymaster

    Dear Alien007,

    DRC can have many forms. The Nazca DRC is mostly aimed the netlist or logical connection level.
    (For polygon level on the gds, DRC in Klayout can help out in a next step.)

    Below an example of the Nazca DRC that defines xsections, layers, a building block, some interconnects and then connects them having different pin xsections and/or widths. This will trigger a DRC error. This will be displayed to stdout but a logfile can be added, as in this example, to store the DRC error messages.

    import nazca as nd
    nd.logfile(__file__)  # create logfile that will list DRC errors
    nd.pin2pin_drc_on()  # switch on pin2pin connection drc
    
    lay1 = nd.add_layer(name='lay1', layer=1)
    lay2 = nd.add_layer(name='lay2', layer=2)
    
    xs1 = nd.add_xsection(name='xs1')
    nd.add_layer2xsection(xsection='xs1', layer='lay1')
    ic1 = nd.interconnects.Interconnect(xs='xs1')
    
    xs2 = nd.add_xsection(name='xs2')
    nd.add_layer2xsection(xsection='xs2', layer='lay2')
    ic2 = nd.interconnects.Interconnect(xs='xs2')
    
    with nd.Cell(name='myBB') as bb:
        nd.Polygon(points=[[0, -5], [0, 5], [10, 5], [10, -5]], layer='lay1').put(0)
        nd.Pin(name='a0', xs='xs1').put(0, 0, 180)
        nd.Pin(name='b0', xs='xs2').put(10, 0, 0)
        nd.put_stub()
    
    ic2.strt().put(0)
    bb.put()
    ic1.bend().put()
    ic1.strt(width=0.5).put()
    
    nd.export_plt()

    DRC violations are added to the logfile and visualized in the layout. If you want to find out where in your script a DRC error was caused, you can ask Nazca to raise an exception on the specific error number by changing the third line in the above code to nd.pin2pin_drc_on(num=0) (for error DRC-0). Use standard Python traceback to find where in your script the eroor originated.

    Ronald

Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.