{"action":"created","comment":{"url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/pulls/comments/224314605","pull_request_review_id":163649228,"id":224314605,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyNDMxNDYwNQ==","diff_hunk":"@@ -0,0 +1,317 @@\n+import argparse\n+import prjxray.db\n+import os.path\n+import simplejson as json\n+import csv\n+\n+import lxml.etree as ET\n+\n+def create_synth_io_tiles(complexblocklist_xml, pb_name, is_input):\n+    pb_xml = ET.SubElement(complexblocklist_xml, 'pb_type', {\n+            'name': pb_name,\n+    })\n+\n+    ET.SubElement(pb_xml, 'fc', {\n+            'in_type':'abs',\n+            'in_val':'2',\n+            'out_type': 'abs',\n+            'out_val':'2',\n+    })\n+\n+    interconnect_xml = ET.SubElement(pb_xml, 'interconnect')\n+\n+    if is_input:\n+        blif_model = '.input'\n+        pad_name = 'inpad'\n+        port_type = 'output'\n+    else:\n+        blif_model = '.output'\n+        pad_name = 'outpad'\n+        port_type = 'input'\n+\n+    ET.SubElement(pb_xml, port_type, {\n+        'name': pad_name,\n+        'num_pins': '1',\n+    })\n+\n+    port_pin = '{}.{}'.format(pb_name, pad_name)\n+    pad_pin = '{}.{}'.format(pad_name, pad_name)\n+\n+    if not is_input:\n+        input_name = port_pin\n+        output_name = pad_pin\n+    else:\n+        input_name = pad_pin\n+        output_name = port_pin\n+\n+    pin_pb_type = ET.SubElement(pb_xml, 'pb_type', {\n+            'name': pad_name,\n+            'blif_model': blif_model,\n+            'num_pb': '1',\n+    })\n+    ET.SubElement(pin_pb_type, port_type, {\n+            'name': pad_name,\n+            'num_pins': '1',\n+    })\n+\n+    direct_xml = ET.SubElement(interconnect_xml, 'direct', {\n+            'name': '{}_to_{}'.format(input_name, output_name),\n+            'input': input_name,\n+            'output': output_name,\n+    })\n+\n+    ET.SubElement(direct_xml, 'delay_constant', {\n+            'max': '1e-11',\n+            'in_port': input_name,\n+            'out_port': output_name,\n+    })\n+\n+def add_synthetic_tile(complexblocklist_xml):\n+    create_synth_io_tiles(complexblocklist_xml, 'BLK_SY-INPAD', is_input=True)\n+    create_synth_io_tiles(complexblocklist_xml, 'BLK_SY-OUTPAD', is_input=False)\n+\n+    return {\n+            'output': 'BLK_SY-INPAD',\n+            'input': 'BLK_SY-OUTPAD',\n+    }\n+\n+def main():\n+    mydir = os.path.dirname(__file__)\n+    prjxray_db = os.path.abspath(os.path.join(mydir, \"..\", \"..\", \"third_party\", \"prjxray-db\"))\n+\n+    db_types = prjxray.db.get_available_databases(prjxray_db)\n+\n+    parser = argparse.ArgumentParser(description=\"Generate arch.xml\")\n+    parser.add_argument(\n+        '--part', choices=[os.path.basename(db_type) for db_type in db_types],\n+        help=\"\"\"Project X-Ray database to use.\"\"\")\n+    parser.add_argument(\n+            '--output-arch', nargs='?', type=argparse.FileType('w'),\n+            help=\"\"\"File to output arch.\"\"\")\n+    parser.add_argument('--tile-types', help=\"Semi-colon seperated tile types.\")\n+    parser.add_argument(\n+            '--pin_assignments', required=True, type=argparse.FileType('r'))\n+    parser.add_argument(\n+            '--use_roi', required=False)\n+    parser.add_argument(\n+            '--synth_tiles', required=False)\n+\n+    args = parser.parse_args()\n+\n+    tile_types = args.tile_types.split(',')\n+\n+    tile_model = \"../../tiles/{0}/{0}.model.xml\"\n+    tile_pbtype = \"../../tiles/{0}/{0}.pb_type.xml\"\n+\n+    xi_url = \"http://www.w3.org/2001/XInclude\"\n+    ET.register_namespace('xi', xi_url)\n+    xi_include = \"{%s}include\" % xi_url\n+\n+    arch_xml = ET.Element(\n+            'architecture', {},\n+        nsmap = {'xi': xi_url},\n+    )\n+\n+    model_xml = ET.SubElement(arch_xml, 'models')\n+    for tile_type in tile_types:\n+        ET.SubElement(model_xml, xi_include, {\n+            'href': tile_model.format(tile_type.lower()),\n+            'xpointer':\"xpointer(models/child::node())\",\n+        })\n+\n+    complexblocklist_xml = ET.SubElement(arch_xml, 'complexblocklist')\n+    for tile_type in tile_types:\n+        ET.SubElement(complexblocklist_xml, xi_include, {\n+            'href': tile_pbtype.format(tile_type.lower()),\n+        })\n+\n+    layout_xml = ET.SubElement(arch_xml, 'layout')\n+    db = prjxray.db.Database(os.path.join(prjxray_db, args.part))\n+    g = db.grid()\n+    x_min, x_max, y_min, y_max = g.dims()\n+\n+    name = 'xc7a50t-test'\n+    fixed_layout_xml = ET.SubElement(layout_xml, 'fixed_layout', {\n+            'name': name,\n+            'height': str(y_max+1),\n+            'width': str(x_max+1),\n+    })\n+\n+    only_emit_roi = False\n+    roi_inputs = []\n+    roi_outputs = []\n+\n+    synth_tiles = {}\n+    if args.use_roi:\n+        only_emit_roi = True\n+        with open(args.use_roi) as f:\n+            for d in csv.DictReader(f, delimiter=' '):\n+                if d['name'].startswith('dout['):\n+                    roi_outputs.append(d)\n+                    port_type = 'input'\n+                    is_clock = False\n+                elif d['name'].startswith('din['):\n+                    roi_inputs.append(d)\n+                    is_clock = False\n+                    port_type = 'output'\n+                elif d['name'].startswith('clk'):\n+                    roi_inputs.append(d)\n+                    port_type = 'output'\n+                    is_clock = True\n+                else:\n+                    assert False, d\n+\n+                tile, wire = d['wire'].split('/')\n+\n+                # Make sure connecting wire is not in ROI!\n+                gridinfo = g.gridinfo_at_tilename(tile)\n+                if gridinfo.in_roi:\n+                    # Or if in the ROI, make sure it has no sites.\n+                    assert len(db.get_tile_type(gridinfo.tile_type).get_sites()) == 0, tile\n+\n+\n+                if tile not in synth_tiles:\n+                    synth_tiles[tile] = {\n+                            'pins': [],\n+                            'loc': g.loc_of_tilename(tile),\n+                    }\n+\n+                synth_tiles[tile]['pins'].append({\n+                        'roi_name': d['name'].replace('[', '_').replace(']','_'),\n+                        'wire': wire,\n+                        'pad': d['pin'],\n+                        'port_type': port_type,\n+                        'is_clock': is_clock,\n+                })\n+\n+        with open(args.synth_tiles, 'w') as f:\n+            json.dump(synth_tiles, f)\n+\n+        synth_tile_map = add_synthetic_tile(complexblocklist_xml)\n+\n+    for loc in g.tile_locations():\n+        gridinfo = g.gridinfo_at_loc(loc)\n+        tile = g.tilename_at_loc(loc)\n+\n+        if tile in synth_tiles:\n+            synth_tile = synth_tiles[tile]\n+\n+            assert len(synth_tile['pins']) == 1\n+\n+            vpr_tile_type = synth_tile_map[synth_tile['pins'][0]['port_type']]\n+        elif only_emit_roi and not gridinfo.in_roi:\n+            # This tile is outside the ROI, skip it.\n+            continue\n+        elif gridinfo.tile_type in tile_types:\n+            # We want to import this tile type.\n+            vpr_tile_type = 'BLK_TI-{}'.format(gridinfo.tile_type)\n+        else:\n+            # We don't want this tile\n+            continue\n+\n+        single_xml = ET.SubElement(fixed_layout_xml, 'single', {\n+                'priority': '1',\n+                'type': vpr_tile_type,\n+                'x': str(loc[0]),\n+                'y': str(loc[1]),\n+        })","path":"artix7/utils/prjxray-arch-import.py","position":217,"original_position":217,"commit_id":"b13df8177669e5cdb4d75de45d517687e70587d0","original_commit_id":"b13df8177669e5cdb4d75de45d517687e70587d0","user":{"login":"litghost","id":537074,"node_id":"MDQ6VXNlcjUzNzA3NA==","avatar_url":"https://avatars3.githubusercontent.com/u/537074?v=4","gravatar_id":"","url":"https://api.github.com/users/litghost","html_url":"https://github.com/litghost","followers_url":"https://api.github.com/users/litghost/followers","following_url":"https://api.github.com/users/litghost/following{/other_user}","gists_url":"https://api.github.com/users/litghost/gists{/gist_id}","starred_url":"https://api.github.com/users/litghost/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/litghost/subscriptions","organizations_url":"https://api.github.com/users/litghost/orgs","repos_url":"https://api.github.com/users/litghost/repos","events_url":"https://api.github.com/users/litghost/events{/privacy}","received_events_url":"https://api.github.com/users/litghost/received_events","type":"User","site_admin":false},"body":"Agreed","created_at":"2018-10-11T04:57:00Z","updated_at":"2018-10-11T04:57:01Z","html_url":"https://github.com/SymbiFlow/symbiflow-arch-defs/pull/256#discussion_r224314605","pull_request_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/pulls/256","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/pulls/comments/224314605"},"html":{"href":"https://github.com/SymbiFlow/symbiflow-arch-defs/pull/256#discussion_r224314605"},"pull_request":{"href":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/pulls/256"}},"in_reply_to_id":224303016},"pull_request":{"url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/pulls/256","id":220860081,"node_id":"MDExOlB1bGxSZXF1ZXN0MjIwODYwMDgx","html_url":"https://github.com/SymbiFlow/symbiflow-arch-defs/pull/256","diff_url":"https://github.com/SymbiFlow/symbiflow-arch-defs/pull/256.diff","patch_url":"https://github.com/SymbiFlow/symbiflow-arch-defs/pull/256.patch","issue_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/issues/256","number":256,"state":"open","locked":false,"title":"WIP: Initial artix7 (using ROI) support for VPR","user":{"login":"litghost","id":537074,"node_id":"MDQ6VXNlcjUzNzA3NA==","avatar_url":"https://avatars3.githubusercontent.com/u/537074?v=4","gravatar_id":"","url":"https://api.github.com/users/litghost","html_url":"https://github.com/litghost","followers_url":"https://api.github.com/users/litghost/followers","following_url":"https://api.github.com/users/litghost/following{/other_user}","gists_url":"https://api.github.com/users/litghost/gists{/gist_id}","starred_url":"https://api.github.com/users/litghost/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/litghost/subscriptions","organizations_url":"https://api.github.com/users/litghost/orgs","repos_url":"https://api.github.com/users/litghost/repos","events_url":"https://api.github.com/users/litghost/events{/privacy}","received_events_url":"https://api.github.com/users/litghost/received_events","type":"User","site_admin":false},"body":"This is missing a couple things, and requires a manual step (design.txt) I haven't been able to figure out how to resolve yet.\r\n\r\nWork to be done:\r\n\r\n- Channel padding to solve https://github.com/verilog-to-routing/vtr-verilog-to-routing/issues/339 needs to be added, but it's adding a lot of nodes (~2M last checked).  Without the padding VPR crashes.  As an intermediate step I'll likely add a check to VPR check_rr_node to fail in a deterministic way, rather than the current VPR behavior or asserting during a vector deref.\r\n- Add io placement.  This can be supported even for ROI.\r\n- Manual step: design.txt from the ROI generation needs to be placed in artix7/devices/xc7a50t-roi-virt\r\n- Supporting multi layouts and ROIs will not possible in the current format.  Need to refactor how prjxray generates ROI's, and think about how to support multiple ROI's.  The code already understands how to generate files for an ROI, but that information is currently in the database, rather than a standalone file. ","created_at":"2018-10-06T02:39:57Z","updated_at":"2018-10-11T04:57:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"613d0daa5a7525dd4f16394b3a09b6cbb6bde6ac","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":848374561,"node_id":"MDU6TGFiZWw4NDgzNzQ1NjE=","url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/labels/arch-artix7","name":"arch-artix7","color":"bfdadc","default":false},{"id":853275585,"node_id":"MDU6TGFiZWw4NTMyNzU1ODU=","url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/labels/lang-python","name":"lang-python","color":"fbca04","default":false},{"id":848374562,"node_id":"MDU6TGFiZWw4NDgzNzQ1NjI=","url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/labels/lang-verilog","name":"lang-verilog","color":"fbca04","default":false},{"id":848374563,"node_id":"MDU6TGFiZWw4NDgzNzQ1NjM=","url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/labels/lang-xml","name":"lang-xml","color":"fbca04","default":false},{"id":848374565,"node_id":"MDU6TGFiZWw4NDgzNzQ1NjU=","url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/labels/type-sim","name":"type-sim","color":"0e8a16","default":false},{"id":861273269,"node_id":"MDU6TGFiZWw4NjEyNzMyNjk=","url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/labels/type-utils","name":"type-utils","color":"0e8a16","default":false},{"id":975219951,"node_id":"MDU6TGFiZWw5NzUyMTk5NTE=","url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/labels/type-vpr","name":"type-vpr","color":"0e8a16","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/pulls/256/commits","review_comments_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/pulls/256/comments","review_comment_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/issues/256/comments","statuses_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/statuses/b13df8177669e5cdb4d75de45d517687e70587d0","head":{"label":"litghost:artix7_startup","ref":"artix7_startup","sha":"b13df8177669e5cdb4d75de45d517687e70587d0","user":{"login":"litghost","id":537074,"node_id":"MDQ6VXNlcjUzNzA3NA==","avatar_url":"https://avatars3.githubusercontent.com/u/537074?v=4","gravatar_id":"","url":"https://api.github.com/users/litghost","html_url":"https://github.com/litghost","followers_url":"https://api.github.com/users/litghost/followers","following_url":"https://api.github.com/users/litghost/following{/other_user}","gists_url":"https://api.github.com/users/litghost/gists{/gist_id}","starred_url":"https://api.github.com/users/litghost/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/litghost/subscriptions","organizations_url":"https://api.github.com/users/litghost/orgs","repos_url":"https://api.github.com/users/litghost/repos","events_url":"https://api.github.com/users/litghost/events{/privacy}","received_events_url":"https://api.github.com/users/litghost/received_events","type":"User","site_admin":false},"repo":{"id":142636957,"node_id":"MDEwOlJlcG9zaXRvcnkxNDI2MzY5NTc=","name":"symbiflow-arch-defs","full_name":"litghost/symbiflow-arch-defs","private":false,"owner":{"login":"litghost","id":537074,"node_id":"MDQ6VXNlcjUzNzA3NA==","avatar_url":"https://avatars3.githubusercontent.com/u/537074?v=4","gravatar_id":"","url":"https://api.github.com/users/litghost","html_url":"https://github.com/litghost","followers_url":"https://api.github.com/users/litghost/followers","following_url":"https://api.github.com/users/litghost/following{/other_user}","gists_url":"https://api.github.com/users/litghost/gists{/gist_id}","starred_url":"https://api.github.com/users/litghost/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/litghost/subscriptions","organizations_url":"https://api.github.com/users/litghost/orgs","repos_url":"https://api.github.com/users/litghost/repos","events_url":"https://api.github.com/users/litghost/events{/privacy}","received_events_url":"https://api.github.com/users/litghost/received_events","type":"User","site_admin":false},"html_url":"https://github.com/litghost/symbiflow-arch-defs","description":"FOSS architecture definitions of FPGA hardware useful for doing PnR device generation.","fork":true,"url":"https://api.github.com/repos/litghost/symbiflow-arch-defs","forks_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/forks","keys_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/teams","hooks_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/hooks","issue_events_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/issues/events{/number}","events_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/events","assignees_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/assignees{/user}","branches_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/branches{/branch}","tags_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/tags","blobs_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/git/refs{/sha}","trees_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/statuses/{sha}","languages_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/languages","stargazers_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/stargazers","contributors_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/contributors","subscribers_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/subscribers","subscription_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/subscription","commits_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/commits{/sha}","git_commits_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/git/commits{/sha}","comments_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/comments{/number}","issue_comment_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/issues/comments{/number}","contents_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/contents/{+path}","compare_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/merges","archive_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/downloads","issues_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/issues{/number}","pulls_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/pulls{/number}","milestones_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/milestones{/number}","notifications_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/labels{/name}","releases_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/releases{/id}","deployments_url":"https://api.github.com/repos/litghost/symbiflow-arch-defs/deployments","created_at":"2018-07-28T01:26:36Z","updated_at":"2018-10-03T02:03:16Z","pushed_at":"2018-10-11T02:41:45Z","git_url":"git://github.com/litghost/symbiflow-arch-defs.git","ssh_url":"git@github.com:litghost/symbiflow-arch-defs.git","clone_url":"https://github.com/litghost/symbiflow-arch-defs.git","svn_url":"https://github.com/litghost/symbiflow-arch-defs","homepage":"https://symbiflow.github.io/","size":1937,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"isc","name":"ISC License","spdx_id":"ISC","url":"https://api.github.com/licenses/isc","node_id":"MDc6TGljZW5zZTEw"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"SymbiFlow:master","ref":"master","sha":"b4a597c3427d3d920853e57ba18aeac68746eb78","user":{"login":"SymbiFlow","id":34549754,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM0NTQ5NzU0","avatar_url":"https://avatars0.githubusercontent.com/u/34549754?v=4","gravatar_id":"","url":"https://api.github.com/users/SymbiFlow","html_url":"https://github.com/SymbiFlow","followers_url":"https://api.github.com/users/SymbiFlow/followers","following_url":"https://api.github.com/users/SymbiFlow/following{/other_user}","gists_url":"https://api.github.com/users/SymbiFlow/gists{/gist_id}","starred_url":"https://api.github.com/users/SymbiFlow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SymbiFlow/subscriptions","organizations_url":"https://api.github.com/users/SymbiFlow/orgs","repos_url":"https://api.github.com/users/SymbiFlow/repos","events_url":"https://api.github.com/users/SymbiFlow/events{/privacy}","received_events_url":"https://api.github.com/users/SymbiFlow/received_events","type":"Organization","site_admin":false},"repo":{"id":111006976,"node_id":"MDEwOlJlcG9zaXRvcnkxMTEwMDY5NzY=","name":"symbiflow-arch-defs","full_name":"SymbiFlow/symbiflow-arch-defs","private":false,"owner":{"login":"SymbiFlow","id":34549754,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM0NTQ5NzU0","avatar_url":"https://avatars0.githubusercontent.com/u/34549754?v=4","gravatar_id":"","url":"https://api.github.com/users/SymbiFlow","html_url":"https://github.com/SymbiFlow","followers_url":"https://api.github.com/users/SymbiFlow/followers","following_url":"https://api.github.com/users/SymbiFlow/following{/other_user}","gists_url":"https://api.github.com/users/SymbiFlow/gists{/gist_id}","starred_url":"https://api.github.com/users/SymbiFlow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SymbiFlow/subscriptions","organizations_url":"https://api.github.com/users/SymbiFlow/orgs","repos_url":"https://api.github.com/users/SymbiFlow/repos","events_url":"https://api.github.com/users/SymbiFlow/events{/privacy}","received_events_url":"https://api.github.com/users/SymbiFlow/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/SymbiFlow/symbiflow-arch-defs","description":"FOSS architecture definitions of FPGA hardware useful for doing PnR device generation.","fork":false,"url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs","forks_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/forks","keys_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/teams","hooks_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/hooks","issue_events_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/issues/events{/number}","events_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/events","assignees_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/assignees{/user}","branches_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/branches{/branch}","tags_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/tags","blobs_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/git/refs{/sha}","trees_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/statuses/{sha}","languages_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/languages","stargazers_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/stargazers","contributors_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/contributors","subscribers_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/subscribers","subscription_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/subscription","commits_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/commits{/sha}","git_commits_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/git/commits{/sha}","comments_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/comments{/number}","issue_comment_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/issues/comments{/number}","contents_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/contents/{+path}","compare_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/merges","archive_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/downloads","issues_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/issues{/number}","pulls_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/pulls{/number}","milestones_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/milestones{/number}","notifications_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/labels{/name}","releases_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/releases{/id}","deployments_url":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/deployments","created_at":"2017-11-16T18:23:49Z","updated_at":"2018-10-10T01:26:28Z","pushed_at":"2018-10-11T02:41:46Z","git_url":"git://github.com/SymbiFlow/symbiflow-arch-defs.git","ssh_url":"git@github.com:SymbiFlow/symbiflow-arch-defs.git","clone_url":"https://github.com/SymbiFlow/symbiflow-arch-defs.git","svn_url":"https://github.com/SymbiFlow/symbiflow-arch-defs","homepage":"https://symbiflow.github.io/","size":1846,"stargazers_count":25,"watchers_count":25,"language":"Python","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":18,"mirror_url":null,"archived":false,"open_issues_count":78,"license":{"key":"isc","name":"ISC License","spdx_id":"ISC","url":"https://api.github.com/licenses/isc","node_id":"MDc6TGljZW5zZTEw"},"forks":18,"open_issues":78,"watchers":25,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/pulls/256"},"html":{"href":"https://github.com/SymbiFlow/symbiflow-arch-defs/pull/256"},"issue":{"href":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/issues/256"},"comments":{"href":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/issues/256/comments"},"review_comments":{"href":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/pulls/256/comments"},"review_comment":{"href":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/pulls/256/commits"},"statuses":{"href":"https://api.github.com/repos/SymbiFlow/symbiflow-arch-defs/statuses/b13df8177669e5cdb4d75de45d517687e70587d0"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"litghost"}}