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

Subversion Repositories sxp

[/] [sxp/] [trunk/] [int_cont/] [sim/] [test_int_cont.v] - Blame information for rev 59

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 24 samg
/* Interupt Controller module testbench
2
   SXP Processor
3
   Sam Gladstone
4
*/
5
 
6
`timescale 1ns / 1ns
7
`include "../src/int_cont.v"
8
 
9
module test_int_cont();
10
 
11
reg clk;
12
reg reset_b;
13
reg halt;
14
reg int_req;
15
reg [15:0] int_num;
16
reg safe_switch;
17
reg nop_detect;
18
 
19
wire int_rdy;
20
wire idle;
21
wire int_srv_req;
22
wire jal_req;
23
wire [15:0] int_srv_num;
24
 
25
integer i;
26
integer clk_cnt;
27
 
28
 
29
initial
30
  begin
31
    clk = 1'b 0;
32
    clk_cnt = 0;
33
    #10 forever
34
      begin
35
        #2.5 clk = ~clk;
36
        if (clk)
37
          begin
38
            clk_cnt = clk_cnt + 1;
39
            $display ("R Clk");
40
          end
41
      end
42
  end
43
 
44
int_cont i_int_cont(
45
                .clk(clk),                      // system clock
46
                .reset_b(reset_b),              // system reset
47
                .halt(halt),                    // processor halt signal
48
                .int_req(int_req),              // signal that an interupt is requested
49
                .int_num(int_num),              // interupt number that is being requested
50
                .safe_switch(safe_switch),      // signal that processor is safe to switch
51
                .nop_detect(nop_detect),        // signal that the processor just executed a NOP instruction
52
 
53
                .int_rdy(int_rdy),              // 1 when int req will be serviced when requested 
54
                .idle(idle),            // signal to idle processor;
55
                .jal_req(jal_req),              // signal to fetch to insert the JAL instruction
56
                .int_srv_req(int_srv_req),      // signal that the interupt was serviced 
57
                .int_srv_num(int_srv_num));     // interupt number that was serviced
58
 
59
initial
60
  begin
61
    $dumpfile("./icarus.vcd");
62
    $dumpvars(1,i_int_cont);
63
  end
64
 
65
initial
66
  begin
67
    halt = 1'b 0;
68
    int_req = 1'b 0;
69
    int_num = 1'b 0;
70
    safe_switch = 1'b 0;
71
    nop_detect = 1'b 0;
72
 
73
    reset_b = 1'b 1;
74
    @(negedge clk);
75
    reset_b = 1'b 0;
76
    @(negedge clk);
77
    reset_b = 1'b 1;
78
 
79
    @(negedge clk);
80
    @(negedge clk);
81
    @(negedge clk);
82
 
83
    // Start with interupt request
84
    $display ("Asserting request line");
85
    int_req = 1'b 1;
86
    int_num = 16'd 16;
87
    @(negedge clk);
88
    int_num = 16'b 0;
89
    int_req = 1'b 0;
90
    // Next rdy line should drop and idle goes high
91
    @(negedge clk);
92
    $display ("nop_cnt = %d",i_int_cont.nop_cnt);
93
    @(negedge clk);
94
    $display ("nop_cnt = %d",i_int_cont.nop_cnt);
95
    @(negedge clk);
96
    $display ("nop_cnt = %d",i_int_cont.nop_cnt);
97
    safe_switch = 1'b 1;
98
    $display ("Bringing safe switch high");
99
    @(negedge clk);
100
    $display ("nop_cnt = %d",i_int_cont.nop_cnt);
101
    nop_detect = 1'b 1;
102
    $display ("Bringing nop_detect high");
103
    @(negedge clk);
104
    $display ("nop_cnt = %d",i_int_cont.nop_cnt);
105
    @(negedge clk);
106
    $display ("nop_cnt = %d",i_int_cont.nop_cnt);
107
    @(negedge clk);
108
    @(negedge clk);
109
    @(negedge clk);
110
    @(negedge clk);
111
    @(negedge clk);
112
    @(negedge clk);
113
    $finish;
114
  end
115
 
116
always @(negedge clk)
117
  begin
118
    $display ("state = %d, idle = %b, jal_req = %b, int_rdy = %b",i_int_cont.state,idle,jal_req,int_rdy);
119
  end
120
 
121
endmodule
122
 
123
 
124
/*  $Id: test_int_cont.v,v 1.1 2001-10-28 17:02:03 samg Exp $
125
 *  Module : test_int_cont
126
 *  Author : Sam Gladstone
127
 *  Function : testbench for SXP interupt controller
128
 *  $Log: not supported by cvs2svn $
129
 */

powered by: WebSVN 2.1.0

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