OpenCores
URL https://opencores.org/ocsvn/socgen/socgen/trunk

Subversion Repositories socgen

[/] [socgen/] [trunk/] [doc/] [src/] [guides/] [guide_database.html] - Blame information for rev 85

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 20 jt_eaton
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2
<html>
3
<head>
4
  <meta http-equiv="CONTENT-TYPE" content="text/html; charset=UTF-8">
5 27 jt_eaton
  <title>Design Database Management</title>
6 20 jt_eaton
  <meta name="GENERATOR" content="OpenOffice.org 3.0  (Linux)">
7
  <meta name="CREATED" content="0;0">
8
  <meta name="CHANGED" content="20100309;9302100">
9
  <meta name="KEYWORDS" content="start">
10
  <meta name="Info 3" content="">
11
  <meta name="Info 4" content="">
12
  <meta name="date" content="2008-01-08T12:01:41-0500">
13
  <meta name="robots" content="index,follow">
14
</head>
15
<body dir="ltr" lang="en-US">
16 49 jt_eaton
<h1><a name="socgen_project"></a><font size="+3">SOCGEN Project</font></h1>
17
<h2><br>
18
</h2>
19
The mission of the SOCGEN project is to provide a blueprint showing
20
digital designers how to create a System_on_chip (SOC) by
21 56 jt_eaton
assembling&nbsp; components from a variety of sources. It will
22 49 jt_eaton
show how to create a component that can be reused and provides&nbsp; a
23
free opensourced tool set&nbsp; that can be used to assemble and verify
24
a design. It employs modern design for reuse techniques to reduce the
25 56 jt_eaton
waste and inefficiencies that is inherent in handcrafting a design. <br>
26 49 jt_eaton
<br>
27
<br>
28
<br>
29
<br>
30
<br>
31
<br>
32 56 jt_eaton
<h2><a name="manifesto"></a><font size="+2">Principles for Creating
33
Reusable Design</font>s<br>
34 49 jt_eaton
</h2>
35 20 jt_eaton
<p><br>
36
</p>
37
<br>
38 49 jt_eaton
<h2><font size="+1">Plan ahead<br>
39
</font></h2>
40
You may start a design with the intent that it is only going to be used
41
for one specific purpose only to find out later that other designers
42
want to use it. Create all designs with the intent that they will be
43
reused in ways that you haven't imagined and you won't have to scramble
44
later.&nbsp; <br>
45
<br>
46 54 jt_eaton
<br>
47
<h2><font size="+1">Maintain the design<br>
48
</font></h2>
49
Releasing a chip to production is not the end of the job. You must
50
still continue to maintain the design. You cannot archive a chip data
51
base into offline storage and simply put it on the shelf. Do you really
52
think that you can pull it down 20 years later and recreate the chip?
53
Bit Rot is real. Even if you can read the bits off the magtape that you
54
used to use then you will find that you can no longer get the same
55
version of the tools that you used &nbsp; to build the chip. The
56
original IC process will be long gone and the current ones have added
57
new requirements that your code doesn't meet.<br>
58
<br>
59
When you finish a chip you archive an exact copy of all the data and
60
freeze that forever. Your design then continues to live on.&nbsp; When
61
you get a new version of a tool you rebuild and test&nbsp; everything
62
and fix problems. As new processes come online you retarget the design
63
to use them. As component ip is reved you upgrade and run the test
64
suite.<br>
65
<br>
66
Then when your original product is winding down and someone wants a
67
follow up product then you have a head start.<br>
68
<br>
69
<br>
70
<h2><font><font size="+1">Design for the lowest common denominator</font></font></h2>
71 49 jt_eaton
Everybody loves to use some quirky little feature of the design target
72 54 jt_eaton
to squeeze a little extra performance out of the system. But if you do
73 49 jt_eaton
then you are locked into that target and cannot easily reuse the design
74
on a different target. Why do you think they put those features in the
75
first place? Instead you should survey the field and only use the
76
features that all target technologies can match<br>
77
<br>
78
<br>
79
<h2><font><font><font><font size="+1">Design in a completely generic
80
technology<br>
81
</font></font></font></font></h2>
82
Design is a two step process. First the design is created and verified
83 54 jt_eaton
in a completely generic behavioral RTL format and then converted into
84 49 jt_eaton
the target technology. It is tempting to try to save time be designing
85
in the target technology but this will make it harder to reuse.<br>
86
<br>
87
<br>
88
<h2><font><font><font><font><font><font><font><font size="+1">Automate
89
Everything</font></font></font></font></font></font></font></font><br>
90
</h2>
91
<p>
92
Handcrafting a design file is a time consuming and error prone
93
operation. Tasks that are preformed on every design should be done by a
94
tool.&nbsp; The designers job is to create the configuration files
95
needed by the tools and let automation do all the work.<br>
96 20 jt_eaton
</p>
97
<p><br>
98 49 jt_eaton
</p>
99
<h2><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font
100
 size="+1">Do not keep duplicate copies of a file in the database</font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></h2>
101 85 jt_eaton
<br>
102
Quotes and Thoughts<br>
103
------------------<br>
104
"Every piece of knowledge must have a single, unambiguous,
105
authoritative representation within a system." From The Pragmatic
106
Programmer<br>
107
<br>
108
<br>
109
Not&nbsp; doing so makes it difficult to ensure that bug fixes and
110
enhancements
111
created by one user can be made available to all users. Every piece of
112
data&nbsp;
113 49 jt_eaton
should have one and only one location in the database<br>
114
<br>
115 56 jt_eaton
<br>
116 49 jt_eaton
<h2><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font
117
 size="+1">Do not build&nbsp; the design inside of an RCS database.</font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></h2>
118
It is really hard to keep track of all the new files that you have
119 54 jt_eaton
added that you need to check into the Revision Control System&nbsp; if
120
they are buried by
121 49 jt_eaton
gigabytes of generated files from the build process. Use symbolic links
122
to create a work area where generated files are kept outside the
123 54 jt_eaton
database.Never check a generated file in an RCS repository. They should
124
only
125
contain the minimal seed data needed to rebuild the entire design. It
126
should never contain any files that were generated by the build
127
process. <br>
128 49 jt_eaton
<br>
129 56 jt_eaton
<br>
130 49 jt_eaton
<p>
131 20 jt_eaton
</p>
132 49 jt_eaton
<p></p>
133
<h2><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font
134
 size="+1">Store files based on their source and not their use.</font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></h2>
135
Are you creating a chip using IP from Joe's IP Emporium? Why not create
136
a spot inside your chip database for Joes files? Because that is not
137
planning ahead. Later if your lab starts another chip that also uses
138
Joes IP then they will also need access to those files. Create a spot
139
for files where everybody can simply access them by linking the desired
140
files into there database<font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font
141 56 jt_eaton
 size="+1">.<br>
142
<br>
143
<br>
144
</font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font>
145 49 jt_eaton
<p></p>
146
<h2><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font
147 56 jt_eaton
 size="+1">Do not mix unlike objects in the same file.</font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></h2>
148 54 jt_eaton
"Unlike" is a deliberately nebulous term. It can mean anything and
149 49 jt_eaton
everything. If you have a instance of a hard macro that is
150
unsynthesizable then do not put it in a file along with synthesisable
151
rtl code. If you have code belonging to one designer then do not mix it
152
with code belonging to another. If you do then you have to worry about
153
file locking. Fragment the design so that each object is in it's own
154 56 jt_eaton
file and then use a tool to put them back together.<br>
155 49 jt_eaton
<br>
156
<br>
157 54 jt_eaton
<h2></h2>
158
<h2><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font
159
 size="+1">Layer the design.</font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></h2>
160
<font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font><font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font>
161 49 jt_eaton
<p>A full design will consist of several different databases that are
162 54 jt_eaton
layered. Upper ones may override any content from a lower layer.&nbsp;
163
Requirements created by the Component Designers are only minimums, The
164
Architects and Si-Makers are free to override and tighten any
165
requirement from any lower level.&nbsp; Parameters should be used to
166
give the downstream&nbsp; designers the ability to tune the design for
167
the target process.<br>
168 49 jt_eaton
</p>
169 20 jt_eaton
<p><br>
170
<br>
171
</p>
172 49 jt_eaton
<br>
173
<br>
174
<br>
175 56 jt_eaton
<br>
176
<br>
177 81 jt_eaton
<h2><a name="manifesto"></a>Design Directory<br>
178
</h2>
179 49 jt_eaton
<p></p>
180
<p></p>
181
<br>
182 20 jt_eaton
<p><img style="width: 800px; height: 600px;" alt=""
183
 src="../png/data_fig1.png"><br>
184
<br>
185
</p>
186
<p><br>
187
<br>
188
</p>
189
<p><br>
190
</p>
191
<br>
192
<p><br>
193
</p>
194 54 jt_eaton
<h2>DOC<br>
195
</h2>
196
The documentation&nbsp; directory.
197 20 jt_eaton
<br>
198
<br>
199
<p><br>
200
</p>
201
<h2>TOOLS<br>
202
</h2>
203
<p>The tools directory contains all of the socgen tools needed to build
204 54 jt_eaton
, simulate and synthesize all of the systems and components in the
205 20 jt_eaton
database. Scripts and installation instructions are provided for any
206
other opensource tools that may be required. There are also
207 54 jt_eaton
instructions for any proprietary tools that are used.<br>
208 20 jt_eaton
</p>
209
<br>
210 56 jt_eaton
<br>
211
<h2>LIB</h2>
212
<p>A library is a collection of building blocks&nbsp; that may not be
213
synthesizable in
214
all target technologies and may require customizations. The use of lib
215
parts in the rtl code will
216
facilitate porting a component into different technologies.</p>
217
<br>
218 20 jt_eaton
<h2>BENCH<br>
219
</h2>
220
<p>A testbench is used for all simulations and test suites. Any system
221
or component may be simulated. Components can only do generic rtl sims
222
while systems may do either generic rtl ,specific rtl or gate sims.
223
Generic rtl models are included in the socgen library, specific ones
224
must be obtained from the IC vendor.<br>
225
</p>
226
<p><br>
227
</p>
228 56 jt_eaton
<br>
229
<h2>TARGETS</h2>
230
<p>A target is a specific physical design that can implement a
231
component. Targets can be asic or fpga and include a Printed circuit
232
board(PCB) that may include other electronic components. The goal for
233
all components is to assign them to at least one target and prove that
234
the work in silicon<br>
235 54 jt_eaton
</p>
236 56 jt_eaton
<p>
237
</p>
238 54 jt_eaton
<p><br>
239
</p>
240 81 jt_eaton
<p><br>
241
</p>
242
<p><br>
243
<br>
244
</p>
245
<h2>WORK<br>
246
</h2>
247
<p>The work directory is a composite image of the projects directory
248
plus any additional links needed for simulation and synthesis. All
249
design processes are run in this directory and it contains all the
250
generated files that are produced.<br>
251
</p>
252
<p><br>
253
</p>
254
<br>
255
<p><br>
256
<br>
257
</p>
258 56 jt_eaton
<h2>PROJECTS</h2>
259 54 jt_eaton
<p>A project is a collection of components. A database must define at
260
least one project to create an area where components may be stored.
261
Other projects may be created as needed to group similar components
262 56 jt_eaton
together and reducing clutter. <br>
263
</p>
264 54 jt_eaton
<p><br>
265 20 jt_eaton
<br>
266 81 jt_eaton
<br>
267
<br>
268 54 jt_eaton
</p>
269 81 jt_eaton
<h2><a name="manifesto"></a>Project Directory<br>
270
</h2>
271 54 jt_eaton
<p><br>
272 56 jt_eaton
<img style="width: 800px; height: 600px;" alt=""
273
 src="../png/data_fig2.png"><br>
274 54 jt_eaton
</p>
275 56 jt_eaton
<p></p>
276 20 jt_eaton
<br>
277
<br>
278
<p><br>
279
<br>
280
</p>
281
<p><br>
282
<br>
283
</p>
284 81 jt_eaton
<h2>SW<br>
285 56 jt_eaton
</h2>
286 81 jt_eaton
<p>The sw directory contains the source files and build scripts for any
287
bit images needed for the design<br>
288 56 jt_eaton
</p>
289 20 jt_eaton
<p><br>
290 56 jt_eaton
</p>
291 20 jt_eaton
<br>
292 81 jt_eaton
<h2>BIN<br>
293
</h2>
294
<p>A project is a collection o. <br>
295 20 jt_eaton
</p>
296
<p><br>
297 81 jt_eaton
</p>
298
<p><br>
299
</p>
300
<p><br>
301 20 jt_eaton
<br>
302
</p>
303 81 jt_eaton
<h2>CHILDREN<br>
304
</h2>
305
<p>A project is a collection o. <br>
306
</p>
307 20 jt_eaton
<p><br>
308
<br>
309
</p>
310 81 jt_eaton
<h2>IP<br>
311
</h2>
312
<p>A project is a collection o. <br>
313
</p>
314 20 jt_eaton
<p><br>
315 81 jt_eaton
</p>
316
<p><br>
317
</p>
318
<p><br>
319
</p>
320
<p><br>
321
</p>
322
<p><br>
323
</p>
324
<h2><a name="manifesto"></a>Component Directory</h2>
325 20 jt_eaton
<br>
326 81 jt_eaton
<br>
327
<img style="width: 800px; height: 600px;" alt=""
328
 src="../png/data_fig3.png"><br>
329
<br>
330
<br>
331
<br>
332
<br>
333
<br>
334
<br>
335
<p><br>
336 20 jt_eaton
</p>
337 81 jt_eaton
<h2>RTL<br>
338
</h2>
339
<p>A <br>
340
</p>
341
<h2><small>RTL</small><br>
342
</h2>
343
<p>A </p>
344
<h2><small>RTL</small><br>
345
</h2>
346
<p>A </p>
347
<br>
348
<h2><small>RTL</small><br>
349
</h2>
350
<p>A </p>
351
<h2><small>RTL</small><br>
352
</h2>
353
<p>A </p>
354
<h2><small>RTL</small><br>
355
</h2>
356
<p>A </p>
357 20 jt_eaton
<p><br>
358 81 jt_eaton
</p>
359
<p><br>
360
</p>
361
<p><br>
362 20 jt_eaton
<br>
363
</p>
364
<p><br>
365
<br>
366
</p>
367 81 jt_eaton
<h2>SIM<br>
368
</h2>
369
<p>A project is a collection o. </p>
370
<p></p>
371 20 jt_eaton
<p><br>
372
<br>
373
</p>
374
<p><br>
375 81 jt_eaton
</p>
376
<h2>SYN<br>
377
</h2>
378
<p>A project is a collection o. <br>
379
</p>
380
<p><br>
381 20 jt_eaton
<br>
382
</p>
383 81 jt_eaton
<h2>DOC<br>
384
</h2>
385
<p>A project is a collection o. </p>
386
<p></p>
387
<p><br>
388
</p>
389
<p><br>
390
</p>
391
<p><br>
392
</p>
393 20 jt_eaton
</body>
394
</html>

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.