PacoBlaze 2.2

Dear group:

PacoBlaze 2.2 has been released. This version solves some bugs that were still lurking in the stack and interrupt manipulation. The cores have also received more testing, and more debug information has been added to simulations enabled with the HAS_DEBUG macro. Instructions also have now a one-hot encoding format that is used when USE_ONEHOT_ENCODING is defined. Unfortunately, the compatibility with Icarus Verilog is broken but I am still working on it.

The KCAsm assembler has been tweaked a bit to accept constructs in the form of the original KCPSM assembler, so that most PSM files should be accepted with little or no modification.

The PacoBlaze web site is at

formatting link
where you can find more information and links to the source distribution.

I can't end this post without referring to the tragic and unexpected loss of Rodney Smith. My deepest condolences to his family and friends. He was one of the pioneers and pillars of this industry that has vamped digital design in a new era. He will be really missed.

Warmest regards.

-- PabloBleyerKocik / "I wish I could sleep in a warm sleeping bag. pablo / No matter what happens I am going to climb McKinley." @bleyer.org / -- Naomi Uemura, 1984

Reply to
Pablo Bleyer Kocik
Loading thread data ...

Hi Pablo, Can you add a simple table of Options/Resource, along the lines of the one here ?

formatting link

-jg

Reply to
Jim Granville

Pablo,

I was also wondering if you fixed the issues with the assembler that I wrote to you about last June?

Pablo,

I encountered the follow error:

java -Dkcpsm=3 -Dbram=18 -Dmodule=isp -jar c:/clcfpga2/pacoblaze-2.1b1/ KCAsm.jar isp.psm isp.rmh Exception in thread "main" TokenMgrError: Lexical error at line 668, column 23. Encountered: "(" (40), after : "" at KCAsmTokenManager.getNextToken(KCAsmTokenManager.java:539) at KCAsm.jj_scan_token(KCAsm.java:629) at KCAsm.jj_3_15(KCAsm.java:479) at KCAsm.jj_3R_9(KCAsm.java:466) at KCAsm.jj_3_17(KCAsm.java:381) at KCAsm.jj_2_17(KCAsm.java:340) at KCAsm.Arguments(KCAsm.java:213) at KCAsm.CommandExpression(KCAsm.java:152) at KCAsm.Expression(KCAsm.java:100) at KCAsm.Start(KCAsm.java:84) at KCAsm.main(KCAsm.java:41)

The line of code that cause this error is pointed to below. load Areg, seedata0 ; pointer to eeprom parameters fetch accm, fpwmminus0 ; pwmminus0

--> store accm, (Areg) ; add Areg, 01 ;

I also noticed that there is a compatibility issue with the Xilinx kcpsm assembler. It defaults to hex format for numbers while yours defaults to decimal. This caused some of my constant definitions that were hex values to give an errors

thanks for you help.

Dave Colson

Reply to
dscolson

Hello Dave.

Yes, these issues have been fixed. The assembler now accepts bounded '()' tokens; just as a visual convenience since they are converted to regular arguments. The default format is now hexadecimal. If a name is not found in the environment, and if that word is a valid hex number, it gets converted to the latter. It's a shame the kcpsm assembler treats numbers these way, it is not the default format of most assemblers, and usually numbers in a different radix are decorated in some way to avoid confusion or a clash with valid labels. KCAsm supports binary (%) octal (@), decimal (&), and hexadecimal ($) modifiers.

KCAsm still accepts names only in valid C format - the identifiers can't start with a number or symbol different to the underscore (_).

Please tell me if you find other issues.

Best regards.

-- PabloBleyerKocik /"But what... is it good for?" pablo / -- 1968 Engineer at IBM's Advanced Computing @bleyer.org / Systems Division, commenting on the microchip

Reply to
Pablo Bleyer Kocik

Pablo,

Thanks for the fixes. However, I Just found another "bug" more of a compatibility issue. KCPSM allows the following renaming of registers as follows: first namereg namereg s4, clkcnt ; temp register : : later renamed S4. however, KCPSM requires you use the name you renamed S4 to previously.

namereg clkcnt, DIFF0 ;

Here is the output of KCasm I don't know if this one will be an easy one the fix.

C:\clcfpga2\PACOBL~1.2\test>asmkcpsm isp

C:\clcfpga2\PACOBL~1.2\test>java -Dkcpsm=3 -Dbram=18 -Dmodule=isp -jar c:/clcfpga2/pacoblaze-

2.2/KCAsm.jar isp.psm isp.rmh Exception in thread "main" java.lang.IllegalArgumentException: Bad register declaration: name reg(clkcnt,DIFF0) at line 1358 at Assembler.parse(Assembler.java:155) at Assembler3.(Assembler3.java:55) at KCAsm.main(KCAsm.java:48)

C:\clcfpga2\PACOBL~1.2\test>

Best regards

Dave

Reply to
dscolson

Thanks, Dave. I will look into that.

Regards.

Reply to
Pablo Bleyer Kocik

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.