aboutsummaryrefslogtreecommitdiff
path: root/test/passes/to-verilog/rd-mem.fir
blob: 598297772d727ff8cf8892a949f19e9250e1ddc3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
; RUN: firrtl -i %s -o %s.v -X verilog -p c &> %s.out ; cat %s.v | FileCheck %s

circuit top :
   module top :
      output rdata : UInt<32>
      input index : UInt<2>
      input ren : UInt<1>
      input clk : Clock

      mem m : 
         data-type => UInt<32>
         depth => 4
         read-latency => 1
         write-latency => 1
         reader => c
      m.c.addr <= index
      m.c.en <= ren
      m.c.clk <= clk
      rdata <= m.c.data

;CHECK: module top(
;CHECK:    output [31:0] rdata,
;CHECK:    input  [1:0] index,
;CHECK:    input   ren,
;CHECK:    input   clk
;CHECK: );
;CHECK:    reg [31:0] m [0:3];
;CHECK:    wire [31:0] m_c_data;
;CHECK:    wire [1:0] m_c_addr;
;CHECK:    wire  m_c_en;
;CHECK:    wire  m_c_clk;
;CHECK:    reg [1:0] GEN_0;
;CHECK:    reg  GEN_1;
;CHECK:    assign rdata = m_c_data;
;CHECK:    assign m_c_addr = index;
;CHECK:    assign m_c_en = ren;
;CHECK:    assign m_c_clk = clk;
;CHECK:    assign m_c_data = m[GEN_0];
;CHECK: `ifndef SYNTHESIS
;CHECK:   integer initvar;
;CHECK:   initial begin
;CHECK:     #0.002;
;CHECK:    for (initvar = 0; initvar < 4; initvar = initvar+1)
;CHECK:       m[initvar] = {1{$random}};
;CHECK:   end
;CHECK: `endif
;CHECK:    always @(posedge m_c_clk) begin
;CHECK:       GEN_0 <= m_c_addr;
;CHECK:       GEN_1 <= m_c_en;
;CHECK:    end
;CHECK: endmodule