{"id":23628,"library":"doroutes","title":"DoRoutes","description":"DoRoutes is an advanced routing library for GDSFactory, providing optimized wire routing and placement algorithms for photonic integrated circuit design. Current version is 0.5.0, with a monthly release cadence.","status":"active","version":"0.5.0","language":"python","source_language":"en","source_url":"https://github.com/gdsfactory/doroutes","tags":["photonics","routing","gdsfactory","pcb-routing","pic"],"install":[{"cmd":"pip install doroutes","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Required for all routing operations; DoRoutes is built on top of GDSFactory.","package":"gdsfactory","optional":false},{"reason":"Used for array operations and coordinate math.","package":"numpy","optional":false}],"imports":[{"wrong":"from doroutes import route","symbol":"route","correct":"from doroutes import route"}],"quickstart":{"code":"import gdsfactory as gf\nfrom doroutes import route\n\n# Create a simple circuit with two components\nc = gf.Component()\n\n# Add a waveguide and a taper (simplified for example)\nwg = c.add_ref(gf.c.waveguide(length=5))\ntaper = c.add_ref(gf.c.taper(length=3))\ntaper.move((10, 0))\n\n# Route between the ports\nports = [wg.ports['opt1'], taper.ports['opt2']]\nroute(c, ports, layer=(1, 0))\n\nc.show()","lang":"python","description":"Basic usage: create a component, add references, then route between ports."},"warnings":[{"fix":"Upgrade Python to 3.12 or later.","message":"DoRoutes 0.5.0 requires Python >=3.12.0. Older Python versions are not supported.","severity":"breaking","affected_versions":"0.5.0"},{"fix":"Use `from doroutes import route` instead of `from doroutes.routing import route`.","message":"The `doroutes.routing` module is deprecated as of 0.5.0. Import functions from the top-level package instead.","severity":"deprecated","affected_versions":">=0.5.0"},{"fix":"Ensure your components have ports with `width` defined (either via GDSFactory's port system or manually).","message":"DoRoutes expects ports to have a 'width' attribute. If missing, route may fail or produce unexpected results.","severity":"gotcha","affected_versions":"all"},{"fix":"Use the `avoid` parameter or manually check for overlaps.","message":"Routing multiple paths in sequence can cause collisions if not carefully planned. DoRoutes does not auto-avoid existing routes by default.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'0.5.0':25 'advanc':5 'algorithm':16 'cadenc':30 'circuit':20 'current':22 'design':21 'dorout':1,2 'gdsfactori':9,33 'integr':19 'librari':7 'month':28 'optim':11 'pcb':35 'pcb-rout':34 'photon':18,31 'pic':37 'placement':15 'provid':10 'releas':29 'rout':6,13,32,36 'version':23 'wire':12","created_at":"2026-05-01T08:08:46.897033+00:00","updated_at":"2026-05-01T08:08:46.897033+00:00","problems":{"verify_error":"Traceback (most recent call last):\n  File \"<string>\", line 1, in <module>\n  File \"/tmp/tmpl4efkxq5/venv/lib/python3.12/site-packages/doroutes/__init__.py\", line 5, in <module>\n    from . import bundles, fanin, multilayer, pcells, placement, routing, types, util\n  File \"/tmp/tmpl4efkxq5/venv/lib/pyth"},"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"1.1.0","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":null,"docs":null,"changelog":null,"pypi":"https://pypi.org/project/doroutes/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["data","serialization"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"import_fail","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-07-10","install_tag":null}}