Just had my first taste of the company supplied software from Gowin Semicon ductor. It's ok. Documentation is terrible being not much more than a lis ting of the menu items. Lots of features are lacking.
My test file is a simple 11 bit down counter described three slightly diffe rent ways to see what might be the best for my current design which is goin g to have a lot of counters. Typically they need an enable input to kick t he counter off and a carry output to indicate the counter has reached it's terminal count (zero). A bit of combining enable logic and it's ready to a ct as the main state machine control for nearly everything I'm going to hav e to do.
To be able to halt the counter the carry output is directly carry driven, n ot registered. So that means the counter has to be a signal... I would hav e liked encapsulating it in the process as a variable. So the process just has the counter being incremented on the enable input combined with the in verted carry.
In a couple of versions I use a procedure to generate nxt_cnt and carry_out as a concurrent statement, one using unsigned and one using integers, the carry being generated by adding a msb to the adder in each case. The third version uses an integer for the counter and does a modular subtract of one in the process. The carry is a concurrent statement testing for the count er being equal to zero. To my surprise when tested on Synplify for Lattice , all three gave the same logic! So if testing for zero can be equated to a carry out of a decrementer it's all good.
But it's not all good. The Gowin software seems to make a dog's breakfast out of it and adds a bunch of logic that shouldn't be needed. They don't h ave an RTL view feature, so it's hard to tell just what they've done. For one the zero test is being done as a zero test by oring every bit. I can't figure out the rest without drawing the schematic or something. It is usi ng the same number of LUTs, but also listed is 10 ALUs which seem to be LUT s used as adders. I would expect to see 33 or 36 of those, not 10!
Maybe the FAE can help.