├── .gitignore ├── README.md ├── docs ├── images │ ├── Ai.drawio │ ├── Array.drawio.svg │ ├── PE.drawio.svg │ ├── avgpool.drawio.svg │ ├── data_dist.drawio.svg │ ├── npu.drawio │ ├── opcode.drawio │ ├── pe_ctrl.drawio.svg │ ├── pe_pass_ctrl.drawio.svg │ ├── scratch_pad_ifmap.drawio.svg │ ├── scratch_pad_weight.drawio.svg │ ├── short_cut.drawio.svg │ ├── wavedrom_opcode.png │ └── wavedrom_opcode.svg ├── ip_doc.html ├── ip_doc.md ├── npu_doc.md ├── npu_doc_v2.md └── wavedroms │ └── reg_code.json ├── rtl ├── If_scratch_pad.v ├── Ram1rw.v ├── We_scratch_pad.v ├── pe_flow_ctrl.v ├── pe_unit.v └── weight_scheduler.v ├── simWorkspace ├── .cache │ ├── 76a024be57ca004ca01411b4eed2866abe8a2f31 │ │ └── verilator │ │ │ ├── Vpe_flow_ctrl.h │ │ │ ├── Vpe_flow_ctrl.mk │ │ │ ├── Vpe_flow_ctrl__ALL.a │ │ │ ├── Vpe_flow_ctrl__Syms.h │ │ │ └── Vpe_flow_ctrl_classes.mk │ └── c840f8007cedd272dba4fcb0833f7dc9acd4df3a │ │ └── verilator │ │ ├── Vpe_flow_ctrl.h │ │ ├── Vpe_flow_ctrl.mk │ │ ├── Vpe_flow_ctrl__ALL.a │ │ ├── Vpe_flow_ctrl__Syms.h │ │ └── Vpe_flow_ctrl_classes.mk └── pe_flow_ctrl │ ├── rtl │ └── pe_flow_ctrl.v │ ├── verilator │ ├── Vpe_flow_ctrl │ ├── Vpe_flow_ctrl.cpp │ ├── Vpe_flow_ctrl.d │ ├── Vpe_flow_ctrl.h │ ├── Vpe_flow_ctrl.mk │ ├── Vpe_flow_ctrl.o │ ├── Vpe_flow_ctrl__ALL.a │ ├── Vpe_flow_ctrl__Syms.cpp │ ├── Vpe_flow_ctrl__Syms.d │ ├── Vpe_flow_ctrl__Syms.h │ ├── Vpe_flow_ctrl__Syms.o │ ├── Vpe_flow_ctrl__spinalWrapper.cpp │ ├── Vpe_flow_ctrl__spinalWrapper.d │ ├── Vpe_flow_ctrl__spinalWrapper.o │ ├── Vpe_flow_ctrl__ver.d │ ├── Vpe_flow_ctrl__verFiles.dat │ ├── Vpe_flow_ctrl_classes.mk │ ├── libcode.version │ ├── verilated.d │ ├── verilated.o │ ├── verilator_1.so │ └── wrapper_verilator │ │ └── VerilatorNative.class │ └── verilatorScript.sh └── src └── main └── scala ├── If_scratch_pad.scala ├── MyStateMachine.scala ├── NPUConfig.scala ├── memory.scala ├── multipliers.scala ├── pe_flow_ctrl.scala ├── pe_unit.scala ├── utils.scala ├── we_scratch_pad.scala └── weight_scheduler.scala /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # EasyNPU 2 | 3 | ## Arch 4 | -------------------------------------------------------------------------------- /docs/images/Ai.drawio: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/images/Ai.drawio -------------------------------------------------------------------------------- /docs/images/Array.drawio.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/images/Array.drawio.svg -------------------------------------------------------------------------------- /docs/images/PE.drawio.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/images/PE.drawio.svg -------------------------------------------------------------------------------- /docs/images/avgpool.drawio.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/images/avgpool.drawio.svg -------------------------------------------------------------------------------- /docs/images/data_dist.drawio.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/images/data_dist.drawio.svg -------------------------------------------------------------------------------- /docs/images/npu.drawio: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/images/npu.drawio -------------------------------------------------------------------------------- /docs/images/opcode.drawio: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/images/opcode.drawio -------------------------------------------------------------------------------- /docs/images/pe_ctrl.drawio.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/images/pe_ctrl.drawio.svg -------------------------------------------------------------------------------- /docs/images/pe_pass_ctrl.drawio.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/images/pe_pass_ctrl.drawio.svg -------------------------------------------------------------------------------- /docs/images/scratch_pad_ifmap.drawio.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/images/scratch_pad_ifmap.drawio.svg -------------------------------------------------------------------------------- /docs/images/scratch_pad_weight.drawio.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/images/scratch_pad_weight.drawio.svg -------------------------------------------------------------------------------- /docs/images/short_cut.drawio.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/images/short_cut.drawio.svg -------------------------------------------------------------------------------- /docs/images/wavedrom_opcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/images/wavedrom_opcode.png -------------------------------------------------------------------------------- /docs/images/wavedrom_opcode.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/images/wavedrom_opcode.svg -------------------------------------------------------------------------------- /docs/ip_doc.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/ip_doc.html -------------------------------------------------------------------------------- /docs/ip_doc.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/ip_doc.md -------------------------------------------------------------------------------- /docs/npu_doc.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/npu_doc.md -------------------------------------------------------------------------------- /docs/npu_doc_v2.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/npu_doc_v2.md -------------------------------------------------------------------------------- /docs/wavedroms/reg_code.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/docs/wavedroms/reg_code.json -------------------------------------------------------------------------------- /rtl/If_scratch_pad.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/rtl/If_scratch_pad.v -------------------------------------------------------------------------------- /rtl/Ram1rw.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/rtl/Ram1rw.v -------------------------------------------------------------------------------- /rtl/We_scratch_pad.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/rtl/We_scratch_pad.v -------------------------------------------------------------------------------- /rtl/pe_flow_ctrl.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/rtl/pe_flow_ctrl.v -------------------------------------------------------------------------------- /rtl/pe_unit.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/rtl/pe_unit.v -------------------------------------------------------------------------------- /rtl/weight_scheduler.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/rtl/weight_scheduler.v -------------------------------------------------------------------------------- /simWorkspace/.cache/76a024be57ca004ca01411b4eed2866abe8a2f31/verilator/Vpe_flow_ctrl.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/.cache/76a024be57ca004ca01411b4eed2866abe8a2f31/verilator/Vpe_flow_ctrl.h -------------------------------------------------------------------------------- /simWorkspace/.cache/76a024be57ca004ca01411b4eed2866abe8a2f31/verilator/Vpe_flow_ctrl.mk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/.cache/76a024be57ca004ca01411b4eed2866abe8a2f31/verilator/Vpe_flow_ctrl.mk -------------------------------------------------------------------------------- /simWorkspace/.cache/76a024be57ca004ca01411b4eed2866abe8a2f31/verilator/Vpe_flow_ctrl__ALL.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/.cache/76a024be57ca004ca01411b4eed2866abe8a2f31/verilator/Vpe_flow_ctrl__ALL.a -------------------------------------------------------------------------------- /simWorkspace/.cache/76a024be57ca004ca01411b4eed2866abe8a2f31/verilator/Vpe_flow_ctrl__Syms.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/.cache/76a024be57ca004ca01411b4eed2866abe8a2f31/verilator/Vpe_flow_ctrl__Syms.h -------------------------------------------------------------------------------- /simWorkspace/.cache/76a024be57ca004ca01411b4eed2866abe8a2f31/verilator/Vpe_flow_ctrl_classes.mk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/.cache/76a024be57ca004ca01411b4eed2866abe8a2f31/verilator/Vpe_flow_ctrl_classes.mk -------------------------------------------------------------------------------- /simWorkspace/.cache/c840f8007cedd272dba4fcb0833f7dc9acd4df3a/verilator/Vpe_flow_ctrl.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/.cache/c840f8007cedd272dba4fcb0833f7dc9acd4df3a/verilator/Vpe_flow_ctrl.h -------------------------------------------------------------------------------- /simWorkspace/.cache/c840f8007cedd272dba4fcb0833f7dc9acd4df3a/verilator/Vpe_flow_ctrl.mk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/.cache/c840f8007cedd272dba4fcb0833f7dc9acd4df3a/verilator/Vpe_flow_ctrl.mk -------------------------------------------------------------------------------- /simWorkspace/.cache/c840f8007cedd272dba4fcb0833f7dc9acd4df3a/verilator/Vpe_flow_ctrl__ALL.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/.cache/c840f8007cedd272dba4fcb0833f7dc9acd4df3a/verilator/Vpe_flow_ctrl__ALL.a -------------------------------------------------------------------------------- /simWorkspace/.cache/c840f8007cedd272dba4fcb0833f7dc9acd4df3a/verilator/Vpe_flow_ctrl__Syms.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/.cache/c840f8007cedd272dba4fcb0833f7dc9acd4df3a/verilator/Vpe_flow_ctrl__Syms.h -------------------------------------------------------------------------------- /simWorkspace/.cache/c840f8007cedd272dba4fcb0833f7dc9acd4df3a/verilator/Vpe_flow_ctrl_classes.mk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/.cache/c840f8007cedd272dba4fcb0833f7dc9acd4df3a/verilator/Vpe_flow_ctrl_classes.mk -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/rtl/pe_flow_ctrl.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/rtl/pe_flow_ctrl.v -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl.cpp -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl.d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl.d -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl.h -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl.mk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl.mk -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl.o -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__ALL.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__ALL.a -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__Syms.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__Syms.cpp -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__Syms.d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__Syms.d -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__Syms.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__Syms.h -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__Syms.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__Syms.o -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__spinalWrapper.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__spinalWrapper.cpp -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__spinalWrapper.d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__spinalWrapper.d -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__spinalWrapper.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__spinalWrapper.o -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__ver.d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__ver.d -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__verFiles.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl__verFiles.dat -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl_classes.mk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/Vpe_flow_ctrl_classes.mk -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/libcode.version: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/libcode.version -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/verilated.d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/verilated.d -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/verilated.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/verilated.o -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/verilator_1.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/verilator_1.so -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilator/wrapper_verilator/VerilatorNative.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilator/wrapper_verilator/VerilatorNative.class -------------------------------------------------------------------------------- /simWorkspace/pe_flow_ctrl/verilatorScript.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/simWorkspace/pe_flow_ctrl/verilatorScript.sh -------------------------------------------------------------------------------- /src/main/scala/If_scratch_pad.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/src/main/scala/If_scratch_pad.scala -------------------------------------------------------------------------------- /src/main/scala/MyStateMachine.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/src/main/scala/MyStateMachine.scala -------------------------------------------------------------------------------- /src/main/scala/NPUConfig.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/src/main/scala/NPUConfig.scala -------------------------------------------------------------------------------- /src/main/scala/memory.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/src/main/scala/memory.scala -------------------------------------------------------------------------------- /src/main/scala/multipliers.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/src/main/scala/multipliers.scala -------------------------------------------------------------------------------- /src/main/scala/pe_flow_ctrl.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/src/main/scala/pe_flow_ctrl.scala -------------------------------------------------------------------------------- /src/main/scala/pe_unit.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/src/main/scala/pe_unit.scala -------------------------------------------------------------------------------- /src/main/scala/utils.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/src/main/scala/utils.scala -------------------------------------------------------------------------------- /src/main/scala/we_scratch_pad.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/src/main/scala/we_scratch_pad.scala -------------------------------------------------------------------------------- /src/main/scala/weight_scheduler.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lycfly/EasyNPU/HEAD/src/main/scala/weight_scheduler.scala --------------------------------------------------------------------------------