CUPL - reliablity and "semi-professional" use

Hi men this is my first post in the wide usenet :)

At high school profs gave me basics of the old-useless CUPL language which defines hardware structure of gal and pld. Incuriosired i took it up by myself and in a few days i learned all the easy language and made some simulations of my virtual devices.

Now (not much later) i've started to actually build some simple circuits like pwm to control fans speed and i would like to begin implementig my CUPL knowledge to give a brief watch on what i can and if pass to a more complex hdl BUT..

The CUPL compilers i've tried (wincupl from atmel and the original from the cornell university) seem to be too much bugged and unstable even to be completely unusable: a stupid error on the code often causes crashes, over many others "random" ones that when happen you need to delete all the project files and rebuild them and, almost often, correct code is impossible to be compiled. SO..

Because i don't intend to throw my little knowledge in the WC, and i can't go forward to best languages like vhdl and verlilog, i ask HELP! i want to speak CUPL but HOW?

thank you

Reply to
Davide
Loading thread data ...

Sometimes a good ol' 22V10 is the best-fit solution and when I've needed to go that route, I've used Atmel's WinCUPL without any particularly memorable difficulties. Are you experiencing any specific problem?

--
Rich Webb     Norfolk, VA
Reply to
Rich Webb

Only mysteriouses "Fatal CUPL errors encountered ... program aborted" when i compile... Pheraps is my code bad? For example, a stupid 4bit adder with carry like this does crash wincupl:

Name adder; Partno 00; Date 06/08/08; Revision 00; Designer davide; Company none; Assembly none; Location board; Device g22v10;

pin [1..4] = [a0..3]; /* a addend */ pin [5..8] = [b0..3]; /* b addend */ pin [14..18] = [o0..4]; /* output with carry */

function adder (a, b, carryin, carryout) { append carryout = a & b; append carryout = a & carryin; append carryout = b & carryin; adder = (a $ b) $ carryin; }

o0 = adder(a0, b0, 'b'0, cout0); $repeat i = [1..3] o{i} = adder(a{i}, b{i}, cout{i - 1}, cout{i}); $repend

working directories are long less than 32 chars as it's needed... boh? i think the code is correct..

Reply to
Davide

Perhaps you have a bad installation or some damaged files? I ran both device dependent and independent compiles of your code and both completed without crashes. The device dependent compile complained about excessive product terms for o3 and o2 but neither crashed. This is with ver 5.30.4.

--
Rich Webb     Norfolk, VA
Reply to
Rich Webb

[...]

I prefer ICTPLACE try googling on it and see if you can find a copy out on the internet. Chances are there still is one. It is a DOS program that did 22V10s using a clever bit of ASCII art to show how you have the macrocell configured. It is a plain DOS program with a bit of a point and click user interface.

Unfortunately, the company ICT is now long gone. They made a few really great parts and gave away a really good development tool. Later they made a Winplace, but it wasn't as good. They had a problem porting the fairly nice editor into Windows land. The Windows version didn't search.

Reply to
MooseFET

Thank you. I discovered "my mistake" in that code.. for wincupl i had to leave blank lines bitween the $repeat instructions and another one at the end of file. Mmmm wonderfull flexibility.

Thank you MooseFET for ictplace. Dos or windows doesn't matter, the important thing is that an IDE must to be powerfull. I'm going to download it.

Really thank you Davide

Reply to
Davide

David... I know what you are talking about. The tool sure is 'squirrelly' sometimes but once you get over these anomalies, it works just fine and I've done quite a few projects with it. My only real complaint is that the simulator tool is poor, but workable. Good luck Jim WB5KYE

Reply to
Jim Flanagan

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.