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