[[labs.beatcraft.com]] ''Caution'':~ The project of JavaRock, a high-level synthesis language has already been closed.~ It has moved to its successor, which is called [[Synthesijer]].~ BC::labs puts weight on the project of Stnthesijer and frequently update the new project.~ ~ Please consider this page and JavaRock related articles as reference. #contents ~ * JavaRock [#b5d88802] > JavaRock is a high-level synthesis language, which generates HDL from Java language.~ This article shows how to set up the basic working environment for JavaRock.~ ~ If you like to see how JavaRock works with an evaluation board, please visit this [[page>http://labs.beatcraft.com/en/index.php?DE0-Nano%2FJavaRock]].~ This example shows how to use JavaRock for DE0-Nano.~ If you like to see how JavaRock works with an evaluation board, please visit this [[page>http://labs.beatcraft.com/en/index.php?DE0-Nano%2FJavaRock]].~ This example shows how to use JavaRock for DE0-Nano.~ * How to Compile a JavaRock sample on Ubuntu (12.04 32bit version) [#obbde32b] ** Basic set up [#xbf69616] > The newest compiled JavaRock is javarock_20130708.jar, and the latest sample code set of JavaRock is samples_20130707.tar,gz.~ Please download them from the URL shown below.~ [[http://sourceforge.net/projects/javarock/files/20130708/]] > Install Ubuntu 12.04 (32bit version) and add the package listed below. $ sudo apt-get install build-essential $ sudo apt-get install openjdk-7-jdk ** Compile JavaRock Samples [#j2911306] > Set PATH, which defines the location of javarock_20130708.jar is placed, to the environment variable of JavaRock, JAVAROCK. $ export JAVAROCK=/home/beat/JavaRock/javarock_20130708.jar ~ Compile samples/pong.~ Assume that the directory of samples is /home/beat/JavaRock/samples.~ If comile_fpga.sh does not have the executable permission, give it, and execute it.~ $ cd JavaRock/ $ ls javarock_20130708.jar samples samples_20130707.tar.gz $ export JAVAROCK=/home/beat/JavaRock/javarock_20130708.jar $ cd samples/pong/ $ ls ButtonIF.java DE2-115 Game.java Top.java acknowledgement.txt compile_fpga.bat compile_fpga.sh $ chmod +x compile_fpga.sh $ ./compile_fpga.sh Compile: ButtonIF Compile: Game Compile: Top pass: connection pass: bypass pass: optimization pass: linkage pass: generate VHDLArrayAccess:getReadSignal: TO => net.wasamon.javarock.model.vhdl.VHDLIdent VHDLArrayAccess:getReadSignal: TO => net.wasamon.javarock.model.vhdl.VHDLIdent VHDLArrayAccess:getReadSignal: TO => net.wasamon.javarock.model.vhdl.VHDLIdent VHDLArrayAccess:getReadSignal: TO => net.wasamon.javarock.model.vhdl.VHDLIdent VHDLArrayAccess:getReadSignal: TO => net.wasamon.javarock.model.vhdl.VHDLIdent VHDLArrayAccess:getReadSignal: TO => net.wasamon.javarock.model.vhdl.VHDLIdent VHDLArrayAccess:getReadSignal: TO => net.wasamon.javarock.model.vhdl.VHDLIdent VHDLArrayAccess:getReadSignal: TO => net.wasamon.javarock.model.vhdl.VHDLIdent VHDLArrayAccess:getReadSignal: TO => net.wasamon.javarock.model.vhdl.VHDLIdent VHDLArrayAccess:getReadSignal: TO => net.wasamon.javarock.model.vhdl.VHDLIdent VHDLArrayAccess:getReadSignal: TO => net.wasamon.javarock.model.vhdl.VHDLIdent VHDLArrayAccess:getReadSignal: TO => net.wasamon.javarock.model.vhdl.VHDLIdent ~ After the compile process is completed, please check that class files and vhd file are generated.~ $ ls ButtonIF.class DE2-115 Game.java Top.java compile_fpga.bat game.vhd ButtonIF.java Game.class Top.class acknowledgement.txt compile_fpga.sh top.vhd * How to Compile JavaRock sample on Mac OS X [#m8f0256a] > JavaRock can be compiled on Mac OS X Mavericks (10.9.3) if JDK7 is installed to Mac OS X.~ The default Java on Mac OS X Mavericks is Java 1.6, but JavaRock cannot be compiled with Java 1.6. Java 1.7 is the requirement.~ ~ $ java -version java version "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode) $ /usr/libexec/java_home -V Matching Java Virtual Machines (2): 1.6.0_65-b14-462, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 1.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home ~ Download Oracle JDK from the URL below.~ [[http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html]]~ After the download of jdk-7u55-maxosx-x64.dmg is completed, the execute the file.~ As the installer screen shows up, please follow its instructions to install JDK.~ After the installation is completed, please check its version of JDK.~ $ java -version java version "1.7.0_55" Java(TM) SE Runtime Environment (build 1.7.0_55-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode) $ /usr/libexec/java_home -V Matching Java Virtual Machines (3): 1.7.0_55, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home 1.6.0_65-b14-462, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 1.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home ** Compile JavaRock samples [#h615f7a0] > Confirming that JDK7 is installed, set PATH, which defines the location of javarock_20130708.jar is placed, to the environment variable of JavaRock, JAVAROCK. This is the same way as having done to Ubuntu.~ $ export JAVAROCK=/home/beat/JavaRock/javarock_20130708.jar Setting PATH to the environment variable, execute samples/test/test.sh.~ $ cd ~/JavaRock/samples/test $ ./test.sh Compile: counter Compile: led Compile: SC1602Wrapper Compile: SC1602Writer Compile: sc1602_test Compile: echo Compile: rs232c Compile: test pass: connection pass: bypass pass: optimization pass: linkage pass: generate VHDLArrayAccess:getReadSignal: TO => net.wasamon.javarock.model.vhdl.VHDLIdent VHDLArrayAccess:getReadSignal: TO => net.wasamon.javarock.model.vhdl.VHDLIdent ~ $ ls counter.vhd rs232c.vhd test.class echo.vhd sc1602_test.vhd test.java led.vhd sc1602writer.vhd test.sh rs232c.class sim.VHD test.ucf rs232c.java test.bat tes ~ If the class file and vhd file exist, this file, test.sh, is executed correctly,~ If test.sh is executed without updating the version of Java, these errors will occur. The details are shown below.~ ~ $ cd ~/JavaRock/samples/test $ ./test.sh An exception has occurred in the compiler ((version info not available)). Please file a bug at the JavaRock BugTracks (http://sourceforge.net/p/javarock/bugs/) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you. java.lang.NoClassDefFoundError: javax/lang/model/type/UnionType at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637) at java.lang.ClassLoader.defineClass(ClassLoader.java:621) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at openjdk.com.sun.tools.javac.comp.MemberEnter.<init>(MemberEnter.java:95) at openjdk.com.sun.tools.javac.comp.MemberEnter.instance(MemberEnter.java:85) at openjdk.com.sun.tools.javac.comp.Enter.<init>(Enter.java:126) at openjdk.com.sun.tools.javac.comp.Enter.instance(Enter.java:114) at openjdk.com.sun.tools.javac.comp.Check.<init>(Check.java:96) at openjdk.com.sun.tools.javac.comp.Check.instance(Check.java:86) at openjdk.com.sun.tools.javac.code.Types.<init>(Types.java:101) at openjdk.com.sun.tools.javac.code.Types.instance(Types.java:88) at openjdk.com.sun.tools.javac.jvm.ClassReader.<init>(ClassReader.java:264) at openjdk.com.sun.tools.javac.jvm.ClassReader.instance(ClassReader.java:226) at openjdk.com.sun.tools.javac.main.JavaCompiler.<init>(JavaCompiler.java:331) at openjdk.com.sun.tools.javac.main.JavaCompiler.instance(JavaCompiler.java:88) at openjdk.com.sun.tools.javac.main.Main.compile(Main.java:424) at openjdk.com.sun.tools.javac.main.Main.compile(Main.java:353) at openjdk.com.sun.tools.javac.main.Main.compile(Main.java:342) at openjdk.com.sun.tools.javac.main.Main.compile(Main.java:333) at openjdk.com.sun.tools.javac.Main.compile(Main.java:76) at openjdk.com.sun.tools.javac.Main.main(Main.java:61) Caused by: java.lang.ClassNotFoundException: javax.lang.model.type.UnionType at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 30 more * About JavaRock [#va404bd1] > The contents of expanded samples_201310707.tar.gz are organized as they are shown below.~ In the following directories, kc705 indicates this directory for Xilinx Kintex-7 FPGA KC705.~ Test directory is for Virtex-6 FPGA ML605 Evaluation Kit. microboard is the directory for Avnet Spartan-6 LX9 MicroBoard.~ Zedboard is the test directory for Xulinx ZedBoard ZedBoard.~ ~ >> samples~ ├── altera~ │ ├── DE2_115.qsf~ │ ├── DE2_115.v~ │ ├── Test.java~ │ ├── Top.java~ │ ├── mandelbrot~ │ │ ├── Firefly.java~ │ │ ├── Mandelbrot.java~ │ │ ├── SC1602Wrapper.java~ │ │ ├── SC1602Writer.java~ │ │ ├── VGAIf.java~ │ │ ├── VGAJavaTest.java~ │ │ ├── VGAWrapper.java~ │ │ ├── compile~ │ │ │ ├── mandelbrot.sof~ │ │ │ ├── test.qsf~ │ │ │ └── test.sof~ │ │ ├── main.java~ │ │ ├── sc1602_test.java~ │ │ ├── test.sh~ │ │ └── test.v~ │ ├── mandelbrot.sof~ │ ├── test~ │ │ ├── Firefly.java~ │ │ ├── Mandelbrot.java~ │ │ ├── SC1602Wrapper.java~ │ │ ├── SC1602Writer.java~ │ │ ├── VGAIf.java~ │ │ ├── VGAJavaTest.java~ │ │ ├── VGAWrapper.java~ │ │ ├── main.java~ │ │ ├── sc1602_test.java~ │ │ ├── test.sh~ │ │ └── test.v~ │ ├── test.qsf~ │ └── test.sof~ ├── arith~ │ ├── arith.java~ │ ├── assign.java~ │ └── floating.java~ ├── array~ │ ├── BitVectorTest.java~ │ ├── bitvectortest_sim.VHD~ │ ├── fill.java~ │ ├── fillsim.java~ │ ├── fillsim_sim.VHD~ │ ├── main.java~ │ ├── out.vcd~ │ ├── rx.java~ │ ├── sum.java~ │ ├── sumsim.java~ │ ├── sumsim_sim.VHD~ │ ├── test.java~ │ ├── test2.java~ │ ├── test3.java~ │ ├── testTest.java~ │ ├── testtestsim.VHD~ │ ├── tx.java~ │ └── work-obj93.cf~ ├── bench~ │ ├── BubbleSort.java~ │ ├── BubbleSortMod.java~ │ ├── BubbleSortSim.java~ │ ├── BubbleSortThread.java~ │ ├── Sieve.java~ │ ├── SieveMod.java~ │ ├── SieveSim.java~ │ ├── SieveThread.java~ │ ├── bubblesort.sh~ │ ├── sieve.sh~ │ ├── simbubble.VHD~ │ └── simsieve.VHD~ ├── bf e-trees exStick~ │ ├── BF.java~ │ ├── HW.java~ │ ├── IO.java~ │ ├── Test.java~ │ ├── TestHW.java~ │ ├── compile.sh~ │ ├── exstick.VHD~ │ ├── exstick.ucf~ │ ├── exstick2.ucf~ │ ├── rs232c.java~ │ ├── sim~ │ │ └── IO.java~ │ ├── sim.VHD~ │ ├── test.ucf~ │ └── top.VHD~ ├── callback~ │ ├── CallBackTest.java~ │ ├── Counter.java~ │ ├── test.ucf~ │ └── top.v~ ├── container~ │ ├── List.java~ │ ├── Stack.java~ │ └── Test.java~ ├── echo~ │ ├── UpperEcho.java~ │ ├── echo.java~ │ └── rs232c.java~ ├── float~ │ └── test.java~ ├── i2c~ │ ├── I2C_IF.java~ │ ├── I2C_Master_Wrapper.java~ │ ├── I2C_Test.java~ │ ├── SimpleI2C_Wrapper.java~ │ ├── top.VHD~ │ └── zedboard.ucf~ ├── kc705~ │ ├── compile.bat~ │ ├── compile.sh~ │ ├── rs232c.java~ │ ├── test.java~ │ ├── test.sh~ │ ├── top.VHD~ │ └── top.ucf~ ├── led~ │ ├── Firefly.java~ │ ├── counter.java~ │ └── led.java~ ├── microboard │ ├── button.java~ │ ├── microboard.sh~ │ ├── sim.VHD~ │ ├── test.java~ │ ├── test.ucf~ │ └── top.VHD~ ├── old~ │ ├── Hoge.java~ │ ├── MUX.java~ │ ├── MyString.java~ │ ├── append.java~ │ ├── appendsim.java~ │ ├── arraysim.java~ │ ├── arraysim2.java~ │ ├── arraytest.java~ │ ├── arraytest2.java~ │ ├── echo0.java~ │ ├── echo1.java~ │ ├── put.java~ │ ├── state.java~ │ └── step.java~ ├── pong~ │ ├── ButtonIF.java~ │ ├── DE2-115~ │ │ ├── DE2-115.qpf~ │ │ └── DE2-115.qsf~ │ ├── Game.java~ │ ├── Top.java~ │ ├── acknowledgement.txt~ │ ├── compile_fpga.bat~ │ └── compile_fpga.sh~ ├── prime~ │ ├── Prime.java~ │ ├── PrimeSim.java~ │ ├── PrimeThread.java~ │ ├── sim.VHD~ │ └── test.sh~ ├── random~ │ ├── Random19Wrapper.java~ │ └── sim.VHD~ ├── sc1602~ │ ├── SC1602Wrapper.java~ │ ├── SC1602Writer.java~ │ ├── ml605_sc1602.ucf~ │ └── sc1602_test.java~ ├── sformat~ │ ├── SParser.java~ │ ├── SParserTest.java~ │ └── test.dat~ ├── syntax~ │ ├── cond.java~ │ ├── condtest.java~ │ ├── condtest_sim.VHD~ │ ├── for_test.java~ │ ├── for_test_test.java~ │ ├── for_test_test_sim.VHD~ │ ├── out.vcd~ │ ├── private_method.java~ │ ├── private_method_test.java~ │ ├── private_method_test_sim.VHD~ │ ├── public_constant.java~ │ ├── public_constant_test.java~ │ ├── public_constant_test_sim.VHD~ │ ├── subblock.java~ │ ├── subblock_test.java~ │ ├── subblock_test_sim.VHD~ │ ├── sync.java~ │ ├── sync_test.java~ │ ├── sync_test_sim.VHD~ │ ├── thread_test.java~ │ ├── thread_test_test.java~ │ ├── thread_test_test_sim.VHD~ │ ├── type_test.java~ │ ├── type_test_test.java~ │ ├── type_test_test_sim.VHD~ │ └── work-obj93.cf~ ├── test~ │ ├── rs232c.java~ │ ├── sim.VHD~ │ ├── test.bat~ │ ├── test.java~ │ ├── test.sh~ │ └── test.ucf~ ├── upl_tx_rx~ │ ├── Makefile~ │ ├── UPL32Test.java~ │ ├── UPL32_RX.java~ │ ├── UPL32_TX.java~ │ ├── UPL8Test.java~ │ ├── UPL8_RX.java~ │ ├── UPL8_TX.java~ │ ├── simpledualportram.VHD~ │ ├── upl32_sim.VHD~ │ ├── upl8_sim.VHD~ │ ├── vhdl_upl32_rx_wrapper.VHD~ │ ├── vhdl_upl32_tx_wrapper.VHD~ │ ├── vhdl_upl8_rx_wrapper.VHD~ │ ├── vhdl_upl8_tx_wrapper.VHD~ │ ├── vhdl_upl_rx.VHD~ │ └── vhdl_upl_tx.VHD~ ├── vgatest~ │ ├── VGAIf.java~ │ ├── VGAJavaTest.java~ │ ├── VGAWrapper.java~ │ ├── sramiface.VHD~ │ ├── swing~ │ │ └── VGAIf.java~ │ ├── vga.VHD~ │ ├── vgaclk.VHD~ │ ├── vgagen.VHD~ │ └── vgaiface.VHD~ ├── vhdl~ │ ├── arraytop.vhd~ │ ├── bitvector.vhd~ │ ├── blockram.vhd~ │ ├── button.vhd~ │ ├── clk_div.vhd~ │ ├── distributedram.vhd~ │ ├── ml605.ucf~ │ ├── rs232c_rx.vhd~ │ ├── rs232c_tx.vhd~ │ ├── sim.vhd~ │ └── simpledualportram.vhd~ ├── wait-notify~ │ ├── Consumer.java~ │ ├── NoWait.java~ │ ├── NoWait2.java~ │ ├── NoWait2Test.java~ │ ├── Producer.java~ │ ├── Simulation.java~ │ ├── Test.java~ │ ├── nowait2_sim.VHD~ │ └── nowait_sim.VHD~ └── zedboard~ ├── FPGAMain.java~ ├── HDMI_1280_720_Wrapper.java~ ├── LED.java~ ├── compile.sh~ ├── i2cmem~ ├── top.VHD~ └── zedboard.ucf~ 32 directories, 232 files~ ~ * Reference [#n1a7248d] > - JavaRock's Official Web Page~ [[http://javarock.sourceforge.net/]]~ ~ - JavaRock's Source Repository~ [[http://sourceforge.net/p/javarock/git/ci/master/tree/]]~ * Revision History [#u5388e06] > - 2014/12/24 This article is initially published~ ~ - ''Caution'':~ The development of JavaRock has been closed, and it has the successor, which is called [[Synthesijer]].~ If you are interested in a high-level synthesis, which is generates HDL from Java language, please go to [[Synthesijer]].~