Java to RTL Converter
Input Java Code Output Verilog Code
import java.io.FileNotFoundException;

public class simpleCPU {
	
	// enumaration of instructions
	final static int ADD 	= 	0;
	final static int ADDi 	= 	1;
	final static int NAND 	= 	2;
	final static int NANDi 	= 	3;
	final static int SRL 	= 	4;
	final static int SRLi 	= 	5;
	final static int LT 	= 	6;
	final static int LTi 	= 	7;
	final static int CP 	= 	8;
	final static int CPi 	= 	9;
	final static int CPI 	= 	10;
	final static int CPIi 	= 	11;
	final static int BZJ 	= 	12;
	final static int BZJi 	= 	13;
	final static int MULT  	=	14;
	final static int MULTi	=	15;
	
	public static void main(String[] args) throws FileNotFoundException {
		/*
		
		Functions Prototypes:
		
		Hardware(int,int)				--> Constructor, Initialize #Switch,#Led
											If initialize with 0,0 , window wont appear.
		
		Switch & Led Functions,
		
		void setLed(int,boolean)		--> Sets given index of led on/off, index range N:0
		void setLed(int)				--> Sets all leds
		boolean getSwitch(int)			--> Gets given index of switch, index range N:0
		int getSwitch(int,int)			--> Gets switches range of parameter1 and parameter2
		int getSwitch()					--> Gets all switch
		
		Memory Functions,
		
		void setAddress(short)			--> Assigns address
		void setDataIn(long)			--> Assigns data in
		void setWriteEnable()			--> Enables write to memory
		void resetWriteEnable()			--> Disables write to memory
		long getDataOut()				--> Returns data out
		void loadProgram()				--> Loads memin.txt
		void dumpMemory()				--> Dumps memory to memout.txt
		string hexToBin(string)			--> Converts hexadecimal to binary 
		
		void posedge()					--> Positive edge of clock
											Every assigns realizes after call this function
		void setClockPeriod(int)		--> Period of clock, Default 500
	*/
		// Use Hardware class
		Hardware sCPU = new Hardware(0,0);
		
		long instr;
		long A,B,Astar,Bstar;
		int pc = 0;
		boolean rst=false;
		// Load program to memory array
		sCPU.loadProgram();
		// Instructions of simpleCPU
		while(true){
			sCPU.posedge();
			instr = sCPU.getDataOut()>>28;
			//System.exit(1);
			if(rst){
				sCPU.resetWriteEnable();
				sCPU.setAddress((short) 0);
				sCPU.setDataIn(0);
			}
			else {
				switch((int)instr){
				case ADD:
					A = (sCPU.getDataOut()>>14)&0x00003FFF; //data_fromRAM[23:14];
					B = sCPU.getDataOut()&0x00003FFF; //data_fromRAM[9:0];
					sCPU.setAddress((short) B); //addr_toRAM = B;
					sCPU.posedge(); //@(posedge clk);
					Bstar = sCPU.getDataOut(); //data_fromRAM;
					sCPU.setAddress((short) A); //addr_toRAM = A;
					sCPU.posedge(); //@(posedge clk);
					Astar = sCPU.getDataOut() + Bstar; //data_fromRAM + Bstar;
					sCPU.setDataIn(Astar); //data_toRAM = Astar;
					sCPU.setWriteEnable(); //wrEn = 1;
					sCPU.posedge();//@(posedge clk);
					sCPU.resetWriteEnable(); //wrEn = 0;
					pc = pc + 1;
					sCPU.setAddress((short) pc);//addr_toRAM = pc;
					break;
				case ADDi:
					A = (sCPU.getDataOut()>>14)&0x00003FFF; //data_fromRAM[23:14];
					B = sCPU.getDataOut()&0x00003FFF; //data_fromRAM[9:0];
					sCPU.setAddress((short)A); //addr_toRAM = A;
					sCPU.posedge(); //@(posedge clk);
					Astar = sCPU.getDataOut() + B; //data_fromRAM + B;
					sCPU.setDataIn(Astar); //data_toRAM = Astar;
					sCPU.setWriteEnable(); //wrEn = 1;
					sCPU.posedge(); //@(posedge clk);
					sCPU.resetWriteEnable(); // wrEn = 0;
					pc = pc + 1;
					sCPU.setAddress((short) pc); //addr_toRAM = pc;
					break;
				case NAND:
					A = (sCPU.getDataOut()>>14)&0x00003FFF; //data_fromRAM[23:14];
					B = sCPU.getDataOut()&0x00003FFF; //data_fromRAM[9:0];
					sCPU.setAddress((short) B); //addr_toRAM = B;
					sCPU.posedge(); //@(posedge clk);
					Bstar = sCPU.getDataOut(); //data_fromRAM;
					sCPU.setAddress((short) A); //addr_toRAM = A;
					sCPU.posedge(); //@(posedge clk);
					Astar = ~(sCPU.getDataOut() & Bstar); //~(data_fromRAM & Bstar);
					sCPU.setDataIn(Astar); //data_toRAM = Astar;
					sCPU.setWriteEnable(); //wrEn = 1;
					sCPU.posedge(); //@(posedge clk);
					sCPU.resetWriteEnable(); //wrEn = 0;
					pc = pc + 1;
					sCPU.setAddress((short) pc); //addr_toRAM = pc;
					break;
				case NANDi:
					A = (sCPU.getDataOut()>>14)&0x00003FFF; //data_fromRAM[23:14];
					B = sCPU.getDataOut()&0x00003FFF; //data_fromRAM[9:0];
					sCPU.setAddress((short) A); //addr_toRAM = A;
					sCPU.posedge(); //@(posedge clk);
					Astar = ~(sCPU.getDataOut() & B); //~(data_fromRAM & B); // check !!
					sCPU.setDataIn(Astar); //data_toRAM = Astar;
					sCPU.setWriteEnable(); //wrEn = 1;
					sCPU.posedge(); //@(posedge clk);
					sCPU.resetWriteEnable(); //wrEn = 0;
					pc = pc + 1;
					sCPU.setAddress((short) pc);//addr_toRAM = pc;
					break;
				case SRL:
					A = (sCPU.getDataOut()>>14)&0x00003FFF; //data_fromRAM[23:14];
					B = sCPU.getDataOut()&0x00003FFF; //data_fromRAM[9:0];
					sCPU.setAddress((short) B); //addr_toRAM = B;
					sCPU.posedge();//@(posedge clk);
					Bstar = sCPU.getDataOut();//data_fromRAM;
					sCPU.setAddress((short) A); //addr_toRAM = A;
					sCPU.posedge();//@(posedge clk);
					Astar = sCPU.getDataOut(); //data_fromRAM;
					if(Bstar < 32){
						Astar = Astar >> Bstar;
					}
					else {
						Astar = Astar << (Bstar - 32);
					}
					sCPU.setDataIn(Astar); //data_toRAM = Astar;
					sCPU.setWriteEnable(); //wrEn = 1;
					sCPU.posedge(); //@(posedge clk);
					sCPU.resetWriteEnable(); //wrEn = 0;
					pc = pc + 1;
					sCPU.setAddress((short) pc); //addr_toRAM = pc;
					break;
				case SRLi:
					A = (sCPU.getDataOut()>>14)&0x00003FFF; //data_fromRAM[23:14];
					B = sCPU.getDataOut()&0x00003FFF; //data_fromRAM[9:0];
					sCPU.setAddress((short) A); //addr_toRAM = A;
					sCPU.posedge(); //@(posedge clk);
					Astar = sCPU.getDataOut(); //data_fromRAM;
					if(B < 32){
						Astar = Astar >> B;
					}
					else {
						Astar = Astar << (B - 32);
					}
					sCPU.setDataIn(Astar); //data_toRAM = Astar;
					sCPU.setWriteEnable(); //wrEn = 1;
					sCPU.posedge(); //@(posedge clk);
					sCPU.resetWriteEnable(); //wrEn = 0;
					pc = pc + 1;
					sCPU.setAddress((short) pc);//addr_toRAM = pc;
					break;
				case LT:
					A = (sCPU.getDataOut()>>14)&0x00003FFF; //data_fromRAM[23:14];
					B = sCPU.getDataOut()&0x00003FFF; //data_fromRAM[9:0];
					sCPU.setAddress((short) B); //addr_toRAM = B;
					sCPU.posedge(); //@(posedge clk);
					Bstar = sCPU.getDataOut(); //data_fromRAM;
					sCPU.setAddress((short) A); //addr_toRAM = A;
					sCPU.posedge(); //@(posedge clk);
					Astar = (sCPU.getDataOut() < Bstar) ? 1 : 0; //(data_fromRAM < Bstar) ? 1 : 0;
					sCPU.setDataIn(Astar); //data_toRAM = Astar;
					sCPU.setWriteEnable(); //wrEn = 1;
					sCPU.posedge(); //@(posedge clk);
					sCPU.resetWriteEnable(); //wrEn = 0;
					pc = pc + 1;
					sCPU.setAddress((short) pc); //addr_toRAM = pc;
					break;
				case LTi:
					A = (sCPU.getDataOut()>>14)&0x00003FFF; //data_fromRAM[23:14];
					B = sCPU.getDataOut()&0x00003FFF; //data_fromRAM[9:0];
					sCPU.setAddress((short) A); //addr_toRAM = A;
					sCPU.posedge(); //@(posedge clk);
					Astar = B;
					sCPU.setDataIn(Astar); //data_toRAM = Astar;
					sCPU.setWriteEnable(); //wrEn = 1;
					sCPU.posedge(); //@(posedge clk);
					sCPU.resetWriteEnable(); //wrEn = 0;
					pc = pc + 1;
					sCPU.setAddress((short) pc); //addr_toRAM = pc;
					break;
				case CP:
					A = (sCPU.getDataOut()>>14)&0x00003FFF; //data_fromRAM[23:14];
					B = sCPU.getDataOut()&0x00003FFF; //data_fromRAM[9:0];
					sCPU.setAddress((short) B);//addr_toRAM = B;
					sCPU.posedge(); //@(posedge clk);
					Bstar = sCPU.getDataOut(); //data_fromRAM;
					sCPU.setAddress((short) A); //addr_toRAM = A;
					sCPU.posedge(); //@(posedge clk);
					Astar = Bstar;
					sCPU.setDataIn(Astar); //data_toRAM = Astar;
					sCPU.setWriteEnable(); //wrEn = 1;
					sCPU.posedge(); //@(posedge clk);
					sCPU.resetWriteEnable(); //wrEn = 0;
					pc = pc + 1;
					sCPU.setAddress((short) pc); //addr_toRAM = pc;
					break;
				case CPi:
					A = (sCPU.getDataOut()>>14)&0x00003FFF; //data_fromRAM[23:14];
					B = sCPU.getDataOut()&0x00003FFF; //data_fromRAM[9:0];
					sCPU.setAddress((short) A); //addr_toRAM = A;
					sCPU.posedge(); //@(posedge clk);
					Astar = B;
					sCPU.setDataIn(Astar); //data_toRAM = Astar;
					sCPU.setWriteEnable(); //wrEn = 1;
					sCPU.posedge(); //@(posedge clk);
					sCPU.resetWriteEnable(); //wrEn = 0;
					pc = pc + 1;
					sCPU.setAddress((short) pc); //addr_toRAM = pc;
					break;
				case BZJ:
					A = (sCPU.getDataOut()>>14)&0x00003FFF; //data_fromRAM[23:14];
					B = sCPU.getDataOut()&0x00003FFF; //data_fromRAM[9:0];
					sCPU.setAddress((short)B);//addr_toRAM = B;
					sCPU.posedge(); //@(posedge clk);
					Bstar = sCPU.getDataOut(); //data_fromRAM;
					sCPU.setAddress((short) A); //addr_toRAM = A;
					sCPU.posedge(); //@(posedge clk);
					Astar = sCPU.getDataOut(); //data_fromRAM;
					if(Bstar == 0){
						pc = (int) Astar;
					}
					else {
						pc = pc + 1;
					}
					sCPU.setAddress((short) pc); //addr_toRAM = pc;
					break;
				case BZJi:
					A = (sCPU.getDataOut()>>14)&0x00003FFF; //data_fromRAM[23:14];
					B = sCPU.getDataOut()&0x00003FFF; //data_fromRAM[9:0];
					sCPU.setAddress((short) A); //addr_toRAM = A;
					sCPU.posedge(); //@(posedge clk);
					Astar = sCPU.getDataOut(); //data_fromRAM;
					pc = (int) (Astar + B);
					sCPU.setAddress((short) pc); //addr_toRAM = pc;
					break;
				case MULT:
					A = (sCPU.getDataOut()>>14)&0x00003FFF; //data_fromRAM[23:14];
					B = sCPU.getDataOut()&0x00003FFF; //data_fromRAM[9:0];
					sCPU.setAddress((short) B);//addr_toRAM = B;
					sCPU.posedge(); //@(posedge clk);
					Bstar = sCPU.getDataOut(); //data_fromRAM;
					sCPU.setAddress((short) A); //addr_toRAM = A;
					sCPU.posedge(); //@(posedge clk);
					Astar = sCPU.getDataOut() * Bstar; //data_fromRAM * Bstar;
					sCPU.setDataIn(Astar); //data_toRAM = Astar;
					sCPU.setWriteEnable(); //wrEn = 1;
					sCPU.posedge(); //@(posedge clk);
					sCPU.resetWriteEnable(); //wrEn = 0;
					pc = pc + 1;
					sCPU.setAddress((short) pc); //addr_toRAM = pc;
					break;
				case MULTi:
					A = (sCPU.getDataOut()>>14)&0x00003FFF; //data_fromRAM[23:14];
					B = sCPU.getDataOut()&0x00003FFF; //data_fromRAM[9:0];
					sCPU.setAddress((short) A); //addr_toRAM = A;
					sCPU.posedge(); //@(posedge clk);
					Astar = sCPU.getDataOut() * B; //data_fromRAM * B;
					sCPU.setDataIn(Astar); //data_toRAM = Astar;
					sCPU.setWriteEnable(); //wrEn = 1;
					sCPU.posedge(); //@(posedge clk);
					sCPU.resetWriteEnable(); //wrEn = 0;
					pc = pc + 1;
					sCPU.setAddress((short) pc); //addr_toRAM = pc;
					break;
				}
			}
			// For testing the results 
			sCPU.dumpMemory();
		}
	}
}


Errors & Warnings
Convert
* Currently captcha disabled!
Readme

Type Casting Warnings