??? 01/30/05 01:11 Read: times |
#86114 - ABEL questions Responding to: ???'s previous message |
First, I've gotta say: if you're getting into programmable logic, I highly recommend forgetting about ABEL. Rather, flip a coin and choose to learn either Verilog or VHDL. (Or both.) CPLD/FPGA vendors Brand A and Brand X both offer free versions of synthesis tools and the ModelSim simulator.
Payam Soltany said:
1) Is the "code" generated by ABEL compiler identical for these two expressions of the same thing? It IS supposed to be identical but is it? Who guarantees this? I mean...you know...it's a very delicate task to be done by the compiler, and a beautiful one of course. ABEL is basically assembly language and its output will be whatever you give it. There may be some product-term collapsing but minimization is very minimal. As for your examples, they are just different ways of writing the exact same thing, so the result will be identical. The compiled code of these two expressions must exactly yield to the same burnt fuses or whatever in the two CPLDs. It does not seem to me that the compiler designers have been stupid enough to neglect this point. what do you think? Maybe the sum of products structure inherently implies this, right? wrong? Ah, don't forget that after the ABEL compiler does its job, its output is handed to the place-and-route tools. There are various fitter features that can indeed give you different results from identical code. For example, just change your pins! Or, change the seed that is used to start the placement process. Or change your timing constraints. The result is guaranteed to be logically and functionally equivalent, but if your fit ends up using different resources in the chip, the fuse map and the checksum and such will not be identical. 2) Given to the ABEL compiler one of these two expressions, does it really produce the simplest arrengement of gates? With the least number of gates? ... Will the compiler be intelligent enough? ABEL won't do that, but the fitter will, and the fitters are really good these days. 3) Somehow a repeatition of the same questions: Do we have to "tell" the ABEL compiler what we want in the simplest way i.e. (A and B) instead of !(!A or !B)? for instance? or the compiler has the ability to "reduce" it to death? Yes, ABEL will DeMorganize as necessary. 4) Assume a combinational-only CPLD. now, if a number of signals are geiven to CPLD input pins all at once, will the combinational outputs get out of output pins at once? I mean is the propagation delay the same for all the output signals independent of their logic function? In my upper implementation for instance, had we had the CPLD to negate a signal, would the negated signal get out of the CPLD faster than the LE signals? Or they all would get out with the same say 7.5ns(for 9572) delay?
It depends on the function and the routing and the placement of the logic blocks within the device. You really need to look at the data sheets and see how each device handles large logic functions. If an equation only has a couple of inputs, then it will be faster than one that requires more product terms than the logic block normally supports. The large logic functions will "Borrow" product terms from nearby logic blocks and there will of course be additional delays. If you really need the outputs to change at the same time, the answer is obvious: synchronous design and make sure the output flops are in the I/O block. --a |
Topic | Author | Date |
CPLD/ABEL question/invitation | 01/01/70 00:00 | |
CPLD questions | 01/01/70 00:00 | |
ABEL questions | 01/01/70 00:00 | |
vell... | 01/01/70 00:00 | |
Minimisation | 01/01/70 00:00 | |
NP complete | 01/01/70 00:00 | |
Answer to the third question | 01/01/70 00:00 | |
CPLD headstart (ppt) | 01/01/70 00:00 | |
New questions | 01/01/70 00:00 | |
new answers | 01/01/70 00:00 | |
JTAG pull-up | 01/01/70 00:00 | |
re: JTAG pull-up | 01/01/70 00:00 | |
NP completness | 01/01/70 00:00 | |
basic error | 01/01/70 00:00 | |
Eric | 01/01/70 00:00 | |
How to Build a Jtag Cable | 01/01/70 00:00 | |
pegboard | 01/01/70 00:00 | |
jtag cable![]() | 01/01/70 00:00 |