Project

General

Profile

Mini LFR - Bitstream Generation » History » Version 7

Jean-Christophe Pellion, 01/12/2016 03:33 PM

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