Update mac_5x9x8 Revised authored by gling's avatar gling
......@@ -10,7 +10,7 @@ For our specialized case of a 5x9x8 MAC unit, $\lceil\log_2 5\rceil + 9 + 8 = 20
I first attempted to use the modified Baugh-Wooley form on slide 64 of
\url{https://web.ece.ucsb.edu/~parhami/pres_folder/f31-book-arith-pres-pt3.pdf} (a more clear representation of this method is shown at \url{https://en.wikipedia.org/wiki/Binary_multiplier#Signed_integers} with the exception of a missing 1 in the MSB of the last partial sum), but the modified Baugh-Wooley method only holds for the case where `N = M`.
Instead, we will just sign extend and allow the synthesis tools to perform the optimizations later as this is all combinational logic and should be optimizable.
Instead, we will just sign extend and rely on the synthesis tools to perform the optimizations later as this is all combinational logic and should be optimizable.
For a given multiply:
1) Sign extend the input `a` to the number of output bits, multiply by the bit in b, and shift.
......@@ -25,7 +25,8 @@ p3 = a * b[3] << 3
Since we are performing K multiplies, the constants can be pre-added and simplified to `(K << M)`. Therefore, we have an addition of N*M+1 values, each the same length as the output of the MAC unit, with the last one being the constant `(K << M)` term.
See this Compiler Explorer example for verification:
https://godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1DIApACYAQuYukl9ZATwDKjdAGFUtAK4sGIM6SuADJ4DJgAcj4ARpjEEgDM8aQADqgKhE4MHt6%2B/ilpGQIhYZEsMXFcibaY9o4CQgRMxATZPn4BdpgOmQ1NBMUR0bEJSQqNza25HeP9oYNlw5XxAJS2qF7EyOwc5vGhyN5YANQm8W4sTAQIAHQIp9gmGgCCu/uHmCdnY/iCt/ePLzMewYBy8x1Obm%2BTj%2B8QezwBADdUHh0EdksRQgQAPpRUJNACeEC8mPiZixBCOCLEXkwpCOmKOuIICmWJwA7FZnkduUd%2BMQjhAGQBrT4AEUZhAURwAtEcuKcLEcRf94uKNAqldLpazkl4CMgEE0oFTvB9zAA2AVcT5uCFK5as04AMSOYG4bqOIFdHA0buWCoBJjZosDzxJZIpF2QWPS9EEgsEpPJACojkw6eGU4yM4IjgBpHMUgCyhaO4UdHIBPPpuaZUtO4q2dAgtFQwDMEDzDpOliORZ7ivCAfhXJ5xMTEbRfTwYgUJgArBY8wuQ4uh/OQ/FOU9q%2BOCEmKWgGGNDBSGwK8za7UX/Vuqzy%2BQLhWKjuqt0qbfmNULrNYK9vq2rAB6ICjgAFQxFga11ZkjnQVAAHcGF5YhUCgzMKSII4rg%2BNBiGILoKQYIZ%2BVQKgJVgiB0mABh70Ao4QKOTBVAIVxMHQf1R3ovcDzTclILYVFzygHiI2TZYmH9Rcfw3HtLSga0ITtOtWVlLhbwA%2BijlE8lGX4vAWEEl8RIw8SoikiwZPFC0BQgRSzmUyVVLlDTQx3LTHwTIiXzfRVkLtId31oyw/3ZTStJ5Riiy8WhHGSWh8TTRlEqiBdLJXNKWAyriIvpciICifTDPYuSrSvM4jgYbsg3C3Lq2SadZzSqy0to2TzyYIrBOHdy6qDcUaiUMK6LqnkGuaGdaDnaSMsXNrrNVV8etG9kQxHXrcsYgBJcjCDdKUcKOAwxgoo4yMZZqVxzBFYgpMRaAoqVzqYEaIrwfL/NVc9whlFzhpylbxscJqZo3VqVxOecHkWuzyrcR7nPlO8Aa0/rXp5NGcsxl4cp0ikFB8F8jxPQRlofEgn1zT61Q1T74cCvzf0sf90e5Tzn3PXyPztZd3x/ELmf%2BjaIoJqDf0WoHJum9KwbmiGlIq2jkeFjHgxG7GRoIggNmQ0Weo1sMJ10qMvIPVN0xrfcxOzS381LEtbfLIXqwZOsicwZtW3bTtqt7ftrDLfXcYwqcJpBpdZosddN1qvGjmJxpc2Ey8Ffhm8ybZimvO5xaueVCrecVfmrEFmrWYY0CIIM6C9SleCkJQtDLd4rDDrwgiHEqkizvIutrnLuPOoIASSuEolTIkiyrNKhS4YR371IzwC48K4eDKMse8bMqf5bMeTYdT%2Be1Nc9aIvZqmfNpz8GcqpmLBZlH6KimK4oSpKohSy7ZYsLLZMMdBy7AVAltBgN1mjYQQB8IsQhFTPUATyd6ApV4jyEnvMqh8qoPxVnVSW4cWpy3aotIeKCl4RX6kxKaZpKyP1yrgqaX9VwWHmpfZWK0DbYMAttXaBB9oQI%2BMdCkTIe4XVBqKa6t00y0Aem7OBNCXYfTFN9BeWCVr1UavQ0R4N2pQ2EvZW0FUVIL1IajNWNDsbVnYfVDEggqAQHMGYIQPgLh1D8AuNwwUzAnw2ufCk%2BcaZ80/IXJUd8VFaXRJiWx9jzDznQMmaJQlFr2LpC9URdJUqiK8RFcJggcR4mIISFJMsxF9kyWEvUBojRumTH6Yx3JsnYlxMwfJBUGF0nLLUtE5TDTEAgG6NxDAanK3LvUyJZgzAJy9PY0p9F6m5KaYSBOp4GJ2wRh0mCFSel9PnO4wZtUXa5lFkTAQJMKSgULuXHxlUWF%2BWvrTEJztRojLsWM5I8SsTxK9D2AISo6RVQ6VYzEcyCQQDodLfBTCrqPV%2Bn81ho1Dni3FKChhWiFr6PhkrPZZT9TdN6TsbZAyODTMAuYsJ1iCCjLMFqKl1KaW0qpf0qZayyUUscSwT5XyiUApyY04Fos0lOSZRE55Zh%2BkACVMBiE%2BYy2F9EQ4ETEC%2BQp09UzpKKYK7leTCTytoPy5knKxpdMqXinZhKg4cPWTirZJqiWWLGsy4VDL8XipIMAQweAABe7EQAMrGUSuO8Lc5LyefYiZHKg1kqBc0xZghdUsiXvCkKi1o0ECDYazZxqCVEsudTJaQVblBXuWXGhly/G5qLoE78hbqEcK5eS4VryzAxPeY29AUqxl0iFL8/VMyI08uaUizRBDilu1lDCzFMy024v6bs%2BB3IE1WAluosFkdmEYI6SS7kG60T2vsXSvde6fWePDUK%2BxrL2XStqrMvthI%2BWrJlduk9YyxUStoG2o9965UvuuSNS5eBrn0gre%2BPAVbx1HG1QODqaVgOyRVVBjK96t1Xs1RAbVsaiUWqNdO01Qycpax1kcPWQzTE4yeAyC4oQIChO5CHQp8tEkcmlFwOk0pvnSniGjD9RtBFpTo9ZDkTGjjfPY2rHDG0TYWyiHSJIRx5x0nNF49hQE4nrUDOadUamTAaeeMkdUi4AAcIBdMLXFIUgzRmThuHYwATjZCIiwRmATJHlPpwzvG0xpWc9ZSzJgbN2bZK5whfGLB6ZqoUzzaNgylVVf5hz2mRUufM5Bxc8WvPWds9FgLxmwohY5IUlLEXrJoIy7Fp4yR2MJbc4U8rqWfPpbSjFtzNUcsWCqxlNWkWbLFeyqVyQaUzOVbSr19q3nfNdcC9l0Lg22shg60V%2BrmXHPzj65lxVaUlvDbS35lb54muTcXOtmbh2ovzZK8kc0y3EtELSudjbtWtuXaC81wpN3DvkM6yd7ryQ2QXYG4ub7t3RsffG7t3L9Xptvbm39hbKn1rJiAoS/QnB5y8D8D6XgqBOC2gFoqBQ6xNhmiBDwUgBBNCEtWEKEA8QrPXA0FZ8084zB6bZFZyQ8RzRjL04jjgkgUek9IBjjgvAFCGeJ6T1YcBYBIDQCwZIdBYjkEoNL2X9A4jACs0kLACI8BbAAGp4EwAhAA8skRgnAic0FirEYXBU%2BfXrN7wa9huojaEIvb0g0u2CCENwwBKfOsAXCMOINHpB8Ad0cDdYXwfmJdD1NsLQ5BBA1D57QPAURiAEg8FgPna82XcAR1QAwwAFB64N8b03eeZCCBEGIdgUhK/yCUGoPnugmMGCMCgO%2B%2BhU/C8gKsVAyQXGR%2BlIbswMpvgNlMNjswTAhc1EIpkFwDB3CeDaHoYIcxSjlD0KkdILjJh%2BCYzvwoDABib8WNUWoPQZj770J0bo9QZin5Irf6/K/chMZPM0J/CwKirFxxsLYCQVYV9DgZHUgVHePAXI4VQPTc0aUc0SQI4YAZAZAI4aneIAUXAQgCmXYdSXgEnNHB0UgSBJgLAOISjUgCnMwSQa4NkeILgPTMwLgDQSQSQKQKzPTecaQEAnncAvnAXIXEXAgrQcXGARAEAdYAgGCBXCAJXOXYgcIVgbYGAuAhApAlAtA64eIXgdibAjEVtJjfgKvUQcQOvIwhvFQdQYPFvUgBCdPZIe3YApHXnYPAXQ3PUGCYRFQ%2BAxA5A1A9AgUDwGXeQnseg5YfAsXcnSnc0a4LgNkLgenDQBIqQJnPTKzLnXgiA9HTgQQjQUXQgpwjgMwFwyAnI/IkQ1YMBdIZwSQIAA
......
......