- `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
- module LFSR16(
- input clock,
- input reset,
- input io_inc,
- output [15:0] io_out
- );
- reg [15:0] res; // @[LFSR16.scala 19:20]
- reg [31:0] _RAND_0;
- wire _T_6; // @[LFSR16.scala 21:26]
- wire _T_7; // @[LFSR16.scala 21:33]
- wire _T_8; // @[LFSR16.scala 21:29]
- wire _T_9; // @[LFSR16.scala 21:40]
- wire _T_10; // @[LFSR16.scala 21:36]
- wire _T_11; // @[LFSR16.scala 21:47]
- wire _T_12; // @[LFSR16.scala 21:43]
- wire [14:0] _T_13; // @[LFSR16.scala 21:55]
- wire [15:0] _T_14; // @[Cat.scala 30:58]
- wire [15:0] _GEN_0; // @[LFSR16.scala 20:17]
- assign _T_6 = res[0]; // @[LFSR16.scala 21:26]
- assign _T_7 = res[2]; // @[LFSR16.scala 21:33]
- assign _T_8 = _T_6 ^ _T_7; // @[LFSR16.scala 21:29]
- assign _T_9 = res[3]; // @[LFSR16.scala 21:40]
- assign _T_10 = _T_8 ^ _T_9; // @[LFSR16.scala 21:36]
- assign _T_11 = res[5]; // @[LFSR16.scala 21:47]
- assign _T_12 = _T_10 ^ _T_11; // @[LFSR16.scala 21:43]
- assign _T_13 = res[15:1]; // @[LFSR16.scala 21:55]
- assign _T_14 = {_T_12,_T_13}; // @[Cat.scala 30:58]
- assign _GEN_0 = io_inc ? _T_14 : res; // @[LFSR16.scala 20:17]
- assign io_out = res;
- `ifdef RANDOMIZE
- integer initvar;
- initial begin
- `ifndef verilator
- #0.002 begin end
- `endif
- `ifdef RANDOMIZE_REG_INIT
- _RAND_0 = {1{$random}};
- res = _RAND_0[15:0];
- `endif // RANDOMIZE_REG_INIT
- end
- `endif // RANDOMIZE
- always @(posedge clock) begin
- if (reset) begin
- res <= 16'h1;
- end else begin
- if (io_inc) begin
- res <= _T_14;
- end
- end
- end
- endmodule
来源: http://blog.csdn.net/idevede/article/details/79554748