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

Subversion Repositories tiny_tate_bilinear_pairing

[/] [tiny_tate_bilinear_pairing/] [trunk/] [group_size_is_911_bits/] [testbench/] [test_fsm.v] - Blame information for rev 11

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 11 homer.hsin
`timescale 1ns / 1ps
2
`define P 20 // clock period
3
 
4
module test_fsm;
5
 
6
        // Inputs
7
        reg clk;
8
        reg reset;
9
        reg [25:0] rom_q;
10
 
11
        // Outputs
12
        wire [8:0] rom_addr;
13
        wire [5:0] ram_a_addr;
14
        wire [5:0] ram_b_addr;
15
        wire ram_b_w;
16
        wire [10:0] pe;
17
        wire done;
18
 
19
        // Instantiate the Unit Under Test (UUT)
20
        FSM uut (
21
                .clk(clk),
22
                .reset(reset),
23
                .rom_addr(rom_addr),
24
                .rom_q(rom_q),
25
                .ram_a_addr(ram_a_addr),
26
                .ram_b_addr(ram_b_addr),
27
                .ram_b_w(ram_b_w),
28
                .pe(pe),
29
                .done(done)
30
        );
31
 
32
        initial begin
33
                // Initialize Inputs
34
                clk = 0;
35
                reset = 0;
36
 
37
                // Wait 100 ns for global reset to finish
38
                #100;
39
 
40
                // Add stimulus here
41
        #(`P/2); reset = 1; #(`P); reset = 0;
42
 
43
        @(posedge done);
44
        $finish;
45
        end
46
 
47
    initial #100 forever #(`P/2) clk = ~clk;
48
 
49
    /* rom code format
50
     * wire [5:0] dest, src1, src2, times; wire [1:0] op;
51
     * assign {dest, src1, op, times, src2} = rom_q;
52
     */
53
    parameter ADD=2'd0, SUB=2'd1, CUBIC=2'd2, MULT=2'd3;
54
 
55
    always @ (posedge clk)
56
        case(rom_addr)
57
        0: rom_q <= {6'd10, 6'd11, ADD, 6'd1, 6'd12};
58
        1: rom_q <= {6'd20, 6'd21, SUB, 6'd1, 6'd22};
59
        2: rom_q <= {6'd30, 6'd31, CUBIC, 6'd5, 6'd32};
60
        3: rom_q <= {6'd40, 6'd41, MULT, 6'd33, 6'd42};
61
        default: rom_q <= 0;
62
        endcase
63
endmodule
64
 

powered by: WebSVN 2.1.0

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