Project

General

Profile

Mini LFR - Bitstream Generation » History » Version 15

Jean-Christophe Pellion, 02/12/2016 12:14 PM

1 15 Jean-Christophe Pellion
{{>toc}}
2
# Mini LFR - Bitstream Generation Procedure 
3 1 Jean-Christophe Pellion
4 15 Jean-Christophe Pellion
5
6
7
8 1 Jean-Christophe Pellion
9
## 1 Generates scripts files ##
10
11
Clean the project directory, and run the makefile scripts command to generate all project's files.
12
13
```bash
14
# clean the project and re-generates the scripts
15
$> make distclean scripts
16
```
17
18
The files MINI\_LFR\_top\_libero.prj should be created.
19
20
## 2 Launch Libero IDE ##
21
22
Open the project MINI\_LFR\_top\_libero.prj with Libero IDE v9.1.
23 3 Jean-Christophe Pellion
!["Libero IDE v9.1"](Capture1.PNG)
24 1 Jean-Christophe Pellion
25
### 2.1 Synthesis ###
26
Synthesis tools should be configured to use **Synplify** version **2012-03A-SP1-2**.
27
28 6 Jean-Christophe Pellion
Launch the synthesis step (You must not add constraint file).
29 1 Jean-Christophe Pellion
In the synplify Pro windows, click on the Run button.
30
31
The project status obtained should be :
32
33
!["Synplify Project Status"](Capture2.PNG)
34
35
> You must verfify the block RAM's usage. The expected value is 100.
36 6 Jean-Christophe Pellion
>
37 1 Jean-Christophe Pellion
> If it's around 60/70, LEON3 processor is not mapped. In this case, you must clean your project and restart the generation procedure.
38
39
You can close Synplify and return to Libero.
40
41
42
If the Sythesis step is green like that :
43
44 5 Jean-Christophe Pellion
You must activate the option `Detect new files on disk automatically` in the project settings.
45 1 Jean-Christophe Pellion
46 6 Jean-Christophe Pellion
![](Capture3.PNG)
47 1 Jean-Christophe Pellion
48 6 Jean-Christophe Pellion
![](Capture4.PNG)
49 1 Jean-Christophe Pellion
### 2.2 Place&Route ###
50
51
Launch the Place&Route step. You must add the constraint files :
52
53 6 Jean-Christophe Pellion
  * `default.pdc` (Input/Output constraint)
54 1 Jean-Christophe Pellion
  * `MINI-LFR_PlaceAndRoute.sdc` (Timing constraint)
55
56 6 Jean-Christophe Pellion
![](Capture5.PNG)
57 1 Jean-Christophe Pellion
58
59
#### 2.2.1 Compile Step ####
60 6 Jean-Christophe Pellion
![](Capture6.PNG)
61 1 Jean-Christophe Pellion
62 6 Jean-Christophe Pellion
Run the Compile step.
63 1 Jean-Christophe Pellion
64
#### 2.2.2 Layout Step ####
65 6 Jean-Christophe Pellion
![](Capture7.PNG)
66 1 Jean-Christophe Pellion
67
Run the Layout step.
68
69
In the Layout options windows, select Advanced Layout Options :
70
71 6 Jean-Christophe Pellion
![](Capture8.PNG)
72 1 Jean-Christophe Pellion
73 6 Jean-Christophe Pellion
And checked those options :
74 1 Jean-Christophe Pellion
75 6 Jean-Christophe Pellion
![](Capture9.PNG)
76 1 Jean-Christophe Pellion
77
Click Ok and wait...
78
79 6 Jean-Christophe Pellion
![](Capture10.PNG)
80 1 Jean-Christophe Pellion
#### 2.2.3 Timing Analyser ####
81
82
Launch theTiming Analyser.
83
84 6 Jean-Christophe Pellion
![](Capture11.PNG)
85 1 Jean-Christophe Pellion
86
#### 2.2.3.a SpaceWire Output ####
87
88
You must verify the SpaceWire output timing for the Max and Min delay.
89
90 6 Jean-Christophe Pellion
![](Capture12.PNG)
91 1 Jean-Christophe Pellion
92 6 Jean-Christophe Pellion
![](Capture19.PNG)
93 1 Jean-Christophe Pellion
94
The ouput skew is equal to Ouput\_SOut timing - Ouput\_DOut timing. This output skew must be positive.
95
96
> In this exemple,
97
>
98
> SPW\_NOM skew max = 13.907 - 15.882 = -1.975 ns
99
>
100
> SPW\_NOM skew min = 6.367 - 7.317 = -0.950 ns
101 6 Jean-Christophe Pellion
>
102 1 Jean-Christophe Pellion
> SPW\_RED skew max = 17.937 - 13.510 =  4.427 ns
103 6 Jean-Christophe Pellion
>
104 1 Jean-Christophe Pellion
> SPW\_RED skew min = 8.304 - 6.175 =  2.129 ns
105
>
106
> 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.
107 6 Jean-Christophe Pellion
> ![](Capture13.PNG)
108
> ![](Capture14.PNG)
109 1 Jean-Christophe Pellion
110
#### 2.2.3.b SpaceWire Input ####
111
112
You must also verify the SpaceWire input timing. For that, you must add a new set for SPW_INPUT:
113
114 6 Jean-Christophe Pellion
![](Capture15.PNG)
115 1 Jean-Christophe Pellion
116
and configure it like that :
117
 you
118 6 Jean-Christophe Pellion
![](Capture16.PNG)
119 1 Jean-Christophe Pellion
120
You obtain those timing for min and max delay.
121
122 6 Jean-Christophe Pellion
![](Capture17.PNG)
123 1 Jean-Christophe Pellion
124 6 Jean-Christophe Pellion
![](Capture18.PNG)
125 1 Jean-Christophe Pellion
126
You must also add a new set for the FF setup time :
127
128 6 Jean-Christophe Pellion
![](Capture20.PNG)
129 1 Jean-Christophe Pellion
130 6 Jean-Christophe Pellion
![](Capture21.PNG)
131
132 1 Jean-Christophe Pellion
In resume, for the input SPW_NOM interface :
133
134 7 Jean-Christophe Pellion
<table border=1 width=40% align=center>
135
    	<thead>
136
137
    		<tr>
138
			<th colspan=2> Signal Type </th>		<th> max delay</th>	<th>min delay</th>
139
    		</tr>
140
    	</thead>
141 1 Jean-Christophe Pellion
    	<thead>
142 7 Jean-Christophe Pellion
    		<tr>
143 8 Jean-Christophe Pellion
			<th colspan=4 align="center" bgcolor="#C0C0C0"> SPW_NOM_IN </th>
144 7 Jean-Christophe Pellion
    		</tr>
145
    	</thead>
146
    	<tbody>
147
        	<tr>	<td rowspan=4>r_FF</td> 	<td>Strobe to CLK</td>	<td>7.230 ns</td>	<td>3.497 ns</td>	</tr>
148
		<tr>					<td>Data   to CLK</td>	<td>8.046 ns</td>	<td>3.807 ns</td>	</tr>
149
		<tr>					<td>Data   to D  </td>	<td>1.700 ns</td>	<td>0.692 ns</td>	</tr>
150
		<tr>					<td>D to Q  </td>	<td>0.888 ns</td>	<td>0.413 ns</td>	</tr>
151
152
		<tr>	<td rowspan=4>nr_FF</td> 	<td>Strobe  to CLK</td>	<td>7.315 ns</td>	<td>3.543 ns</td>	</tr>
153
		<tr>					<td>Data    to CLK</td>	<td>8.131 ns</td>	<td>3.853 ns</td>	</tr>
154 1 Jean-Christophe Pellion
		<tr>					<td>Data    to D  </td>	<td>1.767 ns</td>	<td>0.724 ns</td>	</tr>
155
		<tr>					<td>D to Q  </td>	<td>0.888 ns</td>	<td>0.413 ns</td>	</tr>
156
    	</tbody>
157 8 Jean-Christophe Pellion
    	<thead>
158
    		<tr>
159
			<th colspan=4 align="center" bgcolor="#C0C0C0"> SPW_RED_IN </th>
160
    		</tr>
161
    	</thead>
162
    	<tbody>
163
        	<tr>	<td rowspan=4>r_FF</td> 	<td>Strobe to CLK</td>	<td>11.601 ns</td>	<td>6.217 ns</td>	</tr>
164
		<tr>					<td>Data   to CLK</td>	<td>12.845 ns</td>	<td>5.488 ns</td>	</tr>
165
		<tr>					<td>Data   to D  </td>	<td>2.799 ns</td>	<td>1.246 ns</td>	</tr>
166
		<tr>					<td>D to Q  </td>	<td>0.888 ns</td>	<td>0.413 ns</td>	</tr>
167
168
		<tr>	<td rowspan=4>nr_FF</td> 	<td>Strobe  to CLK</td>	<td>11.628 ns</td>	<td>6.236 ns</td>	</tr>
169
		<tr>					<td>Data    to CLK</td>	<td>12.872 ns</td>	<td>5.507 ns</td>	</tr>
170
		<tr>					<td>Data    to D  </td>	<td>2.798 ns</td>	<td>1.246 ns</td>	</tr>
171
		<tr>					<td>D to Q  </td>	<td>0.888 ns</td>	<td>0.413 ns</td>	</tr>
172
    	</tbody>
173 1 Jean-Christophe Pellion
</table>
174
175 8 Jean-Christophe Pellion
176
The input skew is equal to : Time Data to FF + FF Setup Time - min(Time from strobe to CLK; Time from data to CLK). This input skew must be positive.
177
178
<table border=1 width=40% align=center>
179
    	<thead>
180
181
    		<tr>
182
			<th> skew </th>			<th colspan=2>max delay</th>	<th colspan=2>min delay</th>
183
    		</tr>
184
    	</thead>
185
    	<thead>
186
    		<tr>
187
			<th colspan=5 align="center" bgcolor="#C0C0C0"> SPW_NOM_IN </th>
188
    		</tr>
189
    	</thead>
190
    	<tbody>
191
        	<tr>	<td>skew r_FF</td> 	<td>4.642 ns</td>	<td bgcolor="#00FF00">OK</td>	<td>2.392 ns</td>	<td bgcolor="#00FF00">OK</td>	</tr>
192
        	<tr>	<td>skew nr_FF</td> 	<td>4.660 ns</td>	<td bgcolor="#00FF00">OK</td>	<td>2.406 ns</td>	<td bgcolor="#00FF00">OK</td>	</tr>
193
    	</tbody>
194
    	<thead>
195
    		<tr>
196
			<th colspan=5 align="center" bgcolor="#C0C0C0"> SPW_RED_IN </th>
197
    		</tr>
198
    	</thead>
199
    	<tbody>
200
        	<tr>	<td>skew r_FF</td> 	<td>7.914 ns</td>	<td bgcolor="#00FF00">OK</td>	<td>3.829 ns</td>	<td bgcolor="#00FF00">OK</td>	</tr>
201
        	<tr>	<td>skew nr_FF</td> 	<td>7.942 ns</td>	<td bgcolor="#00FF00">OK</td>	<td>3.848 ns</td>	<td bgcolor="#00FF00">OK</td>	</tr>
202
    	</tbody>
203
</table>
204 9 Jean-Christophe Pellion
205
In our case, all SPW input skew are positive.
206
If MIN or MAX skew delay are not positive, you must launch the ChipPlanner tool to move r_FF and nr_FF closest to the CLK source and move XOR gate far away from input pads (SIN, DIN), nrFF:D and r_FF:D.
207 10 Jean-Christophe Pellion
208
You can close the Timing Analyser.
209
210
#### 2.2.4 Chip Planner ####
211
212
Launch ChipPlanner to move element in the netlist and try to fit the timing requirements (skew delay for the SPW\_NOM Output interface).
213
214
![](Capture22.PNG)
215
216
In our case, we want to increase  SPW\_NOM\  output skew. For that, we must increase Ouput\_SOut timing and reduce the Ouput\_DOut timing.
217
218 11 Jean-Christophe Pellion
To reduce the output dout delay, we will select the last FF before the SPW\_NOM\_OUTPUT :
219 10 Jean-Christophe Pellion
220 1 Jean-Christophe Pellion
![](Capture23.PNG)
221 11 Jean-Christophe Pellion
222
and move closest to the ouput PAD :
223 10 Jean-Christophe Pellion
224
![](Capture24.PNG)
225 12 Jean-Christophe Pellion
226
To increase the output SOut delay, we will select the last FF before the SPW\_NOM\_OUTPUT :
227
228
![](Capture25.PNG)
229
230
and move far away from the ouput PAD :
231
232
![](Capture26.PNG)
233
234
Now, you can clicked on `Commit and Check` button and close ChipPlanner.
235
236
You must relaunch the Layout step with those selected options :
237
238
![](Capture27.PNG)
239
240
And finally, checked the timing update with the Timing Analyser.
241
242
### 2.2 Bitstream generation ###
243
244
Click on the Programming File tool.
245
246 13 Jean-Christophe Pellion
![](Capture28.PNG)
247 12 Jean-Christophe Pellion
248
It's done !
249 14 Jean-Christophe Pellion
250
-------