Skip to content

Commit 3e658aa

Browse files
committed
final
1 parent b76321a commit 3e658aa

File tree

1 file changed

+36
-17
lines changed

1 file changed

+36
-17
lines changed

doc/src/quickstart/index.rst

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -224,16 +224,35 @@ Manually Running the VTR Flow
224224
-----------------------------
225225
Let's start by making a fresh directory for us to work in:
226226

227+
First, define an environment variable to streamline the commands in this guide:
228+
229+
- ``$WRK_DIR`` will serve as our working directory for this example.
230+
231+
To set this variable, define it in your shell:
232+
227233
.. code-block:: bash
228234
229-
> mkdir -p ~/vtr_work/quickstart/blink_manual
230-
> cd ~/vtr_work/quickstart/blink_manual
235+
export WRK_DIR=~/vtr_work/quickstart/blink_manual
236+
237+
Alternatively, manually replace ``$WRK_DIR`` in the example commands with your paths.
231238

232-
Next we need to run the three main sets of tools:
239+
Now, create and navigate to the working directory:
233240

234-
* :ref:`Parmys` performs 'synthesis' which converts our behavioural Verilog (``.v`` file) into a circuit netlist (``.blif`` file) consisting of logic equations and FPGA architecture primitives (Flip-Flops, adders etc.),
235-
* :ref:`ABC` performs 'logic optimization' which simplifies the circuit logic, and 'technology mapping' which converts logic equations into the Look-Up-Tables (LUTs) available on an FPGA, and
236-
* :ref:`VPR` which performs packing, placement and routing of the circuit to implement it on the targeted FPGA architecture.
241+
.. code-block:: bash
242+
243+
> mkdir -p $WRK_DIR
244+
> cd $WRK_DIR
245+
246+
Next, we need to run the three main sets of tools, depending on the method of synthesis you choose:
247+
248+
1. **Default Synthesis with Parmys**:
249+
* Parmys is the default synthesis tool in the VTR flow. It performs synthesis, logic optimization, and technology mapping in one step. This method eliminates the need for separate tools like Odin II.
250+
251+
2. **If you synthesize using Odin II** (Alternative):
252+
* :ref:`Odin II` performs 'synthesis' which converts our behavioral Verilog (``.v`` file) into a circuit netlist (``.blif`` file) consisting of logic equations and FPGA architecture primitives (flip-flops, adders, etc.).
253+
* :ref:`ABC` performs 'logic optimization' which simplifies the circuit logic, and 'technology mapping' which converts logic equations into the Look-Up-Tables (LUTs) available on an FPGA.
254+
255+
3. **Finally, regardless of the synthesis method, run** :ref:`VPR`, which performs packing, placement, and routing of the circuit to implement it on the targeted FPGA architecture.
237256

238257
.. _synthesizing_with_parmys:
239258
Synthesizing with Parmys
@@ -276,24 +295,24 @@ The resulting command is:
276295
277296
> $VTR_ROOT/vpr/vpr \
278297
$VTR_ROOT/vtr_flow/arch/timing/EArch.xml \
279-
~/vtr_work/quickstart/blink_manual/temp/blink.parmys.blif \
298+
blink --circuit_file $WRK_DIR/temp/blink.parmys.blif \
280299
--route_chan_width 100
281300
282301
and after VPR finishes we should see the resulting implementation files:
283302

284303
.. code-block:: bash
285304
286-
> ls *.net *.place *.route
305+
> ls $WRK_DIR/*.net $WRK_DIR/*.place $WRK_DIR/*.route
287306
288-
blink.parmys.net blink.parmys.place blink.parmys.route
307+
blink.net blink.place blink.route
289308
290309
We can then view the implementation as usual by appending ``--analysis --disp on`` to the command:
291310

292311
.. code-block:: bash
293312
294313
> $VTR_ROOT/vpr/vpr \
295314
$VTR_ROOT/vtr_flow/arch/timing/EArch.xml \
296-
~/vtr_work/quickstart/blink_manual/temp/blink.parmys.blif \
315+
blink --circuit_file $WRK_DIR/temp/blink.parmys.blif \
297316
--route_chan_width 100 \
298317
--analysis --disp on
299318
@@ -395,21 +414,21 @@ Manually Running VTR with ODIN II
395414
----------------------------------
396415
VTR includes a second synthesis tool, ODIN II. Below we explain how to run this alternative synthesis flow.
397416

398-
Let's start by making a new directory for us to work in:
399-
400-
.. code-block:: bash
401-
402-
> mkdir -p ~/vtr_work/quickstart/blink_manual
403-
> cd ~/vtr_work/quickstart/blink_manual
404-
405417
To synthesize your Verilog design with ODIN II, you need to build VTR with the following command:
406418

407419
.. code-block:: bash
408420
421+
> cd ~/$VTR_ROOT
409422
> make CMAKE_PARAMS="-DWITH_ODIN=on"
410423
411424
This step enables ODIN II support in the VTR build process, which is essential for the subsequent synthesis operations.
412425

426+
Lets make a new directory for us to work in:
427+
428+
.. code-block:: bash
429+
430+
> mkdir -p ~/vtr_work/quickstart/blink_manual
431+
> cd ~/vtr_work/quickstart/blink_manual
413432
414433
Next, run ODIN II on your Verilog file to synthesize it into a circuit netlist. Use the command below, specifying the required options:
415434

0 commit comments

Comments
 (0)