You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+41-41Lines changed: 41 additions & 41 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,14 +2,14 @@
2
2
3
3

4
4
5
-
Synlig is a SystemVerilog synthesis tool that uses [Surelog](https://github.com/chipsalliance/Surelog) as a SystemVerilog 2017 preprocessor, parser and elaborator with [Yosys](https://github.com/YosysHQ/yosys) as a framework for synthesis.
5
+
Synlig is a SystemVerilog synthesis tool that uses [Surelog](https://github.com/chipsalliance/Surelog) as a SystemVerilog 2017 preprocessor, parser and elaborator, with [Yosys](https://github.com/YosysHQ/yosys) as a framework for synthesis.
6
6
7
7
## Installation
8
8
9
9
### Download Synlig
10
10
11
-
You can download Synlig from Github[release page](https://github.com/chipsalliance/synlig/releases).
12
-
To download latest version you can use following script:
11
+
You can download Synlig from the GitHub[release page](https://github.com/chipsalliance/synlig/releases).
12
+
To download the latest version, use the following script:
13
13
14
14
```bash
15
15
# TODO: update it after initial release
@@ -21,11 +21,11 @@ Then, install it with superuser privileges:
21
21
```
22
22
23
23
Synlig is now ready to be used.
24
-
Now you can go to the [Usage](#usage) section of this document to learn how to use it.
24
+
Go to the [Usage](#usage) section of this document to learn how to use it.
25
25
26
26
### Installation from source
27
27
28
-
*Debian Trixie:
28
+
Debian Trixie:
29
29
30
30
#### Install dependencies
31
31
@@ -57,17 +57,17 @@ To use Synlig, make sure to either use absolute paths, or update the `PATH` vari
57
57
## Usage
58
58
59
59
You can now start Synlig by executing the `synlig` command.
Afterwards, it works similarly to `read_systemverilog`.
65
65
66
66
### Quick start examples
67
67
68
-
#### Counter
68
+
#### Counter
69
69
70
-
Consider following SystemVerilog code:
70
+
Consider the following SystemVerilog code:
71
71
72
72
<!-- name="counter.sv" -->
73
73
```SystemVerilog
@@ -91,7 +91,7 @@ module top (
91
91
endmodule
92
92
```
93
93
94
-
Running the synthesis using Synlig is very simple:
94
+
Running synthesis using Synlig is very simple:
95
95
96
96
<!-- name="synthesis example" -->
97
97
```tcl
@@ -125,16 +125,16 @@ Running the synthesis using Synlig is very simple:
125
125
3. Executing Synlig EDIF backend.
126
126
```
127
127
128
-
As a result we get a `counter.edif` file that can be further processed to get the bitstream.
128
+
As a result, we get a `counter.edif` file that can be further processed to generate the bitstream.
129
129
130
130
#### Parsing multiple files
131
131
132
-
To parse a multi-file with the `read_systemverilog` command, all files have to be listed at once.
133
-
This can be troublesome for larger designs.
134
-
To mitigate this issue, Synlig supports a flow that allows users to pass files and link them separately.
135
-
Files can be loaded one by one using the `-defer` flag.
136
-
Once all files are uploaded, you should call `read_systemverilog -link` to elaborate them.
137
-
The described flow looks like so:
132
+
To parse a multi-file design with the `read_systemverilog` command, all files have to be listed simultaneously.
133
+
This can be troublesome for larger designs.
134
+
To mitigate this issue, Synlig supports a flow that allows users to pass files and link them separately.
135
+
Files can be loaded one by one using the `-defer` flag.
136
+
Once all files are uploaded, you should call `read_systemverilog -link` to elaborate them.
137
+
The described flow looks like the following:
138
138
139
139
<!-- name="example-multiple-files" -->
140
140
```tcl
@@ -149,14 +149,14 @@ The described flow looks like so:
149
149
```
150
150
151
151
The `-defer` flag is experimental.
152
-
If you encounter any problems with it, please compare the results with a single `read_systemverilog` command, check the [open issues](https://github.com/chipsalliance/synlig/issues), and open a new issue if needed.
152
+
If you encounter any problems with it, please compare the results with a single `read_systemverilog` command, check the [open issues](https://github.com/chipsalliance/synlig/issues), and open a new issue if required.
153
153
154
154
## Testing locally
155
155
156
-
### Formal Verification
156
+
### Formal verification
157
157
158
-
Synlig runs formal verification tests to make sure it gives comparable results with other synthesis tools.
159
-
More information about Formal Verification can be found in its[README](https://github.com/chipsalliance/synlig/tree/main/tests/formal)
158
+
Synlig runs formal verification tests to make sure it provides results comparable with other synthesis tools.
159
+
More information about formal verification can be found in this[README](https://github.com/chipsalliance/synlig/tree/main/tests/formal).
160
160
161
161
#### Prerequisites
162
162
@@ -168,23 +168,23 @@ All required prerequisites can be installed by running:
168
168
make tools -j $(nproc)
169
169
```
170
170
171
-
#### Running Formal Verification
171
+
#### Running formal verification
172
172
173
-
To start formal verification tests use dedicated script:
173
+
To start formal verification tests, use the dedicated script:
174
174
175
175
<!-- name="run-fv-tests-exec" -->
176
176
```bash
177
177
./tests/scripts/run_formal.sh --name=<test_suite_name> run
For more details check `.github/workflows/large-designs.yml` or run:
202
+
For more details, check `.github/workflows/large-designs.yml` or run:
203
203
204
204
```bash
205
205
./tests/scripts/run_large_designs.sh --help
206
206
```
207
207
208
208
### Parsing tests
209
209
210
-
Synlig is additionally tested on parsing tests, for more details check `.github/workflows/parsing-tests.yml` or run:
210
+
Synlig is additionally tested with parsing tests. For more details check `.github/workflows/parsing-tests.yml` or run:
211
211
212
212
```bash
213
213
./tests/scripts/run_parsing.sh --help
214
214
```
215
215
216
216
## General & debugging tips
217
217
218
-
1. You can print the UHDM tree by adding `-debug` flag to `read_uhdm` or `read_systemverilog`.
218
+
1. You can print the UHDM tree by adding the `-debug` flag to `read_uhdm` or `read_systemverilog`.
219
219
This flag also prints the converted Yosys AST.
220
220
1. The order of the files matters.
221
-
Surelog requires that all definitions be already defined when a file is parsed (e.g. if file `B` is defining a type used in file `A`, file `B` needs to be parsed before file `A`).
221
+
Surelog requires all definitions to be already defined when a file is parsed (e.g. if file `B` is defining a type used in file `A`, file `B` needs to be parsed before file `A`).
222
222
223
223
## Embedding Synlig in a larger cmake-based project
224
224
225
-
1. An alternative build mechanism defined in the CMakeLists.txt file is provided to allow Synlig to be built part of a larger cmake-based project
226
-
Simply add_subsystem(synlig) in your parent CMake.
227
-
See CMakeLists.txt for compilation options (With or without vendored Yosys and Surelog).
228
-
1. To test locally this build system: make -f cmake-makefile
225
+
1. An alternative build mechanism defined in the CMakeLists.txt file is provided to allow Synlig to be built as part of a larger cmake-based project.
226
+
Simply include `add_subsystem(synlig)` in your parent CMake.
227
+
See CMakeLists.txt for compilation options (with or without vendored Yosys and Surelog).
228
+
1. To test this build system locally, use `make -f cmake-makefile`.
229
229
230
230
## Plugin mode
231
231
232
-
Synlig is also available as Yosys plugin.
233
-
Note that almost all tests are made on Synlig binary instead of plugin version, and there is no guarantee that plugin version will be still developed in the future.
232
+
Synlig is also available as a Yosys plugin.
233
+
Note that almost all tests are made using the Synlig binary instead of the plugin version, and there is no guarantee that the plugin version will be still developed in the future.
234
234
235
235
### Installation from source
236
236
@@ -244,7 +244,7 @@ Note that almost all tests are made on Synlig binary instead of plugin version,
244
244
#### Build required binaries
245
245
246
246
You can build all required binaries using the provided `Makefile`.
247
-
`make plugin` will build Surelog, Yosys and Synlig as plugin, and place them in the `out` directory.
247
+
`make plugin` will build Surelog, Yosys and Synlig as a plugin, and place them in the `out` directory.
248
248
You need to add `out/bin` to your `PATH` variable to ensure you are using correct versions of the binaries.
249
249
250
250
<!-- name="build-binaries" -->
@@ -259,7 +259,7 @@ To use Yosys built from a submodule, make sure to either use absolute paths, or
259
259
```bash
260
260
export PATH=`pwd`/out/current/bin:$PATH
261
261
```
262
-
### Loading Synlig as plugin into Yosys
262
+
### Loading Synlig as a plugin into Yosys
263
263
264
264
You can now start Yosys by executing the `yosys` command.
265
-
In order to use the SystemVerilog plugin, you first need to load it in Yosys, to do so, execute the following command in Yosys prompt: `plugin -i systemverilog`.
265
+
In order to use the SystemVerilog plugin, you first need to load it in Yosys by executing the following command in Yosys prompt: `plugin -i systemverilog`.
0 commit comments