%s%%s%%s%%s%%s%1%s%%s%//%s%mapped%s%needs%s%this
%s%%s%%s%%s%%s%2%s%%s%`include%s%"alu_if.vh"
%s%%s%%s%%s%%s%3%s%%s%
%s%%s%%s%%s%%s%4%s%%s%//%s%mapped%s%timing%s%needs%s%this.%s%1ns%s%is%s%too%s%fast
%s%%s%%s%%s%%s%5%s%%s%`timescale%s%1%s%ns%s%/%s%1%s%ns
%s%%s%%s%%s%%s%6%s%%s%
%s%%s%%s%%s%%s%7%s%%s%module%s%alu_tb;
%s%%s%%s%%s%%s%8%s%%s%%s%%s%parameter%s%PERIOD%s%=%s%10;
%s%%s%%s%%s%%s%9%s%%s%%s%%s%import%s%cpu_types_pkg::*;
%s%%s%%s%%s%10%s%%s%%s%%s%logic%s%CLK%s%=%s%0;
%s%%s%%s%%s%11%s%%s%
%s%%s%%s%%s%12%s%%s%%s%%s%//%s%clock
%s%%s%%s%%s%13%s%%s%%s%%s%always%s%#(PERIOD/2)%s%CLK++;
%s%%s%%s%%s%14%s%%s%
%s%%s%%s%%s%15%s%%s%%s%%s%//%s%interface
%s%%s%%s%%s%16%s%%s%%s%%s%alu_if%s%aluif%s%();
%s%%s%%s%%s%17%s%%s%%s%%s%//%s%test%s%program
%s%%s%%s%%s%18%s%%s%%s%%s%test%s%PROG%s%(.CLK)%s%;
%s%%s%%s%%s%19%s%%s%%s%%s%//%s%DUT
%s%%s%%s%%s%20%s%%s%`ifndef%s%MAPPED
%s%%s%%s%%s%21%s%%s%%s%%s%alu%s%DUT(aluif);
%s%%s%%s%%s%22%s%%s%`else
%s%%s%%s%%s%23%s%%s%%s%%s%alu%s%DUT(
%s%%s%%s%%s%24%s%%s%%s%%s%%s%%s%.\aluif.port_a%s%(aluif.port_a),
%s%%s%%s%%s%25%s%%s%%s%%s%%s%%s%.\aluif.port_b%s%(aluif.port_b),
%s%%s%%s%%s%26%s%%s%%s%%s%%s%%s%.\aluif.aluop%s%(aluif.aluop),
%s%%s%%s%%s%27%s%%s%%s%%s%%s%%s%.\aluif.output_port%s%(aluif.output_port),
%s%%s%%s%%s%28%s%%s%%s%%s%%s%%s%.\aluif.negative%s%(aluif.negative),
%s%%s%%s%%s%29%s%%s%%s%%s%%s%%s%.\aluif.zero%s%(aluif.zero),
%s%%s%%s%%s%30%s%%s%%s%%s%%s%%s%.\aluif.overflow%s%(aluif.overflow)
%s%%s%%s%%s%31%s%%s%%s%%s%);
%s%%s%%s%%s%32%s%%s%`endif
%s%%s%%s%%s%33%s%%s%
%s%%s%%s%%s%34%s%%s%/*task%s%writeAndRead%s%(input%s%bit%s%[4:0]%s%wr_sel,%s%[31:0]%s%wr_dat);
%s%%s%%s%%s%35%s%%s%%t%rfif.WEN%s%=%s%0;
%s%%s%%s%%s%36%s%%s%%t%rfif.wsel%s%=%s%'0;
%s%%s%%s%%s%37%s%%s%%t%rfif.rsel1%s%=%s%'0;
%s%%s%%s%%s%38%s%%s%%t%rfif.rsel2%s%=%s%'0;
%s%%s%%s%%s%39%s%%s%%t%rfif.wdat%s%=%s%'0;
%s%%s%%s%%s%40%s%%s%%t%#(PERIOD);
%s%%s%%s%%s%41%s%%s%
%s%%s%%s%%s%42%s%%s%%t%rfif.WEN%s%=%s%1;
%s%%s%%s%%s%43%s%%s%%t%rfif.wsel%s%=%s%wr_sel;
%s%%s%%s%%s%44%s%%s%%t%rfif.wdat%s%=%s%wr_dat;
%s%%s%%s%%s%45%s%%s%%t%#(PERIOD);
%s%%s%%s%%s%46%s%%s%
%s%%s%%s%%s%47%s%%s%%t%rfif.WEN%s%=%s%0;
%s%%s%%s%%s%48%s%%s%%t%rfif.wsel%s%=%s%'0;
%s%%s%%s%%s%49%s%%s%%t%rfif.wdat%s%=%s%'0;
%s%%s%%s%%s%50%s%%s%%t%rfif.rsel1%s%=%s%wr_sel;
%s%%s%%s%%s%51%s%%s%%t%rfif.rsel2%s%=%s%wr_sel;
%s%%s%%s%%s%52%s%%s%%t%#(PERIOD);
%s%%s%%s%%s%53%s%%s%
%s%%s%%s%%s%54%s%%s%%t%rfif.WEN%s%=%s%1;
%s%%s%%s%%s%55%s%%s%%t%rfif.wsel%s%=%s%wr_sel;
%s%%s%%s%%s%56%s%%s%%t%rfif.wdat%s%=%s%'0;
%s%%s%%s%%s%57%s%%s%%t%#(PERIOD);
%s%%s%%s%%s%58%s%%s%
%s%%s%%s%%s%59%s%%s%%t%rfif.WEN%s%=%s%0;
%s%%s%%s%%s%60%s%%s%%t%rfif.wsel%s%=%s%'0;
%s%%s%%s%%s%61%s%%s%%t%rfif.rsel1%s%=%s%'0;
%s%%s%%s%%s%62%s%%s%%t%rfif.rsel2%s%=%s%'0;
%s%%s%%s%%s%63%s%%s%%t%rfif.wdat%s%=%s%'0;
%s%%s%%s%%s%64%s%%s%%t%#(PERIOD);
%s%%s%%s%%s%65%s%%s%endtask*/
%s%%s%%s%%s%66%s%%s%
%s%%s%%s%%s%67%s%%s%endmodule
%s%%s%%s%%s%68%s%%s%
%s%%s%%s%%s%69%s%%s%program%s%test(
%s%%s%%s%%s%70%s%%s%%s%%s%input%s%logic%s%CLK
%s%%s%%s%%s%71%s%%s%);
%s%%s%%s%%s%72%s%%s%%s%%s%import%s%cpu_types_pkg::*;
%s%%s%%s%%s%73%s%%s%%s%%s%parameter%s%PERIOD%s%=%s%10;
%s%%s%%s%%s%74%s%%s%%s%%s%initial%s%begin
%s%%s%%s%%s%75%s%%s%%s%%s%%s%%s%//initial%s%values%s%for%s%inputs
%s%%s%%s%%s%76%s%%s%%s%%s%%s%%s%#(PERIOD);
%s%%s%%s%%s%77%s%%s%%s%%s%%s%%s%aluif.port_a%s%=%s%32'd200;
%s%%s%%s%%s%78%s%%s%%s%%s%%s%%s%aluif.port_b%s%=%s%32'd4;
%s%%s%%s%%s%79%s%%s%%s%%s%%s%%s%//sll
%s%%s%%s%%s%80%s%%s%%s%%s%%s%%s%aluif.aluop%s%=%s%ALU_SLL;
%s%%s%%s%%s%81%s%%s%%s%%s%%s%%s%#(PERIOD);
%s%%s%%s%%s%82%s%%s%%s%%s%%s%%s%aluif.port_a%s%=%s%32'd200;
%s%%s%%s%%s%83%s%%s%%s%%s%%s%%s%aluif.port_b%s%=%s%32'd4;
%s%%s%%s%%s%84%s%%s%%s%%s%%s%%s%//srl
%s%%s%%s%%s%85%s%%s%%s%%s%%s%%s%aluif.aluop%s%=%s%ALU_SRL;
%s%%s%%s%%s%86%s%%s%%s%%s%%s%%s%#(PERIOD);
%s%%s%%s%%s%87%s%%s%%s%%s%%s%%s%aluif.port_a%s%=%s%-2;
%s%%s%%s%%s%88%s%%s%%s%%s%%s%%s%aluif.port_b%s%=%s%%s%2;
%s%%s%%s%%s%89%s%%s%%s%%s%%s%%s%//add,%s%test%s%zero%s%flag
%s%%s%%s%%s%90%s%%s%%s%%s%%s%%s%aluif.aluop%s%=%s%ALU_ADD;
%s%%s%%s%%s%91%s%%s%%s%%s%%s%%s%#(PERIOD);
%s%%s%%s%%s%92%s%%s%%s%%s%%s%%s%aluif.port_a%s%=%s%32'h80000000;
%s%%s%%s%%s%93%s%%s%%s%%s%%s%%s%aluif.port_b%s%=%s%32'h80000000;
%s%%s%%s%%s%94%s%%s%%s%%s%%s%%s%//add,%s%test%s%
%s%%s%%s%%s%95%s%%s%%s%%s%%s%%s%aluif.aluop%s%=%s%ALU_ADD;
%s%%s%%s%%s%96%s%%s%%s%%s%%s%%s%#(PERIOD);
%s%%s%%s%%s%97%s%%s%%s%%s%%s%%s%aluif.port_a%s%=%s%32'h7FFFFFFF;
%s%%s%%s%%s%98%s%%s%%s%%s%%s%%s%aluif.port_b%s%=%s%32'h7FFFFFFF;
%s%%s%%s%%s%99%s%%s%%s%%s%%s%%s%//add,%s%test%s%
%s%%s%%s%100%s%%s%%s%%s%%s%%s%aluif.aluop%s%=%s%ALU_ADD;
%s%%s%%s%101%s%%s%%s%%s%%s%%s%#(PERIOD);
%s%%s%%s%102%s%%s%%s%%s%%s%%s%//sub
%s%%s%%s%103%s%%s%%s%%s%%s%%s%aluif.port_a%s%=%s%'1;
%s%%s%%s%104%s%%s%%s%%s%%s%%s%aluif.port_b%s%=%s%'1;
%s%%s%%s%105%s%%s%%s%%s%%s%%s%aluif.aluop%s%=%s%ALU_ADD;
%s%%s%%s%106%s%%s%%s%%s%%s%%s%#(PERIOD);
%s%%s%%s%107%s%%s%%s%%s%%s%%s%aluif.port_a%s%=%s%32'h7FFFFFFF;
%s%%s%%s%108%s%%s%%s%%s%%s%%s%aluif.port_b%s%=%s%32'h80000000;
%s%%s%%s%109%s%%s%%s%%s%%s%%s%aluif.aluop%s%=%s%ALU_SUB;
%s%%s%%s%110%s%%s%%s%%s%%s%%s%#(PERIOD);
%s%%s%%s%111%s%%s%%s%%s%%s%%s%aluif.port_a%s%=%s%32'h80000000;
%s%%s%%s%112%s%%s%%s%%s%%s%%s%aluif.port_b%s%=%s%32'h7FFFFFFF;
%s%%s%%s%113%s%%s%%s%%s%%s%%s%aluif.aluop%s%=%s%ALU_SUB;
%s%%s%%s%114%s%%s%%s%%s%%s%%s%#(PERIOD);
%s%%s%%s%115%s%%s%%s%%s%%s%%s%//and
%s%%s%%s%116%s%%s%%s%%s%%s%%s%aluif.aluop%s%=%s%ALU_AND;
%s%%s%%s%117%s%%s%%s%%s%%s%%s%#(PERIOD);
%s%%s%%s%118%s%%s%%s%%s%%s%%s%//or
%s%%s%%s%119%s%%s%%s%%s%%s%%s%aluif.aluop%s%=%s%ALU_OR;
%s%%s%%s%120%s%%s%%s%%s%%s%%s%#(PERIOD);
%s%%s%%s%121%s%%s%%s%%s%%s%%s%//xor
%s%%s%%s%122%s%%s%%s%%s%%s%%s%aluif.aluop%s%=%s%ALU_XOR;
%s%%s%%s%123%s%%s%%s%%s%%s%%s%#(PERIOD);
%s%%s%%s%124%s%%s%%s%%s%%s%%s%//nor
%s%%s%%s%125%s%%s%%s%%s%%s%%s%aluif.aluop%s%=%s%ALU_NOR;
%s%%s%%s%126%s%%s%%s%%s%%s%%s%#(PERIOD);
%s%%s%%s%127%s%%s%%s%%s%%s%%s%//slt
%s%%s%%s%128%s%%s%%s%%s%%s%%s%aluif.aluop%s%=%s%ALU_SLT;
%s%%s%%s%129%s%%s%%s%%s%%s%%s%#(PERIOD);
%s%%s%%s%130%s%%s%%s%%s%%s%%s%//sltu
%s%%s%%s%131%s%%s%%s%%s%%s%%s%aluif.aluop%s%=%s%ALU_SLTU;
%s%%s%%s%132%s%%s%%s%%s%%s%%s%#(PERIOD);
%s%%s%%s%133%s%%s%%s%%s%end%s%//%s%initial
%s%%s%%s%134%s%%s%endprogram