tapflow
팀 전체가 사용할 수 있는 자체 호스팅 iOS·Android 시뮬레이터 스트리밍
A new Hardware Design Language that keeps you in the driver's seat
README 전체를 불러오는 중입니다.
README 전문 보기 ↗SUS is a new RTL Hardware Design Language, similar to Verilog or VHDL, that focuses on simplifying the development of high-performance computing FPGA accelerators, without sacrificing any design freedom at the altar of abstraction.
Installation is done through Rust's package manager cargo (cargo installation info). 1
cargo install sus_compiler
call plug#begin()
if !has('nvim')
Plug 'prabirshrestha/vim-lsp'
endif
Plug 'papeg/sus.vim'
call plug#end()
Some libraries we maintain here at PC2 might be of use to you:
Use SUS with:
sus_compiler myFile.sus -o outFile.sv --top MyTopModule
To get started with learning SUS, have a look at this (mildly outdated) talk. In 40 minutes it goes over most language features through examples. For the changes, please look at the Changelog.
A full language reference can be found here:
For an example project to tinker with, see VonTum/mandelbrotFPGA.
SUS is meant to be a direct competitor to Synthesizeable Verilog and VHDL. Its main goal is to be an intuitive and thin syntax for building netlists, such that traditional synthesis tools can still be used to analyze the resulting hardware. SUS shall impose no paradigm on the hardware designer, such as requiring specific communication protocols or iteration constructs. In other words, SUS is not there to abstract away complexity, but rather to make the inherent complexity of hardware design more manageable.
The one restriction SUS does impose over Verilog and VHDL is that it requires the hardware to be synchronous over one or more clocks. Asynchronous hardware is therefore unrepresentable making SUS less suitable for ASIC development.
There are three main features that set SUS apart from the rest:
Finally, an important consideration of SUS is the user interface. SUS comes with a VSCode IDE plugin that allows the copiler to be used fully in-IDE. Compiling, typechecking and instantiation is done as the user writes code, leading to a very tight development feedback loop.
There's a few categories of HDLs as I see it nowadays. I shall visit them in turn:
By default, the standard library is stored in the $XDG_DATA_HOME folder, but it can be overwritten with INSTALL_SUS_HOME=/path/to/sus_home/ cargo install sus_compiler. ↩
Some timing constraints affect the cycle-by-cycle functioning of the design, such as the relative speeds of synchronous clocks and False/Multi-Cycle Path constraints. Because they affect the cycle-wise behaviour of the design, they should be provided as part of the language and incorporated in simulation. Of course, timing constraints like real clock speeds, edge patterns and external component timings still rightfully belong in the Timing Constraints file. It should not be possible to express SUS code that behaves differently between Simulation and Synthesis. ↩
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗