Skip to content

Latest commit

 

History

History
120 lines (86 loc) · 5.82 KB

DEVELOP.md

File metadata and controls

120 lines (86 loc) · 5.82 KB

Bluespec Compiler - Information for developers


Here you can find documentation on the internal architecture of BSC and other helpful information for people who want to contribute to the source code.

Feel free to ask questions on GitHub (in an Issue or a Discussion) or on the bsc-dev mailing list. The bsc-dev list is for questions that are only relevant to developers, to keep traffic on the b-lang-discuss mailing list light for people who are just users.


At the moment there is no formal documentation. However, there are written responses to questions on GitHub and the mailing lists, that can someday be collected and turned into a document. The following is a running list of those writings.

Basics / General info

Compiling

  • See INSTALL.md for info on building and installing
  • TBD: Any info on tools, dependencies, and compiling options
    • e.g. individual SMT libraries can be omitted using STP_STUB=1 or YICES_STUB=1

Testing

BSC stage: Parsing

BSC stage: Type checking

  • See the link on the use of SMT solvers, below

BSC stage: Elaboration

BSC stage: Scheduling

BSC backends / naming

BSC backend: Verilog

BSC backend: Bluesim

Bluetcl

  • Support for reflection in BSC
    • specifically, Bluetcl (outside the language) and Generics (inside the language)
  • See the link on how Bluesim's C API is imported into Bluetcl, above, under Bluesim

SMT solvers

Clock and Reset methodology

  • Clock/reset inference
  • BSC implements certain design decisions for clocks and resets -- for example, the choice to implement reset inside of state elements (to ignore the EN input) instead of outside (as part of the RDY logic) -- and there may be some documentation (perhaps internal to BS Inc) on those decisions
    • There was a paper at MEMOCODE 2006, "Reliable Design with Multiple Clock Domains"
      • An earlier version of this paper was submitted to DCC'06 (Designing Correct Circuits)
    • There is a BS Inc document from 16 Dec 2004 (mcd.pdf) that discusses some options, but only clocks, not yet reset
    • There is a BS Inc document from 28 Oct 2004 (resets.txt) that purports to be "a proposal on reset handling" but is very prelimary about the problem, not yet the solution
    • There is a BS Inc file bsc-doc/doc/MCD-extensions.txt that describes the new things in BSC to support MCD, both user visible attributes and the BSC source code changes
    • The BS Inc training slides include a lecture on MCD