Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
You are on the right track with the use of Registers to cut down the cycle time (there's a reason it gives you a "Plus 22 more mTicks" on the time limit). You may need to find a more efficient setup. My solution (which is over the ideal module count, but whatever) has a 15mTick cycle, with the longest path shared by two paths. It also has a single read module.
A couple suggestions, influenced by my own solution:
1. Only ever read from a memory address once. I suspect this is where you're failing.
2. When you write a product, don't discard the number you just got as a result, especially if you're otherwise just going to re-read it from memory anyways.
3. don't forget you can have up 8 different values on a single register module, and the number of values has no effect on its speed.
I used 1 multiply module, and store that in a register along with its target address so that the cycle time doesn't have to have a multiply + a write. This register also doubled as my 'history', so that I could use it for the next cycle's multiply.
One trick I found out to use is to make a solution that functionally works (it may time out), and then add a register stack (usually after the 1st read) to pipeline that solution. You have to find a spot in your modules to insert it before the inputs of all the dependent modules to the right.