Arlet, your code is again not a valid comparison. Fpgasm example instantiates two modules, with 4 input IOBs and 8 output IOBs. The top module in fpgasm has no pins - all input and output are IOB instances inside. So when you say in fpgasm
Code:
button Buttons;
it creates an instance of Buttons module, which is defined in another file in this case, called DigilentSpartan3. This is the equivalent of the ucf file. You don't need a ucf file in a different language, because fpgasm is powerful enough to describe all of FPGA parts itself. You don't need another language for constraints. You can swap in another include file for a different board with the same names like Buttons that address different IOBs.
Looking at the documentation I think you can modify IOB settings like this:
Code:
mybutton SimpleInput loc:K12 std:LVTTL;
And no timing constraints - you don't need them because you are manually placing on X-Y grid . When you know your register file is always immediately to the left of your ALU, no need for timing constraint as it will always work.
Look at me - I am an expert after 3 days
I said before, Arlet, I don't want to fight with you, I have a lot of respect for all your work. Verilog is a much higher level lanugage and you can go on forever. Fpgasm does not have + or - or any logic operators - you have to make a lookup table. It does not have generate or concatenation or conditionals or case statement. Most important - verilog works, and I don't know if fpgasm does yet.
What I like is that it is really fast and simple and can do everything. It is getting me to think different about FPGA - the way I used to think about it from reading FPGA manual before learning Verilog. I think I understand it. And I keep thinking about how to make a CPU...
I feel very excited - they way I did when I got my first assembly code working on the Commodore!