CoolFace
Datasetpublic

LeonJia/mlab-synopsys-commitpack-sample

sourceHugging Faceupdated 3y agoView on Hugging Face
0likes156downloads
bdd10e2_e63163e.json14 linesDownload Raw Back to f22-tt02-ngaertne
1{2    "commit": "e63163e",3    "old_file": "src/cpu.sv",4    "new_file": "src/cpu.sv",5    "old_contents": "`default_nettype none\nmodule noahgaertner_cpu (input logic [7:0] io_in,\n  output logic [7:0] io_out\n);\n  logic clock, reset;\n  assign clock = io_in[0];\n  assign reset = io_in[1];\n  typedef enum logic [3:0]{LOAD = 4'd0, STORE = 4'd1, ADD = 4'd2, MUL = 4'd3, WAIT = 4'd4, MAC = 4'd5, SUB = 4'd6, SHIFTL = 4'd7, SHIFTR = 4'd8, JUMPTOIF = 4'd9} prog_t;\n  prog_t prog[15:0];\n  logic [3:0] data [15:0];\n  enum logic [1:0] {LOADPROG=2'd0, LOADDATA=2'd1, SETRUNPT=2'd2,RUNPROG=2'd3} instruction;\n  assign instruction = io_in[3:2];\n  logic [3:0]   pc;\n  logic [3:0]   regval;\n  assign io_out = {regval, pc};\n  logic [3:0]  nextpc;\n  assign nextpc = pc + 1;\n  logic [3:0]  inputdata;\n  assign inputdata = io_in[7:4];\n  genvar i;\n\n  always_ff @(posedge clock) begin\n    if (reset) begin\n      case (instruction)\n        \n        LOADPROG: begin //loads a program into the program \"file\"\n          prog[pc] <= inputdata;\n          pc <= nextpc;\n        end\n        LOADDATA: begin //loads data into the data \"file\"\n          data[pc] <= inputdata;\n          pc <= nextpc;\n        end\n        SETRUNPT: begin //designed to be used right before run, but can also reset I guess?\n          pc <= inputdata;\n          regval <= 0;\n        end\n        RUNPROG: begin //run the program\n          case (prog[pc])\n            LOAD: begin \n              regval <= data[pc]; pc = nextpc; \n            end\n             //loads a value from the data file\n            STORE: begin \n              data[data[pc]] <= regval; pc <= nextpc;\n            end\n             //stores a value into the data file\n            ADD: begin \n              regval <= regval + data[pc]; pc <= nextpc;\n            end\n             //adds the value at the appropriate data address to the register\n            SUB: begin \n              pc <= regval - data[pc]; pc<= nextpc;\n            end\n             //subtracts the value at the appropriate addr from the register\n            WAIT: begin\n              pc <= nextpc; \n              end\n             //waits a clock cycle - not sure why you would ever, but whatever\n            MUL: begin \n              pc<= nextpc; regval <= regval * data[pc]; \n            end\n             //multiplies the register by the value at the appropriate addr\n            SHIFTL: begin \n              pc<= nextpc; regval <= regval << data[pc];\n            end\n              //shifts the register left by the value at the appropriate addr\n            SHIFTR: begin \n              pc<= nextpc; regval <= regval >> data[pc]; \n            end\n              //shifts the register right by the value at the appropriate addr\n            MAC: begin \n              pc<= nextpc; regval <= regval + (data[pc] * inputdata);\n            end\n              //multiplies the value at the appropriate addr by the input data and adds it to the register\n            JUMPTOIF: //jumps to value if input pin 7 is a one\n              //not unconditional to avoid looping forever\n            begin \n              if (inputdata[3]==1) begin \n                pc <= data[pc]; \n              end else begin \n                pc <= nextpc; \n                end\n            end\n          endcase\n        end\n      endcase\n    end\n    else begin\n      pc <= 0;\n      regval <= 0;\n      data[0] <= 4'd0;\n      data[1] <= 4'd0;\n      data[2] <= 4'd0;\n      data[3] <= 4'd0;\n      data[4] <= 4'd0;\n      data[5] <= 4'd0;\n      data[6] <= 4'd0;\n      data[7] <= 4'd0;\n      data[8] <= 4'd0;\n      data[9] <= 4'd0;\n      data[10] <= 4'd0;\n      data[11] <= 4'd0;\n      data[12] <= 4'd0;\n      data[13] <= 4'd0;\n      data[14] <= 4'd0;\n      data[15] <= 4'd0;\n      prog[0] <= 4'd0;\n      prog[1] <= 4'd0;\n      prog[2] <= 4'd0;\n      prog[3] <= 4'd0;\n      prog[4] <= 4'd0;\n      prog[5] <= 4'd0;\n      prog[6] <= 4'd0;\n      prog[7] <= 4'd0;\n      prog[8] <= 4'd0;\n      prog[9] <= 4'd0;\n      prog[10] <= 4'd0;\n      prog[11] <= 4'd0;\n      prog[12] <= 4'd0;\n      prog[13] <= 4'd0;\n      prog[14] <= 4'd0;\n      prog[15] <= 4'd0;\n    end\n  end\nendmodule\n",6    "new_contents": "`default_nettype none\nmodule noahgaertner_cpu (input logic [7:0] io_in,\n  output logic [7:0] io_out\n);\n  logic clock, reset;\n  assign clock = io_in[0];\n  assign reset = io_in[1];\n  typedef enum logic [3:0]{LOAD = 4'd0, STORE = 4'd1, ADD = 4'd2, MUL = 4'd3, WAIT = 4'd4, //MAC = 4'd5,\n   SUB = 4'd6, SHIFTL = 4'd7, SHIFTR = 4'd8, JUMPTOIF = 4'd9} prog_t;\n  prog_t prog[15:0];\n  logic [3:0] data [15:0];\n  enum logic [1:0] {LOADPROG=2'd0, LOADDATA=2'd1, SETRUNPT=2'd2,RUNPROG=2'd3} instruction;\n  assign instruction = io_in[3:2];\n  logic [3:0]   pc;\n  logic [3:0]   regval;\n  assign io_out = {regval, pc};\n  logic [3:0]  nextpc;\n  assign nextpc = pc + 1;\n  logic [3:0]  inputdata;\n  assign inputdata = io_in[7:4];\n  genvar i;\n\n  always_ff @(posedge clock) begin\n    if (reset) begin\n      case (instruction)\n        \n        LOADPROG: begin //loads a program into the program \"file\"\n          prog[pc] <= inputdata;\n          pc <= nextpc;\n        end\n        LOADDATA: begin //loads data into the data \"file\"\n          data[pc] <= inputdata;\n          pc <= nextpc;\n        end\n        SETRUNPT: begin //designed to be used right before run, but can also reset I guess?\n          pc <= inputdata;\n          regval <= 0;\n        end\n        RUNPROG: begin //run the program\n          case (prog[pc])\n            LOAD: begin \n              regval <= data[pc]; pc = nextpc; \n            end\n             //loads a value from the data file\n            STORE: begin \n              data[data[pc]] <= regval; pc <= nextpc;\n            end\n             //stores a value into the data file\n            ADD: begin \n              regval <= regval + data[pc]; pc <= nextpc;\n            end\n             //adds the value at the appropriate data address to the register\n            SUB: begin \n              pc <= regval - data[pc]; pc<= nextpc;\n            end\n             //subtracts the value at the appropriate addr from the register\n            WAIT: begin\n              pc <= nextpc; \n              end\n             //waits a clock cycle - not sure why you would ever, but whatever\n            MUL: begin \n              pc<= nextpc; regval <= regval * data[pc]; \n            end\n             //multiplies the register by the value at the appropriate addr\n            SHIFTL: begin \n              pc<= nextpc; regval <= regval << data[pc];\n            end\n              //shifts the register left by the value at the appropriate addr\n            SHIFTR: begin \n              pc<= nextpc; regval <= regval >> data[pc]; \n            end\n              //shifts the register right by the value at the appropriate addr\n            /* MAC: begin \n              pc<= nextpc; regval <= regval + (data[pc] * inputdata);\n            end */\n              //multiplies the value at the appropriate addr by the input data and adds it to the register\n            JUMPTOIF: //jumps to value if input pin 7 is a one\n              //not unconditional to avoid looping forever\n            begin \n              if (inputdata[3]==1) begin \n                pc <= data[pc]; \n              end else begin \n                pc <= nextpc; \n                end\n            end\n          endcase\n        end\n      endcase\n    end\n    else begin\n      pc <= 0;\n      regval <= 0;\n      data[0] <= 4'd0;\n      data[1] <= 4'd0;\n      data[2] <= 4'd0;\n      data[3] <= 4'd0;\n      data[4] <= 4'd0;\n      data[5] <= 4'd0;\n      data[6] <= 4'd0;\n      data[7] <= 4'd0;\n      data[8] <= 4'd0;\n      data[9] <= 4'd0;\n      data[10] <= 4'd0;\n      data[11] <= 4'd0;\n      data[12] <= 4'd0;\n      data[13] <= 4'd0;\n      data[14] <= 4'd0;\n      data[15] <= 4'd0;\n      prog[0] <= 4'd0;\n      prog[1] <= 4'd0;\n      prog[2] <= 4'd0;\n      prog[3] <= 4'd0;\n      prog[4] <= 4'd0;\n      prog[5] <= 4'd0;\n      prog[6] <= 4'd0;\n      prog[7] <= 4'd0;\n      prog[8] <= 4'd0;\n      prog[9] <= 4'd0;\n      prog[10] <= 4'd0;\n      prog[11] <= 4'd0;\n      prog[12] <= 4'd0;\n      prog[13] <= 4'd0;\n      prog[14] <= 4'd0;\n      prog[15] <= 4'd0;\n    end\n  end\nendmodule\n",7    "subject": "delete MAC\n",8    "message": "delete MAC\n",9    "lang": "System Verilog",10    "license": "apache-2.0",11    "repos": "f22-tt02-ngaertne",12    "returncode": 0,13    "stderr": ""14}