Beispiel #1
0
def test_canvas_three():

    def _helper(c):
        c.addWire(c.m1, 'a', None, 1, (1, -1), (6, 1))
        c.addWire(c.m3, 'a', None, 2, (1, -1), (6, 1))
        c.addWire(c.m5, 'a', None, 3, (1, -1), (6, 1))
        c.addWire(c.m2, 'a', None, 1, (1, -1), (3, 1))
        c.addWire(c.m4, 'a', None, 2, (1, -1), (3, 1))
        c.addWire(c.m6, 'a', None, 3, (1, -1), (3, 1))
        c.addVia(c.v1, 'a', None, 1, 1)
        c.addVia(c.v2, 'a', None, 2, 1)
        c.addVia(c.v3, 'a', None, 2, 2)
        c.addVia(c.v4, 'a', None, 3, 2)
        c.addVia(c.v5, 'a', None, 3, 3)
        c.computeBbox()

    c1 = CanvasPDK()
    _helper(c1)
    c1.gen_data(run_drc=True)
    assert c1.drc.num_errors == 0

    c2 = DefaultCanvas(Pdk().load(layers_json))
    _helper(c2)
    c2.gen_data(run_drc=True)
    assert c2.drc.num_errors == 0

    export_to_viewer("test_canvas_3_c1", c1)
    export_to_viewer("test_canvas_3_c2", c2)

    d1 = {'bbox': c1.bbox.toList(), 'globalRoutes': [], 'globalRouteGrid': [], 'terminals': c1.removeDuplicates(allow_opens=True)}
    d2 = {'bbox': c2.bbox.toList(), 'globalRoutes': [], 'globalRouteGrid': [], 'terminals': c2.removeDuplicates(allow_opens=True)}

    assert d1 == d2
Beispiel #2
0
def test_m3():
    p = Pdk().load(pdkfile)
    c = DefaultCanvas(p)

    m = c.generators['m3']
    mt = MetalTemplate(m)

    print("m3 clg grid", m.clg.grid, "m3 clg legal indices",
          m.clg.legalIndices)
    print("m3 spg grid", m.spg.grid, "m3 spg legal indices",
          m.spg.legalIndices)

    assert 1 in m.spg.legalIndices
    assert 3 in m.spg.legalIndices
    ### The following assertions are modified based on the updtaed PDK
    assert m.spg.grid[1][0] == 36
    assert m.spg.grid[3][0] == 48

    assert mt.widths == [40, 40, 40]
    assert mt.colors == ["c1", "c2", "c1"]
    assert mt.spaces == [40, 40]
    assert mt.offset == 0

    assert mt.stop_offset == 36
    assert mt.stops == [12, 72]
Beispiel #3
0
def setup():
    p = Pdk().load(pdkfile)
    c = DefaultCanvas(p)
    return c
Beispiel #4
0
def test_one():
    p = Pdk().load(pdkfile)
    c = DefaultCanvas(p)
    assert c.generate_routing_collateral(mydir / "routing_collateral_cand")