Quote:
Originally Posted by Moneypulation
Kenne mich (leider :feelsbadman:) etwas mit bluespec aus, was auch ne ähnliche HDL ist. Worum gehts denn?
|
Einige Schwierigkeiten mit komplexen Testbenches in Verilog (mit/ohne Parameter). Bereits einige geschrieben, aber wenn ich mir dann die aus der letzten Vorbereitung anschaue, denke ich mir, dass ich das so nicht in kurzer Zeit gelöst bekommen hätte.
Genauer gesagt geht es um diesen Fall:
Code:
module acc #(parameter WIDTH = 4,
2 parameter DEPTH = 2)
3 (input logic [WIDTH*DEPTH -1:0] O,
4 output logic [WIDTH+$clog2(DEPTH ) -1:0] R);
logic [WIDTH+$clog2(DEPTH ) -2:0] sh , sl;
7 assign R = sh + sl;
8
9 generate
10
11 if (DEPTH > 2) begin
12 acc #(WIDTH , DEPTH /2) ahigh (O[ DEPTH *WIDTH -1:( DEPTH /2)* WIDTH], sh);
13 acc #(WIDTH , DEPTH /2) alow (O[( DEPTH /2)* WIDTH -1: 0 *WIDTH], sl);
14
15
16 end else begin
17 assign sh = O[1* WIDTH +: WIDTH ];
18 assign sl = O[0* WIDTH +: WIDTH ];
19 end
20 endgenerate
21
22 endmodule
Quelle des Codes für die Übung/Vorbereitung: Technische Universität Darmstadt (Name des Profs/Tutoren im Spoiler)
>> Testbench bezüglich dem Code oben:
Code:
`timescale 1 ns / 10 ps
2 module acc_tb;
3
4 localparam WIDTH = 2;
5
6
7 initial begin
8 $dumpfile("acc_tb.vcd");
9 $timeformat(-9, 0, " ns", 8);
10 $dumpvars;
11 #(2**( WIDTH *8)+2);
12 $display("FINISHED acc_tb");
13 $finish;
14 end
15
16
17 genvar n;
18 generate
19 for (n=1; n <=3; n=n+1) begin
20 localparam DEPTH = 2**n;
21
22 // Unit under test
23 logic [WIDTH*DEPTH -1:0] o;
24 logic [WIDTH+n -1:0] r, a;
25 acc #(WIDTH , DEPTH) uut (o, r);
26
27
28 int i,k;
29 initial begin
30 #1 $display("START pass for DEPTH =%0d", DEPTH );
31
32 for (i=0; i <2**( WIDTH*DEPTH ); i++) begin
33 o = i; #1;
34
35
36 a = 0;
37 for (k=0; k<DEPTH; k++) a += o[k*WIDTH +: WIDTH ];
38 if (r!=a) $display("[%0d] %t: expected %4d but got %4d",DEPTH ,$time ,a,r);
39 end
40
41 $display("FINISHED pass for DEPTH =%0d", DEPTH );
42 end
43 end
44 endgenerate
45 endmodule
Quelle des Codes für die Übung/Vorbereitung: Technische Universität Darmstadt (Andreas Engel, Raad Bahmani)
@
[Only registered and activated users can see links. Click Here To Register...] Ob Sie mir hierbei behilflich sein können?