Mini LFR - Bitstream Generation » History » Version 6
Jean-Christophe Pellion, 01/12/2016 02:58 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 | 6 | Jean-Christophe Pellion | <table border=1> |
133 | 1 | Jean-Christophe Pellion | <thead> |
134 | <tr> |
||
135 | <th>header 1</th> |
||
136 | <th align="center">header 2</th> |
||
137 | <th align="right">header 3</th> |
||
138 | </tr> |
||
139 | </thead> |
||
140 | <tbody> |
||
141 | <tr> |
||
142 | <td>line 1</td> |
||
143 | <td align="center">1</td> |
||
144 | <td align="right">value</td> |
||
145 | </tr> |
||
146 | <tr> |
||
147 | <td>row 2</td> |
||
148 | <td align="center">2</td> |
||
149 | <td align="right">value</td> |
||
150 | </tr> |
||
151 | <tr> |
||
152 | <td>line 3</td> |
||
153 | <td align="center">3</td> |
||
154 | <td align="right">value</td> |
||
155 | </tr> |
||
156 | </tbody> |
||
157 | </table> |
||
158 | |||
159 | |||
160 | The input skew is equal to Ouput\_SOut timing - Ouput\_DOut timing. This output skew must be positive. |