Skip to content

Commit 6876394

Browse files
committed
Initial documentation for developers
1 parent 6f29814 commit 6876394

File tree

2 files changed

+64
-1
lines changed

2 files changed

+64
-1
lines changed

DEVELOP.md

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<div class="title-block" style="text-align: center;" align="center">
2+
3+
# Bluespec Compiler - Information for developers
4+
5+
---
6+
7+
</div>
8+
9+
Here you can find documentation on the internal architecture of [BSC](./README.md)
10+
and other helpful information for people who want to contribute to the source code.
11+
12+
Feel free to ask questions on GitHub (in an Issue or a Discussion)
13+
or on the [`bsc-dev`](https://groups.io/g/bsc-dev) mailing list.
14+
The `bsc-dev` list is for questions that are only relevant to developers,
15+
to keep traffic on the [`b-lang-discuss`](https://groups.io/g/b-lang-discuss)
16+
mailing list light for people who are just users.
17+
18+
---
19+
20+
At the moment there is no formal documentation.
21+
However, there are written responses to questions on GitHub and the mailing lists,
22+
that can someday be collected and turned into a document.
23+
The following is a running list of those writings.
24+
25+
* [BSC is a series of stages](https://groups.io/g/bsc-dev/message/14)
26+
* This write-up includes a link to the following (incomplete)
27+
[diagrams of the BSC stages](https://docs.google.com/document/d/1130fyOsPtS6gMppB6BaO-qVXxzO5b_ha7sXwLdd8Dtg/edit?usp=sharing)
28+
* See also [this brief breakdown of BSC](https://groups.io/g/b-lang-discuss/message/358)
29+
by its three internal representations (CSyntax, ISyntax, ASyntax)
30+
* Briefly on [printing and dumping from BSC and intermediate files](https://groups.io/g/b-lang-discuss/message/356)
31+
* [The meaning of `.bo` and `.ba` files and compiler flow](https://github.com/B-Lang-org/bsc/discussions/575)
32+
* [Understanding scheduling](https://github.com/B-Lang-org/bsc/discussions/622#discussioncomment-7203579)
33+
* [How to add a new evaluator primitive to BSC](https://groups.io/g/b-lang-discuss/message/526)
34+
* specifically how to add a function to get the current module name
35+
* [How the Bluesim C API is imported into Bluetcl](https://groups.io/g/b-lang-discuss/message/554)
36+
* [Support for reflection in BSC](https://groups.io/g/b-lang-discuss/message/513)
37+
* specifically, Bluetcl (outside the language) and Generics (inside the language)
38+
* [The ways that SMT solvers are used in BSC](https://groups.io/g/b-lang-discuss/message/370)
39+
* [Keyword parsing in BH/Classic](https://github.com/B-Lang-org/language-bh/issues/5#issuecomment-1856814271)
40+
* [Naming conventions in the generated Verilog](https://groups.io/g/b-lang-discuss/topic/106903347)
41+
* [How Bluesim provides implementations for import-BVI](https://groups.io/g/b-lang-discuss/topic/106520424)
42+
* [BSC's deduction of portprops](https://groups.io/g/b-lang-discuss/topic/106516831)
43+
* [How to use the different Verilog directories (for different synth tools)](https://groups.io/g/b-lang-discuss/topic/106402322)
44+
* [SAT solver usage and dumping](https://github.com/B-Lang-org/bsc/discussions/693#discussioncomment-9148985)
45+
* [How Bluesim works (mostly the VCD dumping)](https://github.com/B-Lang-org/bsc/issues/519#issuecomment-1873853532)
46+
* [Verilog/Bluesim "main" and the naming of clock and reset ports](https://groups.io/g/b-lang-discuss/message/606)
47+
* [Clock/reset inference](https://github.com/B-Lang-org/bsc/discussions/661)
48+
* BSC implements certain design decisions for clocks and resets --
49+
for example, the choice to implement reset inside of state elements (to ignore the `EN` input)
50+
instead of outside (as part of the `RDY` logic) --
51+
and there may be some documentation (perhaps internal to BS Inc) on those decisions
52+
* There was a paper at MEMOCODE 2006,
53+
["Reliable Design with Multiple Clock Domains"](https://www.researchgate.net/publication/224648422_Reliable_design_with_multiple_clock_domains)
54+
* An earlier version of this paper was submitted to DCC'06 (Designing Correct Circuits)
55+
* There is a BS Inc document from 16 Dec 2004 (`mcd.pdf`) that discusses some options, but only clocks, not yet reset
56+
* There is a BS Inc document from 28 Oct 2004 (`resets.txt`) that purports to be "a proposal on reset handling"
57+
but is very prelimary about the problem, not yet the solution
58+
* There is a BS Inc file `bsc-doc/doc/MCD-extensions.txt` that describes
59+
the new things in BSC to support MCD, both user visible attributes and
60+
the BSC source code changes
61+
* The BS Inc training slides include a
62+
[lecture on MCD](https://github.com/BSVLang/Main/blob/master/Tutorials/BSV_Training/Reference/Lec12_Multiple_Clock_Domains.pdf)

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,14 @@
1010
[Version]: https://img.shields.io/badge/release-2024.07-red.svg?logo=v
1111
[Build Status]: https://github.com/b-lang-org/bsc/workflows/CI/badge.svg?branch=main&event=push
1212

13-
**[Community] &bull; [Download] &bull; [Documentation] &bull; [Build] &bull; [Test]**
13+
**[Community] &bull; [Download] &bull; [Documentation] &bull; [Build] &bull; [Test] &bull; [Develop]**
1414

1515
[Community]: #community
1616
[Download]: #download
1717
[Documentation]: #documentation
1818
[Build]: ./INSTALL.md
1919
[TEST]: ./testsuite/README.md
20+
[Develop]: ./DEVELOP.md
2021

2122
---
2223

0 commit comments

Comments
 (0)