Mini LFR - Bitstream Generation » History » Version 3
Jean-Christophe Pellion, 01/12/2016 02:02 PM
1 | 1 | Jean-Christophe Pellion | # Mini LFR - Bitstream Generation |
---|---|---|---|
2 | |||
3 | |||
4 | ## 1 Generates scripts files ## |
||
5 | |||
6 | Clean the project directory, and run the makefile scripts command to generate all project's files. |
||
7 | |||
8 | ```bash |
||
9 | # clean the project and re-generates the scripts |
||
10 | $> make distclean scripts |
||
11 | ``` |
||
12 | |||
13 | The files MINI\_LFR\_top\_libero.prj should be created. |
||
14 | |||
15 | ## 2 Launch Libero IDE ## |
||
16 | |||
17 | Open the project MINI\_LFR\_top\_libero.prj with Libero IDE v9.1. |
||
18 | 3 | Jean-Christophe Pellion | !["Libero IDE v9.1"](Capture1.PNG) |
19 | ![Capture1.PNG]( ) |
||
20 | 1 | Jean-Christophe Pellion | |
21 | ### 2.1 Synthesis ### |
||
22 | Synthesis tools should be configured to use **Synplify** version **2012-03A-SP1-2**. |
||
23 | |||
24 | Launch the synthesis step (You must not add constraint file). |
||
25 | In the synplify Pro windows, click on the Run button. |
||
26 | |||
27 | The project status obtained should be : |
||
28 | |||
29 | ![image](./README_dir/Capture2.PNG "Synplify Project Status") |
||
30 | |||
31 | > You must verfify the block RAM's usage. The expected value is 100. |
||
32 | > |
||
33 | > If it's around 60/70, LEON3 processor is not mapped. In this case, you must clean your project and restart the generation procedure. |
||
34 | |||
35 | You can close Synplify and return to Libero. |
||
36 | |||
37 | |||
38 | If the Sythesis step is green like that : |
||
39 | |||
40 | You must activate the option `Detect new files on disk automatically` in the project settings. |
||
41 | |||
42 | ![image](./README_dir/Capture3.PNG "Project > Settings...") |
||
43 | |||
44 | ![image](./README_dir/Capture4.PNG "Detect new files on disk automatically") |
||
45 | ### 2.2 Place&Route ### |
||
46 | |||
47 | Launch the Place&Route step. You must add the constraint files : |
||
48 | |||
49 | * `default.pdc` (Input/Output constraint) |
||
50 | * `MINI-LFR_PlaceAndRoute.sdc` (Timing constraint) |
||
51 | |||
52 | ![image](./README_dir/Capture5.PNG "Constraints") |
||
53 | |||
54 | |||
55 | #### 2.2.1 Compile Step #### |
||
56 | ![image](./README_dir/Capture6.PNG "Compile Step") |
||
57 | |||
58 | Run the Compile step. |
||
59 | |||
60 | #### 2.2.2 Layout Step #### |
||
61 | ![image](./README_dir/Capture7.PNG "An exemplary image") |
||
62 | |||
63 | Run the Layout step. |
||
64 | |||
65 | In the Layout options windows, select Advanced Layout Options : |
||
66 | |||
67 | ![image](./README_dir/Capture8.PNG "An exemplary image") |
||
68 | |||
69 | And checked those options : |
||
70 | |||
71 | ![image](./README_dir/Capture9.PNG "An exemplary image") |
||
72 | |||
73 | Click Ok and wait... |
||
74 | |||
75 | ![image](./README_dir/Capture10.PNG "An exemplary image") |
||
76 | #### 2.2.3 Timing Analyser #### |
||
77 | |||
78 | Launch theTiming Analyser. |
||
79 | |||
80 | ![image](./README_dir/Capture11.PNG "An exemplary image") |
||
81 | |||
82 | #### 2.2.3.a SpaceWire Output #### |
||
83 | |||
84 | You must verify the SpaceWire output timing for the Max and Min delay. |
||
85 | |||
86 | ![image](./README_dir/Capture12.PNG "An exemplary image") |
||
87 | |||
88 | ![image](./README_dir/Capture19.PNG "An exemplary image") |
||
89 | |||
90 | The ouput skew is equal to Ouput\_SOut timing - Ouput\_DOut timing. This output skew must be positive. |
||
91 | |||
92 | > In this exemple, |
||
93 | > |
||
94 | > SPW\_NOM skew max = 13.907 - 15.882 = -1.975 ns |
||
95 | > |
||
96 | > SPW\_NOM skew min = 6.367 - 7.317 = -0.950 ns |
||
97 | > |
||
98 | > SPW\_RED skew max = 17.937 - 13.510 = 4.427 ns |
||
99 | > |
||
100 | > SPW\_RED skew min = 8.304 - 6.175 = 2.129 ns |
||
101 | > |
||
102 | > The SPW\_NOM interface must be modified. In ChipPlanner, we will move element in the SPW\_NOM path to have a positive skew in min and max delay. |
||
103 | > ![image](./README_dir/Capture13.PNG "An exemplary image") |
||
104 | > ![image](./README_dir/Capture14.PNG "An exemplary image") |
||
105 | |||
106 | #### 2.2.3.b SpaceWire Input #### |
||
107 | |||
108 | You must also verify the SpaceWire input timing. For that, you must add a new set for SPW_INPUT: |
||
109 | |||
110 | ![image](./README_dir/Capture15.PNG "An exemplary image") |
||
111 | |||
112 | and configure it like that : |
||
113 | you |
||
114 | ![image](./README_dir/Capture16.PNG "An exemplary image") |
||
115 | |||
116 | You obtain those timing for min and max delay. |
||
117 | |||
118 | ![image](./README_dir/Capture17.PNG "An exemplary image") |
||
119 | |||
120 | ![image](./README_dir/Capture18.PNG "An exemplary image") |
||
121 | |||
122 | You must also add a new set for the FF setup time : |
||
123 | |||
124 | ![image](./README_dir/Capture20.PNG "An exemplary image") |
||
125 | |||
126 | ![image](./README_dir/Capture21.PNG "An exemplary image") |
||
127 | |||
128 | In resume, for the input SPW_NOM interface : |
||
129 | |||
130 | |||
131 | <table> |
||
132 | <thead> |
||
133 | <tr> |
||
134 | <th>header 1</th> |
||
135 | <th align="center">header 2</th> |
||
136 | <th align="right">header 3</th> |
||
137 | </tr> |
||
138 | </thead> |
||
139 | <tbody> |
||
140 | <tr> |
||
141 | <td>line 1</td> |
||
142 | <td align="center">1</td> |
||
143 | <td align="right">value</td> |
||
144 | </tr> |
||
145 | <tr> |
||
146 | <td>row 2</td> |
||
147 | <td align="center">2</td> |
||
148 | <td align="right">value</td> |
||
149 | </tr> |
||
150 | <tr> |
||
151 | <td>line 3</td> |
||
152 | <td align="center">3</td> |
||
153 | <td align="right">value</td> |
||
154 | </tr> |
||
155 | </tbody> |
||
156 | </table> |
||
157 | |||
158 | |||
159 | The input skew is equal to Ouput\_SOut timing - Ouput\_DOut timing. This output skew must be positive. |