{ "training_samples": [ { "sample_num": 1, "instruction": "You are Elinnos RTL Code Generator v1.0, a specialized Verilog/SystemVerilog code generation agent. ...", "expected_code_length": 864, "generated_code_length": 217, "similarity": 5.8919803600654665, "match_info": "36/611 characters match", "expected_code": "module sync_fifo_8b_4d (\n input clk,\n input rst,\n input write_en,\n input read_en,\n input [7:0] write_data,\n output [7:0] read_data,\n output write_err,\n output read_err\n);\n\n reg [7:0] fifo_mem [3:0];\n reg [1:0] write_ptr, read_ptr;\n reg [2:0] count;\n\n assign full = (count == 4);\n assign empty = (count == 0);\n assign read_data = fifo_mem[read_ptr];\n assign write_err = write_en && full;\n assign read_err = read_en && empty;\n\n always @(posedge clk) begin\n if (rst) begin\n write_ptr <= 2'b0;\n read_ptr <= 2'b0;\n count <= 3'b0;\n end else begin\n if (write_en && ~full) begin\n fifo_mem[write_ptr] <= write_data;\n write_ptr <= write_ptr + 1;\n count <= count + 1;\n end\n if (read_en && ~empty) begin\n read_ptr <= read_ptr + 1;\n count <= count - 1;\n end\n end\n end\n\nendmodule", "generated_code": "module sync_fifo_8b_4d (\n input clk, rst,\n input write_en, read_en,\n output reg [7:0] dout,\n input [7:0] din,\n output reg full,\n output reg empty,\n output reg write_err,\n output reg read_err\n);", "generated_full_response": "module sync_fifo_8b_4d (\n input clk, rst,\n input write_en, read_en,\n output reg [7:0] dout,\n input [7:0] din,\n output reg full,\n output reg empty,\n output reg write_err,\n output reg read_err\n);" }, { "sample_num": 2, "instruction": "You are Elinnos RTL Code Generator v1.0, a specialized Verilog/SystemVerilog code generation agent. ...", "expected_code_length": 810, "generated_code_length": 215, "similarity": 20.701754385964914, "match_info": "118/570 characters match", "expected_code": "module sync_fifo_8b_16d (\n input clk,\n input rst,\n input write_en,\n input read_en,\n input [7:0] write_data,\n output [7:0] read_data,\n output [3:0] occupancy\n);\n\n reg [7:0] fifo_mem [15:0];\n reg [3:0] write_ptr, read_ptr;\n reg [4:0] count;\n\n assign full = (count == 16);\n assign empty = (count == 0);\n assign read_data = fifo_mem[read_ptr];\n assign occupancy = count[3:0];\n\n always @(posedge clk) begin\n if (rst) begin\n write_ptr <= 4'b0;\n read_ptr <= 4'b0;\n count <= 5'b0;\n end else begin\n if (write_en && ~full) begin\n fifo_mem[write_ptr] <= write_data;\n write_ptr <= write_ptr + 1;\n count <= count + 1;\n end\n if (read_en && ~empty) begin\n read_ptr <= read_ptr + 1;\n count <= count - 1;\n end\n end\n end\n\nendmodule", "generated_code": "module sync_fifo_8b_16d (\n input clk,\n input rst,\n input write_en,\n input read_en,\n input [7:0] write_data,\n output [7:0] read_data,\n output full,\n output empty,\n output [4:0] occupancy\n);", "generated_full_response": "module sync_fifo_8b_16d (\n input clk,\n input rst,\n input write_en,\n input read_en,\n input [7:0] write_data,\n output [7:0] read_data,\n output full,\n output empty,\n output [4:0] occupancy\n);" } ], "test_samples": [ { "sample_num": 1, "instruction": "You are Elinnos RTL Code Generator v1.0, a specialized Verilog/SystemVerilog code generation agent. ...", "expected_code_length": 860, "generated_code_length": 3094, "similarity": 1.2190326386158081, "match_info": "31/2543 characters match", "expected_code": "module sync_fifo_8b_16d (\n input clk,\n input rst,\n input write_en,\n input read_en,\n input [7:0] write_data,\n output [7:0] read_data,\n input [3:0] peek_idx,\n output [7:0] peek_data\n);\n\n reg [7:0] fifo_mem [15:0];\n reg [3:0] write_ptr, read_ptr;\n reg [4:0] count;\n\n assign full = (count == 16);\n assign empty = (count == 0);\n assign read_data = fifo_mem[read_ptr];\n assign peek_data = fifo_mem[(read_ptr + peek_idx) % 16];\n\n always @(posedge clk) begin\n if (rst) begin\n write_ptr <= 4'b0;\n read_ptr <= 4'b0;\n count <= 5'b0;\n end else begin\n if (write_en && ~full) begin\n fifo_mem[write_ptr] <= write_data;\n write_ptr <= write_ptr + 1;\n count <= count + 1;\n end\n if (read_en && ~empty) begin\n read_ptr <= read_ptr + 1;\n count <= count - 1;\n end\n end\n end\n\nendmodule", "generated_code": "The FIFO should be able to hold up to 16 8-bit words.\n\nNote: Use blocking assignments in your code. Do not use nonblocking assignments or any other form of assignment that may introduce metastability hazards.\n\nNote: Use only the standard Verilog/SystemVerilog constructs (no SystemVerilog extensions).\n\nNote: Use only combinational logic. No sequential logic (registers) is allowed.\n\nNote: Use only synchronous reset (active low).\n\nNote: Use only level-sensitive (not edge-sensitive) flip-flops.\n\nNote: Use only synchronous clock enable (active high).\n\nNote: Use only active high set/reset.\n\nNote: Use only active high enable.\n\nNote: Use only asynchronous clear (active low).\n\nNote: Use only active high peek enable.\n\nNote: Use only active high peek read enable.\n\nNote: Use only active high peek write enable.\n\nNote: Use only active high full flag.\n\nNote: Use only active high empty flag.\n\nNote: Use only active high read enable.\n\nNote: Use only active high write enable.\n\nNote: Use only active high read data valid flag.\n\nNote: Use only active high write data valid flag.\n\nNote: Use only active high read data available flag.\n\nNote: Use only active high write data available flag.\n\nNote: Use only active high read data stale flag.\n\nNote: Use only active high write data stale flag.\n\nNote: Use only active high read data error flag.\n\nNote: Use only active high write data error flag.\n\nNote: Use only active high read data parity flag.\n\nNote: Use only active high write data parity flag.\n\nNote: Use only active high read data checksum flag.\n\nNote: Use only active high write data checksum flag.\n\nNote: Use only active high read data ECC flag.\n\nNote: Use only active high write data ECC flag.\n\nNote: Use only active high read data scrambling flag.\n\nNote: Use only active high write data scrambling flag.\n\nNote: Use only active high read data de-scrambling flag.\n\nNote: Use only active high write data de-scrambling flag.\n\nNote: Use only active high read data encryption flag.\n\nNote: Use only active high write data encryption flag.\n\nNote: Use only active high read data decryption flag.\n\nNote: Use only active high write data decryption flag.\n\nNote: Use only active high read data authentication flag.\n\nNote: Use only active high write data authentication flag.\n\nNote: Use only active high read data integrity flag.\n\nNote: Use only active high write data integrity flag.\n\nNote: Use only active high read data confidentiality flag.\n\nNote: Use only active high write data confidentiality flag.\n\nNote: Use only active high read data tamper detection flag.\n\nNote: Use only active high write data tamper detection flag.\n\nNote: Use only active high read data secure boot flag.\n\nNote: Use only active high write data secure boot flag.\n\nNote: Use only active high read data trusted boot flag.\n\nNote: Use only active high write data trusted boot flag.\n\nNote: Use only active high read data integrity monitoring flag.\n\nNote: Use only active high write data integrity monitoring flag.\n\nNote: Use only active high read data confidentiality monitoring flag.\n\nNote: Use only active high write data confidential", "generated_full_response": "The FIFO should be able to hold up to 16 8-bit words.\n\nNote: Use blocking assignments in your code. Do not use nonblocking assignments or any other form of assignment that may introduce metastability hazards.\n\nNote: Use only the standard Verilog/SystemVerilog constructs (no SystemVerilog extensions).\n\nNote: Use only combinational logic. No sequential logic (registers) is allowed.\n\nNote: Use only synchronous reset (active low).\n\nNote: Use only level-sensitive (not edge-sensitive) flip-flops.\n\nNote: Use only synchronous clock enable (active high).\n\nNote: Use only active high set/reset.\n\nNote: Use only active high enable.\n\nNote: Use only asynchronous clear (active low).\n\nNote: Use only active high peek enable.\n\nNote: Use only active high peek read enable.\n\nNote: Use only active high peek write enable.\n\nNote: Use only active high full flag.\n\nNote: Use only active high empty flag.\n\nNote: Use only active high read enable.\n\nNote: Use only active high write enable.\n\nNote: Use only active high read data valid flag.\n\nNote: Use only active high write data valid flag.\n\nNote: Use only active high read data available flag.\n\nNote: Use only active high write data available flag.\n\nNote: Use only active high read data stale flag.\n\nNote: Use only active high write data stale flag.\n\nNote: Use only active high read data error flag.\n\nNote: Use only active high write data error flag.\n\nNote: Use only active high read data parity flag.\n\nNote: Use only active high write data parity flag.\n\nNote: Use only active high read data checksum flag.\n\nNote: Use only active high write data checksum flag.\n\nNote: Use only active high read data ECC flag.\n\nNote: Use only active high write data ECC flag.\n\nNote: Use only active high read data scrambling flag.\n\nNote: Use only active high write data scrambling flag.\n\nNote: Use only active high read data de-scrambling flag.\n\nNote: Use only active high write data de-scrambling flag.\n\nNote: Use only active high read data encryption flag.\n\nNote: Use only active high write data encryption flag.\n\nNote: Use only active high read data decryption flag.\n\nNote: Use only active high write data decryption flag.\n\nNote: Use only active high read data authentication flag.\n\nNote: Use only active high write data authentication flag.\n\nNote: Use only active high read data integrity flag.\n\nNote: Use only active high write data integrity flag.\n\nNote: Use only active high read data confidentiality flag.\n\nNote: Use only active high write data confidentiality flag.\n\nNote: Use only active high read data tamper detection flag.\n\nNote: Use only active high write data tamper detection flag.\n\nNote: Use only active high read data secure boot flag.\n\nNote: Use only active high write data secure boot flag.\n\nNote: Use only active high read data trusted boot flag.\n\nNote: Use only active high write data trusted boot flag.\n\nNote: Use only active high read data integrity monitoring flag.\n\nNote: Use only active high write data integrity monitoring flag.\n\nNote: Use only active high read data confidentiality monitoring flag.\n\nNote: Use only active high write data confidential" }, { "sample_num": 2, "instruction": "You are Elinnos RTL Code Generator v1.0, a specialized Verilog/SystemVerilog code generation agent. ...", "expected_code_length": 754, "generated_code_length": 3397, "similarity": 0.6358177322500883, "match_info": "18/2831 characters match", "expected_code": "module sync_fifo_28b_32d (\n input clk,\n input rst,\n input write_en,\n input read_en,\n input [27:0] write_data,\n output [27:0] read_data\n);\n\n reg [27:0] fifo_mem [31:0];\n reg [4:0] write_ptr, read_ptr;\n reg [5:0] count;\n\n assign full = (count == 32);\n assign empty = (count == 0);\n assign read_data = fifo_mem[read_ptr];\n\n\n always @(posedge clk) begin\n if (rst) begin\n write_ptr <= 5'b0;\n read_ptr <= 5'b0;\n count <= 6'b0;\n end else begin\n if (write_en && ~full) begin\n fifo_mem[write_ptr] <= write_data;\n write_ptr <= write_ptr + 1;\n count <= count + 1;\n end\n if (read_en && ~empty) begin\n read_ptr <= read_ptr + 1;\n count <= count - 1;\n end\n end\n end\n\nendmodule", "generated_code": "The fifo should be able to accept writes when not full and reads when not empty. The fifo should have a clock enable input that can be used to gate the clock signal.\n\nNote: Use blocking assignments (<=) in your code. Do not use nonblocking assignments (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment", "generated_full_response": "The fifo should be able to accept writes when not full and reads when not empty. The fifo should have a clock enable input that can be used to gate the clock signal.\n\nNote: Use blocking assignments (<=) in your code. Do not use nonblocking assignments (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment operator (=) in your code. Do not use the nonblocking assignment operator (<=).\n\nNote: Use the blocking assignment" } ] }