|
楼主 |
发表于 2021-9-16 17:01:31
|
显示全部楼层
生成的verilog文件内容如下:
module DynamicMemorySearch(
input clock,
input reset,
input io_isWr,
input [3:0] io_wrAddr,
input [3:0] io_data,
input io_en,
output [3:0] io_target,
output io_done
);
reg [3:0] list [0:15]; // @[DynamicMemorySearch.scala 15:17]
reg [31:0] _RAND_0;
wire [3:0] list_memVal_data; // @[DynamicMemorySearch.scala 15:17]
wire [3:0] list_memVal_addr; // @[DynamicMemorySearch.scala 15:17]
wire [3:0] list__T_4_data; // @[DynamicMemorySearch.scala 15:17]
wire [3:0] list__T_4_addr; // @[DynamicMemorySearch.scala 15:17]
wire list__T_4_mask; // @[DynamicMemorySearch.scala 15:17]
wire list__T_4_en; // @[DynamicMemorySearch.scala 15:17]
reg [3:0] index; // @[DynamicMemorySearch.scala 14:22]
reg [31:0] _RAND_1;
wire _T = ~io_en; // @[DynamicMemorySearch.scala 17:14]
wire _T_1 = list_memVal_data == io_data; // @[DynamicMemorySearch.scala 17:33]
wire _T_2 = index == 4'hf; // @[DynamicMemorySearch.scala 17:56]
wire _T_3 = _T_1 | _T_2; // @[DynamicMemorySearch.scala 17:46]
wire done = _T & _T_3; // @[DynamicMemorySearch.scala 17:21]
wire _T_5 = ~done; // @[DynamicMemorySearch.scala 25:19]
wire [3:0] _T_7 = index + 4'h1; // @[DynamicMemorySearch.scala 26:20]
assign list_memVal_addr = index;
assign list_memVal_data = list[list_memVal_addr]; // @[DynamicMemorySearch.scala 15:17]
assign list__T_4_data = io_data;
assign list__T_4_addr = io_wrAddr;
assign list__T_4_mask = 1'h1;
assign list__T_4_en = io_isWr;
assign io_target = index; // @[DynamicMemorySearch.scala 29:13]
assign io_done = _T & _T_3; // @[DynamicMemorySearch.scala 28:11]
`ifdef RANDOMIZE_GARBAGE_ASSIGN
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_INVALID_ASSIGN
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_REG_INIT
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_MEM_INIT
`define RANDOMIZE
`endif
`ifndef RANDOM
`define RANDOM $random
`endif
`ifdef RANDOMIZE_MEM_INIT
integer initvar;
`endif
`ifndef SYNTHESIS
initial begin
`ifdef RANDOMIZE
`ifdef INIT_RANDOM
`INIT_RANDOM
`endif
`ifndef VERILATOR
`ifdef RANDOMIZE_DELAY
#`RANDOMIZE_DELAY begin end
`else
#0.002 begin end
`endif
`endif
_RAND_0 = {1{`RANDOM}};
`ifdef RANDOMIZE_MEM_INIT
for (initvar = 0; initvar < 16; initvar = initvar+1)
list[initvar] = _RAND_0[3:0];
`endif // RANDOMIZE_MEM_INIT
`ifdef RANDOMIZE_REG_INIT
_RAND_1 = {1{`RANDOM}};
index = _RAND_1[3:0];
`endif // RANDOMIZE_REG_INIT
`endif // RANDOMIZE
end // initial
`endif // SYNTHESIS
always @(posedge clock) begin
if(list__T_4_en & list__T_4_mask) begin
list[list__T_4_addr] <= list__T_4_data; // @[DynamicMemorySearch.scala 15:17]
end
if (reset) begin
index <= 4'h0;
end else if (!(io_isWr)) begin
if (io_en) begin
index <= 4'h0;
end else if (_T_5) begin
index <= _T_7;
end
end
end
endmodule
|
|