Skip to content

Commit d44ef08

Browse files
committed
Added benchmark project for Xilinx ISE Design Suite
1 parent fee4237 commit d44ef08

File tree

6 files changed

+562
-0
lines changed

6 files changed

+562
-0
lines changed
+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# intermediate build files
2+
*.bgn
3+
*.bit
4+
*.bld
5+
*.cmd_log
6+
*.drc
7+
*.ll
8+
*.lso
9+
*.msd
10+
*.msk
11+
*.ncd
12+
*.ngc
13+
*.ngd
14+
*.ngr
15+
*.pad
16+
*.par
17+
*.pcf
18+
*.prj
19+
*.ptwx
20+
*.rbb
21+
*.rbd
22+
*.stx
23+
*.syr
24+
*.twr
25+
*.twx
26+
*.unroutes
27+
*.ut
28+
*.xpi
29+
*.xst
30+
*_bitgen.xwbt
31+
*_envsettings.html
32+
*_map.map
33+
*_map.mrp
34+
*_map.ngm
35+
*_map.xrpt
36+
*_ngdbuild.xrpt
37+
*_pad.csv
38+
*_pad.txt
39+
*_par.xrpt
40+
*_summary.html
41+
*_summary.xml
42+
*_usage.xml
43+
*_xst.xrpt
44+
45+
# iMPACT generated files
46+
_impactbatch.log
47+
impact.xsl
48+
impact_impact.xwbt
49+
ise_impact.cmd
50+
webtalk_impact.xml
51+
52+
# Core Generator generated files
53+
xaw2verilog.log
54+
55+
# project-wide generated files
56+
*.gise
57+
par_usage_statistics.html
58+
usage_statistics_webtalk.html
59+
webtalk.log
60+
webtalk_pn.xml
61+
62+
# generated folders
63+
iseconfig/
64+
xlnx_auto_0_xdb/
65+
xst/
66+
_ngo/
67+
_xmsgs/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
//--------------------------------------------------------------------------------
2+
// dynamic_delay.v
3+
// Konstantin Pavlov, [email protected]
4+
//--------------------------------------------------------------------------------
5+
6+
// INFO --------------------------------------------------------------------------------
7+
//
8+
//
9+
// WARNING!
10+
// This is an adapted verilog version of the Dynamic delay module
11+
// Please use original "dynamic_delay.sv" where it is posibble
12+
13+
14+
module dynamic_delay #( parameter
15+
LENGTH = 63, // maximum delay chain length
16+
WIDTH = 4, // data width
17+
18+
SEL_W = $clog2( (LENGTH+1)*WIDTH ) // output selector width
19+
// plus one is for zero delay element
20+
)(
21+
input clk,
22+
input nrst,
23+
input ena,
24+
input [WIDTH-1:0] in, // input data
25+
// bit in[0] is the "oldest" one
26+
// bit in[WIDTH] is considered the most recent
27+
input [SEL_W-1:0] sel, // output selector
28+
output [WIDTH-1:0] out // output data
29+
);
30+
31+
32+
reg [(LENGTH+1)*WIDTH-1:WIDTH] data = 0;
33+
34+
wire [(LENGTH+1)*WIDTH-1:0] pack_data;
35+
assign pack_data[(LENGTH+1)*WIDTH-1:0] =
36+
{ data[(LENGTH+1)*WIDTH-1:WIDTH], in[WIDTH-1:0] };
37+
38+
integer i;
39+
always@(posedge clk) begin
40+
if( ~nrst ) begin
41+
// reset all data except zero element
42+
for( i=2; i<(LENGTH+2); i=i+1 ) begin
43+
data[i*WIDTH-1-:WIDTH] <= 0;
44+
end
45+
end else if (ena) begin
46+
for( i=3; i<(LENGTH+2); i=i+1 ) begin
47+
data[i*WIDTH-1-:WIDTH] <= data[(i-1)*WIDTH-1-:WIDTH];
48+
end
49+
// zero element assignment
50+
data[2*WIDTH-1-:WIDTH] <= in[WIDTH-1:0];
51+
end
52+
end
53+
54+
// output selector, sel==0 gives non-delayed output
55+
assign out[WIDTH-1:0] = pack_data[sel[SEL_W-1:0]+:WIDTH];
56+
57+
58+
endmodule

0 commit comments

Comments
 (0)