Skip to content

Instantly share code, notes, and snippets.

@liangfu
Created November 8, 2019 07:20
Show Gist options
  • Save liangfu/57a686f3d735b239e2ce3a447833bdef to your computer and use it in GitHub Desktop.
Save liangfu/57a686f3d735b239e2ce3a447833bdef to your computer and use it in GitHub Desktop.
VTA Datapath in Yosys JSON Format; (Generate Block Diagram from https://nturley.github.io/netlistsvg )
{
creator: "Yosys 0.5+220 (git sha1 94fbaff, emcc -Os)",
modules: {
VTAShell: {
ports: {
io_host_r: {
direction: "output",
bits: [
0
]
},
io_host_w: {
direction: "input",
bits: [
1
]
},
io_mem_r: {
direction: "input",
bits: [
2
]
},
io_mem_w: {
direction: "output",
bits: [
3
]
},
},
cells: {
vcr: {
type: "VCR",
port_directions: {
io_host_r: "output",
io_host_w: "input",
io_vcr_launch: "output",
io_vcr_finish: "input",
io_vcr_ptrs_0: "output",
io_vcr_ptrs_1: "output",
io_vcr_ptrs_2: "output",
io_vcr_ptrs_3: "output",
io_vcr_ptrs_4: "output",
io_vcr_ptrs_5: "output",
io_vcr_vals: "output",
},
connections: {
io_host_r: [ 0 ],
io_host_w: [ 1 ],
io_vcr_launch: [ 10 ],
io_vcr_finish: [ 11 ],
io_vcr_ptrs_0: [ 14 ],
io_vcr_ptrs_1: [ 15 ],
io_vcr_ptrs_2: [ 16 ],
io_vcr_ptrs_3: [ 17 ],
io_vcr_ptrs_4: [ 18 ],
io_vcr_ptrs_5: [ 12 ],
io_vcr_vals: [ 13 ],
}
},
fetch: {
type: "Fetch",
port_directions: {
io_vme_rd_0: "input",
io_launch: "input",
io_ins_baddr: "input",
io_ins_count: "input",
io_inst_ld: "output",
io_inst_co: "output",
io_inst_st: "output",
},
connections: {
io_vme_rd_0: [ 4 ],
io_launch: [ 10 ],
io_ins_baddr: [ 14 ],
io_ins_count: [ 13 ],
io_inst_ld: [ 20 ],
io_inst_co: [ 21 ],
io_inst_st: [ 28 ],
},
},
load: {
type: "Load",
port_directions: {
io_inst: "input",
io_vme_rd_0: "input",
io_vme_rd_1: "input",
io_i_post: "input",
io_o_post: "output",
io_inp_baddr: "input",
io_wgt_baddr: "input",
io_inp: "output",
io_wgt: "output",
},
connections: {
io_vme_rd_0: [ 6 ],
io_vme_rd_1: [ 7 ],
io_i_post: [ 19 ],
io_o_post: [ 25 ],
io_inst: [ 20 ],
io_inp_baddr: [ 16 ],
io_wgt_baddr: [ 17 ],
io_inp: [ 22 ],
io_wgt: [ 23 ],
},
},
compute: {
type: "Compute",
port_directions: {
io_inst: "input",
io_vme_rd_0: "input",
io_vme_rd_1: "input",
io_i_post_0: "input",
io_i_post_1: "input",
io_o_post_0: "output",
io_o_post_1: "output",
io_uop_baddr: "input",
io_acc_baddr: "input",
io_inp: "input",
io_wgt: "input",
io_out: "output",
io_finish: "output",
},
connections: {
io_vme_rd_0: [ 5 ],
io_vme_rd_1: [ 8 ],
io_i_post_0: [ 25 ],
io_i_post_1: [ 26 ],
io_o_post_0: [ 19 ],
io_o_post_1: [ 27 ],
io_inst: [ 21 ],
io_uop_baddr: [ 15 ],
io_acc_baddr: [ 18 ],
io_inp: [ 22 ],
io_wgt: [ 23 ],
io_out: [ 24 ],
io_finish: [ 11 ],
},
},
store: {
type: "Store",
port_directions: {
io_inst: "input",
io_vme_wr_0: "output",
io_i_post: "input",
io_o_post: "output",
io_out_baddr: "input",
io_out: "input",
},
connections: {
io_inst: [ 28 ],
io_vme_wr_0: [ 9 ],
io_i_post: [ 27 ],
io_o_post: [ 26 ],
io_out_baddr: [ 12 ],
io_out: [ 24 ],
},
},
vme: {
type: "VME",
port_directions: {
io_vme_rd_0: "output",
io_vme_rd_1: "output",
io_vme_rd_2: "output",
io_vme_rd_3: "output",
io_vme_rd_4: "output",
io_vme_wr_0: "input",
io_mem_rd_0: "input",
io_mem_rd_1: "input",
io_mem_rd_2: "input",
io_mem_rd_3: "input",
io_mem_rd_4: "input",
io_mem_wr_0: "output",
},
connections: {
io_vme_rd_0: [ 4 ],
io_vme_rd_1: [ 5 ],
io_vme_rd_2: [ 6 ],
io_vme_rd_3: [ 7 ],
io_vme_rd_4: [ 8 ],
io_vme_wr_0: [ 9 ],
io_mem_rd_0: [ 2 ],
io_mem_rd_1: [ 2 ],
io_mem_rd_2: [ 2 ],
io_mem_rd_3: [ 2 ],
io_mem_rd_4: [ 2 ],
io_mem_wr_0: [ 3 ],
}
},
},
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment