Exercise Sheet 1

Transcription

Exercise Sheet 1
Übungen zu Algorithmen und Methoden zur Entwurfsautomatisierung in der Nano- und Mikroelektronik
Prof. Dr. H.-J. Wunderlich/ Dipl.-Inf. G. Bartsch, Dipl.-Inf. T. Bergmann,
SS 2006
Dipl.-Inf. S. Holst, Dipl.-Inf. M. Imhof, Dipl.-Ing. C. Zoellin
ITI
Exercise Sheet 1
1. High-Level Synthesis
The Disydent (http://www-asim.lip6.fr/recherche/disydent/) tools help to go from the
high level description to the actual embedded application implementation verifying the constraints. Among
other tools they contain a high-level synthesis tool chain called UGH (User Guided High-level synthesis)
which will be used to synthesize C-Code into VHDL in this exercise.
In this exercise we want to synthesize this piece of C-Code which implements a GCD (greatest common
divisor) function:
#include <ugh.h>
/*** the communication channels ***/
ugh_inChannel32
work2hcf;
ugh_outChannel16 hcf2work;
/*** registers ***/
uint16 a,b;
uint32 x;
/*** behavior ***/
inline void hcf(void)
{
while (a!=b) {
if (a==b)
break;
else if (a<b)
b = b-a;
else
a = a-b;
}
}
int ugh_main()
{
while (1) {
ugh_read(work2hcf,&x);
a= x&0xffff;
b= (x>>16)&0xffff;
hcf();
ugh_write(hcf2work,&a);
}
}
Note: You can find the source code necessary for this exercise in /cad/tools/amen/hls
The Hcfprocessor.ddp describes this Draft Data Path:
Verification. The ughcgs command verifies if the inputs are coherent and builds the data path by
Übungen zu Algorithmen und Methoden zur Entwurfsautomatisierung in der Nano- und Mikroelektronik
Prof. Dr. H.-J. Wunderlich/ Dipl.-Inf. G. Bartsch, Dipl.-Inf. T. Bergmann,
SS 2006
Dipl.-Inf. S. Holst, Dipl.-Inf. M. Imhof, Dipl.-Ing. C. Zoellin
ITI
concurrent exploration of the behavior and the DDPS.
ughcgs -load Hcfprocessor -C "-I$DISYDENT_DIR/$SYSTEM/include" -save
Hcfprocessor.sl
If the verification is successful, it generates a Hcfprocessor.sl file that contains the data path and a
coarse grain Finite State Machine needed to continue the synthesis. Optimization: The ughbo command
optimizes the CDFG of the description of the Hcfprocessor.sl file.
ughbo -f Hcfprocessor.sl
Making the control unit: The ughfgs command generates the control unit for the clock period given by
the -c switch . In our case, the requested frequency of operation in the specification of the problem is 80
MHz, leading to a 12 ns period. The computed control unit is appended to the Hcfprocessor.sl file.
ughfgs -f Hcfprocessor.sl -ck 12
Obtaining the `VHDL' description of the processor: The ugh2vhdl command builds from the
Hcfprocessor.sl file a `VHDL' description of the entire processor.
ugh2vhdl -all -dir physical -dialect syno -load Hcfprocessor.sl -nr
Exercise: Try to model Bresenham's Algorithm:
int dx := x2-x1
int dy := y2 - y1
int dT := 2*(dy - dx)
int dS := 2*dy
int d
:= 2*dy - dx
point(x, y)
while x < x2 loop
x := x + 1
if d < 0 then
d := d + dS
else
y := y + 1
d := d + dT
end if
point(x, y)
end loop
Übungen zu Algorithmen und Methoden zur Entwurfsautomatisierung in der Nano- und Mikroelektronik
Prof. Dr. H.-J. Wunderlich/ Dipl.-Inf. G. Bartsch, Dipl.-Inf. T. Bergmann,
SS 2006
Dipl.-Inf. S. Holst, Dipl.-Inf. M. Imhof, Dipl.-Ing. C. Zoellin
ITI
2. RT-Level Synthesis
In this exercise we want to synthesize and simulate a simple VHDL Counter example using a testbench.
Note: you find the necessary sources for this exercise in
/cad/tools/amen/counter/
First start the eclipse framework
eclipse
Press OK when it asks you about your default workspace location. Select Workbench on the welcome
screen. Open the Signs perspective by clicking Window->Open Perspective->Other. Select
SignsPerspective and click OK. Create a new Signs project by clicking File->New->Signs Project. Type
counter as project name and select Finish.
To copy the VHDL source files into your newly created project, select File->Import->File system->Next
and navigate to the above mentioned directory. Select both VHDL files and choose Finish.
Examine both VHDL files by double-clicking on them.
To elaborate the test bench, select Net List Viewer and click on the little bee ( “Elaborate... ” ). Open the
hierarchy and select counter->WORK.lib->COUNTER_TB, click OK. Inside the netlist viewer you can
browse into sub-components by double-clicking on them and navigate up using the Up-Arrow in the
toolbar.
To simulate the test bench, choose the Simulator tab, click on the little bee ( “ Simulate... ” ) and select the
counter testbench as described above. Click on the eye-button ( “ Trace... ” ) in the toolbar and shift-select
all testbench signals and click OK. Click the run-button several times to simulate the design.
Übungen zu Algorithmen und Methoden zur Entwurfsautomatisierung in der Nano- und Mikroelektronik
Prof. Dr. H.-J. Wunderlich/ Dipl.-Inf. G. Bartsch, Dipl.-Inf. T. Bergmann,
SS 2006
Dipl.-Inf. S. Holst, Dipl.-Inf. M. Imhof, Dipl.-Ing. C. Zoellin
ITI
3. Exporting a Flat Netlist in ISCAS Format
While still in Eclipse/Signs, go back to the netlist viewer, double click on the counter instance and click on
the little bulldozer ( “ process netlist ” ). Control-Select Constant Propagation and Dissolve, click on OK.
Click on the little floppy disk ( “ Export... ” ) and type in a filename ending with the extension .bench.
Übungen zu Algorithmen und Methoden zur Entwurfsautomatisierung in der Nano- und Mikroelektronik
Prof. Dr. H.-J. Wunderlich/ Dipl.-Inf. G. Bartsch, Dipl.-Inf. T. Bergmann,
SS 2006
Dipl.-Inf. S. Holst, Dipl.-Inf. M. Imhof, Dipl.-Ing. C. Zoellin
ITI
4. Optimization with SIS
In this exercise we want to use SIS to optimize the synthesized counter from the previous exercise.
First, we have to convert the .bench file from Signs into a .blif file suitable for sis. Print the help and
generate a blif file from your .bench file:
user@rantanplan:~$ perl /cad/tools/amen/counter/iscas2blif.pl -h
now start SIS:
user@rantanplan:~/tmp$ sis
UC Berkeley, SIS 1.3.6 (compiled 2005-06-01 13:14:41)
sis>
You can display the list of other commands in sis using help. Every command has a short usage, which is
printed if you enter the command without options. Now read in the .blif file:
sis> read_blif counter.blif
You will encounter some warning which you can safely ignore.
Now we execute the rugged script provided with SIS, step by step. After every step, you might want to have
a look at the resulting net-list statistics using print_stats and the net-list itself with write_blif -n
sweep; eliminate -1
simplify -m nocomp
eliminate -1
sweep; eliminate 5
simplify -m nocomp
resub -a
fx
resub -a; sweep
eliminate -1; sweep
full_simplify -m nocomp
Write the net-list to a blif-file again:
sis> write_blif -n counter_opt.blif
Übungen zu Algorithmen und Methoden zur Entwurfsautomatisierung in der Nano- und Mikroelektronik
Prof. Dr. H.-J. Wunderlich/ Dipl.-Inf. G. Bartsch, Dipl.-Inf. T. Bergmann,
SS 2006
Dipl.-Inf. S. Holst, Dipl.-Inf. M. Imhof, Dipl.-Ing. C. Zoellin
ITI
5. Technology mapping
If you look into the just generated counter_opt.blif, you'll notice, that it contains rather complex
operations which are specified using truth-tables. Modeling these using a predefined set of available
primitive gates is called technology mapping. First, the set of available gates and its functions have to be
specified. As a starting point, we copy together the necessary gates from SIS' integrated technology
libraries:
user@rantanplan:~$ cp
/cad/sis/1.3.6/share/sis/sis_lib/mcnc.genlib counter.genlib
user@rantanplan:~$ cat
/cad/sis/1.3.6/share/sis/sis_lib/mcnc_latch.genlib >>counter.genlib
Open the resulting counter.genlib a in an editor and check, which gates are defined in this library. To
perform the mapping using this library, start SIS again and execute the following commands:
read_blif counter_opt.blif
read_library counter.genlib
map
phase -g
write_blif -n counter_mapped.blif
Use print_stats, print_map_stats and print_delay to review the results.
Optional: Using the command line tool blif2vst, you can now create a structural VHDL model of the
mapped net list file:
blif2vst counter.genlib counter_mapped.blif counter_opt.vhdl
To successfully simulate this VHDL, you have to implement the gates used by SIS. To ease this task, you
can remove unnecessary gates from your library and perform the technology mapping again. Modify the test
bench used in task 2 to simulate the optimized counter.
Übungen zu Algorithmen und Methoden zur Entwurfsautomatisierung in der Nano- und Mikroelektronik
Prof. Dr. H.-J. Wunderlich/ Dipl.-Inf. G. Bartsch, Dipl.-Inf. T. Bergmann,
SS 2006
Dipl.-Inf. S. Holst, Dipl.-Inf. M. Imhof, Dipl.-Ing. C. Zoellin
ITI
6. Spice simulation
Now we would like to do analog simulation of the optimized netlist.
perl /cad/tools/amen/counter/blif2spice.pl -i counter_opt.blif -o
counter.sp

Documents pareils