{"id":371172,"date":"2024-05-21T04:42:01","date_gmt":"2024-05-21T04:42:01","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=371172"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=371172","title":{"rendered":"<span>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u043d\u0435\u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c: Yosys, SpinalHDL, VexRiscv (\u0447.1)<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p> \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u041f\u041b\u0418\u0421, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0435\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438: \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0430 \u043a\u043e\u0434\u0430 \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b (HDL); \u043a\u043e\u0434 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 (IP-\u0431\u043b\u043e\u043a\u043e\u0432), \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0435\u0433\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445; \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0431\u0448\u0438\u0440\u043d\u044b\u043c \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u0438\u0432\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439, \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 (Git); \u0438, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438, \u043d\u0438\u0447\u0442\u043e\u0436\u043d\u043e \u043d\u0438\u0437\u043a\u0430\u044f \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0435\u0441\u0435\u0442 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0442\u0440\u0430\u0442\u044b \u043d\u0430 \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0438\u0437\u0434\u0435\u043b\u0438\u044f,  \u0438 \u043b\u044e\u0431\u0430\u044f \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0430 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u0435\u0447\u0430\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u2014 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u044b\u0445\u043e\u0434 \u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0443\u044e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e \u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0435\u043d\u044c\u0433\u0438, \u0442\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u041f\u041b\u0418\u0421 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0438\u0447\u0442\u043e\u0436\u043d\u044b \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u043b\u0435\u0433\u043a\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u043c\u044b. \u0418 \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432 \u0441\u0435\u0440\u0438\u0439\u043d\u043e\u043c \u0438\u0437\u0434\u0435\u043b\u0438\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u0442\u043e \u0435\u0451 \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u044b\u043c \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u043e\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u00ab\u0432 \u043f\u043e\u043b\u0435\u00bb \u0431\u0435\u0437 \u0437\u0430\u043c\u0435\u043d\u044b \u0438\u0437\u0434\u0435\u043b\u0438\u044f. \u041a\u043e\u0440\u043e\u0447\u0435, \u0441 \u043f\u0440\u0438\u0445\u043e\u0434\u043e\u043c \u041f\u041b\u0418\u0421 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0430 \u044d\u0442\u043e, \u043f\u043e\u043c\u0438\u043c\u043e \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0447\u0435\u0433\u043e, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u043d\u0438\u0436\u0430\u0435\u0442 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u043c\u0443, \u0438 \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u00ab\u0436\u0435\u043b\u0435\u0437\u0430\u00bb. \u0410 \u043d\u043e\u0432\u044b\u0435 \u043b\u044e\u0434\u0438, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043f\u0440\u0438\u043d\u043e\u0441\u044f\u0442 \u0441 \u0441\u043e\u0431\u043e\u0439 \u0432 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u044e \u043d\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u00ab\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421 \u0438 \u0442\u0435\u043c, \u043a\u0430\u043a \u044f \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u043b\u0441\u044f \u0432 \u0442\u0435\u043c\u0443 \u041f\u041b\u0418\u0421\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0437\u0430\u043c\u0435\u0442\u043a\u0443 \u043f\u0440\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0443\u043b\u0447\u0435\u0439\u043d \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 Yosys. \u041f\u043e\u0442\u043e\u043c \u2014 \u043f\u0440\u043e \u044f\u0437\u044b\u043a SpinalHDL \u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u044f\u0434\u0440\u043e VexRiscv, \u043d\u0430 \u043d\u0451\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435. \u041f\u043e\u0442\u043e\u043c \u2014 \u043f\u0440\u043e \u0437\u0430\u043c\u0435\u043d\u0443 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u043c\u0438 \u041f\u041b\u0418\u0421 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u043e\u0435\u0439 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb. \u041d\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u044f \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u043b\u0441\u044f \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f Hardware Description Languages (HDL), \u0438 \u043a\u043e\u0433\u0434\u0430 \u044f \u043d\u0430\u0447\u0430\u043b \u043f\u0438\u0441\u0430\u0442\u044c, \u041e\u0441\u0442\u0430\u043f\u0430, \u043a\u0430\u043a \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442, \u043f\u043e\u043d\u0435\u0441\u043b\u043e&#8230; \u0412 \u043e\u0431\u0449\u0435\u043c, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c.  <\/p>\n<p> \u0410 \u0435\u0449\u0435 \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0435 \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0432 \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043e\u0442 \u043d\u0430 \u044d\u0442\u043e\u043c \u043d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0435\u043c \u0432\u0438\u0434\u0435\u043e.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65f8e4052331bb9d71af36fe\" data-style=\"\" id=\"65f8e4052331bb9d71af36fe\" width=\"\"><\/div>\n<p> <strong>\u0421\u041e\u0414\u0415\u0420\u0416\u0410\u041d\u0418\u0415<\/strong><\/p>\n<p><a href=\"#1\" rel=\"noopener noreferrer nofollow\">1. \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u044d\u043a\u0441\u043a\u0443\u0440\u0441 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e<\/a><\/p>\n<p><a href=\"#2\" rel=\"noopener noreferrer nofollow\">2. \u041f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/a><\/p>\n<p><a href=\"#3\" rel=\"noopener noreferrer nofollow\">3. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421<\/a><\/p>\n<p><a href=\"#4\" rel=\"noopener noreferrer nofollow\">4. \u0421\u0438\u043d\u0442\u0435\u0437 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c \u0434\u043b\u044f \u041f\u041b\u0418\u0421<\/a><\/p>\n<p><a href=\"#5\" rel=\"noopener noreferrer nofollow\">5. Yosys Open SYnthesis Suite<\/a><\/p>\n<p><a href=\"#6\" rel=\"noopener noreferrer nofollow\">6. \u041a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430 Yosys<\/a><\/p>\n<p><a href=\"#7\" rel=\"noopener noreferrer nofollow\">7. \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430 Yosys<\/a><\/p>\n<p> <a href=\"#7.1\" rel=\"noopener noreferrer nofollow\">7.1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u00abbasics-graphics-music\u00bb<\/a><\/p>\n<p> <a href=\"#7.2\" rel=\"noopener noreferrer nofollow\">7.2 \u041b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u00ab01_and_or_not_xor_de_morgan\u00bb<\/a><\/p>\n<p> <a href=\"#7.3\" rel=\"noopener noreferrer nofollow\">7.3 \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421<\/a><\/p>\n<p><a href=\"#8\" rel=\"noopener noreferrer nofollow\">8. \u0422\u0438\u043f\u043e\u0432\u043e\u0439 Makefile \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Yosys<\/a><\/p>\n<p><a href=\"#9\" rel=\"noopener noreferrer nofollow\">9. \u0424\u0430\u0439\u043b \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 (LPF, PCF, CST)<\/a><\/p>\n<p><a href=\"#10\" rel=\"noopener noreferrer nofollow\">10. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 Yosys<\/a><\/p>\n<p> <a href=\"#10.1\" rel=\"noopener noreferrer nofollow\">10.1 \u041c\u0430\u043a\u0440\u043e YOSYS<\/a><\/p>\n<p> <a href=\"#10.2\" rel=\"noopener noreferrer nofollow\">10.2 \u041c\u043d\u043e\u0433\u043e\u043c\u0435\u0440\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432<\/a><\/p>\n<p> <a href=\"#10.3\" rel=\"noopener noreferrer nofollow\">10.3 \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u044c ($POW) \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 **<\/a><\/p>\n<p> <a href=\"#10.4\" rel=\"noopener noreferrer nofollow\">10.4 \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0438\u0433\u043d\u0430\u043b\u0443, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u0437\u0430 \u0435\u0451 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438<\/a><\/p>\n<p> <a href=\"#10.5\" rel=\"noopener noreferrer nofollow\">10.5 \u0421\u0438\u0433\u043d\u0430\u043b\u044b \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0438\u043b\u0438 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438<\/a><\/p>\n<p> <a href=\"#10.6\" rel=\"noopener noreferrer nofollow\">10.6 \u0421\u043b\u043e\u0436\u043d\u044b\u0435 \u0431\u0438\u0442\u043e\u0432\u044b\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u043e loopback-\u0430\u0445<\/a><\/p>\n<p> <a href=\"#10.7\" rel=\"noopener noreferrer nofollow\">10.7 \u0413\u043b\u043e\u0431\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432<\/a><\/p>\n<p><a href=\"#11\" rel=\"noopener noreferrer nofollow\">11. \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u0442\u0443\u043b\u043e\u0432<\/a><\/p>\n<p> <a href=\"#11.1\" rel=\"noopener noreferrer nofollow\">11.1 \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b yosys<\/a><\/p>\n<p> <a href=\"#11.2\" rel=\"noopener noreferrer nofollow\">11.2 \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b nextpnr<\/a><\/p>\n<p><a href=\"#12\" rel=\"noopener noreferrer nofollow\">12. \u0421\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u042d\u0412\u041c<\/a><\/p>\n<p> <a href=\"#12.1\" rel=\"noopener noreferrer nofollow\">12.1 \u0421\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u044f\u0434\u0440\u043e VexRiscv<\/a><\/p>\n<p> <a href=\"#12.2\" rel=\"noopener noreferrer nofollow\">12.2 \u0421\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b-\u043d\u0430-\u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435 \u043d\u0430 \u0431\u0430\u0437\u0435 VexRiscv<\/a><\/p>\n<p><a href=\"#13\" rel=\"noopener noreferrer nofollow\">13. \u042f\u0437\u044b\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b SpinalHDL<\/a><\/p>\n<p> <a href=\"#13.1\" rel=\"noopener noreferrer nofollow\">13.1 \u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u044f\u0437\u044b\u043a\u0430 SpinalHDL<\/a><\/p>\n<p> <a href=\"#13.2\" rel=\"noopener noreferrer nofollow\">13.2 FSM, \u043f\u043e\u0442\u043e\u043a\u0438, \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u044b, \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u0434\u043e\u043c\u0435\u043d\u044b<\/a><\/p>\n<p> <a href=\"#13.3\" rel=\"noopener noreferrer nofollow\">13.3 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 SpinalHDL<\/a><\/p>\n<p> <a href=\"#13.4\" rel=\"noopener noreferrer nofollow\">13.4 \u0420\u0430\u0437\u0431\u043e\u0440 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 SpinalTemplateSbt<\/a><\/p>\n<p> <a href=\"#13.5\" rel=\"noopener noreferrer nofollow\">13.5 \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 Makefile-\u0430 \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0438\u0437 SpinalHDL \u0432 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c<\/a><\/p>\n<p> <a href=\"#13.6\" rel=\"noopener noreferrer nofollow\">13.6 \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0432\u044b\u0432\u043e\u0434 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 SpinalHDL<\/a><\/p>\n<p> <a href=\"#13.7\" rel=\"noopener noreferrer nofollow\">13.7 \u0421\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044f \u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432 SpinalHDL<\/a><\/p>\n<p><a href=\"#14\" rel=\"noopener noreferrer nofollow\">14. \u0421\u0438\u043d\u0442\u0435\u0437 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 VexRiscv<\/a><\/p>\n<p> <a href=\"#14\" rel=\"noopener noreferrer nofollow\">14.1 \u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u043c VexRiscv<\/a><\/p>\n<p> <a href=\"#14.2\" rel=\"noopener noreferrer nofollow\">14.2 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b RISC-V<\/a><\/p>\n<p> <a href=\"#14.3\" rel=\"noopener noreferrer nofollow\">14.3 \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c Makefile, LPF \u0438 toplevel.v<\/a><\/p>\n<p> <a href=\"#14.4\" rel=\"noopener noreferrer nofollow\">14.4 \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0421\u043d\u041a Murax \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u044b \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb<\/a><\/p>\n<p> <a href=\"#14.5\" rel=\"noopener noreferrer nofollow\">14.5 \u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u00abhello_world\u00bb<\/a><\/p>\n<p> <a href=\"#14.6\" rel=\"noopener noreferrer nofollow\">14.6 \u0421\u0431\u043e\u0440\u043a\u0430 \u0421\u043d\u041a Murax \u0438 \u044f\u0434\u0440\u0430 VexRiscv<\/a><\/p>\n<p> <a href=\"#14.7\" rel=\"noopener noreferrer nofollow\">14.7 \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0421\u043d\u041a Murax \u043d\u0430 \u041f\u041b\u0418\u0421 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u00abhello_world\u00bb<\/a><\/p>\n<p>15. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0421\u043d\u041a Murax \u0438 \u044f\u0434\u0440\u0430 VexRiscv<\/p>\n<p> 15.1 \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0421\u043d\u041a Murax<\/p>\n<p> 15.2 \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 VexRiscv<\/p>\n<p> 15.3 \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 VexRiscv<\/p>\n<p>16. \u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u0441 \u044f\u0434\u0440\u043e\u043c VexRiscv \u0438 \u0421\u043d\u041a Murax<\/p>\n<p> 16.1 \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 RegFilePlugin<\/p>\n<p> 16.2 \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0442\u0430\u043a\u0442\u043e\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u044f\u0434\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 PLL<\/p>\n<p> 16.3 \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0441\u0434\u0432\u0438\u0433\u0430<\/p>\n<p>17. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0432\u043e\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 (IP-\u0431\u043b\u043e\u043a\u0438)<\/p>\n<p> 17.1 \u041c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u043d\u044b\u0439 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u0442\u0430\u0439\u043c\u0435\u0440 MTIME<\/p>\n<p> 17.2 \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 SRAM<\/p>\n<p>17.2.1 \u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 SRAM<\/p>\n<p>17.2.2 \u0422\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 SRAM<\/p>\n<p>17.2.3 \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c SRAM \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 malloc<\/p>\n<p>17.2.4 \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0431\u043b\u043e\u043a\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u0435\u0439 Div \u0438 Mul<\/p>\n<p>17.2.5 \u0417\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e printf<\/p>\n<p> 17.3 \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 PLIC<\/p>\n<p>17.3.1 \u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 MicroPLIC<\/p>\n<p>17.3.2 \u0417\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 MicroPLIC \u0438\u0437 \u0421\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/p>\n<p> 17.4 \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 FastEthernet (MAC)<\/p>\n<p>17.4.1 \u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Ethernet<\/p>\n<p>17.4.2 \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 MacEth<\/p>\n<p>17.4.3 \u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 MacEth<\/p>\n<p>17.4.4 \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 DHCP \u0441\u0435\u0440\u0432\u0435\u0440<\/p>\n<p>18. \u041f\u043e\u0442\u0430\u043a\u0442\u043e\u0432\u0430\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044f \u0421\u043d\u041a Murax<\/p>\n<p>19. \u0411\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: RiscvWithHUB12ForKarnix<\/p>\n<p>20. \u042d\u043f\u0438\u043b\u043e\u0433<\/p>\n<p>\u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/p>\n<p><a class=\"anchor\" name=\"1\" id=\"1\"><\/a><\/p>\n<h2>1. \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u044d\u043a\u0441\u043a\u0443\u0440\u0441 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e<\/h2>\n<p>\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0432 1960 \u0433\u043e\u0434\u0443, \u043a\u043e\u0433\u0434\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Invention_of_the_integrated_circuit\" rel=\"noopener noreferrer nofollow\">\u0433\u0440\u0443\u043f\u043f\u0430 \u0414\u0436\u0435\u044f \u041b\u0430\u0441\u0442\u0430 \u0438\u0437 Fairchild Semi\u0441onductors \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u043e\u0432\u044b\u0439 \u043f\u0440\u0438\u0431\u043e\u0440, \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e \u043f\u043b\u0430\u043d\u0430\u0440\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438<\/a>. \u041f\u0440\u0438\u0431\u043e\u0440 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u00ab\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u0421\u0445\u0435\u043c\u0430\u00bb (\u0438\u043b\u0438 IC \u043e\u0442 \u00abIntegrated Circuit\u00bb), \u0430 \u0432 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043b\u043e\u0432\u043e \u00ab\u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u00bb, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0435\u0451 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0432\u0435\u0441\u044c\u043c\u0430 \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u0430\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e\u043c\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u044e \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u0441\u0435\u0440\u0438\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0439 \u0438 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u0439, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043b\u044e\u0434\u044c\u043c\u0438 \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0438 \u0441\u0442\u0440\u0430\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u043b\u0435\u0434 \u0437\u0430 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u0435\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438 \u043f\u0430\u0442\u0435\u043d\u0442\u043d\u044b\u0435 \u0432\u043e\u0439\u043d\u044b \u2014 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043e\u0442\u043a\u0443\u0441\u0438\u0442\u044c \u043e\u0442 \u043f\u0438\u0440\u043e\u0433\u0430 \u043a\u0443\u0441\u043e\u043a \u043f\u043e\u0431\u043e\u043b\u0435\u0435. \u041f\u0435\u0440\u0432\u0430\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u0432 \u0421\u0421\u0421\u0420 \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0432 1961 \u0433\u043e\u0434\u0443 \u0432 \u0422\u0430\u0433\u0430\u043d\u0440\u043e\u0433\u0441\u043a\u043e\u043c \u0440\u0430\u0434\u0438\u043e\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0438\u043d\u0441\u0442\u0438\u0442\u0443\u0442\u0435. \u0412 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 10 \u043b\u0435\u0442 \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0440\u0430\u0434\u0438\u043e\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u044b\u043b\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u0438 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c, \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043e\u043d\u0438 \u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0438\u0441\u044c \u043d\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Planar_process\" rel=\"noopener noreferrer nofollow\">\u043f\u043b\u0430\u043d\u0430\u0440\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434<\/a> \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u043d\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432 \u043d\u0430 \u043a\u0440\u0435\u043c\u043d\u0438\u0435\u0432\u043e\u0439, \u0433\u0435\u0440\u043c\u0430\u043d\u0438\u0435\u0432\u043e\u0439 \u0438\u043b\u0438 \u0441\u0430\u043f\u0444\u0438\u0440\u043e\u0432\u043e\u0439 \u043f\u043b\u0430\u0441\u0442\u0438\u043d\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0444\u043e\u0442\u043e\u043b\u0438\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u2014 \u0438\u0442\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0444\u043e\u0442\u043e\u0440\u0435\u0437\u0438\u0441\u0442\u0430, \u0437\u0430\u0441\u0432\u0435\u0442\u043a\u0438, \u043f\u0440\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f, \u0442\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u043f\u0440\u043e\u043c\u044b\u0432\u043a\u0438, \u0438\u043e\u043d\u043d\u043e\u0439 \u0438\u043c\u043f\u043b\u0430\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u043b\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0430 \u0441\u0445\u0435\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043e\u043a.<\/p>\n<p> \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0434\u043e \u0441\u0440\u0435\u0434\u0438\u043d\u044b 1980-\u0445 \u0433\u043e\u0434\u043e\u0432, \u0430 \u044d\u0442\u043e \u043f\u043e\u0447\u0442\u0438 25 \u043b\u0435\u0442, \u0432\u0441\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0435 \u0438 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432, \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0443\u0442\u0435\u043c \u0447\u0435\u0440\u0447\u0435\u043d\u0438\u044f \u0441\u0445\u0435\u043c, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430 \u0431\u0443\u043c\u0430\u0433\u0435, \u043f\u043e\u0437\u0436\u0435 \u2014 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0421\u0410\u041f\u0420, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e \u0442\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c \u0431\u044b\u043b\u0438 \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b. \u041d\u043e \u0432 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0441\u0445\u0435\u043c\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u0430\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043b\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a. \u041a\u043e\u0433\u0434\u0430 \u0441\u0445\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0433\u043e\u0442\u043e\u0432\u0430, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043b\u0438 \u043a \u0435\u0451 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0435 \u2014 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 (\u0442\u0440\u0430\u043d\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432, \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432 \u0438 \u043a\u043e\u043d\u0434\u0435\u043d\u0441\u0430\u0442\u043e\u0440\u043e\u0432) \u043d\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0430, \u043f\u043e \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043d\u0430\u0431\u043e\u0440 \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043e\u043a. \u0412 \u044d\u0442\u043e\u043c \u0438\u043c \u0447\u0430\u0441\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u043b\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043b\u0435\u0439\u043a\u0430\u044f \u043b\u0435\u043d\u0442\u0430-\u0441\u043a\u043e\u0442\u0447 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Rubylith\" rel=\"noopener noreferrer nofollow\">\u0420\u0443\u0431\u0438\u043b\u0438\u0442<\/a>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0442\u043e\u043d\u043a\u0438\u043c\u0438 \u043f\u043e\u043b\u043e\u0441\u043a\u0430\u043c\u0438 \u043d\u0430\u043a\u043b\u0435\u0438\u0432\u0430\u043b\u0438 \u043d\u0430 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0443\u044e \u043c\u0430\u0439\u043b\u0430\u0440\u043e\u0432\u0443\u044e \u043f\u043b\u0435\u043d\u043a\u0443 (\u0438\u043b\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 \u2014 \u0443\u0434\u0430\u043b\u044f\u043b\u0438 \u043b\u0438\u0448\u043d\u0435\u0435), \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044f \u0443\u0437\u043e\u0440 \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0432 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u042d\u0442\u043e\u0442 \u0443\u0437\u043e\u0440 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0438 \u0441 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435\u043c \u0432 100 \u0440\u0430\u0437 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043b\u0441\u044f \u043d\u0430 \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0430\u043b\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0432 \u043f\u043b\u0430\u043d\u0430\u0440\u043d\u043e\u043c \u0444\u043e\u0442\u043e\u043b\u0438\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9f0\/224\/c76\/9f0224c76a20b64075cb4508a62b4224.png\" alt=\"\u0420\u0438\u0441. 1. Rubylith operators, 1970, Courtesy of the Intel Corporation.\" title=\"\u0420\u0438\u0441. 1. Rubylith operators, 1970, Courtesy of the Intel Corporation.\" width=\"944\" height=\"607\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9f0\/224\/c76\/9f0224c76a20b64075cb4508a62b4224.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 1. Rubylith operators, 1970, Courtesy of the Intel Corporation.<\/em><\/figcaption><\/div>\n<\/figure>\n<p> \u041c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u043e\u0441\u043b\u0438 \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u2014 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0438 \u0447\u0438\u0441\u043b\u0430 \u0442\u0440\u0430\u043d\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432 \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0438 \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043d\u0430 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435 \u043a\u0440\u0435\u043c\u043d\u0438\u044f, \u0447\u0442\u043e \u0432 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u0442\u044f\u043d\u0443\u043b\u043e \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043e\u043a \u0438 \u0438\u0445 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u043d\u0435 \u043c\u043e\u0433 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u043e\u0439 \u0434\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u0447\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u043c\u043e\u0433\u043b\u043e \u043d\u0435 \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u0438. \u0418\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043e\u043a \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0442\u0440\u0430\u0442 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0442\u0440\u0430\u0442\u044b \u0438 \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u044b \u043d\u0430 \u0432\u0441\u0435\u0445 \u044d\u0442\u0430\u043f\u0430\u0445. \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0430 \u0442\u0430\u043a\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0435\u0451 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0441\u0442\u0430\u043b\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441\u0442\u0430\u043b\u043e \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u0432. \u0410 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e, \u0447\u0442\u043e \u0432\u0435\u0441\u044c \u0434\u0438\u0437\u0430\u0439\u043d, \u043e\u0442 \u0441\u0445\u0435\u043c\u044b \u0434\u043e \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043e\u043a, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0431\u044b\u0442\u044c \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0442.\u00a0\u0435. \u0432 \u0432\u0438\u0434\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0444\u0430\u0439\u043b\u0430\u0445: \u0441\u0445\u0435\u043c\u044b \u0432 \u0432\u0438\u0434\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 (\u043d\u0435\u0442\u043b\u0438\u0441\u0442\u0430), \u0430 \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043a\u0438 \u2014 \u0432 \u0432\u0438\u0434\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043c\u0430\u0448\u0438\u043d <a href=\"https:\/\/en.wikipedia.org\/wiki\/Photoplotter\" rel=\"noopener noreferrer nofollow\">\u0444\u043e\u0442\u043e\u043f\u043b\u043e\u0442\u0442\u0435\u0440\u043e\u0432<\/a> (Gerber). \u0422\u0430\u043a, \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0445\u0435\u043c\u044b \u0432 \u0432\u0438\u0434\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0435\u0451 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u044f\u0437\u044b\u043a\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u2014 HDL \u043e\u0442 \u00abHardware Description Language\u00bb, \u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0442\u0430\u043b\u0438 \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u00abVLSI design\u00bb \u043e\u0442 \u00abVery Large Scale Integration\u00bb (\u0432 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u2014 \u0421\u0411\u0418\u0421 \u043e\u0442 \u00ab\u0421\u0432\u0435\u0440\u0445 \u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0418\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u0421\u0445\u0435\u043c\u0430\u00bb).<\/p>\n<p> \u042f\u0437\u044b\u043a\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b (HDL) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u0446\u0438\u0444\u0440\u043e\u0432\u0443\u044e \u0441\u0445\u0435\u043c\u0443 (\u0445\u043e\u0442\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0435\u0441\u0442\u044c <a href=\"https:\/\/en.wikipedia.org\/wiki\/Verilog-AMS\" rel=\"noopener noreferrer nofollow\">\u044f\u0437\u044b\u043a\u0438 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c<\/a>) \u0432 \u0432\u0438\u0434\u0435 \u0442\u0435\u043a\u0441\u0442\u0430, \u043f\u043e\u0434\u043e\u0431\u043d\u043e \u044f\u0437\u044b\u043a\u0430\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441\u0445\u0435\u043c\u044b, \u043f\u043e\u0442\u043e\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0435\u0451 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441 \u0442\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Hardware_description_language#History\" rel=\"noopener noreferrer nofollow\">\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f HDL<\/a> \u043d\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0445\u0435\u043c, \u043d\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0445\u0435\u043c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\u044b\u0445 \u043f\u0435\u0440\u0435\u0434\u0430\u0447 (RTL \u043e\u0442 \u00abRegister Transfer Level\u00bb) \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0413\u043e\u0440\u0434\u043e\u043d\u043e\u043c \u0411\u0435\u043b\u043b\u043e\u043c \u0432 1971 \u0433\u043e\u0434\u0443 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c. \u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 RTL \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u044f\u0437\u044b\u043a\u0435 ISP  (ISPL \u0438 ISPS) \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u042d\u0412\u041c DEC PDP-8. \u0421 \u0442\u0435\u0445 \u043f\u043e\u0440 RTL \u043c\u0435\u0442\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 HDL \u044f\u0437\u044b\u043a\u0430\u0445 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 VLSI \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/aed\/458\/240\/aed458240d1e4f4caca4070c46ebcfd6.png\" alt=\"\u0420\u0438\u0441 2\u0430. \u0423\u0440\u043e\u0432\u043d\u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u0432 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0435.\" title=\"\u0420\u0438\u0441 2\u0430. \u0423\u0440\u043e\u0432\u043d\u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u0432 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0435.\" width=\"662\" height=\"652\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/aed\/458\/240\/aed458240d1e4f4caca4070c46ebcfd6.png\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441 2\u0430. \u0423\u0440\u043e\u0432\u043d\u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u0432 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0435.<\/figcaption><\/div>\n<\/figure>\n<p> \u0427\u0442\u043e \u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 RTL, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0446\u0438\u0444\u0440\u043e\u0432\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0432 \u0432\u0438\u0434\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 (D-\u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432), \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u043e\u0431\u0449\u0438\u043c \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c, \u0430 \u0432\u0445\u043e\u0434\u044b \u0438 \u0432\u044b\u0445\u043e\u0434\u044b \u044d\u0442\u0438\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439 \u0438 \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443.  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u0441\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445 RTL \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c\u0438 \u2014 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043d\u0438\u0445 \u043f\u0435\u0440\u0435\u0442\u0435\u043a\u0430\u044e\u0442 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 (\u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u043e \u0441\u043f\u0430\u0434\u0443). \u0414\u0430\u043d\u043d\u044b\u0435, \u043f\u0435\u0440\u0435\u0442\u0435\u043a\u0430\u044f \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438, \u043f\u0440\u0435\u0442\u0435\u0440\u043f\u0435\u0432\u0430\u044e\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f (\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443) \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0441\u0445\u0435\u043c\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e, \u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0432 \u043d\u0438\u0445 \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 RTL, \u0442.\u00a0\u0435. \u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043f\u043e\u043b\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e \u0438 100-\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e (\u0447\u0442\u043e, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043d\u0435 \u0442\u0430\u043a, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e). \u041d\u0438\u0436\u0435 \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 2 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u0441\u0445\u0435\u043c\u0430, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 (\u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430) \u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u043d\u0432\u0435\u0440\u0442\u043e\u0440\u0430. \u0421\u0445\u0435\u043c\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043d\u0430 2.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3fc\/92b\/666\/3fc92b666520a0aea3b761883dbe7397.png\" alt=\"\u0420\u0438\u0441. 2\u0431. \u041f\u0440\u0438\u043c\u0435\u0440 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u044b (RTL \u0443\u0440\u043e\u0432\u0435\u043d\u044c).\" title=\"\u0420\u0438\u0441. 2\u0431. \u041f\u0440\u0438\u043c\u0435\u0440 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u044b (RTL \u0443\u0440\u043e\u0432\u0435\u043d\u044c).\" width=\"450\" height=\"300\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3fc\/92b\/666\/3fc92b666520a0aea3b761883dbe7397.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 2\u0431. \u041f\u0440\u0438\u043c\u0435\u0440 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u044b (RTL \u0443\u0440\u043e\u0432\u0435\u043d\u044c).<\/em><\/figcaption><\/div>\n<\/figure>\n<p><em>     <\/em>\u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u0432\u044b\u0448\u0435 \u0441\u0445\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"vhdl\">if rising_edge(clk) then Q &lt;= ~D; end if;<\/code><\/pre>\n<p> \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>Q<\/strong> \u043f\u0440\u0438\u043c\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0432\u0435\u0440\u0441\u043d\u043e\u0435 (\u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u0435) \u0432\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0443 <strong>D<\/strong> \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0442\u0430\u043a\u0442\u0435 (\u0441\u0438\u0433\u043d\u0430\u043b \u0441\u0431\u0440\u043e\u0441\u0430 \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f).<\/p>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 HDL \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0438\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d, \u043d\u043e \u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0442.\u00a0\u043d. \u00ab\u043a\u0440\u0435\u043c\u043d\u0438\u0435\u0432\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432\u00bb \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0433\u0440\u0430\u0444 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 (\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0442\u0440\u0430\u043d\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432), \u0430 \u0437\u0430\u0442\u0435\u043c \u0432 \u0438\u0445 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435 \u043a\u0440\u0435\u043c\u043d\u0438\u044f \u0438 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0435\u0442\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u043d\u0430\u0431\u043e\u0440 \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043e\u043a. \u0412 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043a\u0438 \u0434\u043b\u044f \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <a href=\"https:\/\/en.wikipedia.org\/wiki\/GDSII\" rel=\"noopener noreferrer nofollow\">GDSII<\/a>, \u0430 \u0444\u043e\u0440\u043c\u0430\u0442 Gerber \u0437\u0430\u043d\u044f\u043b \u043d\u0438\u0448\u0443 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u043f\u0435\u0447\u0430\u0442\u043d\u044b\u0445 \u043f\u043b\u0430\u0442. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 HDL \u0432 \u0444\u0430\u0439\u043b\u044b \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043e\u043a \u0440\u0430\u043d\u044c\u0448\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u00ab\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0435\u0439\u00bb, \u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0435\u0440\u043c\u0438\u043d \u00ab\u0441\u0438\u043d\u0442\u0435\u0437 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c\u00bb (logic synthesis), \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0444\u043e\u0440\u043c\u0430 (\u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043a\u0430), \u043d\u043e \u043d\u0435\u043a\u0438\u0439 \u043f\u043e\u0442\u043e\u043a \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0451.<\/p>\n<p>\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0433\u043b\u0430\u0441\u0438\u0442, \u0447\u0442\u043e \u043b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u0439 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 Intel 80386 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Intel, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f. \u0414\u043b\u044f \u043d\u0435\u0433\u043e \u0431\u044b\u043b\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043f\u043e\u043b\u043d\u0430\u044f RTL \u043c\u043e\u0434\u0435\u043b\u044c, \u0434\u0438\u0437\u0430\u0439\u043d \u0438\u0442\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0441\u044f \u0438 \u0441\u0438\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043f\u043e\u0442\u0430\u043a\u0442\u043e\u0432\u043e  \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0441\u0438\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438, \u0438\u043b\u0438, \u043a\u0430\u043a \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c, \u0441 \u00ab\u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e\u00bb (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Formal_equivalence_checking\" rel=\"noopener noreferrer nofollow\">golden reference model<\/a>). \u0412\u043e\u0442 \u0447\u0442\u043e \u043f\u0438\u0448\u0435\u0442 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0431\u043b\u043e\u0433\u0433\u0435\u0440 \u041a\u0435\u043d \u0428\u0438\u0440\u0440\u0438\u0444\u0444 \u0432 \u0441\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u00ab<a href=\"http:\/\/www.righto.com\/2023\/10\/intel-386-die-versions.html\" rel=\"noopener noreferrer nofollow\">Examining the silicon dies of the Intel 386 processor<\/a>\u00bb \u043f\u0440\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 i386:<\/p>\n<p> <em>The design process of the 386 is interesting because it illustrates Intel&#8217;s migration to automated design systems and heavier use of simulation. At the time, Intel was behind the industry in its use of tools so the leaders of the 386 realized that more automation would be necessary to build a complex chip like the 386 on schedule. By making a large investment in automated tools, the 386 team <\/em><strong><em>completed the design ahead of schedule<\/em><\/strong><em>. Along with proprietary CAD tools, the team made heavy use of standard Unix tools such as <\/em><code>sed<\/code><em>, <\/em><code>awk<\/code><em>, <\/em><code>grep<\/code><em>, and <\/em><code>make<\/code><em> to manage the various design databases.<\/em><\/p>\n<p>   \u0418 \u0434\u0430\u043b\u0435\u0435:<\/p>\n<p><em>The high-level design of the chip (register-level RTL) was created and refined until clock-by-clock and phase-by-phase timing were represented. The RTL was programmed in <\/em><a href=\"http:\/\/www.bitsavers.org\/pdf\/xidak\/mainsail_v12\/Mainsail_Tutorial_Volume_1_Mar89.pdf\" rel=\"noopener noreferrer nofollow\"><em>MAINSAIL<\/em><\/a><em>, a portable Algol-like language based on SAIL (Stanford Artificial Intelligence Language). Intel used a proprietary simulator called Microsim to simulate the RTL, stating that full-chip RTL simulation was &#171;the single most important simulation model of the 80386&#187;.<\/em><\/p>\n<p><em>The next step was to convert this high-level design into a detailed logic design, specifying the gates and other circuitry using Eden, a proprietary schematics-capture system. Simulating the logic design required a dedicated IBM 3083 mainframe that compared it against the RTL simulations. Next, the circuit design phase created the transistor-level design. The chip layout was performed on <\/em><a href=\"https:\/\/www.shapr3d.com\/history-of-cad\/applicon\" rel=\"noopener noreferrer nofollow\"><em>Applicon<\/em><\/a><em> and Eden graphics systems&#8230; <\/em> <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/02c\/0f5\/78f\/02c0f578ff50e141a4c2bc7010f2f9a0.jpg\" alt=\"\u0420\u0438\u0441.3.\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0430 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 80386 \u0441 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439. 1985\u0433. \u0417\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u043e \u0438\u0437 \u0431\u043b\u043e\u0433\u0430 \u041a\u0435\u043d\u0430 \u0428\u0438\u0440\u0440\u0438\u0444\u0444\u0430, \u0441\u0430\u0439\u0442 http:\/\/www.righto.com\/\" title=\"\u0420\u0438\u0441.3.\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0430 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 80386 \u0441 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439. 1985\u0433. \u0417\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u043e \u0438\u0437 \u0431\u043b\u043e\u0433\u0430 \u041a\u0435\u043d\u0430 \u0428\u0438\u0440\u0440\u0438\u0444\u0444\u0430, \u0441\u0430\u0439\u0442 http:\/\/www.righto.com\/\" width=\"2246\" height=\"2399\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/02c\/0f5\/78f\/02c0f578ff50e141a4c2bc7010f2f9a0.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441.3.\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0430 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 80386 \u0441 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439. 1985\u0433. \u0417\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u043e \u0438\u0437 \u0431\u043b\u043e\u0433\u0430 \u041a\u0435\u043d\u0430 \u0428\u0438\u0440\u0440\u0438\u0444\u0444\u0430, \u0441\u0430\u0439\u0442 http:\/\/www.righto.com\/<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0434\u0432\u0430 \u044f\u0437\u044b\u043a\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b: VHDL \u0438 Verilog. Verilog \u0431\u044b\u043b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d \u0447\u0430\u0441\u0442\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Gateway Design Automation \u0438 \u0432\u0445\u043e\u0434\u0438\u043b \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c. \u0412\u0437\u0430\u043c\u0435\u043d \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e\u043c\u0443 Verilog-\u0443 \u0432 \u043d\u0435\u0434\u0440\u0430\u0445 \u043c\u0438\u043d\u043e\u0431\u043e\u0440\u043e\u043d\u044b \u0421\u0428\u0410 \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d VHDL \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d \u043a\u0430\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u0431\u0430 \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0430\u043b\u0438\u0441\u044c \u0434\u043b\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c, \u043d\u043e \u043a 1985 \u0433\u043e\u0434\u0443 \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u044b \u00ab\u0432 \u0442\u0435\u043a\u0441\u0442\u0435\u00bb \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0435\u0433\u0447\u0435, \u0447\u0435\u043c \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0438\u0445, \u043f\u0443\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430. \u0422\u0430\u043a\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u043b\u0435\u0433\u0447\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043b\u0435\u0433\u0447\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u0430\u0434 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u043a\u0443\u0441\u043a\u043e\u043c \u043a\u043e\u0434\u0430 (\u0441\u0445\u0435\u043c\u044b) \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u043d\u043e \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u043a\u043e\u0434 \u0441\u0445\u0435\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442 \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u043a \u0434\u0438\u0437\u0430\u0439\u043d\u0443, \u043b\u0435\u0433\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u044c. \u041a\u043e\u0434 \u0441\u0445\u0435\u043c\u044b \u0434\u0430\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u043e\u0432\u0430\u043d, \u0432\u044b\u0434\u0435\u043b\u0435\u043d \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438, \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d \u0438 \u043f\u0440\u043e\u0434\u0430\u043d. \u041f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f HDL \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0446\u0435\u043b\u043e\u0439 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438 \u043a\u0443\u043f\u043b\u0438-\u043f\u0440\u043e\u0434\u0430\u0436\u0438 IP \u0431\u043b\u043e\u043a\u043e\u0432 (\u0437\u0434\u0435\u0441\u044c IP \u043e\u0442 \u00abIntellectual Property\u00bb \u2014 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c).<\/p>\n<p>\u0412 1990 \u0433\u043e\u0434\u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Cadence \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u043b\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044e Gateway Design Automation \u0438 \u0441\u0434\u0435\u043b\u0430\u043b\u0430 Verilog \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c, \u0432\u0441\u043a\u043e\u0440\u0435 \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u0431\u0430 \u044f\u0437\u044b\u043a\u0430 \u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u044b IEEE \u043a\u0430\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b.  \u0417\u0430 \u043f\u043e\u0447\u0442\u0438 40-\u043b\u0435\u0442\u043d\u044e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u043b\u0438\u0441\u044c, \u0432 \u043d\u0438\u0445 \u0432\u043d\u043e\u0441\u0438\u043b\u0438\u0441\u044c \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u043b\u0438\u0441\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 (VHDL), \u0432\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u044c \u043d\u043e\u0432\u044b\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b. VHDL \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u0438\u043c\u0435\u043b \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0432 \u0430\u0432\u0438\u0430\u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438 \u0432\u043e\u0435\u043d\u043d\u043e\u0439 \u043e\u0442\u0440\u0430\u0441\u043b\u0438 (\u043a\u0430\u043a \u0432 \u0421\u0428\u0410, \u0442\u0430\u043a \u0438 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438, \u043a\u0441\u0442\u0430\u0442\u0438), \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a Verilog \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d \u0432 \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0438 \u0432 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445. \u041d\u0430 \u043d\u0430\u0447\u0430\u043b\u043e 2020 \u0433\u043e\u0434\u043e\u0432 \u043f\u0440\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u044f\u0432\u043d\u0430\u044f \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044f \u043a \u043f\u0440\u0435\u0432\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u044f\u0437\u044b\u043a\u0430 Verilog \u0438 \u043a \u0441\u043f\u0430\u0434\u0443 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438 VHDL. \u0421 \u0447\u0435\u043c \u044d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u2014 \u043c\u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u0440\u0443\u0434\u043d\u043e.<\/p>\n<p>\u0412 2002 \u0433\u043e\u0434\u0443 \u043e\u0442 \u044f\u0437\u044b\u043a\u0430 Verilog \u043e\u0442\u043f\u043e\u0447\u043a\u043e\u0432\u0430\u043b\u0441\u044f SystemVerilog \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 2005 \u0433\u043e\u0434\u0443 \u0442\u0430\u043a \u0436\u0435 \u0431\u044b\u043b \u043f\u0440\u0438\u043d\u044f\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c IEEE 1800-2005, \u0430 \u0432 2009 \u0433\u043e\u0434\u0443 \u044f\u0437\u044b\u043a Verilog \u0432\u043e\u0448\u0435\u043b \u043a\u0430\u043a \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432 \u044f\u0437\u044b\u043a SystemVerilog \u0438 \u0431\u044b\u043b \u043f\u0440\u0438\u043d\u044f\u0442 \u043a\u0430\u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 IEEE 1800-2009 SystemVerilog. \u041e\u0442\u043b\u0438\u0447\u0438\u0435 Verilog \u043e\u0442 SystemVerilog \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u0436\u0435, \u043a\u0430\u043a \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u044f\u0437\u044b\u043a\u043e\u0432 C \u0438 C++. SystemVerilog \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043a\u043b\u0430\u0441\u0441\u044b \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432. \u0412 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u043a\u043e\u0433\u0434\u0430 \u0433\u043e\u0432\u043e\u0440\u044f\u0442 Verilog, \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0442 \u0438\u043c\u0435\u043d\u043d\u043e SystemVerilog, \u043b\u0438\u0431\u043e \u044f\u0432\u043d\u043e \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u044e\u0442 \u0435\u0433\u043e \u0441\u0442\u0430\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430.<\/p>\n<p>\u041d\u0438\u0436\u0435 \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0441\u0445\u0435\u043c\u0443 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0433\u043e 4-\u0445 \u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u043d\u0430 \u0434\u0432\u0443\u0445 \u044f\u0437\u044b\u043a\u0430\u0445.  \u041d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043f\u043e\u043b\u043d\u044b\u043c \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043a\u0430\u043a \u0441\u0443\u043c\u043c\u044b, \u0442\u0430\u043a \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0435 \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440\u044b \u0432 \u043a\u0430\u0441\u043a\u0430\u0434\u044b \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440\u044b \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0431\u0438\u0442\u043d\u043e\u0441\u0442\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/889\/389\/419\/8893894192e132e1feba24984fb8b1ef.png\" alt=\"\u0420\u0438\u0441. 4. \u0421\u0445\u0435\u043c\u0430 4-\u0445 \u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 VHDL.\" title=\"\u0420\u0438\u0441. 4. \u0421\u0445\u0435\u043c\u0430 4-\u0445 \u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 VHDL.\" width=\"1012\" height=\"814\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/889\/389\/419\/8893894192e132e1feba24984fb8b1ef.png\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. 4. <em>\u0421\u0445\u0435\u043c\u0430 4-\u0445 \u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 VHDL.<\/em><\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e2b\/740\/b8f\/e2b740b8f2eddcb15a487486e2de2f0a.png\" alt=\"\u0420\u0438\u0441. 5. \u0421\u0445\u0435\u043c\u0430 4-\u0445 \u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog (IEEE 1364-2001).\" title=\"\u0420\u0438\u0441. 5. \u0421\u0445\u0435\u043c\u0430 4-\u0445 \u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog (IEEE 1364-2001).\" width=\"920\" height=\"345\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e2b\/740\/b8f\/e2b740b8f2eddcb15a487486e2de2f0a.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 5. \u0421\u0445\u0435\u043c\u0430 4-\u0445 \u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog (IEEE 1364-2001).<\/em><\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/708\/8b6\/744\/7088b6744f987e8c64fb03ab78efc7b2.png\" alt=\"\u0420\u0438\u0441. 6. \u0421\u0445\u0435\u043c\u0430 4-\u0445 \u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440\u0430 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0438\u0437 \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog.\" title=\"\u0420\u0438\u0441. 6. \u0421\u0445\u0435\u043c\u0430 4-\u0445 \u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440\u0430 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0438\u0437 \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog.\" width=\"924\" height=\"245\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/708\/8b6\/744\/7088b6744f987e8c64fb03ab78efc7b2.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 6. \u0421\u0445\u0435\u043c\u0430 4-\u0445 \u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440\u0430 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0438\u0437 \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog.<\/em><\/figcaption><\/div>\n<\/figure>\n<p> \u0418\u0437 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e VHDL \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u043c\u043d\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u0435\u043d, \u0430 \u0435\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043d\u044f\u0442\u0435\u043d \u0438 \u043e\u0447\u0435\u0432\u0438\u0434\u0435\u043d. \u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f, \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u044f\u0437\u044b\u043a\u0430 Verilog \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u044f\u0437\u044b\u043a\u0430 \u0421\u0438. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u044d\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u0438\u0447\u0438\u043d \u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438 \u044f\u0437\u044b\u043a\u0430 VHDL, \u0442\u0430\u043a \u043a\u0430\u043a \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0433\u043e\u0434\u044b \u0432 \u0442\u0435\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c \u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432.<\/p>\n<p><a class=\"anchor\" name=\"2\" id=\"2\"><\/a><\/p>\n<h2> 2. \u041f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/h2>\n<p>\u0418\u0434\u0435\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0440\u0435\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u043c\u0438 \u043f\u0440\u0438\u0448\u043b\u0430 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u0438 (\u041e\u0417\u0423, \u041f\u0417\u0423) \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 1960\u0445, \u0442\u0430\u043a \u043a\u0430\u043a \u043b\u044e\u0431\u0443\u044e \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0449\u0435\u0435 \u043d\u0430\u0431\u043e\u0440 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0445 \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 \u0430\u0434\u0440\u0435\u0441\u0430, \u0432 \u0432\u044b\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u2014 \u0441\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0435 \u0441 \u043b\u0438\u043d\u0438\u0439 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412 \u044d\u0442\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 \u043b\u044e\u0431\u0430\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f (\u00ablookup table\u00bb, \u00ab\u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0441\u0442\u0438\u00bb) \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0434\u0435\u0448\u0438\u0444\u0440\u0430\u0442\u043e\u0440\u043e\u0432. \u0418 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u0430\u043a\u043e\u0435 \u0435\u0451 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u042d\u0412\u041c \u0434\u0440\u0435\u0432\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0434\u0435\u0448\u0438\u0444\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u043a\u043e\u043c\u0430\u043d\u0434, \u0434\u0430 \u0438 \u043f\u043e \u0441\u0435\u0439 \u0434\u0435\u043d\u044c \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 \u0434\u0435\u0448\u0438\u0444\u0440\u0430\u0442\u043e\u0440 \u043a\u043e\u043c\u0430\u043d\u0434 \u0447\u0430\u0441\u0442\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u041f\u0417\u0423. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0434\u0435\u0448\u0438\u0444\u0440\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u043c\u0430\u043d\u0434 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u041f\u0417\u0423 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0438\u0441\u0442\u0438\u043d\u0435 \u0432\u0435\u043b\u0438\u043a\u0438\u043c \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u0435\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043c\u0430\u043d\u0434 (\u043d\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Pentium_FDIV_bug\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0438\u0432\u0435\u0442 Intel<\/a>-\u0443) \u043b\u0438\u0431\u043e \u0432\u0435\u0441\u0442\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0434\u0435\u0448\u0438\u0444\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u041f\u0417\u0423 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0445\u0435\u043c, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435. \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u0430\u043c\u043e\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0435 \u0438\u0437 \u043d\u0438\u0445 \u2014 \u044d\u0442\u043e \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u044f\u0447\u0435\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0434\u0435\u0448\u0438\u0444\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u0432\u0445\u043e\u0434\u043e\u0432 \u0438 \u0432\u044b\u0445\u043e\u0434\u043e\u0432. \u0412\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u0432 60-\u0445 \u0438 70-\u0445 \u0433\u043e\u0434\u0430\u0445 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0432\u0435\u043a\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b \u0431\u044b\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0435, \u0430 \u043f\u0430\u043c\u044f\u0442\u044c \u0443 \u043d\u0438\u0445 \u0431\u044b\u043b\u0430 \u043a\u0440\u043e\u0445\u043e\u0442\u043d\u043e\u0439 \u0438 \u0436\u0443\u0442\u043a\u043e \u0434\u043e\u0440\u043e\u0433\u043e\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 70-\u0445 \u0433\u043e\u0434\u043e\u0432 \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u044b\u043b\u0438 \u0442\u0430\u043a\u0438\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0438 \u043d\u044b\u043d\u0435 \u0433\u0438\u0433\u0430\u043d\u0442\u044b \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u043e\u0432\u043e\u0439 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438, \u043a\u0430\u043a Texas Instruments, General Electric \u0438 National Semiconductor, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043d\u0430 \u0440\u044b\u043d\u043e\u043a \u0441\u0432\u043e\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u2014 \u043f\u0443\u0442\u0435\u043c \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0436\u0438\u0433\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u044b\u0447\u0435\u043a, \u0442.\u00a0\u0435. \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f, \u0447\u0442\u043e \u0438 \u043f\u0440\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u041f\u0417\u0423. \u0410 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0437\u0434\u0435\u043b\u0438\u044f\u0445 \u00ab\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443\u00bb \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u0430\u0436\u0435 \u0441\u0442\u0438\u0440\u0430\u0442\u044c \u0443\u043b\u044c\u0442\u0440\u0430\u0444\u0438\u043e\u043b\u0435\u0442\u043e\u043c \u0438 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u044b\u0447\u043a\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e. \u0422\u0430\u043a\u0438\u0435 \u0438\u0437\u0434\u0435\u043b\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u00abProgrammable Logic Array\u00bb \u2014 PLA \u0438\u043b\u0438 PAL.<\/p>\n<p>\u0412 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u0445 PAL \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 (\u0440\u0438\u0441. 7) \u0438\u0437 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u00ab\u0418\u00bb, \u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0438\u0441\u0443\u0435\u043c\u044b\u0445 \u043d\u0430 \u0441\u0445\u0435\u043c\u0430\u0445 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e, \u0432\u044b\u0445\u043e\u0434\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u043b\u0438\u0441\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u00ab\u0418\u041b\u0418\u00bb, \u0440\u0438\u0441\u0443\u0435\u043c\u044b\u0445 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0431\u0440\u0430\u0437\u0443\u044f \u00ab\u0441\u0443\u043c\u043c\u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0439\u00bb (sum of product), \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%94%D0%B8%D0%B7%D1%8A%D1%8E%D0%BD%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F_%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D0%BE%D1%80%D0%BC%D0%B0\" rel=\"noopener noreferrer nofollow\">\u0434\u0438\u0437\u044a\u044e\u043d\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435<\/a> (\u0414\u041d\u0424), \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0431\u0443\u043b\u0435\u0432\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u0435, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u0435\u0434\u0435\u043d\u0430 \u043b\u044e\u0431\u0430\u044f \u0431\u0443\u043b\u0435\u0432\u0430 \u0444\u043e\u0440\u043c\u0443\u043b\u0430. \u0414\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u0445 PAL, \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044f\u0441\u044c, \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u043b\u0438 \u043c\u0430\u0441\u0441\u0438\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0431\u0443\u043b\u0435\u0432\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9a2\/9d2\/49b\/9a29d249bc3088b743ff5bcb2f0e0c76.png\" alt=\"\u0420\u0438\u0441. 7. \u0423\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 PAL \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u044d\u0442\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 \u044d\u0442\u043e \u00ab\u0444\u044c\u044e\u0437\u044b\u00bb - \u043f\u0435\u0440\u0435\u0436\u0438\u0433\u0430\u0435\u043c\u044b\u0435 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0440\u0435\u0434\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435\u043b\u0438. \" title=\"\u0420\u0438\u0441. 7. \u0423\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 PAL \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u044d\u0442\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 \u044d\u0442\u043e \u00ab\u0444\u044c\u044e\u0437\u044b\u00bb - \u043f\u0435\u0440\u0435\u0436\u0438\u0433\u0430\u0435\u043c\u044b\u0435 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0440\u0435\u0434\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435\u043b\u0438. \" width=\"1230\" height=\"696\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9a2\/9d2\/49b\/9a29d249bc3088b743ff5bcb2f0e0c76.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 7. \u0423\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 PAL \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u044d\u0442\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 \u044d\u0442\u043e \u00ab\u0444\u044c\u044e\u0437\u044b\u00bb &#8212; \u043f\u0435\u0440\u0435\u0436\u0438\u0433\u0430\u0435\u043c\u044b\u0435 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0440\u0435\u0434\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435\u043b\u0438.<\/em> <\/figcaption><\/div>\n<\/figure>\n<p><em> <\/em>\u0414\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c PLA\/PAL \u0432 1983 \u0433\u043e\u0434\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Monolithic_Memories\" rel=\"noopener noreferrer nofollow\">Monolithic Memories, Inc<\/a> \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u2014 <a href=\"https:\/\/en.wikipedia.org\/wiki\/PALASM\" rel=\"noopener noreferrer nofollow\">PALASM<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0443\u043b\u0435\u0432\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0435\u0440\u0435\u0436\u0438\u0433\u0430\u0435\u043c\u044b\u0445 \u00ab\u0444\u044c\u044e\u0437\u043e\u0432\u00bb. \u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f MMI \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0430 \u0441\u0432\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 PAL16R4, \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0441\u0434\u0435\u043b\u0430\u043b\u043e \u044d\u0442\u0443 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439, \u0430 \u0441\u0430\u043c \u044f\u0437\u044b\u043a PALASM \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u00ab\u0434\u0435 \u0444\u0430\u043a\u0442\u043e\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0438\u043c\u0435\u044e\u0449\u0438\u0445 \u0434\u0435\u043b\u043e \u0441 PAL.<\/p>\n<figure class=\"bordered full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1f3\/9fb\/df0\/1f39fbdf05593638ef4fd8beeae1c5b4.png\" alt=\"\u0420\u0438\u0441. 8. \u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 4-\u0445 \u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0434\u043b\u044f PAL16R4 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 PALASM.\" title=\"\u0420\u0438\u0441. 8. \u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 4-\u0445 \u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0434\u043b\u044f PAL16R4 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 PALASM.\" width=\"552\" height=\"674\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1f3\/9fb\/df0\/1f39fbdf05593638ef4fd8beeae1c5b4.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 8. \u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 4-\u0445 \u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0434\u043b\u044f PAL16R4 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 PALASM.<\/em><\/figcaption><\/div>\n<\/figure>\n<p> \u0412 1985 \u0433\u043e\u0434\u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Lattice Semiconductor \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u0441\u0432\u043e\u0439, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u0438 \u0443\u0433\u043b\u0443\u0431\u043b\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b PAL, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0443\u0442\u0435\u043c \u043f\u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u042d\u041f\u041f\u0417\u0423 (EEPROM). \u042d\u0442\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u0438\u043c\u0435\u043b\u0430  \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0443\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f: \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0431\u044b\u043b\u0438 \u0432\u0432\u0435\u0434\u0435\u043d\u044b \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u00ab\u043c\u0430\u043a\u0440\u043e\u044f\u0447\u0435\u0439\u043a\u0438\u00bb (\u00abmacrocels\u00bb) \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u043f\u043e\u043c\u0438\u043c\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u00ab\u0418\u00bb \u0438 \u00ab\u0418\u041b\u0418\u00bb \u0435\u0449\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b (D-\u0442\u0440\u0438\u0433\u0433\u0435\u0440\u044b) \u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u043e\u0440\u044b \u0434\u043b\u044f \u043e\u0431\u0445\u043e\u0434\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432. \u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0435 \u0441\u0432\u044f\u0437\u0438 \u2014 \u043f\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b \u0441 \u0432\u044b\u0445\u043e\u0434\u0430 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 \u043d\u0430 \u0432\u0445\u043e\u0434 \u044d\u0442\u043e\u0439 \u0436\u0435 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0447\u0435\u0435\u043a. \u0421\u0445\u0435\u043c\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u00abGeneric Logic Array\u00bb (GAL). \u041d\u0430 \u0440\u0438\u0441 9. \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u00ab\u043c\u0430\u043a\u0440\u043e\u044f\u0447\u0435\u0439\u043a\u0438\u00bb Lattice GAL22V10, \u0441\u0430\u043c\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0430 \u0434\u0435\u0441\u044f\u0442\u044c \u0442\u0430\u043a\u0438\u0445 \u00ab\u043c\u0430\u043a\u0440\u043e\u044f\u0447\u0435\u0435\u043a\u00bb (22 \u0432\u0445\u043e\u0434\u0430 \u0438 10 \u0432\u044b\u0445\u043e\u0434\u043e\u0432).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/915\/ba3\/7b8\/915ba37b80e4924d9ed1d51f6ab19b0f.png\" alt=\"\u0420\u0438\u0441. 9. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u0430\u043a\u0440\u043e\u044f\u0447\u0435\u0439\u043a\u0438 (Output Logic Macro Cell) \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b GAL22V10.\" title=\"\u0420\u0438\u0441. 9. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u0430\u043a\u0440\u043e\u044f\u0447\u0435\u0439\u043a\u0438 (Output Logic Macro Cell) \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b GAL22V10.\" width=\"843\" height=\"512\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/915\/ba3\/7b8\/915ba37b80e4924d9ed1d51f6ab19b0f.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 9. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u0430\u043a\u0440\u043e\u044f\u0447\u0435\u0439\u043a\u0438 (Output Logic Macro Cell) \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b GAL22V10.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u041c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 Lattice GAL22V10 \u0431\u044b\u043b\u0430 \u0438 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u0432 \u0441\u0445\u0435\u043c\u0430\u0445 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 (glue logic). \u041c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0434\u043e 2010 \u0433\u043e\u0434\u0430, \u0430 \u0435\u0451 \u0430\u043d\u0430\u043b\u043e\u0433 Atmel ATF22V10 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0438 \u043f\u043e \u0441\u0435\u0439 \u0434\u0435\u043d\u044c. \u0414\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 HDL \u044f\u0437\u044b\u043a <a href=\"https:\/\/ww1.microchip.com\/downloads\/en\/DeviceDoc\/doc0737.pdf\" rel=\"noopener noreferrer nofollow\">CUPL<\/a> \u0438 \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 <a href=\"https:\/\/www.microchip.com\/en-us\/development-tool\/WinCUPL\" rel=\"noopener noreferrer nofollow\">Atmel WinCUPL<\/a>. \u042d\u0442\u0430 \u0441\u0440\u0435\u0434\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 CUPL \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0440\u044f\u0434\u0430 PAL\/GAL \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u0438\u043b\u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 PALASM \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\u0445.<\/p>\n<p> \u041d\u0435\u0434\u0430\u0432\u043d\u043e, \u0437\u0430\u043d\u0438\u043c\u0430\u044f\u0441\u044c \u00ab\u0446\u0438\u0444\u0440\u043e\u0432\u044b\u043c \u0440\u0435\u0442\u0440\u043e\u00bb, \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043d\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0448\u0438\u043d\u044b \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f 8-\u043c\u0438 \u0431\u0438\u0442\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b, \u044f \u0441 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u043b\u043e\u0433\u0438\u043a\u0438 7400 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043a\u0430\u043a \u0434\u0435\u0448\u0438\u0444\u0440\u0430\u0442\u043e\u0440 4-\u0445 \u0431\u0438\u0442\u043e\u0432\u044b\u0445 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0432 \u0438\u0445 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 7-\u043c\u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u043c \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0435. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0435\u0448\u0438\u043b\u0430\u0441\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b  ATF22V10 \u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u0443\u0441\u043e\u0447\u043a\u0430 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f CUPL, \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0414\u0443\u0433\u0430 \u0413\u0430\u0431\u0431\u0430\u0440\u0434\u0430, \u0437\u0430 \u0447\u0442\u043e \u0435\u043c\u0443 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e. \u041f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0441\u0445\u0435\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b GAL22V10 (\u043e\u043d\u0430 \u0436\u0435  ATF22V10) \u043a 7-\u043c\u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u043c\u0443 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435: <a href=\"https:\/\/sourceforge.net\/projects\/dual-bcd-to-hex-7-seg-driver\/?source=navbar\" rel=\"noopener noreferrer nofollow\">https:\/\/sourceforge.net\/projects\/dual-bcd-to-hex-7-seg-driver\/?source=navbar<\/a><\/p>\n<p> \u0414\u043e\u0431\u0430\u0432\u043b\u044e, \u0447\u0442\u043e \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0441 \u044f\u0437\u044b\u043a\u0430 CUPL\/PALASM \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/daveho\/GALasm\" rel=\"noopener noreferrer nofollow\">Portable GAL Assembler \u2014 GALasm<\/a> \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043d\u0430 Github-\u0435. GALasm \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0410\u043b\u0435\u0441\u0441\u0430\u043d\u0434\u0440\u043e \u0417\u0443\u043c\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 2000-\u0445 \u0433\u043e\u0434\u043e\u0432, \u043d\u043e \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u0430\u043a\u0443\u044e \u00ab\u0434\u0440\u0435\u0432\u043d\u043e\u0441\u0442\u044c\u00bb \u0435\u0433\u043e \u043a\u043e\u0434 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u041e\u0421 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Linux \u0438 BSD.<\/p>\n<p> \u0422\u0430\u043a\u0436\u0435 \u0445\u043e\u0447\u0443 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u00ab<a href=\"https:\/\/habr.com\/ru\/articles\/535936\/\" rel=\"noopener noreferrer nofollow\">PAL, GAL \u0438 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0435 \u0432 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0435 \u0420\u0435\u0442\u0440\u043e<\/a>\u00bb \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <strong>@alecv<\/strong> \u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u0445 \u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 PLA, PAL \u0438 GAL, \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 PALASM.<\/p>\n<p> \u0418\u0437\u0434\u0435\u043b\u0438\u044f PLA, PAL \u0438 GAL \u0431\u0443\u0440\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u043b\u0438\u0441\u044c, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0435\u043d\u0442\u0438\u043b\u0435\u0439 (\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432) \u0438 \u00ab\u043c\u0430\u043a\u0440\u043e\u044f\u0447\u0435\u0435\u043a\u00bb \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u043b\u043e\u0441\u044c, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u043d\u043e\u0432\u044b\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0431\u043b\u043e\u043a\u0438, \u0438 \u043f\u043e\u0437\u0436\u0435 \u0442\u0430\u043a\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0442\u0430\u043b\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c Programmable Logic Device (PLD) \u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Complex_programmable_logic_device\" rel=\"noopener noreferrer nofollow\">Complex Programmable Logic Device (CPLD)<\/a>, \u0430 \u0432 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u2014 \u00ab\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u00bb. \u041f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u041f\u041b\u0423 (CPLD) \u0438\u043c\u0435\u044e\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u00ab\u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0448\u0438\u0432\u0430\u0435\u043c\u0443\u044e\u00bb \u043f\u0430\u043c\u044f\u0442\u044c, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0443\u044e \u0441\u0432\u044f\u0437\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b. \u0422\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0436\u0438\u0433\u0430\u043d\u0438\u0435 \u00ab\u0444\u044c\u044e\u0437\u043e\u0432\u00bb, \u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0442\u0430\u043a\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e \u2014 \u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0434\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u043e\u0442\u0435\u043d \u0446\u0438\u043a\u043b\u043e\u0432.<\/p>\n<p> \u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0441 \u041f\u041b\u0423 \u0448\u043b\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u0438 \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043f\u0443\u0442\u0438. \u0412\u043c\u0435\u0441\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u043d\u0442\u0438\u043b\u0435\u0439 \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u043c\u0438 \u0441\u0432\u044f\u0437\u044f\u043c\u0438, \u0441\u0442\u0430\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u043b\u043e\u0433\u0438\u043a\u0438 \u2014 \u00abConfigurable Logic Blocks\u00bb (CLBs), \u00abLogical Units\u00bb (LUs), \u00abLogical Cells\u00bb (LCs)  \u0438\u043b\u0438 \u00ab\u043c\u0430\u043a\u0440\u043e\u0431\u043b\u043e\u043a\u043e\u0432\u00bb. \u0422\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u0437\u0434\u0435\u0441\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043d\u0438\u0442\u0441\u044f \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u0438 \u043f\u0440\u043e\u0434\u0430\u0432\u0430\u043d\u043e\u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c. \u041a\u0430\u0436\u0434\u044b\u0439 \u043c\u0430\u043a\u0440\u043e\u0431\u043b\u043e\u043a \u0432 \u0442\u0430\u043a\u0438\u0445 \u0438\u0437\u0434\u0435\u043b\u0438\u044f\u0445 \u0438\u043c\u0435\u0435\u0442 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f (\u00ablookup table\u00bb \u0438\u043b\u0438  LUT) \u0441 \u0434\u0432\u0443\u043c\u044f, \u0442\u0440\u0435\u043c\u044f \u0438\u043b\u0438 \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u0432\u0445\u043e\u0434\u0430\u043c\u0438, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0438 \u043d\u0430\u0431\u043e\u0440 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u043e\u0440\u043e\u0432. \u041c\u0430\u043a\u0440\u043e\u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0438 \u0432 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043f\u043e\u0432\u0435\u0440\u0445 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0430\u0441\u044c \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0446\u0438\u0438. \u0421\u0445\u0435\u043c\u0430 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u0432\u0445\u043e\u0434\u0430\u043c\u0438 \u0438 \u0432\u044b\u0445\u043e\u0434\u0430\u043c\u0438 \u043c\u0430\u043a\u0440\u043e\u0431\u043b\u043e\u043a\u043e\u0432 \u0432 \u0442\u0430\u043a\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u044f\u0447\u0435\u0439\u043a\u0430\u043c\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u0432\u044b\u0445\u043e\u0434\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043a \u0442\u0440\u0430\u043d\u0437\u0438\u0441\u0442\u043e\u0440\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u0430\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0446\u0438\u0438. \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0441\u0445\u0435\u043c\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u043c\u0430\u043a\u0440\u043e\u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u0438 \u0441\u0430\u043c\u0438 \u043c\u0430\u043a\u0440\u043e\u0431\u043b\u043e\u043a\u0438 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438, \u0442.\u00a0\u0435. \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u0431\u0438\u0442\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0422\u0430\u043a\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u00abField Programmable Gate Array\u00bb (FPGA), \u0432 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u2014 \u00ab\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0418\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u044c\u043d\u044b\u0435 \u0421\u0445\u0435\u043c\u044b\u00bb (\u041f\u041b\u0418\u0421). \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043c\u0430\u043a\u0440\u043e\u0431\u043b\u043e\u043a\u0430 (\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0438) \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 10 \u043d\u0438\u0436\u0435.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e6e\/883\/52c\/e6e88352c47cbe7416e058d59fa68b81.png\" alt=\"\u0420\u0438\u0441. 10. \u0422\u0438\u043f\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u00ab\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430\u00bb \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u041f\u041b\u0418\u0421 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 4-LUT. \u041d\u0430 \u0441\u0445\u0435\u043c\u0435: 3-LUT \u2014 \u0442\u0440\u0435\u0445\u0432\u0445\u043e\u0434\u043e\u0432\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, FA \u2014 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440, DFF \u2014 D-\u0442\u0440\u0438\u0433\u0433\u0435\u0440 (\u0440\u0435\u0433\u0438\u0441\u0442\u0440).\" title=\"\u0420\u0438\u0441. 10. \u0422\u0438\u043f\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u00ab\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430\u00bb \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u041f\u041b\u0418\u0421 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 4-LUT. \u041d\u0430 \u0441\u0445\u0435\u043c\u0435: 3-LUT \u2014 \u0442\u0440\u0435\u0445\u0432\u0445\u043e\u0434\u043e\u0432\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, FA \u2014 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440, DFF \u2014 D-\u0442\u0440\u0438\u0433\u0433\u0435\u0440 (\u0440\u0435\u0433\u0438\u0441\u0442\u0440).\" width=\"330\" height=\"148\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e6e\/883\/52c\/e6e88352c47cbe7416e058d59fa68b81.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 10. \u0422\u0438\u043f\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u00ab\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430\u00bb \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u041f\u041b\u0418\u0421 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 4-LUT.<br \/> \u041d\u0430 \u0441\u0445\u0435\u043c\u0435: 3-LUT \u2014 \u0442\u0440\u0435\u0445\u0432\u0445\u043e\u0434\u043e\u0432\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, FA \u2014 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440, DFF \u2014 D-\u0442\u0440\u0438\u0433\u0433\u0435\u0440 (\u0440\u0435\u0433\u0438\u0441\u0442\u0440).<\/em><\/figcaption><\/div>\n<\/figure>\n<p> \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043c\u0430\u043a\u0440\u043e\u0431\u043b\u043e\u043a\u043e\u0432 \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438\u043c\u0435\u044e\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043d\u0430\u0434 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u0435\u043d\u0442\u0438\u043b\u0435\u0439 PLA\/PAL \u0438 PLD. \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043c\u0430\u043a\u0440\u043e\u0431\u043b\u043e\u043a\u0430, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0445\u043e\u0434\u0441\u0442\u0432\u043e \u043c\u0430\u043a\u0440\u043e\u0431\u043b\u043e\u043a\u0430 \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u043e\u0439, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u0440\u0438\u0441. 2, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 RTL \u2014 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 (LUT + \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440) \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 (DFF) \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435. \u0410 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u043a\u0438\u0440\u043f\u0438\u0447\u0438\u043a\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438.<\/p>\n<p> \u041f\u0430\u0440\u0443 \u0441\u043b\u043e\u0432 \u043f\u0440\u043e LUT (\u00ablookup table\u00bb). LUT \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0440\u0435\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0431\u0443\u043b\u0435\u0432\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e (\u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u00ab\u0418\u00bb, \u00ab\u0418\u041b\u0418\u00bb, \u00ab\u041d\u0415\u00bb \u0438\u043b\u0438 \u043b\u044e\u0431\u0430\u044f \u0434\u0440\u0443\u0433\u0430\u044f). \u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f LUT \u043e\u0431\u044b\u0447\u043d\u043e \u0432 \u0432\u0438\u0434\u0435 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u043e\u0440\u043e\u0432, \u0432\u0445\u043e\u0434\u044b \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a \u044f\u0447\u0435\u0439\u043a\u0430\u043c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0430 \u0432\u0445\u043e\u0434\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u2014 \u043a \u0432\u0445\u043e\u0434\u043d\u044b\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c, \u043d\u0430\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/a9a\/537\/88b\/a9a53788bdf3982c34ba68b8d7c70437.jpg\" alt=\"\u0420\u0438\u0441. 11. \u0422\u0438\u043f\u043e\u0432\u0430\u044f \u0441\u0445\u0435\u043c\u0430 4-LUT \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421.\" title=\"\u0420\u0438\u0441. 11. \u0422\u0438\u043f\u043e\u0432\u0430\u044f \u0441\u0445\u0435\u043c\u0430 4-LUT \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421.\" width=\"424\" height=\"550\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a9a\/537\/88b\/a9a53788bdf3982c34ba68b8d7c70437.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 11. \u0422\u0438\u043f\u043e\u0432\u0430\u044f \u0441\u0445\u0435\u043c\u0430 4-LUT \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421.<\/em><\/figcaption><\/div>\n<\/figure>\n<p><em>     <\/em> \u041d\u0430 \u0441\u0445\u0435\u043c\u0435 \u0440\u0438\u0441. 11 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0442\u0438\u043f\u043e\u0432\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0447\u0435\u0442\u044b\u0440\u0435\u0445\u0432\u0445\u043e\u0434\u043e\u0432\u043e\u0439 \u00ablookup table\u00bb (4-LUT). \u041b\u0438\u043d\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u043e\u0440\u0430\u043c\u0438 <strong>I0<\/strong>, <strong>I1<\/strong>, <strong>I2<\/strong> \u0438 <strong>I3<\/strong> \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0430 4-LUT, \u0430 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0434 \u043d\u0438\u043c\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c\u044e \u0431\u0438\u0442\u0430\u043c\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (SRAM) \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u043a\u0430\u043a <strong>BIT[0]<\/strong>&#8230;<strong>BIT[15]<\/strong>, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421, \u0442.\u00a0\u0435. \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0435\u0451 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 <strong>O<\/strong>. \u041d\u0430 \u0442\u0430\u043a\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 4-LUT \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u043b\u043e\u043a \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0431\u0438\u0442\u043e\u0432\u044b\u0445 \u044f\u0447\u0435\u0435\u043a, \u0430\u0434\u0440\u0435\u0441\u0443\u0435\u043c\u044b\u0445 \u043b\u0438\u043d\u0438\u044f\u043c\u0438 I0&#8230;I3. \u0418\u0437 \u0441\u0445\u0435\u043c\u044b \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e 4-LUT \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445  3-LUT \u0431\u043b\u043e\u043a\u043e\u0432, \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u043e\u0440\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u043a\u0430\u0436\u0434\u044b\u0439 3-LUT \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0445 \u0434\u0432\u0443\u0445 2-LUT, \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u043e\u0440\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u043f\u043e\u043d\u0438\u0436\u0435, \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u041f\u041b\u0418\u0421 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e LUT \u0440\u0430\u0437\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e 7-LUT.<\/p>\n<p> \u041e\u0442\u043b\u0438\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421 \u043e\u0442 \u041f\u041b\u0423 (PLA\/PAL\/PLD\/CPLD) \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0431\u044b\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438, \u043e\u0431\u044b\u0447\u043d\u043e NOR flash, \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u041f\u041b\u0418\u0421, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421 \u043f\u0440\u0438 \u0435\u0451 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u042d\u0442\u0438\u043c \u0436\u0435 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u043b\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u0445 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u2014 \u041f\u041b\u0418\u0421 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e (\u0434\u043e 100 \u043c\u0441) \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f \u0432\u044b\u0445\u043e\u0434\u0430 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0440\u0435\u0436\u0438\u043c. \u0412 \u044d\u0442\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0423 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043d\u0438\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0441\u0432\u044f\u0437\u0435\u0439 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0448\u0438\u0442\u044b\u0445 \u00ab\u0444\u044c\u044e\u0437\u043e\u0432\u00bb \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u044f, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u041f\u041b\u0423 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0440\u0430\u0431\u043e\u0442\u0435 \u043f\u043e\u0447\u0442\u0438 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0430\u0447\u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u0441\u0431\u0440\u043e\u0441\u0430. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0423  \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421.<\/p>\n<p> \u041e\u0434\u043d\u0430\u043a\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 \u043b\u0438\u0431\u043e \u0443\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0431\u044f \u0431\u043b\u043e\u043a NOR flash \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 (\u0445\u043e\u0442\u044c \u044d\u0442\u043e \u0438 \u043d\u0435 \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0440\u0435\u0436\u0438\u043c), \u043b\u0438\u0431\u043e \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u041f\u041b\u0423 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u044b\u0447\u0435\u043a (\u00ab\u0444\u044c\u044e\u0437\u043e\u0432\u00bb). \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0438\u0437\u0434\u0435\u043b\u0438\u044f\u043c \u0441 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u043c\u0430\u043a\u0440\u043e\u0431\u043b\u043e\u043a\u043e\u0432, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u00ab\u0444\u044c\u044e\u0437\u044b\u00bb \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u043d\u0430 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u00ab\u043c\u0430\u0442\u0435\u0440\u0438\u0438\u00bb \u041f\u041b\u0418\u0421.<\/p>\n<p> \u041f\u0435\u0440\u0432\u043e\u043f\u0440\u043e\u0445\u043e\u0434\u0446\u0435\u043c \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044e Altera (\u043d\u044b\u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 Intel). Altera \u043d\u0430\u0447\u0430\u043b\u0430 \u0432 1983 \u0433\u043e\u0434\u0443 \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 PLA\/PLD \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 FPGA. \u0414\u0440\u0443\u0433\u0438\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Xilinx (\u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 AMD), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0448\u043b\u0430 \u043d\u0430 \u0440\u044b\u043d\u043e\u043a \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 PLD \u0438\u0437\u0434\u0435\u043b\u0438\u044f\u043c\u0438 \u0432 1985 \u0433\u043e\u0434\u0443 \u0438 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 Xilinx \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0434\u0435\u0440\u043e\u043c \u0440\u044b\u043d\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438. \u0415\u0441\u043b\u0438 \u044f \u043d\u0435 \u043e\u0448\u0438\u0431\u0430\u044e\u0441\u044c, \u0442\u043e \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0435\u043a\u043e\u0440\u0434\u0441\u043c\u0435\u043d\u043e\u043c \u043f\u043e \u0447\u0438\u0441\u043b\u0443 \u043c\u0430\u043a\u0440\u043e\u0431\u043b\u043e\u043a\u043e\u0432 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 <a href=\"https:\/\/www.xilinx.com\/products\/silicon-devices\/fpga\/virtex-ultrascale-plus-vu19p.html\" rel=\"noopener noreferrer nofollow\">Virtex UltraScale+ VU19P<\/a> \u043f\u0440-\u0432\u0430 Xilinx, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0443\u043c\u043e\u043f\u043e\u043c\u0440\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 <strong>9 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u00ablogical cells\u00bb<\/strong>  \u0438 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 \u00abhard blocks\u00bb.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/35b\/04d\/a0d\/35b04da0d27779bc3d844e15096d3f8f.jpg\" alt=\"\u0420\u0438\u0441. 12. AMD\/Xilinx Virtex UltraScale+ VU19P. 2020\u0433.\" title=\"\u0420\u0438\u0441. 12. AMD\/Xilinx Virtex UltraScale+ VU19P. 2020\u0433.\" width=\"158\" height=\"158\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/35b\/04d\/a0d\/35b04da0d27779bc3d844e15096d3f8f.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 12. AMD\/Xilinx Virtex UltraScale+ VU19P. 2020\u0433.<\/em><\/figcaption><\/div>\n<\/figure>\n<p> \u041d\u0430\u0434\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u0445 \u041f\u041b\u0418\u0421 \u043f\u043e\u043c\u0438\u043c\u043e \u043c\u0430\u043a\u0440\u043e\u0431\u043b\u043e\u043a\u043e\u0432 (\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0431\u043b\u043e\u043a\u043e\u0432, LUT-\u043e\u0432) \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0442.\u00a0\u043d. \u00abhard blocks\u00bb \u2014 \u0431\u043b\u043e\u043a\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a: \u0431\u043b\u043e\u043a\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e\u0442 (PLL), \u0443\u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u0438 \u0438 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0438 (MUL\/DIV) \u0438 \u0446\u0435\u043b\u044b\u0435 ALU, \u0431\u043b\u043e\u043a\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 (DSP), \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (BRAM), \u0431\u043b\u043e\u043a\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (SDRAM), \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b-\u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b (SERDES), \u0431\u043b\u043e\u043a\u0438 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0438 \u0448\u0438\u043d (DDR, PCIe, USB), \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u0435 \u0442\u0440\u0430\u043d\u0441\u0438\u0432\u0435\u0440\u044b \u0438 \u0442.\u00a0\u0434. \u0421 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0440 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 \u043d\u0430\u0447\u0430\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u044f\u0434\u0440\u0430 ARM.<\/p>\n<p> \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u041f\u041b\u0418\u0421 \u2014 \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0435 \u043c\u043d\u043e\u0433\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0430\u0442\u044c \u0442\u044f\u0436\u0435\u043b\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432; \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043b\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0438\u043b\u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c (\u0442.\u00a0\u043d. ASIC &#8212; \u00abApplication Specifi\u0441 Integrated Circuits\u00bb) \u0438 \u0438\u0445 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435.<\/p>\n<p> \u041f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c (Wikipedia), \u043f\u0440\u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 ASIC \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u041f\u041b\u0418\u0421 \u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u044d\u043c\u043f\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439: \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u0441\u0438\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432 40 \u0440\u0430\u0437 \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 1\/3 \u043e\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b ASIC, \u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u043c\u0430\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u041f\u041b\u0418\u0421 \u0431\u0443\u0434\u0435\u0442 \u0432 12 \u0440\u0430\u0437 \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<p> \u0422\u0430\u043a\u0436\u0435 \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0440\u044f\u0434 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 (AMD, Intel), \u043d\u0430\u0447\u0430\u043b\u0438 \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c \u0432 \u0441\u0432\u043e\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0435 \u0438\u0437\u0434\u0435\u043b\u0438\u044f \u00ab\u043c\u0430\u0442\u0435\u0440\u0438\u044e\u00bb \u041f\u041b\u0418\u0421, \u0441\u0432\u044f\u0437\u044c \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0430. \u041a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0442\u0430\u043a\u0438\u0435 \u0438\u0437\u0434\u0435\u043b\u0438\u044f \u0438 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u043a\u0438\u0445 \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u043c\u043d\u0435 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e.<\/p>\n<p><a class=\"anchor\" name=\"3\" id=\"3\"><\/a><\/p>\n<h2> 3. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421<\/h2>\n<p>\u042f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0440\u043c\u0438\u043d \u041f\u041b\u0418\u0421 (\u0438\u043b\u0438 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 FPGA) \u043a\u0430\u043a \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u0438\u0434\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043d\u0430 \u043c\u0430\u043a\u0440\u043e\u0431\u043b\u043e\u043a\u0430\u0445 \u0438\u043b\u0438 \u043c\u0430\u043a\u0440\u043e\u044f\u0447\u0435\u0439\u043a\u0430\u0445, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0433\u0440\u0430\u043d\u044c \u043c\u0435\u0436\u0434\u0443 CPLD \u0438 FPGA \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043c\u044b\u0442\u0430, \u0430 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c\u0438 \u043c\u0430\u043b\u043e \u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0434\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u0432\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 (toolchain \u0438\u043b\u0438 IDE \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u0442\u0443\u043b\u00bb) \u2014 \u0446\u0435\u043b\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0443\u044e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0441\u0451: \u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0445\u0435\u043c \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 HDL \u044f\u0437\u044b\u043a\u0430\u0445 (SystemVerilog \u0438 VHDL \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435\u043c\u0438), \u0434\u043e \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438, \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0438 \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041d\u043e \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439  \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0438\u043d\u0442\u0435\u0437 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0438, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u0437\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435, \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0435 \u0434\u0435\u043d\u044c\u0433\u0438. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0443\u0441\u043b\u043e\u0432\u043d\u043e-\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0435 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u043d\u0430 \u044d\u0442\u0438 \u0442\u0443\u043b\u044b. \u042d\u0442\u0438 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c\u044b\u0435 \u0432 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u00ab\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445\u00bb \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f, \u043d\u043e \u0438 \u0434\u043b\u044f \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0412\u044b \u043f\u043e\u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u00abhard blocks\u00bb \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u0412\u0430\u0448\u0435\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0435 \u041f\u041b\u0418\u0421, \u0442\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0430\u0441\u043a\u043e\u0448\u0435\u043b\u0438\u0442\u044c\u0441\u044f.<\/p>\n<p> \u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u0432\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421, \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u044f\u0434 \u0441\u0432\u043e\u0438\u0445 \u0438\u0437\u0434\u0435\u043b\u0438\u0439. \u0415\u0441\u043b\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f, \u0442\u043e\u0447\u043d\u0435\u0435 \u0434\u0430\u0436\u0435 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f, \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0445\u043e\u0442\u044c \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c, \u0442\u043e \u043c\u0435\u0436\u0434\u0443 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u043c\u0438 \u0438 \u0442\u0443\u043b\u0430\u043c\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439, \u0430 \u043f\u043e\u0440\u043e\u0439 \u0434\u0430\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u0432 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435 HDL \u044f\u0437\u044b\u043a\u043e\u0432 (\u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b). \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0438\u0441\u0442\u0440\u0430\u0441\u0442\u0438\u043b\u0441\u044f \u043a \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u0438, \u0441\u043a\u0430\u0436\u0435\u043c, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430 Xilinx, \u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0441\u0432\u043e\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 \u0438\u0437\u0434\u0435\u043b\u0438\u044f Alter-\u044b \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u0437\u0434\u0435\u0441\u044c \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044d\u0442\u0438 \u0441\u0430\u043c\u044b\u0435 \u00abhard blocks\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0442\u0443\u043b\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f. \u00abHard blocks\u00bb \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u044e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u0430 \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0431\u0435\u0437 \u043d\u0438\u0445 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c. \u0414\u043b\u044f \u0447\u0430\u0441\u0442\u0438 \u0442\u0430\u043a\u0438\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0443 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u044b\u0435 \u0437\u0430\u043c\u0435\u043d\u044b (\u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0431\u043b\u043e\u043a\u0438 PLL \u0438 SERDES \u0435\u0441\u0442\u044c \u0443 \u0432\u0441\u0435\u0445), \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0432\u0435\u043d\u0434\u043e\u0440\u0430 \u043a \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0437\u044f\u0442\u044c \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u043f\u0435\u0440\u0435\u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c) \u0441\u0432\u043e\u0439 \u0434\u0438\u0437\u0430\u0439\u043d \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0440\u0443\u0433\u0438\u0445 \u0431\u043b\u043e\u043a\u043e\u0432. \u041d\u0435\u0442, \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438 \u0438 \u0433\u043e\u043b\u043e\u0432\u043e\u0439 \u2014 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0438 \u043f\u043b\u043e\u0442\u043d\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e.<\/p>\n<p> \u0414\u0430\u043b\u0435\u0435 \u044f \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044e \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (\u0442\u0443\u043b\u044b).<\/p>\n<p> 1. <strong>Xilinx, Inc<\/strong>. \u041a\u0443\u043f\u043b\u0435\u043d\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 AMD \u0432 2022\u0433.<\/p>\n<p>\u0418\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043b\u0438\u043d\u0435\u0439\u043a\u0430\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421: Vertex (\u0442\u043e\u043f\u043e\u0432\u044b\u0435), Kintex (\u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f) \u0438 Artix \u2014 \u0434\u043b\u044f \u0442\u0435\u0445 \u043a\u043e\u043c\u0443 \u043f\u043e\u043f\u0440\u043e\u0449\u0435. \u0422\u0430\u043a\u0436\u0435 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u0441\u0435\u0440\u0438\u044f \u0433\u0435\u0442\u0435\u0440\u043e\u0433\u0435\u043d\u043d\u044b\u0445 \u0438\u0437\u0434\u0435\u043b\u0438\u0439 Zynq-7000 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u0446\u0435\u043b\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443-\u043d\u0430-\u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435 \u0441 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u044f\u0434\u0440\u0430\u043c\u0438 ARM \u0432 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0441 \u00ab\u0444\u0430\u0431\u0440\u0438\u043a\u043e\u0439\u00bb \u041f\u041b\u0418\u0421.<\/p>\n<p>\u0428\u0438\u0440\u043e\u043a\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0435\u0440\u0438\u044f \u00ab\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445\u00bb \u041f\u041b\u0418\u0421 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c SPARTAN 2\/3\/4\/5\/6\/7, \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0436\u0435 \u0441\u043d\u044f\u0442\u0430 \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0443\u043b: <a href=\"https:\/\/en.wikipedia.org\/wiki\/Vivado\" rel=\"noopener noreferrer nofollow\">Vivado Design Suite<\/a>.<\/p>\n<p>2. <strong>Altera, Inc<\/strong>. \u041a\u0443\u043f\u043b\u0435\u043d\u0430 \u0438 \u043f\u043e\u0433\u043b\u043e\u0449\u0435\u043d\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Intel \u0432 2015\u0433, \u043d\u043e \u0432 \u043e\u043a\u0442\u044f\u0431\u0440\u0435 2023\u0433 Intel \u0437\u0430\u044f\u0432\u0438\u043b, \u0447\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0431\u0438\u0437\u043d\u0435\u0441 \u043f\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0443 \u041f\u041b\u0418\u0421 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0435 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u043d\u0430 IPO.<\/p>\n<p>\u0418\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0441\u0435\u0440\u0438\u044f\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421: MAX (CPLD); Cyclon I, II, III, IV \u2014 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u041f\u041b\u0418\u0421;  Stratix \u2014 \u041f\u041b\u0418\u0421 \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u043c\u0438  \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438; Cyclon V \u2014 \u0433\u0435\u0442\u0435\u0440\u043e\u0433\u0435\u043d\u043d\u044b\u0435 \u0441 \u044f\u0434\u0440\u0430\u043c\u0438 ARM Cortex-A9; \u0422\u043e\u043f\u043e\u0432\u044b\u0435 \u0438\u0437\u0434\u0435\u043b\u0438\u044f: Cyclon 10, Arria 10, Stratix 10.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0443\u043b: <a href=\"https:\/\/en.wikipedia.org\/wiki\/Intel_Quartus_Prime\" rel=\"noopener noreferrer nofollow\">Intel Quartus Prime<\/a>. Quartus Prime Lite Edition \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438.<\/p>\n<p>\u0423\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439, \u043d\u043e \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u043e\u0447\u0435\u043d\u044c \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0442\u0443\u043b Altera Quartus II, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u2014 Quartus II Web. \u0415\u0441\u043b\u0438 \u043d\u0435 \u043e\u0448\u0438\u0431\u0430\u044e\u0441\u044c, Quartus II \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u043c\u0438, \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u043e 2015\u0433.<\/p>\n<p>3. <strong>Microsemi Corporation<\/strong> (\u0431\u044b\u0432\u0448\u0430\u044f Actel), \u0432 2018\u0433 \u043f\u043e\u0433\u043b\u043e\u0449\u0435\u043d\u043d\u0430\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 <strong>Microchip Technology Inc.<\/strong> \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0434\u0438\u0430\u0446\u0438\u043e\u043d\u043d\u043e-\u0441\u0442\u043e\u0439\u043a\u0438\u0445 \u041f\u041b\u0418\u0421 \u0434\u043b\u044f \u0430\u0432\u0438\u0430\u0446\u0438\u0438 \u0438 \u043a\u043e\u0441\u043c\u043e\u0441\u0430, \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0447\u0435\u043c \u0438\u0437\u0434\u0435\u043b\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0431\u043b\u043e\u043a\u043e\u0432. \u0420\u0435\u0434\u043a\u0438\u0439 \u0433\u043e\u0441\u0442\u044c \u0432 \u043d\u0430\u0448\u0438\u0445 \u043a\u0440\u0430\u044f\u0445.<\/p>\n<p>\u0418\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0441\u0435\u0440\u0438\u044f\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c: IGLOO, PolarFire \u0438 PolarFire SoC \u2014 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u044f\u0434\u0440\u0430 RISC-V.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0443\u043b: <a href=\"https:\/\/www.microsemi.com\/product-directory\/design-resources\/1750-libero-soc\" rel=\"noopener noreferrer nofollow\">Libero SoC Design Suite<\/a>  <\/p>\n<p>4. <strong>Lattice Semiconductor, Inc<\/strong>. \u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u0442\u0430\u0440\u0435\u0439\u0448\u0438\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421 \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 (\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u0432 1983\u0433). \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u041f\u041b\u0418\u0421 \u043c\u0430\u043b\u043e\u0439 \u0438 \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u0438 (\u0434\u043e 100K LUs), \u043d\u0438\u0437\u043a\u0438\u043c \u044d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435\u043c \u0438 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e.<\/p>\n<p>\u0418\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0441\u0435\u0440\u0438\u044f\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c: iCE40, ECP5 \u0438 ECP5-5G, MachXO (CPLD). \u0412\u0441\u0435 \u044d\u0442\u0438 \u0441\u0435\u0440\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u0438\u043c\u0435\u044e\u0442 \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u0438 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0441\u0430\u043c\u043e\u0434\u0435\u043b\u043e\u043a \u0438 \u043d\u0430 \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0441\u043e\u0431\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u2014 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u043e\u043c Yosys, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0436\u0435.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0443\u043b: <a href=\"https:\/\/www.latticesemi.com\/Products\/DesignSoftwareAndIP\/FPGAandLDS\/LatticeDiamond\" rel=\"noopener noreferrer nofollow\">Lattice Diamond<\/a>. \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0443\u044e \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0440\u043e\u0447\u043d\u0443\u044e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e \u0434\u043b\u044f \u00ab\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439\u00bb.<\/p>\n<p> 5. <strong>Efinix, Inc.<\/strong> \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u043b\u043e\u0434\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c (\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u0432 2012 \u0433\u043e\u0434\u0443) \u0441 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u043c\u0438 \u043a\u043e\u0440\u043d\u044f\u043c\u0438. \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u0445 \u041f\u041b\u0418\u0421 \u043c\u0430\u043b\u043e\u0439, \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 4K-500K LEs. \u0422\u0430\u043a\u0436\u0435 \u0440\u0435\u0434\u043a\u0430\u044f \u043f\u0442\u0438\u0446\u0430 \u0432 \u043d\u0430\u0448\u0438\u0445 \u043a\u0440\u0430\u044f\u0445.<\/p>\n<p>\u0418\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0441\u0435\u0440\u0438\u044f\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c: Trion (T8) \u0438 Trion Titanium \u2014 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u044f\u0434\u0440\u0430 RISC-V.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0443\u043b: <a href=\"https:\/\/www.efinixinc.com\/products-efinity.html#free\" rel=\"noopener noreferrer nofollow\">Efinity Software<\/a>. \u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f, \u0432\u044b\u0434\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043d\u0430 1 \u0433\u043e\u0434 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u044f (\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u044b) \u043f\u0440\u0438 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u0438 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 <a href=\"https:\/\/www.efinixinc.com\/products-devkits-xyloni.html\" rel=\"noopener noreferrer nofollow\">Xyloni Development Kit<\/a>.  <\/p>\n<p>6. <strong>GOWIN Semiconductors.<\/strong> \u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u0441 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u043c\u0438 \u043a\u043e\u0440\u043d\u044f\u043c\u0438. \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u0445 \u041f\u041b\u0418\u0421 \u043c\u0430\u043b\u043e\u0439 \u0438 \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u0438, \u043d\u043e \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u00ab\u0438\u0437\u044e\u043c\u0438\u043d\u043a\u043e\u0439\u00bb. \u0412 \u0432\u0438\u0434\u0443 \u0441\u0432\u043e\u0435\u0439 \u0434\u0435\u0448\u0435\u0432\u0438\u0437\u043d\u044b \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0441 Aliexpress, \u0438\u0437\u0434\u0435\u043b\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0438\u043c\u0435\u044e\u0442 \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0432 \u0441\u0440\u0435\u0434\u0435 \u0441\u0430\u043c\u043e\u0434\u0435\u043b\u043a\u0438\u043d\u044b\u0445. \u041f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u041f\u041b\u0418\u0421 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0440\u0430\u0441\u0442\u0435\u0442. \u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u0420\u043e\u0441\u0441\u0438\u0438.<\/p>\n<p>\u0418\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u043c\u0438: LittleBee GW1N (\u043e\u0442 1K \u0434\u043e 8K LUs), Arora GW2A-18 (20\u041a LUs) \u0438 GW2A-55 (54K LUs). \u042d\u0442\u0438 \u041f\u041b\u0418\u0421 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u043b\u043e\u043a\u043e\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (BSRAM), \u0430 \u0441\u0435\u0440\u0438\u044f GW1NR \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u043e 64 Mbits \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 (SDRAM) \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0443\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e Flash \u043f\u0430\u043c\u044f\u0442\u044c. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f  \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u043e\u043c Yosys.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0443\u043b: <a href=\"https:\/\/www.gowinsemi.com\/en\/support\/download_eda\/\" rel=\"noopener noreferrer nofollow\">GOWIN EDA<\/a>. \u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432 \u0420\u043e\u0441\u0441\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430.<\/p>\n<p> \u041f\u043e\u0434 \u00ab\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438\u00bb \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u0442\u0430\u043a\u0438\u0435 \u041f\u041b\u0418\u0421, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043d\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043c\u0430\u043a\u0440\u043e\u0431\u043b\u043e\u043a\u0430\u0445, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0430 \u0440\u0438\u0441. 10 \u0438\u043b\u0438 \u0431\u043b\u0438\u0437\u043a\u0430\u044f \u043a \u043d\u0435\u0439. \u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u0434\u0435\u043b\u0438\u044f \u043e\u0442 Xilinx \u0438 Altera \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043e\u0448\u043b\u0438 \u043e\u0442 \u044d\u0442\u043e\u0439 \u0438\u0437\u044f\u0449\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.<\/p>\n<p><a class=\"anchor\" name=\"4\" id=\"4\"><\/a><\/p>\n<h2> 4. \u0421\u0438\u043d\u0442\u0435\u0437 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c \u0434\u043b\u044f \u041f\u041b\u0418\u0421<\/h2>\n<p>\u041d\u0435 \u043e\u0448\u0438\u0431\u0443\u0441\u044c \u0435\u0441\u043b\u0438 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 PLD\/CPLD \u0438 FPGA, \u0430 \u044d\u0442\u043e \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0430-\u043a\u043e\u043d\u0435\u0446 1980-\u0445, \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0432 \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442. \u041a \u044d\u0442\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 HDL \u044f\u0437\u044b\u043a\u0438; \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c HDL \u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f  \u0438\u0445 \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u0432 \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u0448\u0438\u0440\u043e\u043a\u043e \u0432\u0445\u043e\u0434\u0438\u043b\u0430 \u0432 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0443. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u043f\u043e\u0447\u0442\u0438 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430\u0447\u0430\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c HDL \u044f\u0437\u044b\u043a\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u00ab\u0441\u0438\u043d\u0442\u0435\u0437\u00bb \u0441\u0445\u0435\u043c, \u0442.\u00a0\u0435. \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u0441 \u044f\u0437\u044b\u043a\u043e\u0432 HDL \u0432 \u043d\u0430\u0431\u043e\u0440 \u0431\u0438\u0442\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443.<\/p>\n<p> \u041a\u0430\u043a \u0436\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0438\u043d\u0442\u0435\u0437 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c \u0434\u043b\u044f \u041f\u041b\u0418\u0421 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435? \u0412\u043a\u0440\u0430\u0442\u0446\u0435, \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p><strong>\u042d\u0442\u0430\u043f 0. \u0421\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438<\/strong><\/p>\n<p>\u041a\u0430\u043a \u0438 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438. \u0414\u043b\u044f \u044d\u0442\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u0438\u0437\u0434\u0435\u043b\u0438\u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b (\u0440\u0438\u0441. 13), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e, \u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437  \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f (\u043f\u0440\u0438\u043d\u0446\u0438\u043f \u00abtop-down design\u00bb) \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c (\u0441\u043c. \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 \u0440\u0438\u0441. 14). \u0418\u0437 \u043c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c \u043f\u0440\u043e\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0432 \u0438\u0437\u0434\u0435\u043b\u0438\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0431\u043b\u043e\u043a\u0438. \u041f\u043e \u043c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u043c \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430\u043c \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d<strong>\u044b<\/strong>\u0435 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438 \u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441 \u0442\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/245\/ccd\/e4a\/245ccde4a7cc4d46ab634c3afd3797fc.png\" alt=\"\u0420\u0438\u0441. 13. \u0411\u043b\u043e\u0447\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 Intel 80386DX.\" title=\"\u0420\u0438\u0441. 13. \u0411\u043b\u043e\u0447\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 Intel 80386DX.\" width=\"450\" height=\"317\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/245\/ccd\/e4a\/245ccde4a7cc4d46ab634c3afd3797fc.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 13. \u0411\u043b\u043e\u0447\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 Intel 80386DX.<\/em><\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/789\/550\/4b2\/7895504b24933c2b5358ba959126f0d8.jpg\" alt=\"\u0420\u0438\u0441 14. \u041c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0434\u043d\u043e\u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 RV32I. \u041d\u0430 \u043c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.\" title=\"\u0420\u0438\u0441 14. \u041c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0434\u043d\u043e\u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 RV32I. \u041d\u0430 \u043c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.\" width=\"650\" height=\"360\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/789\/550\/4b2\/7895504b24933c2b5358ba959126f0d8.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441 14. \u041c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0434\u043d\u043e\u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 RV32I. \u041d\u0430 \u043c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/em><\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/25d\/9b7\/9f1\/25d9b79f140a4fcd5570f3a57870c287.png\" alt=\"\u0420\u0438\u0441 15. \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c.\" title=\"\u0420\u0438\u0441 15. \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c.\" width=\"625\" height=\"356\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/25d\/9b7\/9f1\/25d9b79f140a4fcd5570f3a57870c287.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441 15. \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c.<\/em><\/figcaption><\/div>\n<\/figure>\n<p> \u041a\u043e\u0433\u0434\u0430 \u0433\u043e\u0442\u043e\u0432 \u043d\u0430\u0431\u043e\u0440 \u043c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u00ab\u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438\u00bb (golden reference model). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u044f\u0437\u044b\u043a <a href=\"https:\/\/en.wikipedia.org\/wiki\/SystemC\" rel=\"noopener noreferrer nofollow\">SystemC<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0434\u043b\u044f C++. \u0421\u043c\u044b\u0441\u043b \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445 \u043f\u0440\u043e\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432 \u0446\u0435\u043b\u043e\u043c \u0438 \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0443 \u043d\u0435\u0451 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u0430\u043a\u0430\u044f \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438\u0434\u0435\u044e. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043b\u0435\u0435 \u0434\u043b\u044f \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0430.<\/p>\n<p><strong>\u042d\u0442\u0430\u043f 1. \u0412\u044b\u0431\u043e\u0440 \u041f\u041b\u0418\u0421<\/strong><\/p>\n<p> \u0418\u043c\u0435\u044f \u043d\u0430 \u0440\u0443\u043a\u0430\u0445 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u0438\u0437\u0434\u0435\u043b\u0438\u044f, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u0438 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u041f\u041b\u0418\u0421, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0448\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443. \u0412 \u044d\u0442\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u0438\u0437\u043c\u0430 \u0438 \u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u0439. \u041a\u0442\u043e-\u0442\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u0432\u044b\u043a \u043a \u041f\u041b\u0418\u0421-\u0430\u043c Altera; \u043a\u0442\u043e-\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e \u0438\u0437\u0434\u0435\u043b\u0438\u044f Xilinx \u2014 \u043b\u0443\u0447\u0448\u0438\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0430\u043c\u044b\u0435 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u044b\u0435 \u043f\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0443; \u043a\u0442\u043e-\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f \u0430\u0441\u043a\u0435\u0442\u0438\u0437\u043c\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u041f\u041b\u0418\u0421 \u043e\u0442 Lattice \u0438\u043b\u0438 \u0434\u0435\u0448\u0435\u0432\u0438\u0437\u043d\u043e\u0439 GOWIN. \u0413\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u041f\u041b\u0418\u0421, \u0442.\u00a0\u0435. \u0447\u0438\u0441\u043b\u043e LEs, LUTs, \u0431\u043b\u043e\u043a\u043e\u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u00ab\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432\u00bb \u0438\u043c\u0435\u043b\u043e\u0441\u044c \u0441 \u0445\u043e\u0440\u043e\u0448\u0438\u043c (\u0447\u0438\u0442\u0430\u0439 \u2014 \u0434\u0432\u043e\u0439\u043d\u044b\u043c) \u0437\u0430\u043f\u0430\u0441\u043e\u043c. \u0410 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u043a-\u0442\u043e \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043d\u0443\u0436\u043d\u044b \u043c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p> \u0421\u043e\u0432\u0435\u0442 \u043e\u0442 \u0441\u0435\u0431\u044f \u043b\u0438\u0447\u043d\u043e \u2014 \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 Lattice iCE40 \u0438 ECP5, \u0430 \u0442\u0430\u043a\u0436\u0435 GOWIN GW1N \u0438 GW2A (LittleBee \u0438 Arora).<\/p>\n<p><strong>\u042d\u0442\u0430\u043f 2. \u041f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/strong><\/p>\n<p> \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u0435\u043c \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (\u0442\u0443\u043b\u043e\u043c) \u0438 \u0435\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u041f\u041a (\u0438\u043b\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440). \u0412\u0441\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u0443\u043b\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u041e\u0421 Windows \u0438 Linux \u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u043a\u0430\u043a \u0432 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 (IDE), \u0442\u0430\u043a \u0438 \u0432 \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u043c (\u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0438 \u043d\u0430\u0431\u043e\u0440 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432). \u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0441 \u044d\u0442\u0438\u043c \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 (\u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043d\u044b\u0445), \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 \u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u0435\u0451 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, JTAG \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440. \u041c\u043d\u043e\u0433\u0438\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0443\u0436\u0435 \u0438\u0434\u0443\u0442 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u043e\u043c \u0441 USB \u0440\u0430\u0437\u044a\u0435\u043c\u043e\u043c, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e. \u0415\u0441\u043b\u0438 \u0434\u043b\u044f \u0412\u0430\u0448\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u041f\u041b\u0418\u0421 \u0432\u0434\u0440\u0443\u0433 \u043d\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u043e\u043c, \u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 JTAG \u0430\u0434\u0430\u043f\u0442\u0435\u0440, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/www.waveshare.com\/wiki\/USB_Blaster\" rel=\"noopener noreferrer nofollow\">USB Blaster<\/a> \u2014 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440 (JTAG \u0430\u0434\u0430\u043f\u0442\u0435\u0440) \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u043c \u0441\u043f\u0435\u043a\u0442\u0440\u043e\u043c \u043a\u0430\u043a \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u0443\u043b\u043e\u0432, \u0442\u0430\u043a \u0438 \u00ab\u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0445\u00bb (\u0421\u041f\u041e). \u0412\u043e\u043e\u0431\u0449\u0435, \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u043b\u044e\u0431\u043e\u0439 USB&lt;->Serial \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b FTDI FT2232.<\/p>\n<p><strong>\u042d\u0442\u0430\u043f 3. \u0421\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043b\u0430\u043d\u0430 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438<\/strong><\/p>\n<p> \u0418\u0437\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f (\u0434\u0430\u0442\u0430\u0448\u0438\u0442) \u043d\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421 \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0435\u0451 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u2014 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e pad-\u043e\u0432 (\u043f\u0438\u043d\u043e\u0432). \u042d\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0444\u0430\u0439\u043b\u0435, \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u043c\u0435\u044e\u0449\u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 <strong>.lpf<\/strong> \u0438\u043b\u0438 <strong>.cst<\/strong>. \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u0443\u043b\u0430\u0445 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043f\u043e \u0432\u044b\u0432\u043e\u0434\u0430\u043c \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u043a\u0438\u0445 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0434\u043e\u0431\u043d\u043e, \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0449\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0432\u0440\u0443\u0447\u043d\u0443\u044e,  \u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b pad-\u043e\u0432 \u043f\u043e\u0434\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u0435 \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443.<\/p>\n<p> \u041d\u0438\u0436\u0435, \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0432\u044b\u0434\u0435\u0440\u0436\u043a\u0443 LPF \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430  \u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u043e\u0439 \u041f\u041b\u0418\u0421 Lattice \u0441\u0435\u0440\u0438\u0438 ECP5 (25K LEs). \u0424\u0430\u0439\u043b <strong>karnix_hub12_cabga256.lpf<\/strong>, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code>PORTFREQUENCY PORT \"io_clk25\" 25.0 MHz;  LOCATE COMP \"io_clk25\" SITE \"B9\";  IOBUF PORT \"io_clk25\" IO_TYPE=LVCMOS33;   LOCATE COMP \"io_rgb[0]\" SITE \"A13\";             # LED0 IOBUF PORT \"io_rgb[0]\" IO_TYPE=LVCMOS33; LOCATE COMP \"io_rgb[1]\" SITE \"A14\";             # LED1 - WORK IOBUF PORT \"io_rgb[1]\" IO_TYPE=LVCMOS33; LOCATE COMP \"io_rgb[2]\" SITE \"A15\";             # LED2 - TEST IOBUF PORT \"io_rgb[2]\" IO_TYPE=LVCMOS33; LOCATE COMP \"io_rgb[3]\" SITE \"B14\";             # LED3 IOBUF PORT \"io_rgb[3]\" IO_TYPE=LVCMOS33; LOCATE COMP \"io_gpio[0]\" SITE \"L1\";             # HUB_00 IOBUF PORT \"io_gpio[0]\" IO_TYPE=LVCMOS33; IOBUF PORT \"io_gpio[0]\" PULLMODE=NONE DRIVE=16;  \u2026<\/code><\/pre>\n<p><strong>\u042d\u0442\u0430\u043f  4. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430<\/strong><\/p>\n<p> \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0438\u0448\u0435\u0442 \u043a\u043e\u0434 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0430\u0445 HDL \u2014 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043d\u0430 Verilog (SystemVerilog) \u0438\u043b\u0438 VHDL. \u041d\u0435\u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u2014 \u043d\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Chisel_(programming_language)\" rel=\"noopener noreferrer nofollow\">Chisel<\/a>, <a href=\"https:\/\/spinalhdl.github.io\/SpinalDoc-RTD\/master\/index.html\" rel=\"noopener noreferrer nofollow\">SpinalHDL<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/hdl.github.io\/awesome\/items\/amaranth\/\" rel=\"noopener noreferrer nofollow\">nMigen\/AmaranthHDL<\/a>. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043a\u0437\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 HDL \u044f\u0437\u044b\u043a\u043e\u0432, \u043d\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043e\u043d\u0438 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0435\u0442\u0435 \u0441\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043a \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0430\u0445 Verilog \u0438\u043b\u0438 VHDL.<\/p>\n<p> \u041e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u044b\u0435 \u0438\u043b\u0438 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 (IP \u0431\u043b\u043e\u043a\u0438) \u2014 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043a\u0443\u0441\u043a\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 HDL, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438 \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0432 \u043d\u043e\u0432\u044b\u0439 \u0434\u0438\u0437\u0430\u0439\u043d. \u042f\u0437\u044b\u043a\u0438 HDL \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c (\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c) \u0431\u043b\u043e\u043a\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438, \u0447\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p><strong>\u042d\u0442\u0430\u043f 5. \u0412\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044f<\/strong><\/p>\n<p> \u041a\u043e\u0434 \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0432\u0435\u0440\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u0441\u0438\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f (\u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0442\u0430\u043a\u0442\u043e\u0432\u043e). \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u044d\u0442\u043e \u043b\u0438\u0431\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0443\u043b\u0430 \u043e\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421, \u043b\u0438\u0431\u043e \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0442\u0443\u043b\u0430\u043c\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u0430\u043a-\u0442\u043e <a href=\"https:\/\/en.wikipedia.org\/wiki\/ModelSim\" rel=\"noopener noreferrer nofollow\">ModelSim \u0438 Questa<\/a>. \u041a\u0440\u0443\u043f\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u0432\u043e\u0438 \u0434\u043e\u043c\u043e\u0440\u043e\u0449\u0435\u043d\u043d\u044b\u0435 \u0442\u0443\u043b\u044b \u0434\u043b\u044f \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438,  \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441 Intel 80386 \u2014 \u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u0441\u043b\u043e\u0432\u0430 \u041a\u0435\u043d\u0430 \u0428\u0438\u0440\u0440\u0438\u0444\u0444\u0430 \u043f\u0440\u043e <em>sed<\/em>, <em>awk<\/em> \u0438 <em>grep<\/em> ?  \u0412 \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0441\u0440\u0435\u0434\u0438 \u0441\u0430\u043c\u043e\u0434\u0435\u043b\u043a\u0438\u043d\u044b\u0445 \u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438\u043c\u0435\u044e\u0442 \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u00ab\u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0435\u00bb \u0442\u0443\u043b\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Icarus_Verilog\" rel=\"noopener noreferrer nofollow\">Icarus Verilog<\/a> \u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Verilator\" rel=\"noopener noreferrer nofollow\">Verilator<\/a>. \u0412\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0438\u0442\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0434\u0438\u0437\u0430\u0439\u043d, \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0438\u0439 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u00ab\u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438\u00bb, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439, \u043a\u0441\u0442\u0430\u0442\u0438, \u0442\u043e\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p> \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u043c\u0438\u043a\u0440\u043e\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0448\u0438\u0440\u043e\u043a\u043e \u043f\u0440\u043e\u043f\u043e\u0432\u0435\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u00ab<a href=\"https:\/\/en.wikipedia.org\/wiki\/Design_for_verification\" rel=\"noopener noreferrer nofollow\">Design for Verification<\/a>\u00bb \u2014 \u043d\u0435\u043a\u0438\u0439 \u0441\u0432\u043e\u0434 \u043f\u0440\u0430\u0432\u0438\u043b \u0434\u043b\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u0432, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0432\u044b\u0445\u043e\u0434 \u0433\u043e\u0434\u043d\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u0438 \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430. \u0422.\u0435. \u0434\u0438\u0437\u0430\u0439\u043d \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043d\u0430 \u0444\u0430\u0431\u0440\u0438\u043a\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u044b \u0432\u0441\u0435 \u044d\u0442\u0430\u043f\u044b \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0438 \u0435\u0441\u0442\u044c \u0442\u0432\u0435\u0440\u0434\u0430\u044f \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043e\u0448\u0438\u0431\u043e\u043a. \u041f\u0440\u0438\u0447\u0435\u043c, \u00ab\u0444\u0430\u0431\u044b\u00bb \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0435 \u043a \u043d\u0438\u043c \u0434\u0438\u0437\u0430\u0439\u043d\u044b \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0443\u0436\u0435 \u0441\u0432\u043e\u0438\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c \u2014 \u00ab<a href=\"https:\/\/en.wikipedia.org\/wiki\/Design_rule_checking\" rel=\"noopener noreferrer nofollow\">Design Rule Check<\/a>\u00bb (DRC check). <\/p>\n<p><strong>\u042d\u0442\u0430\u043f 6. \u0421\u0438\u043d\u0442\u0435\u0437<\/strong><\/p>\n<p> \u0418\u0437 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430 HDL, \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0443\u043b\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0438\u043d\u0442\u0435\u0437 \u0442.\u00a0\u043d. netlist-\u0430. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Netlist\" rel=\"noopener noreferrer nofollow\">Netlist<\/a> \u2014 \u044d\u0442\u043e \u0444\u0430\u0439\u043b (\u043e\u0431\u044b\u0447\u043d\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 EDIF, BDIF \u0438\u043b\u0438 JSON) \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u0438\u0437 \u00ab\u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0445\u00bb \u0431\u043b\u043e\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0435 \u041f\u041b\u0418\u0421. \u0422\u0430\u043a\u0438\u0435 \u0431\u043b\u043e\u043a\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u00ab<a href=\"https:\/\/en.wikipedia.org\/wiki\/Standard_cell\" rel=\"noopener noreferrer nofollow\">Standard cells<\/a>\u00bb. \u0421\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 netlist \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u044b.<\/p>\n<p><strong>\u042d\u0442\u0430\u043f 7. \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0438 STA<\/strong><\/p>\n<p> \u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f netlist-\u0430 \u2014 \u0438\u0437 \u043d\u0435\u0433\u043e \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u043b\u0438\u0448\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0438, \u0442\u0438\u043f\u043e\u0432\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u0437\u0430\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u044b\u0435\/\u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u044b\u0435 \u0438\u043b\u0438 \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u00abhard\u00bb \u0431\u043b\u043e\u043a\u0438, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u041f\u041b\u0418\u0421. \u0412\u0441\u044f \u044d\u0442\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c\u0438, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0438 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 \u0442\u0443\u043b\u0430. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043e\u043d\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432, \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0442\u0441\u044f \u0432 \u0446\u0438\u043a\u043b\u0435 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0438 \u0442.\u00a0\u0434. \u041e\u043f\u044b\u0442\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0432\u043e\u0438\u0445 \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u0432.<\/p>\n<p> \u041d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 netlist-\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u00ab<a href=\"https:\/\/en.wikipedia.org\/wiki\/Static_timing_analysis\" rel=\"noopener noreferrer nofollow\">Static Timing Analisys<\/a>\u00bb (STA) \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0432 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u044f\u0434 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439 \u043f\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f (\u0442.\u00a0\u0435. \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438). \u0427\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 netlist-\u0430 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043d\u0451\u043c \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u0445\u0435\u043c\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438). \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u2014 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 HDL, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u044f\u0441\u044c \u043e\u0442 \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0438\u0445 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0445\u0435\u043c  \u0438\u043b\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438 (\u0442.\u00a0\u0435. \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u00ab\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044e\u00bb), \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438, \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p><strong>\u042d\u0442\u0430\u043f  8. \u0420\u0430\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430<\/strong><\/p>\n<p> \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 netlist \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0431\u043b\u043e\u043a\u043e\u0432 \u043f\u043e \u043c\u0435\u0441\u0442\u0430\u043c \u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u0438\u0445 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0445, \u044d\u0442\u043e \u0442.\u00a0\u043d. \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u00abplace and route\u00bb (PnR \u0438\u043b\u0438 \u00ab\u043f\u043b\u044d\u0439\u0441\u0435\u0440\u00bb). \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0431\u043b\u043e\u043a\u0443 \u0438\u0437 netlist-a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421, \u0430 \u0431\u043b\u043e\u043a\u0438 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0446\u0438\u0438, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 (pad-\u044b) \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0438 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b. \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0447\u0435\u043d\u044c \u0442\u044f\u0436\u0435\u043b\u044b\u0439 \u0438 \u0437\u0430\u0442\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u043e \u0443\u0436\u0435 \u043d\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e\u0439, \u0430 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 PnR \u0438\u0449\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u043e\u0432 \u0438 \u0438\u0445 \u0441\u0432\u044f\u0437\u0435\u0439, \u0442\u0430\u043a \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043d\u0430\u0440\u0443\u0448\u0438\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d \u0438 \u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u043f\u043b\u044d\u0439\u0441\u0435\u0440\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u041f\u041b\u0418\u0421 (\u0442\u043e\u0436\u0435 \u0444\u0430\u0439\u043b \u0444\u043e\u0440\u043c\u0430\u0442\u0430 EDIF \u0438\u043b\u0438 JSON). \u041f\u043e\u0441\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043b\u044d\u0439\u0441\u0435\u0440\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d<em>\u044b<\/em>\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0430, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0443\u043b\u0443\u0447\u0448\u0430\u044e\u0442\u0441\u044f, \u043d\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 \u2014 \u0432\u0441\u0451 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u0443\u0436\u0435 \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0440\u0435\u0434\u0438\u0437\u0430\u0439\u043d\u0443 \u043d\u0430 HDL. \u0418\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0440\u0430\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0447\u0438\u0441\u043b\u0430 \u00ab\u0440\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438\u00bb (seed), \u0442\u0430\u043a \u043a\u0430\u043a \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043f\u043b\u044d\u0439\u0441\u0435\u0440\u0430 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u0433\u043e \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u0447\u0430\u0441\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u0445. \u0422.\u0435. \u043f\u043e\u043a\u0440\u0443\u0442\u0438\u0432 \u00abseed\u00bb \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0435\u0433\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c STA, \u0438 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. <\/p>\n<p> \u041d\u0430\u0434\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u0438 \u0434\u043b\u044f \u043d\u0438\u0445 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u0445 \u041f\u041b\u0418\u0421 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 (\u00abglobal nets\u00bb) \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438 \u0438 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0444\u0440\u043e\u043d\u0442\u043e\u0432. \u0415\u0441\u043b\u0438 \u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u0442\u043e \u0442\u0430\u043a\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u2014 \u0438\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043d\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u00abhard\u00bb \u0431\u043b\u043e\u043a\u0438, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438. \u0422\u0430\u043a\u0436\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043b\u0438\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0441\u0431\u0440\u043e\u0441\u0430 (resets) \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0431\u043b\u043e\u043a\u043e\u0432 \u0441\u0445\u0435\u043c\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f (enable signals). \u0418\u043d\u043e\u0433\u0434\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0438 \u043c\u0430\u0440\u043a\u0438\u0440\u0443\u0435\u0442 \u0438\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043b\u044d\u0439\u0441\u0435\u0440 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0435\u0440\u043d\u043e \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.<\/p>\n<p> \u0421\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 \u0438 \u043f\u043b\u044d\u0439\u0441\u0435\u0440 \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u044e\u0442 \u0432 log-\u0430\u0445 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u044b \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0438 \u043a\u0430\u043a\u0438\u0435 \u0438\u0437 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438 \u043a\u0430\u043a\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0431\u044b\u043b\u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u044b. \u0422\u0430\u043a\u0436\u0435 \u0432 log-\u0430\u0445 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u044e\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e \u0441\u043e\u043c\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u0445 \u0434\u0438\u0437\u0430\u0439\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0435\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0442\u0430\u043a, \u043a\u0430\u043a \u044d\u0442\u043e \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a,  \u043f\u043e\u044d\u0442\u043e\u043c\u0443 log \u043d\u0443\u0436\u043d\u043e \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p> \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0434\u0438\u0437\u0430\u0439\u043d\u0430\u0445 \u0434\u043b\u044f FPGA (\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0434\u043b\u044f ASIC)  \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u044d\u0442\u0430\u043f, \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u044b\u0437\u043e\u0432\u0443 \u043f\u043b\u044d\u0439\u0441\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00abfloorplanning\u00bb \u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0434\u043b\u044f \u043f\u043b\u044d\u0439\u0441\u0435\u0440\u0430 \u0437\u0430\u0434\u0430\u044e\u0442 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u0430\u0432\u0438\u043b \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0440\u044f\u0434\u043e\u043c \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0438\u043b\u0438 \u0432\u043e\u0437\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 (\u0432\u043e\u0437\u043b\u0435 pad-\u043e\u0432) \u0438\u043b\u0438 \u043f\u043e\u0431\u043b\u0438\u0436\u0435 \u043a \u043b\u0438\u043d\u0438\u044f\u043c \u043f\u0438\u0442\u0430\u043d\u0438\u044f. \u041d\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0440\u043e\u0438\u0441\u0442\u0435\u043a\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043b\u044d\u0439\u0441\u0435\u0440\u0430 \u0438 \u0434\u0430\u0435\u0442 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<p><strong>\u042d\u0442\u0430\u043f 9. \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430<\/strong><\/p>\n<p> \u0417\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u043c \u044d\u0442\u0430\u043f\u043e\u043c \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u00ab\u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430\u00bb \u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0431\u0438\u0442 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0442\u0443\u043b\u0430, \u043e\u043d\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 JSON \u0444\u0430\u0439\u043b \u043e\u0442 \u043f\u043b\u044d\u0439\u0441\u0435\u0440\u0430 \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b (\u043e\u0431\u044b\u0447\u043d\u043e \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c .bit, .bin \u0438\u043b\u0438 .fs) \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0432 \u041f\u041b\u0418\u0421. \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u044d\u0442\u043e \u0447\u0438\u0441\u0442\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u044d\u0442\u0430\u043f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c.<\/p>\n<p><strong>\u042d\u0442\u0430\u043f 10. \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432 \u041f\u041b\u0418\u0421 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0436\u0435\u043b\u0435\u0437\u0435<\/strong><\/p>\n<p> \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u00ab\u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u00bb, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 NOR flash \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435 \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u041f\u041b\u0418\u0421 \u0441\u0447\u0438\u0442\u0430\u043b\u0430 \u0435\u0433\u043e \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e JTAG \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0430 (\u0441\u043c. \u0432\u044b\u0448\u0435) \u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u044b. \u0412 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u0443\u043b\u0430\u0445 \u0442\u0430\u043a\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0443. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0438 \u00ab\u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0435\u00bb \u0443\u0442\u0438\u043b\u0438\u0442\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/github.com\/trabucayre\/openFPGALoader\" rel=\"noopener noreferrer nofollow\">openFPGALoader<\/a>. <\/p>\n<p> \u041e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043d\u043e, \u043f\u0440\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u0438 \u043f\u0440\u043e\u0433\u043e\u043d\u043a\u0435 \u0435\u0433\u043e \u00ab\u043d\u0430 \u0436\u0435\u043b\u0435\u0437\u0435\u00bb, \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u043d\u0435 \u0432 NOR flash, \u0430 \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b SRAM \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u043e flash, \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u044d\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443. \u041d\u043e \u0442\u0443\u0442 \u043d\u0430\u0434\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0441\u0431\u0440\u043e\u0441\u0435 (\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438), \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u041f\u041b\u0418\u0421 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438\u0437 NOR flash, \u0442.\u00a0\u0435. \u0437\u0430\u043d\u043e\u0432\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0448\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0432\u043e\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0432 \u043d\u0435\u0451 \u0440\u0430\u043d\u0435\u0435 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0442\u0435\u0440\u044f\u043d. \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0437 \u0432\u0438\u0434\u0430, \u0442\u043e \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u00ab\u043d\u0435\u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043c\u044b\u043c\u00bb \u044d\u0444\u0444\u0435\u043a\u0442\u0430\u043c \u0432 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043c\u043e\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043e\u0432\u0435\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u043c \u2014 \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0438\u0434\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a, \u043f\u0435\u0440\u0435\u0437\u0430\u043b\u0435\u0439\u0442\u0435 \u0412\u0430\u0448 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0432 NOR flash \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u0431\u0440\u043e\u0441 \u043f\u043e \u043f\u0438\u0442\u0430\u043d\u0438\u044e!<\/p>\n<p><a class=\"anchor\" name=\"5\" id=\"5\"><\/a><\/p>\n<h2> 5. Yosys Open SYnthesis Suite<\/h2>\n<p> \u041f\u0440\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u044f \u043b\u0438\u0447\u043d\u043e \u0443\u0437\u043d\u0430\u043b \u0435\u0449\u0435 \u0432 \u043a\u043e\u043d\u0446\u0435 90-\u0445, \u0431\u0443\u0434\u0443\u0447\u0438 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u043c, \u043d\u043e \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421 \u0436\u0438\u0432\u044c\u0451\u043c \u0443\u0432\u0438\u0434\u0435\u043b \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u0441\u043f\u0443\u0441\u0442\u044f &#8212; \u0432 2010 \u0438\u043b\u0438 \u0433\u0434\u0435-\u0442\u043e \u043e\u043a\u043e\u043b\u043e \u0442\u043e\u0433\u043e. \u0415\u0441\u043b\u0438 \u043d\u0435 \u043e\u0448\u0438\u0431\u0430\u044e\u0441\u044c, \u0442\u043e \u0431\u044b\u043b\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u043f\u0440\u043e-\u0432\u0430 Altera \u0441\u0435\u0440\u0438\u0438 Cyclon II \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043b\u0430\u0442\u0435 \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435 \u0441 \u043a\u0432\u0430\u0440\u0446\u0435\u0432\u044b\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0438 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u043c\u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u044f. \u0411\u043e\u043b\u044c\u0448\u0435 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0431\u044b\u043b\u043e, \u0432\u0441\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u041f\u041b\u0418\u0421 \u0431\u044b\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u044b \u043d\u0430 \u0448\u0442\u044b\u0440\u0435\u0432\u044b\u0435 \u0440\u0430\u0437\u044a\u0451\u043c\u044b, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043f\u043e \u0447\u0435\u0442\u044b\u0440\u0435\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u0430\u043c \u043f\u043b\u0430\u0442\u044b. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0443 \u043c\u0435\u043d\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u00ab\u0437\u0430\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u00bb \u0435\u0451, \u043d\u043e \u044f \u0442\u0443\u0442 \u0436\u0435 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0440\u044f\u0434\u043e\u043c \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0435\u0439. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0441\u044f \u043a\u0430\u043a\u043e\u0439-\u0442\u043e JTAG \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440, \u0430 \u044d\u0442\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u0442\u043e\u0438\u043b\u0438 \u0431\u0430\u0441\u043d\u043e\u0441\u043b\u043e\u0432\u043d\u044b\u0445 \u0434\u0435\u043d\u0435\u0433 (\u0438 \u0441\u043e\u0444\u0442 \u0434\u043b\u044f \u043d\u0438\u0445 \u0442\u043e\u0436\u0435). \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0432\u0441\u0451 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 (\u0434\u0430 \u0438 \u0437\u0430\u043f\u0430\u0434\u043d\u044b\u0445) \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432-\u043f\u043b\u0438\u0441\u043e\u0432\u043e\u0434\u043e\u0432 \u043f\u043b\u043e\u0442\u043d\u043e \u0441\u0438\u0434\u0435\u043b\u043e \u043d\u0430 \u041e\u0421 Windows \u0438 \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e \u0451\u0440\u0437\u0430\u043b\u043e \u043c\u044b\u0448\u0430\u043c\u0438 \u043f\u043e \u044d\u043a\u0440\u0430\u043d\u0443. \u0414\u043b\u044f \u043c\u0435\u043d\u044f, \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u043f\u0440\u0438\u0432\u044b\u043a\u0448\u0435\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e \u043f\u043e SSH \u0438 \u043b\u044e\u0442\u043e \u043d\u0435\u043d\u0430\u0432\u0438\u0434\u044f\u0449\u0435\u043c\u0443 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u00ab\u0432\u0438\u043d\u0434\u0443\u00bb, \u043d\u043e \u0438 \u0432\u0435\u0441\u044c  \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0439 \u0441\u043e\u0444\u0442, \u044d\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u043e \u0441\u0442\u043e\u0439\u043a\u043e\u0435 \u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 (\u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043c\u043d\u0435 \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u00ab\u0432\u0438\u043d\u0434\u0443\u00bb, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0438\u0448\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c PuTTY). \u042f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0432\u044b\u043a\u0430\u0447\u0438\u0432\u0430\u043b Quartus II \u043f\u043e\u0434 Linux \u0438 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043d\u043e \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u0441 \u043a\u0430\u043a\u0438\u043c\u0438-\u0442\u043e \u043d\u0435\u0440\u0435\u0448\u0430\u0435\u043c\u044b\u043c\u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u2014 \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u043c\u0443\u043b\u044c\u0442\u0438-\u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442\u043d\u044b\u043c \u0442\u0443\u043b\u043e\u043c \u0438\u0437 shell-\u0430 \u0431\u044b\u043b\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b, \u0430 \u0432\u0441\u0435 \u0444\u043e\u0440\u0443\u043c\u044b \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0431\u044b\u043b\u0438 \u0437\u0430\u0432\u0430\u043b\u0435\u043d\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u0441\u043e \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430\u043c\u0438 \u043e\u043a\u043e\u0448\u0435\u043a. \u041a\u043e\u0440\u043e\u0447\u0435, \u043d\u0438 Quartus, \u043d\u0438 Vivado, \u043d\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0439 \u0442\u0443\u043b \u044f \u043e\u0441\u0438\u043b\u0438\u0442\u044c \u0442\u0430\u043a \u0438 \u043d\u0435 \u0441\u043c\u043e\u0433. \u0410 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b.<\/p>\n<p> \u0417\u0430\u0442\u043e \u0432 2018 \u0433\u043e\u0434\u0443 \u044f \u0443\u0437\u043d\u0430\u043b \u043f\u0440\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e open source \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c \u0438 \u044d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u043b\u043e \u043c\u043d\u0435 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0437\u043c\u0430. \u0418\u043d\u0442\u0435\u0440\u0435\u0441 \u043a \u0442\u0435\u043c\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u041f\u041b\u0418\u0421 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u043e\u0433\u0440\u0435\u0432\u0430\u043b\u0441\u044f \u043d\u0430\u0447\u0430\u0432\u0448\u0435\u0439 \u0431\u0443\u0440\u043d\u043e \u0446\u0432\u0435\u0441\u0442\u0438 \u0442\u0435\u043c\u043e\u0439 <a href=\"https:\/\/en.wikipedia.org\/wiki\/RISC-V\" rel=\"noopener noreferrer nofollow\">RISC-V<\/a> (\u043f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u00ab\u0440\u0438\u0441\u043a-5\u00bb, \u0430 \u043d\u0435 \u043a\u0430\u043a \u0432\u0430\u043a\u0446\u0438\u043d\u0430 \u043e\u0442 \u041a\u043e\u0432\u0438\u0434\u0430) \u2014 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435, \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u044f\u0434\u0440\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u041f\u041b\u0418\u0421. \u0422\u0430\u043a \u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043d\u0430\u0447\u0430\u043b \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u043c\u0443, \u043d\u043e \u0443\u0436\u0435 \u0441\u043e\u0432\u0441\u0435\u043c c \u0434\u0440\u0443\u0433\u0438\u043c, \u043d\u0435\u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c.<\/p>\n<p> \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432 \u044d\u0442\u043e\u043c \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u043e\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438, Yosys, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0442\u0443\u043b \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430, \u0442.\u00a0\u0435. \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog \u0432 netlist \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/people.eecs.berkeley.edu\/~alanmi\/abc\/\" rel=\"noopener noreferrer nofollow\">Berkeley ABC<\/a>. \u0415\u0441\u043b\u0438 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u044b\u043c, \u0442\u043e Yosys \u2014 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0449\u0438\u0439 \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog (\u043f\u043e\u0437\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 VHDL) \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 ABC, \u0430 \u0432\u0441\u044f \u043c\u0430\u0433\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043d\u0435\u0439. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 ABC \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0432\u043d\u043e \u0438 \u0443\u0445\u043e\u0434\u0438\u0442 \u0441\u0432\u043e\u0438\u043c\u0438 \u043a\u043e\u0440\u043d\u044f\u043c\u0438 \u0432 1980-\u0435 \u0433\u043e\u0434\u044b. \u0412\u0441\u0451 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 ABC \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0430 \u0432 \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u0441\u0442\u0435\u043d\u043a\u0430\u0445 \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0438 \u043b\u0438\u0448\u044c \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b Yosys \u0432 2014 \u0433\u043e\u0434\u0443 \u0441\u0434\u0435\u043b\u0430\u043b\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0432\u0441\u044e \u043c\u043e\u0449\u044c ABC \u0434\u043b\u044f \u0448\u0438\u0440\u043e\u043a\u0438\u0445 \u043c\u0430\u0441\u0441. \u0412\u043c\u0435\u0441\u0442\u0435 Yosys, ABC, NextPNR \u0438 \u0435\u0449\u0435 \u0440\u044f\u0434 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0440\u0435\u0432\u043e\u043b\u044e\u0446\u0438\u044e \u0432 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c \u0432 \u043a\u043e\u043d\u0446\u0435 2010-\u0445 \u0433\u043e\u0434\u043e\u0432, \u0433\u0434\u0435 \u043f\u0440\u0435\u043e\u0431\u043b\u0430\u0434\u0430\u043b\u043e \u0437\u0430\u0441\u0438\u043b\u044c\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0445, \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0445, \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0440\u0430\u0437\u0434\u0443\u0442\u044b\u0445 \u0438 \u0437\u0430\u043e\u0431\u043b\u0430\u0447\u043d\u043e \u0434\u043e\u0440\u043e\u0433\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0441 \u0432\u0445\u043e\u0434\u043e\u043c \u00ab\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445\u00bb.<\/p>\n<p> \u0418 Yosys \u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u041f\u041b\u0418\u0421. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0443\u0442\u0438\u043b\u0438\u0442, \u0432\u043e \u0433\u043b\u0430\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f Yosys, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u043f\u0430\u043a\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c <a href=\"https:\/\/openlane.readthedocs.io\/en\/latest\/\" rel=\"noopener noreferrer nofollow\">OpenLane\/OpenROAD<\/a>, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c (ASIC), \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043b\u044e\u0431\u043e\u0439 \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0438 \u0434\u0430\u0436\u0435 <a href=\"https:\/\/efabless.com\/open_shuttle_program\" rel=\"noopener noreferrer nofollow\">\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0437\u0430\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0451 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u00abMulti Project Wafer\u00bb<\/a>. MPW \u2014 \u044d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043a\u0440\u0435\u043c\u043d\u0438\u0435\u0432\u043e\u0439 \u043f\u043b\u0430\u0441\u0442\u0438\u043d\u0435 (\u00ab\u0432\u0430\u0444\u043b\u0435\u00bb) \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441 \u0446\u0435\u043b\u044c\u044e \u0443\u0434\u0435\u0448\u0435\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432.<\/p>\n<p> \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0438 \u0442\u043e, \u0447\u0442\u043e Yosys \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044d\u0442\u043e \u0431\u0430\u043a\u0430\u043b\u0430\u0432\u0440\u0441\u043a\u0430\u044f \u0434\u0438\u043f\u043b\u043e\u043c\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u041a\u043b\u0438\u0444\u0444\u043e\u0440\u0434\u0430 \u0412\u0443\u043b\u0444\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u0430\u044f \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u0434 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c.<\/p>\n<p> <em>Wol13] Wolf, Clifford: Design and Implementation of the Yosys Open SYnthesis Suite. 2013. \u2013 Bachelor Thesis, Vienna University of Technology.<\/em><\/p>\n<p> <a href=\"https:\/\/yosyshq.readthedocs.io\/projects\/yosys\/en\/latest\/index.html#yosys-manual\" rel=\"noopener noreferrer nofollow\">\u041e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0412\u0443\u043b\u0444\u043e\u043c \u043f\u043e \u0443\u0442\u0438\u043b\u0438\u0442\u0435 Yosys, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u0443\u0442.<\/a><\/p>\n<p> \u041a\u0430\u043a \u044f \u043e\u0442\u043c\u0435\u0442\u0438\u043b \u0432\u044b\u0448\u0435, Yosys \u2014 \u044d\u0442\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u0432\u0435\u0440\u0445\u0443\u0448\u043a\u0430 \u0430\u0439\u0441\u0431\u0435\u0440\u0433\u0430, \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u0430\u044f \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0432\u043e\u0435\u0434\u0438\u043d\u043e \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441 \u0446\u0435\u043b\u044c\u044e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c  \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e.  \u041d\u0438\u0436\u0435 \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u044e\u0441\u044c \u043a\u0440\u0430\u0442\u043a\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0441\u0430\u043c\u044b\u0435 \u0432\u0430\u0436\u043d\u044b\u0435, \u0438\u0437 \u043d\u0438\u0445.<\/p>\n<p> <a href=\"https:\/\/github.com\/YosysHQ\/arachne-pnr\" rel=\"noopener noreferrer nofollow\">Arachne-pnr<\/a> (\u00ab\u043f\u0430\u0443\u043a\u00bb). \u0423\u0442\u0438\u043b\u0438\u0442\u0430-\u043f\u043b\u044d\u0439\u0441\u0435\u0440 \u0438 \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u044b\u0439 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0439 \u0442\u0443\u043b \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0434\u043b\u044f \u041f\u041b\u0418\u0421, \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u041a\u043e\u0442\u0442\u043e\u043d \u0421\u0438\u0434. \u0421\u0438\u0434 \u0441\u0432\u044f\u0437\u0430\u043b \u043f\u0440\u043e\u0435\u043a\u0442\u044b IceStorm \u0438 Yosys \u0438 \u0434\u043e\u043f\u0438\u0441\u0430\u043b \u043a \u043d\u0438\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0435\u0435 \u0437\u0432\u0435\u043d\u043e \u2014 \u00ab\u043f\u043b\u044d\u0439\u0441\u0435\u0440\u00bb, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0442\u0443\u043b \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u043f\u043e\u0434 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 Lattice iCE40. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u00ab\u043f\u0430\u0443\u043a\u00bb \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0432\u0435\u0441\u044c \u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c, \u0431\u043e\u043b\u0435\u0435 \u043c\u043e\u0449\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u2014 NextPNR.<\/p>\n<p> <a href=\"https:\/\/github.com\/YosysHQ\/icestorm\" rel=\"noopener noreferrer nofollow\">IceStorm<\/a>. \u041f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 Lattice iCE40. \u041f\u0440\u043e\u0435\u043a\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u041c\u044d\u0442\u0438\u0430\u0441\u043e\u043c \u041b\u0430\u0441\u0441\u0435\u0440\u043e\u043c (Mathias Lasser) \u0438 \u0432\u0441\u0451 \u0442\u0435\u043c \u0436\u0435 \u041a\u043b\u0438\u0444\u0444\u043e\u0440\u0434\u043e\u043c \u0412\u0443\u043b\u0444\u043e\u043c \u0432 2015 \u0433\u043e\u0434\u0443.<\/p>\n<p> \u0418\u0434\u0435\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f. \u0412\u0441\u0435\u043c \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0443\u043b \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430, \u043d\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421 \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f\u043c\u0438 \u00ab\u0437\u0430 \u0441\u0435\u043c\u044c\u044e \u043f\u0430\u0442\u0435\u043d\u0442\u0430\u043c\u0438\u00bb, \u0447\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u0442\u0443\u043b\u0430. \u041d\u0435 \u0431\u0435\u0434\u0430. \u0412\u043e\u0437\u044c\u043c\u0435\u043c \u0441\u0430\u043c\u0443\u044e \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043f\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421, \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0439 \u0442\u0443\u043b \u043e\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0438 \u0431\u0443\u0434\u0435\u043c \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u00ab\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445\u00bb \u0441\u0445\u0435\u043c, \u0430 \u043a \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u043c\u0443 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437. \u041d\u0443 \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u043a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Al-Kindi\" rel=\"noopener noreferrer nofollow\">\u0430\u0440\u0430\u0431\u0441\u043a\u0438\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a \u0410\u043b\u044c-\u041a\u0438\u043d\u0434\u0438<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 9-\u043c \u0432\u0435\u043a\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u0432\u0437\u043b\u043e\u043c\u0430 \u0448\u0438\u0444\u0440\u043e\u0432. \u0418 \u044d\u0442\u043e \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e! \u041f\u0435\u0440\u0432\u0430\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u041f\u041b\u0418\u0421, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u041c\u044d\u0442 \u0438 \u041a\u043b\u0438\u0444\u0444, \u0431\u044b\u043b\u0430 iCE40 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430 Lattice Semiconductors.<\/p>\n<p> <a href=\"https:\/\/www.youtube.com\/watch?v=SOn0g3k0FlE\" rel=\"noopener noreferrer nofollow\">\u0421 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u044d\u0442\u043e\u0439 \u043e\u0448\u0435\u043b\u043e\u043c\u043b\u044f\u044e\u0449\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u041a\u043b\u0438\u0444\u0444 \u0432\u044b\u0441\u0442\u0443\u043f\u0438\u043b \u043d\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u0441\u044a\u0435\u0437\u0434\u0435 Der Chaos Computer Club<\/a> (\u0432\u0438\u0434\u0435\u043e). \u0412 \u0441\u0432\u043e\u0435\u043c \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0438 \u041a\u043b\u0438\u0444\u0444 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u043b\u0430\u0439\u0434\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0441 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u043c. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0438\u0439 \u2014 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u0442\u0441\u0442\u0430\u0432\u0430\u043d\u0438\u0435 \u0432 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b, \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0439 \u0442\u0443\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u0440\u0430\u0437\u044b \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e\u0433\u043e!<\/p>\n<p> \u0427\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <a href=\"https:\/\/github.com\/YosysHQ\/prjtrellis\" rel=\"noopener noreferrer nofollow\">Project Trellis<\/a> \u0431\u044b\u043b\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u041f\u041b\u0418\u0421 Lattice ECP5 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0435\u0451 \u00abhard\u00bb \u0431\u043b\u043e\u043a\u0430\u043c\u0438. \u0410 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u043f\u043e \u0441\u0432\u043e\u0438\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f <a href=\"https:\/\/github.com\/litex-hub\/linux-on-litex-vexriscv\" rel=\"noopener noreferrer nofollow\">\u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043d\u0435\u0439 \u044f\u0434\u0440\u043e RISC-V \u0441 MMU \u0438 \u0433\u043e\u043d\u044f\u0442\u044c \u043d\u0430 \u044d\u0442\u043e\u043c \u044f\u0434\u0440\u0435 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 Linux<\/a>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8c6\/42c\/bd2\/8c642cbd25d926175488878707afb52d.png\" alt=\"\u0420\u0438\u0441. 16. \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u041a\u043b\u0438\u0444\u0444\u043e\u0440\u0434\u0430 \u0412\u0443\u043b\u0444\u0430 \u0441 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u043f\u043e\u0434 \u041f\u041b\u0418\u0421 Lattice iCE40. \u041d\u0430 \u0441\u043b\u0430\u0439\u0434\u0435 \u00abImplementation time\u00bb - \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438.\" title=\"\u0420\u0438\u0441. 16. \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u041a\u043b\u0438\u0444\u0444\u043e\u0440\u0434\u0430 \u0412\u0443\u043b\u0444\u0430 \u0441 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u043f\u043e\u0434 \u041f\u041b\u0418\u0421 Lattice iCE40. \u041d\u0430 \u0441\u043b\u0430\u0439\u0434\u0435 \u00abImplementation time\u00bb - \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438.\" width=\"1081\" height=\"613\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8c6\/42c\/bd2\/8c642cbd25d926175488878707afb52d.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 16. \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u041a\u043b\u0438\u0444\u0444\u043e\u0440\u0434\u0430 \u0412\u0443\u043b\u0444\u0430 \u0441 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u043f\u043e\u0434 \u041f\u041b\u0418\u0421 Lattice iCE40. \u041d\u0430 \u0441\u043b\u0430\u0439\u0434\u0435 \u00abImplementation time\u00bb &#8212; \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438.<\/em><\/figcaption><\/div>\n<\/figure>\n<p> \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0438\u0434\u0435\u044e \u041a\u043b\u0438\u0444\u0444\u0430 \u0438 \u041c\u044d\u0442\u0430 \u0442\u0443\u0442 \u0436\u0435 \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0438\u043b\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e, \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0435 \u043f\u043e\u0448\u0435\u043b, \u0430 \u043f\u043e\u043b\u0435\u0442\u0435\u043b, \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043f\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u041f\u041b\u0418\u0421 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439. \u041f\u0440\u043e\u0435\u043a\u0442\u044b <a href=\"https:\/\/github.com\/YosysHQ\/icestorm\" rel=\"noopener noreferrer nofollow\">IceStorm<\/a>, <a href=\"https:\/\/github.com\/YosysHQ\/prjtrellis\" rel=\"noopener noreferrer nofollow\">Trellis<\/a>, <a href=\"https:\/\/github.com\/gatecat\/prjoxide\" rel=\"noopener noreferrer nofollow\">Oxide<\/a>, <a href=\"https:\/\/github.com\/YosysHQ\/apicula\" rel=\"noopener noreferrer nofollow\">Apicula<\/a>, <a href=\"https:\/\/github.com\/Ravenslofty\/mistral\" rel=\"noopener noreferrer nofollow\">Mistral<\/a>, <a href=\"https:\/\/github.com\/f4pga\/prjxray\" rel=\"noopener noreferrer nofollow\">X-ray<\/a> \u0438 <a href=\"https:\/\/github.com\/ArcaneNibble\/project-chibi\" rel=\"noopener noreferrer nofollow\">Chibi<\/a>  \u043d\u0430\u0446\u0435\u043b\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0440\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421 \u0438 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 \u0440\u0430\u0437\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0430 Lattice iCE40, ECP5 \u0438 Nexus; Altera Cyclon V; Intel MAX; Xilinx Artyx \u0438 UltraScale; Gowin LittleBee \u0438 Arora. \u042d\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 <strong>ChipDB<\/strong>.<\/p>\n<p> <a href=\"https:\/\/www.youtube.com\/watch?v=cTOkgDZli_o\" rel=\"noopener noreferrer nofollow\">\u0412 \u044d\u0442\u043e\u043c \u0432\u0438\u0434\u0435\u043e \u0414\u044d\u0439\u0432\u0438\u0434 \u0428\u0430\u0445 (David Shah) \u0438\u0437 Project Trellis \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u043e\u043d \u0438 \u0435\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0437\u0430\u0440\u0435\u0432\u0435\u0440\u0441\u0438\u043b\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421 Lattice ECP5<\/a>, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u041f\u041b\u0418\u0421 \u0438 \u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0435\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437 (\u00abfuzzing\u00bb) \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430.<\/p>\n<p><a href=\"https:\/\/github.com\/YosysHQ\/nextpnr\" rel=\"noopener noreferrer nofollow\">NextPnR<\/a> \u2014 \u043d\u043e\u0432\u044b\u0439, \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439, \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 (\u0432\u0435\u043d\u0434\u043e\u0440\u043e-\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439), timing driven, \u043f\u043b\u044d\u0439\u0441\u0435\u0440 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0432\u0441\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 \u0438\u0437 ChipDB. NextPNR \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440\u0430 Yosys, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0444\u0430\u0439\u043b\u044b \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 (LPF \u0438 \u0440\u044f\u0434 \u0434\u0440\u0443\u0433\u0438\u0445) \u0438 \u0432\u044b\u0434\u0430\u0435\u0442 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0444\u0430\u0439\u043b, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0443\u0436\u0435 \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c. \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, NextPNR \u043c\u043e\u0436\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 SVG \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0441\u0445\u0435\u043c\u044b, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0440\u0443\u0447\u043d\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u0432. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d74\/7ab\/a0a\/d747aba0a4f66ee59564a4fcbc3f6be8.png\" alt=\"\u0420\u0438\u0441. 17. \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0443\u0442\u0438\u043b\u0438\u0442\u044b NextPNR \u043f\u0440\u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0435 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 Lattice iCE40HX1K.\" title=\"\u0420\u0438\u0441. 17. \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0443\u0442\u0438\u043b\u0438\u0442\u044b NextPNR \u043f\u0440\u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0435 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 Lattice iCE40HX1K.\" width=\"1024\" height=\"825\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d74\/7ab\/a0a\/d747aba0a4f66ee59564a4fcbc3f6be8.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 17. \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0443\u0442\u0438\u043b\u0438\u0442\u044b NextPNR<br \/> \u043f\u0440\u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0435 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 Lattice iCE40HX1K.<\/em><\/figcaption><\/div>\n<\/figure>\n<p> <a href=\"https:\/\/trabucayre.github.io\/openFPGALoader\/\" rel=\"noopener noreferrer nofollow\">openFPGALoader<\/a> \u2014 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430.  \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u043e\u0432, \u043c\u0438\u043a\u0440\u043ec\u0445\u0435\u043c \u041f\u041b\u0418\u0421 \u0438 \u041f\u041b\u0423 (\u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0445, \u0447\u0442\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 ChipDB). \u0418\u043c\u0435\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0433\u0438\u0431\u043a\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 JTAG, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u044b, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0438\u0445 \u043d\u0435\u0442 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u0432 NOR flash, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u041f\u041b\u0418\u0421, \u0442\u0430\u043a \u0438 \u0432 RAM \u0441\u0430\u043c\u043e\u0439 \u041f\u041b\u0418\u0421. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c NOR flash \u043f\u0430\u043c\u044f\u0442\u0438. \u0423\u0442\u0438\u043b\u0438\u0442\u0430 openFPGALoader \u0443\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0445 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432 Linux \u0438 *BSD.<\/p>\n<p> \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430\u0434-\u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/www.yosyshq.com\/\" rel=\"noopener noreferrer nofollow\">YosysHQ<\/a> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0441\u0438\u043d\u0442\u0435\u0437\u0430, \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438, \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c. \u0410\u0432\u0442\u043e\u0440\u044b \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u0442\u0435\u0440\u044b \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0441\u0432\u043e\u044e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044e (YosysHQ GmbH) \u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0443\u0441\u043b\u0443\u0433\u0438 \u043a\u043e\u043d\u0441\u0430\u043b\u0442\u0438\u043d\u0433\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u044f\u0434 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043c\u0438 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439.<\/p>\n<p><a class=\"anchor\" name=\"6\" id=\"6\"><\/a><\/p>\n<h2> 6. \u041a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430 Yosys<\/h2>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u044d\u0442\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u00ab<a href=\"https:\/\/github.com\/YosysHQ\/oss-cad-suite-build\" rel=\"noopener noreferrer nofollow\">OSS CAD Suite<\/a>\u00bb \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0438\u0437 YosysHQ, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438: <a href=\"https:\/\/github.com\/YosysHQ\/oss-cad-suite-build\/releases\/latest\" rel=\"noopener noreferrer nofollow\">\u0432 \u0432\u0438\u0434\u0435 docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430<\/a> \u0438 <a href=\"https:\/\/github.com\/YosysHQ\/oss-cad-suite-build\/releases\/latest\" rel=\"noopener noreferrer nofollow\">\u0432 \u0432\u0438\u0434\u0435 \u0442\u0430\u0440\u0431\u043e\u043b\u043b\u0430<\/a>. \u0411\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u043e\u0447\u044c (nightly builds) \u0438 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0443\u0442 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0435 \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u043d\u0430 \u00ab\u0441\u043b\u043e\u043c\u0430\u043d\u043d\u0443\u044e\u00bb \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0430\u043a\u0435\u0442\u0430 (\u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0430\u043a\u0435\u0442\u0430). \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u00ab\u0435\u0436\u0435\u043d\u043e\u0449\u043d\u043e\u00bb \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0431\u0438\u043b\u0434\u044b \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c, \u0432\u043e\u0442 \u0432\u044b\u0434\u0435\u0440\u0436\u043a\u0430 \u0438\u0437 README \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f:<\/p>\n<p> <strong><em>linux-x64<\/em><\/strong><\/p>\n<p><em>Any personal Linux based computer should just work, no additional packages are needed to be installed on system to make OSS CAD Suite working. Distributed libraries are based on Ubuntu 20.04, but everything is packaged in such a way so it can be used on any Linux distribution.<\/em><\/p>\n<p> <strong><em>darwin-x64<\/em><\/strong><\/p>\n<p><em>Any macOS 10.14 or later with Intel CPU should use this distribution package.<\/em><\/p>\n<p> <strong><em>darwin-arm64<\/em><\/strong><\/p>\n<p><em>Any macOS 11.00 or later with M1 CPU should use this distribution package.<\/em><\/p>\n<p> <strong><em>windows-x64<\/em><\/strong><\/p>\n<p><em>This architecture is supported for Windows 10 and 11, but older 64-bit version of Windows 7, 8 or 8.1 should work.<\/em><\/p>\n<p> <strong><em>linux-arm<\/em><\/strong><\/p>\n<p><em>ARM based Linux devices such as Raspberry Pi 3, 4 or 400 can use this distribution package.<\/em><\/p>\n<p> <strong><em>linux-arm64<\/em><\/strong><\/p>\n<p><em>ARM64 based Linux devices using 64bit CPU as in Raspberry Pi 4 and 400 (with 64bit version of OS installed), and also laptops like the MNT Reform 2 can use this distribution package.<\/em><\/p>\n<p> <strong><em>linux-riscv64<\/em><\/strong><\/p>\n<p><em>RiscV-64 based Linux devices should use this distribtuion package, but please note that this is currently <\/em><strong><em>untested<\/em><\/strong> <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 docker, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 <a href=\"https:\/\/hub.docker.com\/u\/yosyshq\" rel=\"noopener noreferrer nofollow\">YosysHQ \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0439 \u00abHub\u00bb<\/a> \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 Docker-\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f docker \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043f\u0430\u043a\u0435\u0442\u0430. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0432\u044b\u043a\u0430\u0447\u0430\u0442\u044c \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b <strong>linux-x64<\/strong>, \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0432\u0438\u0434\u0430:<\/p>\n<pre><code class=\"bash\">$ docker pull yosyshq\/cross-linux-x64<\/code><\/pre>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0437 \u0442\u0430\u0440\u0431\u043e\u043b\u043b\u0430 \u0442\u043e\u0436\u0435 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435:<\/p>\n<p><a href=\"https:\/\/github.com\/YosysHQ\/oss-cad-suite-build\/releases\/latest\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/YosysHQ\/oss-cad-suite-build\/releases\/latest<\/a><\/p>\n<p>\u0438 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0430\u043a\u0435\u0442\u0430 (.tgz \u0444\u0430\u0439\u043b \u043e\u0431\u044a\u0435\u043c\u043e\u043c \u043e\u043a\u043e\u043b\u043e 500\u041c\u0411). \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0443\u0442\u0438 \u043a \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u0432 $PATH \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435: <\/p>\n<p>\u0414\u043b\u044f Linux \u0438 MacOS:<\/p>\n<pre><code class=\"bash\">export PATH=\"&lt;extracted_location>\/oss-cad-suite\/bin:$PATH\"<\/code><\/pre>\n<p> \u0414\u043b\u044f FreeBSD:<\/p>\n<pre><code>setenv PATH \"&lt;extracted_location>\/oss-cad-suite\/bin:$PATH\"<\/code><\/pre>\n<p>\u0434\u0430\u043b\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c:<\/p>\n<pre><code class=\"bash\">source &lt;extracted_location>\/oss-cad-suite\/environment<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Windows:<\/p>\n<p>\u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438:<\/p>\n<pre><code class=\"powershell\">&lt;extracted_location>\\oss-cad-suite\\environment.bat<\/code><\/pre>\n<p>\u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u0441 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u043e\u0439:<\/p>\n<pre><code class=\"powershell\">&lt;extracted_location>\\oss-cad-suite\\start.bat<\/code><\/pre>\n<p> \u0422\u0435, \u043a\u043e\u043c\u0443 \u0440\u0435\u043b\u0438\u0433\u0438\u044f \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b, \u0430 \u044f \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0441\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0447\u0435\u043d\u0438\u044f, \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0441\u0442\u0435\u043a \u0443\u0442\u0438\u043b\u0438\u0442 (\u0438\u043b\u0438 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u044c) \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432. \u041c\u043d\u0435 \u0443\u0434\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u0432\u0435\u0441\u044c \u0441\u0442\u0435\u043a \u043f\u043e\u0434 \u041e\u0421 ALT Linux p10 (x64) \u0438 \u043f\u043e\u0434 \u041e\u0421 FreeBSD 13.2 (amd64).  \u041d\u043e \u044d\u0442\u043e \u0442\u0435\u043c\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e, \u043e\u0447\u0435\u043d\u044c \u0434\u043b\u0438\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0412\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 Yosys \u0442\u0443\u043b\u0447\u0435\u0439\u043d \u043b\u044e\u0431\u044b\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043b\u0438 \u0443 \u0412\u0430\u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b:<\/p>\n<pre><code class=\"bash\">rz@devbox:~$ yosys -V  Yosys 0.36+58 (git sha1 ea7818d31, gcc 7.5.0-3ubuntu1~18.04 -fPIC -Os)  rz@devbox:~$ openFPGALoader -V  openFPGALoader v0.11.0 <\/code><\/pre>\n<p>\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u041f\u041b\u0418\u0421 Lattice ECP5 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b:<\/p>\n<pre><code class=\"bash\">rz@devbox:~$ nextpnr-ecp5 -V  \"nextpnr-ecp5\" -- Next Generation Place and Route (Version nextpnr-0.6-157-g4a402519)   rz@devbox:~$ ecppack --version  Project Trellis ecppack Version 1.2.1-14-g488f4e7  rz@devbox:~$ ecpbram  Project Trellis - Open Source Tools for ECP5 FPGAs  ecpbram: ECP5 BRAM content initialization tool   rz@devbox:~$ ecpprog --help  Simple programming tool for FTDI-based Lattice ECP JTAG programmers.  Usage: ecpprog [-b|-n|-c] &lt;input file>  ecpprog -r|-R&lt;bytes> &lt;output file>  ecpprog -S &lt;input file>  ecpprog -t <\/code><\/pre>\n<p>\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u041f\u041b\u0418\u0421 Lattice iCE40 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b:<\/p>\n<pre><code class=\"bash\">rz@devbox:~$ nextpnr-ice40 -V  \"nextpnr-ice40\" -- Next Generation Place and Route (Version nextpnr-0.6-157-g4a402519)   rz@devbox:~$ icepack -h  Usage: icepack [options] [input-file [output-file]]   rz@devbox:~$ icebram  Usage: icebram [options] &lt;from_hexfile> &lt;to_hexfile>  icebram [options] -g [-s &lt;seed>] &lt;width> &lt;depth>  Replace BRAM initialization data in a .asc file. This can be used  for example to replace firmware images without re-running synthesis  and place&amp;route.   rz@devbox:~$ iceprog --help  Simple programming tool for FTDI-based Lattice iCE programmers.  Usage: iceprog [-b|-n|-c] &lt;input file>  iceprog -r|-R&lt;bytes> &lt;output file>  iceprog -S &lt;input file>  iceprog -t <\/code><\/pre>\n<p> \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u041f\u041b\u0418\u0421 GOWIN LittleBee \u0438 Arora \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b:<\/p>\n<pre><code class=\"bash\">rz@devbox:~$ nextpnr-gowin -V  \"nextpnr-gowin\" -- Next Generation Place and Route (Version nextpnr-0.6-157-g4a402519)  rz@devbox:~$ gowin_bba -h  usage: gowin_bba [-h] -d DEVICE [-i CONSTIDS] [-o OUTPUT]   Make Gowin BBA   rz@devbox:~$ gowin_pack -h  usage: gowin_pack [-h] -d DEVICE [-o OUTPUT] [-c] [-s CST] [--allow_pinless_io] [--jtag_as_gpio] [--sspi_as_gpio] [--mspi_as_gpio]                    [--ready_as_gpio] [--done_as_gpio] [--reconfign_as_gpio]   Pack Gowin bitstream <\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u044f\u0434 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442:<\/p>\n<pre><code class=\"bash\">rz@devbox:~$ make -v  GNU Make 4.1  Built for x86_64-pc-linux-gnu   rz@devbox:~$ netlistsvg --version  1.0.2   rz@devbox:~$ xdot -h  usage: xdot [-h] [-f FILTER] [-n] [-g GEOMETRY] [--hide-toolbar] [file]  xdot.py is an interactive viewer for graphs written in Graphviz's dot language.   <\/code><\/pre>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430, \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f:<\/p>\n<pre><code class=\"bash\">rz@devbox:~$ iverilog -V  Icarus Verilog version 10.1 (stable) ()   rz@devbox:~$ gtkwave -V  GTKWave Analyzer v3.3.117 (w)1999-2023 BSI   rz@devbox:~$ verilator --version  Verilator rev v5.020-157-g2b4852048 <\/code><\/pre>\n<p> \u041d\u0443 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439, \u043d\u043e \u0432\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u0427\u0442\u043e\u0431\u044b \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>openFPGALoader<\/strong> \u043c\u043e\u0433\u043b\u0430 \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a USB \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0443 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 Linux, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u0430\u0432\u0438\u043b \u0434\u043b\u044f <strong>systemd<\/strong>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 <a href=\"https:\/\/github.com\/trabucayre\/openFPGALoader\/blob\/master\/99-openfpgaloader.rules\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/trabucayre\/openFPGALoader\/blob\/master\/99-openfpgaloader.rules<\/a>, \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <strong>\/etc\/udev\/rules.d\/<\/strong> \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (root-\u0430).<\/p>\n<p><a class=\"anchor\" name=\"7\" id=\"7\"><\/a><\/p>\n<h2> 7. \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430 Yosys  <\/h2>\n<p>\u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c Yosys \u0432 \u0434\u0435\u043b\u0435. \u041f\u043e \u0437\u0430\u043a\u043e\u043d\u0430\u043c \u0436\u0430\u043d\u0440\u0430 \u0437\u0434\u0435\u0441\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0431\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0430-\u043b\u044f \u00abhello, world\u00bb, \u0442\u043e \u0435\u0441\u0442\u044c \u043c\u0438\u0433\u0430\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0440\u043e\u0434\u0435. \u041d\u043e \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0443\u0442\u0451\u043c \u0438 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c \u0441 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u043f\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044e \u0448\u0438\u0440\u043e\u043a\u0438\u0445 \u043c\u0430\u0441\u0441 \u043e\u0441\u043d\u043e\u0432\u0430\u043c \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0442\u0430\u043a \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00ab<a href=\"https:\/\/engineer.yadro.com\/chip-design-school\/\" rel=\"noopener noreferrer nofollow\">\u0428\u043a\u043e\u043b\u0430 \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c<\/a>\u00bb, \u0435\u0433\u043e \u0438\u0434\u0435\u0439\u043d\u044b\u043c \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0438\u0442\u0435\u043b\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u042e\u0440\u0438\u0439 \u041f\u0430\u043d\u0447\u0443\u043b (@YuriPanchul), \u043d\u0430\u0448 \u0441\u043e\u043e\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043b\u0435\u0442 \u0442\u0440\u0443\u0434\u0438\u0442\u0441\u044f \u0432 \u0438\u043c\u0435\u043d\u0438\u0442\u044b\u0445 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445 \u0432 \u00ab\u041a\u0440\u0435\u043c\u043d\u0438\u0435\u0432\u043e\u0439 \u0414\u043e\u043b\u0438\u043d\u0435\u00bb \u0438 \u0438\u043c\u0435\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0444\u0435\u0440\u0435. \u0423 <a href=\"https:\/\/habr.com\/ru\/users\/YuriPanchul\/publications\/articles\/\" rel=\"noopener noreferrer nofollow\">\u042e\u0440\u0438\u044f \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439 \u0431\u043b\u043e\u0433 \u043d\u0430 Habr-\u0435<\/a>, \u0433\u0434\u0435 \u043e\u043d \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438 \u043f\u043e\u0441\u0442\u044b \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u044d\u0442\u0430 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u044f, \u043a\u0430\u043a\u0438\u0435 \u0432 \u043d\u0435\u0439 \u043f\u0440\u0435\u0432\u0430\u043b\u0438\u0440\u0443\u044e\u0442 \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u0438 \u0438 \u043a\u0430\u043a\u0438\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442.<\/p>\n<p>\u0421\u043e \u0441\u043b\u043e\u0432 \u042e\u0440\u0438\u044f, \u043f\u043e \u0434\u043e\u043b\u0433\u0443 \u0441\u043b\u0443\u0436\u0431\u044b \u0435\u043c\u0443 \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u043b\u043e\u0434\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432, \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u044e\u0449\u0438\u0445 \u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c \u00abdigital hardware engineer\u00bb \u0438 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0443 \u043d\u0435\u0433\u043e \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0442 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 SystemVerilog, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043d\u0430 \u00ab\u0441\u043e\u0431\u0435\u0441\u0435\u00bb \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0437\u043d\u0430\u043d\u0438\u0439, \u0430 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445 \u2014 \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0432\u043e\u0438\u0445 \u043a\u043e\u043b\u043b\u0435\u0433 \u0438\u0437 \u0441\u043c\u0435\u0436\u043d\u044b\u0445 \u0432\u0435\u0434\u043e\u043c\u0441\u0442\u0432. \u042d\u0442\u043e\u0442 \u043d\u0430\u0431\u043e\u0440 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00ab<strong>basi\u0441s-graphics-music<\/strong>\u00bb \u0438 \u043e\u043d \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u042e\u0440\u0438\u044f \u043d\u0430 Github-\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435: <a href=\"https:\/\/github.com\/yuri-panchul\/basics-graphics-music\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/yuri-panchul\/basics-graphics-music<\/a>. \u042d\u0442\u043e\u0442 \u0436\u0435 \u043d\u0430\u0431\u043e\u0440 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u00ab\u0428\u043a\u043e\u043b\u0435 \u0441\u0438\u043d\u0442\u0435\u0437\u0430\u00bb.<\/p>\n<p>\u0421\u0430\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u00abbasics-graphics-music\u00bb \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0442\u0430\u043a, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0441\u043f\u0435\u043a\u0442\u0440\u043e\u043c \u0442\u0443\u043b\u043e\u0432 (Quartus, Vivado, Gowin EDA), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u0438 \u0443\u0447\u0435\u0431\u043d\u044b\u0445 \u043f\u043b\u0430\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421, \u0438 \u043e\u043d \u043f\u043e \u043f\u0440\u0430\u0432\u0443 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c \u043f\u043e\u0440\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c (portable) \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u043c \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u041f\u041b\u0418\u0421. \u0414\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438: <strong>portable-hdl-examples@googlegroups.com<\/strong>.<\/p>\n<p> \u0415\u0449\u0435 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0431\u043e\u0440\u043d\u0438\u043a\u0430 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0442 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0438\u0445 \u0438\u0434\u0435\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0432\u044b\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0438\u043b\u044f \u043a\u043e\u0434\u0430 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u0430\u0447\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430. \u041b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0430\u043c\u044b\u0445 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 (\u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u0435 \u041c\u043e\u0440\u0433\u0430\u043d\u0430) \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u0430\u0448\u0438\u043d-\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f (FSM) \u0438 \u0434\u043e\u0445\u043e\u0434\u044f\u0442 \u0434\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 (\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u043e \u043e\u0431\u044a\u0451\u043c\u0443 \u043a\u043e\u0434\u0430) \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 VGA \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0439, \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u0443\u0437\u044b\u043a\u0438.<\/p>\n<p> \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0431\u044b\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430 Yosys \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043b\u0430\u0442 \u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u043c\u0438 \u041f\u041b\u0418\u0421 Lattice \u0438 Gowin \u2014 \u0440\u0430\u0431\u043e\u0442\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0438\u043b \u0441\u0432\u043e\u044e \u0440\u0443\u043a\u0443.<\/p>\n<p> \u0421\u0440\u0435\u0434\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0442, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u00abbasics-graphics-music\u00bb \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0430\u044f \u043c\u043d\u043e\u0439 \u0438 \u043c\u043e\u0438\u043c\u0438 \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c\u0438 \u0438\u0437 <a href=\"https:\/\/www.fabmicro.ru\/\" rel=\"noopener noreferrer nofollow\">\u041e\u041e\u041e \u00ab\u0424\u0430\u0431\u043c\u0438\u043a\u0440\u043e\u00bb<\/a> \u043f\u043b\u0430\u0442\u0430 \u00ab\u041f\u0418\u0420 \u0421\u0426\u0425-254 \u041a\u0430\u0440\u043d\u043e\u00bb (\u00abKarnaugh Interactive Extendable ASIC Simulation Board\u00bb) \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0430\u0437\u0430\u043c \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u043c\u0438 \u044f\u0434\u0440\u0430\u043c\u0438 RISC-V.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/c0c\/063\/43b\/c0c06343b354ce13789549040e47af5b.jpg\" alt=\"\u0420\u0438\u0441. 18. \u041f\u043b\u0430\u0442\u0430 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb - \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u0430\u044f \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c. 3D \u043c\u043e\u0434\u0435\u043b\u044c. \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0432 KiCAD 7. OSHW \u043f\u0440\u043e\u0435\u043a\u0442.\" title=\"\u0420\u0438\u0441. 18. \u041f\u043b\u0430\u0442\u0430 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb - \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u0430\u044f \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c. 3D \u043c\u043e\u0434\u0435\u043b\u044c. \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0432 KiCAD 7. OSHW \u043f\u0440\u043e\u0435\u043a\u0442.\" width=\"1918\" height=\"918\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c0c\/063\/43b\/c0c06343b354ce13789549040e47af5b.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 18. \u041f\u043b\u0430\u0442\u0430 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb &#8212; \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u0430\u044f \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c. 3D \u043c\u043e\u0434\u0435\u043b\u044c. \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0432 KiCAD 7. OSHW \u043f\u0440\u043e\u0435\u043a\u0442.<\/em><\/figcaption><\/div>\n<\/figure>\n<p> \u042d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u00abopen source and open hardware\u00bb \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u0431\u0430\u0437\u0435 \u041f\u041b\u0418\u0421 Lattice ECP5 \u0441 ~25\u041a \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0431\u043b\u043e\u043a\u043e\u0432, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u044f\u0434 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432: \u043c\u043d\u043e\u0433\u043e\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0426\u0410\u041f \u0438 \u0410\u0426\u041f, \u0431\u043b\u043e\u043a \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 SRAM \u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0431\u044a\u0435\u043c\u043e\u043c 512\u041a\u0411, FastEthernet, HDMI, \u043a\u043d\u043e\u043f\u043a\u0438 \u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u044b \u0438 \u043a\u043e\u0435-\u0447\u0442\u043e \u0435\u0449\u0435. \u041f\u043b\u0430\u0442\u0430 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 JTAG \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440.<\/p>\n<p> \u041f\u043b\u0430\u0442\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0432 \u0421\u0410\u041f\u0420 KiCAD 7 \u0438 \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e \u0441\u0445\u0435\u043c\u043e\u0439, \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u0438 Gerber \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0441 Github-\u0430 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435: <a href=\"https:\/\/github.com\/Fabmicro-LLC\/Karnix_ASB-254\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/Fabmicro-LLC\/Karnix_ASB-254<\/a> . \u0414\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u043b\u0430\u0442\u044b \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u044f \u0437\u0430\u043f\u0438\u0441\u0430\u043b \u0438 \u0432\u044b\u043b\u043e\u0436\u0438\u043b \u043d\u0430 YouTube \u043d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0435\u0435 \u0432\u0438\u0434\u0435\u043e \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0435 \u0434\u0430\u043d\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u0435\u0442\u044c\u0438.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u043e\u043c Yosys \u0441 \u0435\u0451 \u0443\u0447\u0430\u0441\u0442\u0438\u0435\u043c. \u041d\u043e \u043a\u0430\u043a \u044f \u043e\u0442\u043c\u0435\u0447\u0430\u043b \u0432\u044b\u0448\u0435, \u0432\u044b\u0431\u043e\u0440 \u043f\u043b\u0430\u0442\u044b \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u0435\u043d, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u00abbasics-graphics-music\u00bb \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0440\u044f\u0434 \u0434\u0440\u0443\u0433\u0438\u0445, \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0442, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c <a href=\"https:\/\/www.chipdip.ru\/product\/orangecrab-r0d2-25\" rel=\"noopener noreferrer nofollow\">OrangeCrab<\/a> \u0438 <a href=\"https:\/\/aliexpress.ru\/item\/1005003803994525.html?sku_id=12000027225308098\" rel=\"noopener noreferrer nofollow\">TangNano-9K<\/a>.<\/p>\n<p><a class=\"anchor\" name=\"7.1\" id=\"7.1\"><\/a><\/p>\n<h3> 7.1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u00abbasics-graphics-music\u00bb<\/h3>\n<p>\u0418\u0442\u0430\u043a, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0442. \u041a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u00abbasics-graphics-music\u00bb \u0432 \u043b\u044e\u0431\u043e\u0439 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433:<\/p>\n<pre><code class=\"bash\">rz@devbox:~$ git clone https:\/\/github.com\/yuri-panchul\/basics-graphics-music.git  Cloning into 'basics-graphics-music'...   rz@devbox:~$ cd basics-graphics-music rz@devbox:~\/basics-graphics-music$<\/code><\/pre>\n<p> \u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0441\u0440\u0435\u0434\u044b \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u044b, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442 <strong>check_setup_and_choose_fpga_board.bash<\/strong> \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"bash\">rz@devbox:~\/basics-graphics-music$ bash check_setup_and_choose_fpga_board.bash  check_setup_and_choose_fpga_board.bash: The currently selected FPGA board: karnix_ecp5_yosys. Please select an FPGA board amoung the following supported:  1) alinx_ax4010                      25) karnix_ecp5_yosys  2) arty_a7                           26) nexys4  3) arty_a7_pmod_mic3                 27) nexys4_ddr  4) basys3                            28) nexys_a7  5) c5gx_audio                        29) omdazz  6) c5gx_vga666                       30) omdazz_pmod_mic3  7) c5gx_vga_pmod                     31) orangecrab_ecp5_yosys  8) cmod_a7                           32) piswords6  9) de0                               33) qmtech_c4_starter  10) de0_cv                            34) rzrd  11) de0_nano_soc_vga666               35) rzrd_pmod_mic3  12) de0_nano_soc_vga_pmod             36) saylinx  13) de0_nano_vga666                   37) saylinx_pmod_mic3  14) de0_nano_vga_pmod                 38) tang_nano_20k  15) de10_lite                         39) tang_nano_9k  16) de10_lite_tm1638_arduino          40) tang_nano_9k_gowin_yosys  17) de10_nano_vga666                  41) tang_primer_20k_dock  18) de10_nano_vga_mister              42) tang_primer_20k_dock_alt  19) de10_nano_vga_pmod                43) tang_primer_20k_dock_gowin_yosys  20) de1_soc                           44) tang_primer_20k_lite  21) de2_115                           45) zeowaa  22) dk_dev_3c120n                     46) zeowaa_wo_dig_0  23) emooc_cc                          47) zybo_z7  24) ice40hx8k_evb_yosys               48) exit  Your choice (a number): 25<\/code><\/pre>\n<p> \u0412\u044b\u0431\u0435\u0440\u0435\u043c \u043f\u043b\u0430\u0442\u0443 \u00ab<strong>karnix_ecp5_yosys<\/strong>\u00bb, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0432\u0435\u0434\u0435\u043c \u0435\u0451 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 25) \u0438 \u043d\u0430\u0436\u043c\u0435\u043c \u00ab\u0432\u0432\u043e\u0434\u00bb, \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u0434\u0430\u0441\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"bash\">check_setup_and_choose_fpga_board.bash: FPGA board selected: karnix_ecp5_yosys   check_setup_and_choose_fpga_board.bash: Created an FPGA board selection file: \"\/home\/rz\/basics-graphics-music\/fpga_board_selection\"  Would you like to create the new run directories for the synthesis of all labs in the package, based on your FPGA board selection? We recommend to do this if you plan to work with Quartus GUI rather than with the synthesis scripts. [y\/n]<\/code><\/pre>\n<p> \u042f \u043d\u0430\u0436\u043c\u0443 <strong>n<\/strong>, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Quartus. \u0421\u043a\u0440\u0438\u043f \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c:<\/p>\n<pre><code class=\"bash\">Configuring for Lattice ECP5...  OK  rz@devbox:~\/basics-graphics-music$<\/code><\/pre>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0440\u0435\u0434\u044b \u0433\u043e\u0442\u043e\u0432\u0430. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a\u0438\u0435 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b:<\/p>\n<pre><code class=\"bash\">rz@devbox:~\/basics-graphics-music$ ls labs 01_and_or_not_xor_de_morgan  08_shift_register     15_uart                             22_syst_ws  02_mux                       09_7segment_word      16_round_robin_arbiter              23_i2s_synthesizer  03_decoder                   10_hex_counter        17_geiger_muller_radiation_counter  24_i2s_music  04_priority_encoder          11_note_recognition   18_pow5_single_cycle                50_crash_course  05_7seven_segment_letter     12_snail_fsm          19_pow5_pipelined                   90_valid_ready_etc_preview  06_vga                       13_music_recognition  20_pow5_pipelined_valid             91_systemverilog_homework_preview  07_binary_counter            14_game               21_pow5_pipelined_valid_solution    common <\/code><\/pre>\n<p><a class=\"anchor\" name=\"7.2\" id=\"7.2\"><\/a><\/p>\n<h3> 7.2 \u041b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u00ab01_and_or_not_xor_de_morgan\u00bb<\/h3>\n<p>\u0414\u0430\u043d\u043d\u0430\u044f \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0435 \u0441\u0445\u0435\u043c\u044b, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435, \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 SystemVerilog.<\/p>\n<p>\u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u2014 \u044d\u0442\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0435 (\u043d\u0435\u0442\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0435) \u0441\u0445\u0435\u043c\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u00ab\u0418\u00bb, \u00ab\u0418\u041b\u0418\u00bb, \u00ab\u041d\u0415\u00bb, \u00ab\u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0435 \u0418\u041b\u0418\u00bb \u0438 \u0442.\u00a0\u0434. \u0422\u0430\u043a\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u043f\u043e\u0434\u0447\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u0437\u0430\u043a\u043e\u043d\u0430\u043c \u0431\u0443\u043b\u0435\u0432\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u044b, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043f\u043e\u0434\u0434\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0438 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f\u043c, \u043a \u043d\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u044b <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%97%D0%B0%D0%BA%D0%BE%D0%BD%D1%8B_%D0%B4%D0%B5_%D0%9C%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B0\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u0435 \u041c\u043e\u0440\u0433\u0430\u043d\u0430<\/a>.<\/p>\n<p>\u0417\u0430\u0439\u0434\u0435\u043c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"bash\">rz@devbox:~\/basics-graphics-music$ cd labs\/01_and_or_not_xor_de_morgan   rz@devbox:~\/basics-graphics-music\/labs\/01_and_or_not_xor_de_morgan$ ls -l   -rwxrwxr-x 1 rz rz  495 Jan  5 22:39 01_clean.bash  -rwxrwxr-x 1 rz rz  495 Jan  5 22:39 02_simulate_rtl.bash  -rwxrwxr-x 1 rz rz  495 Jan  5 22:39 03_synthesize_for_fpga.bash  -rwxrwxr-x 1 rz rz  495 Jan  5 22:39 04_configure_fpga.bash  -rwxrwxr-x 1 rz rz  495 Jan  5 22:39 05_run_gui_for_fpga_synthesis.bash  -rwxrwxr-x 1 rz rz  495 Jan  5 22:39 06_choose_another_fpga_board.bash  -rwxrwxr-x 1 rz rz  495 Jan  5 22:39 07_synthesize_for_asic.bash  -rwxrwxr-x 1 rz rz  495 Jan  5 22:39 08_visualize_asic_synthesis_results_1.bash  -rwxrwxr-x 1 rz rz  495 Jan  5 22:39 09_visualize_asic_synthesis_results_2.bash  drwxrwxr-x 2 rz rz 4096 Jan 11 22:54 run  -rw-rw-r-- 1 rz rz 1142 Jan  5 22:39 tb.sv  -rw-rw-r-- 1 rz rz 2614 Jan  5 22:39 top.sv <\/code><\/pre>\n<p> \u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0444\u0430\u0439\u043b\u044b: <strong>top.sv<\/strong> \u0438 <strong>tb.sv<\/strong> (\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 <strong>.sv<\/strong> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 SystemVerilog), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 bash \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441\u0438\u043d\u0442\u0435\u0437\u0430 (\u0434\u043b\u044f \u041f\u041b\u0418\u0421 \u0438 ASIC), \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0440\u0435\u0434\u044b IDE \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u0414\u0430\u043b\u0435\u0435 \u044f \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432 \u041f\u041b\u0418\u0421. \u041d\u043e \u043f\u0440\u0435\u0436\u0434\u0435 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u0433\u043b\u044f\u043d\u0435\u043c \u0432 top.sv.<\/p>\n<pre><code>rz@devbox:~\/basics-graphics-music\/labs\/01_and_or_not_xor_de_morgan$ cat top.sv <\/code><\/pre>\n<p> \u0412 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0430\u0439\u043b\u0430 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043c\u043e\u0434\u0443\u043b\u044f <strong>top<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043e\u043a\u043d\u043e \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u043c\u0438\u0440 \u2014 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u043d\u0430 \u043f\u043b\u0430\u0442\u0435, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432, \u043c\u0430\u0441\u0441\u0438\u0432 \u043a\u043d\u043e\u043f\u043e\u043a, \u043f\u043e\u0440\u0442 UART \u0438 \u0440\u044f\u0434 \u0434\u0440\u0443\u0433\u0438\u0445. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043c\u043e\u0434\u0443\u043b\u044f top \u043e\u0431\u0449\u0438\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0442 \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b (\u043b\u0430\u0431\u044b) \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439.<\/p>\n<pre><code class=\"vhdl\">`include \"config.svh\"   module top  # (      parameter clk_mhz = 50,                w_key   = 4,                w_sw    = 8,                w_led   = 8,                w_digit = 8,                w_gpio  = 100  )  (      input                        clk,      input                        slow_clk,      input                        rst,       \/\/ Keys, switches, LEDs       input        [w_key   - 1:0] key,      input        [w_sw    - 1:0] sw,      output logic [w_led   - 1:0] led,       \/\/ A dynamic seven-segment display       output logic [          7:0] abcdefgh,      output logic [w_digit - 1:0] digit,       \/\/ VGA       output logic                 vsync,      output logic                 hsync,      output logic [          3:0] red,      output logic [          3:0] green,      output logic [          3:0] blue,       input                        uart_rx,      output                       uart_tx,       input                        mic_ready,      input        [         23:0] mic,      output       [         15:0] sound,       \/\/ General-purpose Input\/Output       inout        [w_gpio  - 1:0] gpio  ); <\/code><\/pre>\n<p> \u0414\u0430\u043b\u0435\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435:<\/p>\n<pre><code class=\"vhdl\"> \/\/ assign led      = '0;         assign abcdefgh = '0;         assign digit    = '0;         assign vsync    = '0;         assign hsync    = '0;         assign red      = '0;         assign green    = '0;         assign blue     = '0;         assign sound    = '0;         assign uart_tx  = '1; <\/code><\/pre>\n<p> \u0417\u0430\u0442\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u0430\u043c \u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u044b\u0439 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u043c \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442, \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043e\u0434\u043d\u043e\u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>a<\/strong> \u0438 <strong>b<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a \u043a\u043d\u043e\u043f\u043a\u0430\u043c <strong>key[]<\/strong> (\u043c\u043d\u043e\u0433\u043e\u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b) \u0438 \u043e\u0434\u043d\u043e\u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 <strong>result<\/strong>. \u041c\u0435\u0436\u0434\u0443  \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 <strong>a<\/strong>, <strong>b<\/strong> \u0438 <strong>result<\/strong> \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0432\u044f\u0437\u044c \u2014 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u00ab\u0418\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0435 \u0418\u041b\u0418\u00bb (XOR). \u0412\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>result<\/strong> \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0443 <strong>led[0]<\/strong>. \u041a \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0443 <strong>led[1]<\/strong> \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044d\u0442\u043e\u0439 \u0436\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043d\u043e \u0438\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u2014 \u043c\u0438\u043d\u0443\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b <strong>a<\/strong> \u0438 <strong>b<\/strong>.<\/p>\n<pre><code class=\"vhdl\">    wire a = key [0];      wire b = key [1];       wire result = a ^ b;       assign led [0] = result;       assign led [1] = key [0] ^ key [1]; <\/code><\/pre>\n<p> \u0414\u0430\u043b\u0435\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430 \u0437\u043d\u0430\u043d\u0438\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0438 \u043f\u0440\u0430\u0432\u0438\u043b \u0434\u0435 \u041c\u043e\u0440\u0433\u0430\u043d\u0430:<\/p>\n<pre><code class=\"vhdl\">    \/\/ Exercise 1: Change the code below.      \/\/ Assign to led [2] the result of AND operation.      \/\/      \/\/ If led [2] is not available on your board,      \/\/ comment out the code above and reuse led [0].       \/\/ assign led [2] =       \/\/ Exercise 2: Change the code below.      \/\/ Assign to led [3] the result of XOR operation      \/\/ without using \"^\" operation.      \/\/ Use only operations \"&amp;\", \"|\", \"~\" and parenthesis, \"(\" and \")\".       \/\/ assign led [3] =       \/\/ Exercise 3: Create an illustration to De Morgan's laws:      \/\/      \/\/ ~ (a &amp; b) == ~ a | ~ b      \/\/ ~ (a | b) == ~ a &amp; ~ b <\/code><\/pre>\n<p> \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0435\u0451 \u0432 \u041f\u041b\u0418\u0421. \u0417\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code class=\"bash\">rz@devbox:~\/basics-graphics-music\/labs\/01_and_or_not_xor_de_morgan$ bash 03_synthesize_for_fpga.bash   Configuring for Lattice ECP5...  OK <\/code><\/pre>\n<p> \u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u043b\u0438\u043d\u043d\u044b\u0439, \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u043b\u043e\u0433 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0441\u0435\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435.<\/p>\n<p>\u0412 \u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435, \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0448\u043b\u043e \u0443\u0434\u0430\u0447\u043d\u043e \u0438 \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a, \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code>Info: Program finished normally.  ecppack --compress --freq 38.8 --input 01_and_or_not_xor_de_morgan_out.config --bit 01_and_or_not_xor_de_morgan.bin  Would you like to upload to FPGA ? [y\/N] <\/code><\/pre>\n<p>\u041d\u0430\u0441 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442, \u0445\u043e\u0442\u0438\u043c \u043b\u0438 \u043c\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0432 \u041f\u041b\u0418\u0421 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u043d\u0430 \u0447\u0442\u043e \u044f \u043e\u0442\u0432\u0435\u0447\u0430\u044e <strong>N<\/strong> (\u043d\u0435\u0442). \u0421\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u043e\u043e\u0431\u0449\u0438\u0432 \u043d\u0430\u043c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430:<\/p>\n<pre><code>Resulting binary file is: -rw-rw-r-- 1 rz rz 99064 Jan 12 23:49 \/home\/rz\/basics-graphics-music\/labs\/01_and_or_not_xor_de_morgan\/run\/01_and_or_not_xor_de_morgan.bin <\/code><\/pre>\n<p><a class=\"anchor\" name=\"7.3\" id=\"7.3\"><\/a><\/p>\n<h3>7.3 \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421<\/h3>\n<p> \u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430\u0448\u0443 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u043a \u043c\u0430\u0448\u0438\u043d\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0432\u0435\u0434\u0435\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438:<\/p>\n<pre><code class=\"bash\">rz@devbox:~\/basics-graphics-music\/labs\/01_and_or_not_xor_de_morgan$ bash 04_configure_fpga.bash  Configuring for Lattice ECP5...  OK  Would you like to upload to FPGA ? [y\/N] y <\/code><\/pre>\n<p> \u0421\u043a\u0440\u0438\u043f\u0442 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438 \u043c\u044b \u0436\u0435\u043b\u0430\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0432 \u041f\u041b\u0418\u0421?  \u041e\u0442\u0432\u0435\u0447\u0430\u0435\u043c <strong>y<\/strong>.<\/p>\n<pre><code>This board supports the following upload methods:  [o] for openFPGALoader using JTAG based on FTDI FT2232  [e] for ecpprog using JTAG based on FTDI FT2232  Which upload method do you prefer ? O<\/code><\/pre>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u0441\u0438\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430, <strong>openFPGALoader<\/strong> \u0438\u043b\u0438 <strong>ecpprog<\/strong>. \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0439, \u0442.\u00a0\u0435. \u0432\u0432\u043e\u0434\u0438\u043c <strong>o.<\/strong><\/p>\n<pre><code>Upload method for this board is: openloader  Where to upload, SRAM or Flash ? [s\/F] s <\/code><\/pre>\n<p> \u0414\u0430\u043b\u0435\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442, \u0431\u0443\u0434\u0435\u043c \u043b\u0438 \u043c\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0432 SRAM \u0438\u043b\u0438 \u0432 NOR Flash. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c SRAM, \u0442.\u00a0\u0435. \u0432\u0432\u043e\u0434\u0438\u043c: <strong>s<\/strong><\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043b\u0430\u0442\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0438 USB \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440 \u043d\u0430 \u043d\u0435\u0439 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439, \u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u044b\u0432\u043e\u0434 \u043e\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>openFPGALoader<\/strong>:<\/p>\n<pre><code>make upload_openloader  make[1]: Entering directory '\/home\/rz\/basics-graphics-music\/labs\/01_and_or_not_xor_de_morgan\/run'  openFPGALoader -v --ftdi-channel 0  01_and_or_not_xor_de_morgan.bin  No cable or board specified: using direct ft2232 interface  Jtag frequency : requested 6.00MHz   -> real 6.00MHz    found 1 devices  index 0:  idcode 0x1111043  manufacturer lattice  family ECP5  model  LFE5UM-25  irlength 8  File type : bin  Open file: DONE  Parse file: DONE  bitstream header infos  Part: LFE5U-25F-6CABGA256  idcode: 41111043  IDCode : 41111043  displayReadReg  Config Target Selection : 0  Done Flag  Std PreAmble  No err  Enable configuration: DONE  SRAM erase: DONE  Loading: [==================================================] 100.00%  Done  userCode: 00000000  Disable configuration: DONE  displayReadReg \u0438 Config Target Selection : 0  Done Flag  Std PreAmble  No err <\/code><\/pre>\n<p> \u0421\u0440\u0430\u0437\u0443 \u043f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0431\u043e\u0442\u044b \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>openFPGALoader<\/strong>, \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u041f\u041b\u0418\u0421 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0438 \u0412\u0430\u0448 \u0434\u0438\u0437\u0430\u0439\u043d (\u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430) \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u043d\u0435\u0439.<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u0438\u0437\u0430\u0439\u043d, \u043d\u0430\u0436\u043c\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0438 KEY0 \u0438 KEY1 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0442\u043e\u043c \u0432\u043c\u0435\u0441\u0442\u0435. \u0421\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u044b LED0 \u0438 LED1 \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0443.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/0e3\/20a\/4f4\/0e320a4f45f23a57fbafa9901ebc0410.jpg\" alt=\"\u0420\u0438\u0441. 19. \u041f\u0418\u0420 \u0421\u0426\u0425-254 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438.\" title=\"\u0420\u0438\u0441. 19. \u041f\u0418\u0420 \u0421\u0426\u0425-254 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438.\" width=\"1632\" height=\"920\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0e3\/20a\/4f4\/0e320a4f45f23a57fbafa9901ebc0410.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 19. \u041f\u0418\u0420 \u0421\u0426\u0425-254 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438.<\/em><\/figcaption><\/div>\n<\/figure>\n<p> \u0415\u0441\u043b\u0438 \u0412\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u0435 \u0441\u0438\u043d\u0442\u0435\u0437 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 (\u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435), \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443 \u0447\u0435\u0440\u0435\u0437 USB, \u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u0441 \u043b\u044e\u0431\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430 \u043d\u0435\u0451 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0443 <strong>openFPGALoader<\/strong>. \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u0432\u044b\u0448\u0435, \u044d\u0442\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e\u0447\u0442\u0438 \u0432\u043e \u0432\u0441\u0435\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 Linux \u0438 BSD, \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get install openfpgaloader<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u043f\u0443\u0442\u0435\u043c \u0432\u044b\u0437\u043e\u0432\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u044b openFPGALoader \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0432 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u043e\u043c \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0412\u044b\u0437\u043e\u0432 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"bash\"># \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432 SRAM $ openFPGALoader -v --ftdi-channel 0 01_and_or_not_xor_de_morgan.bin  # \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432 NOR flash $ openFPGALoader -v -f --ftdi-channel 0 01_and_or_not_xor_de_morgan.bin<\/code><\/pre>\n<p><a class=\"anchor\" name=\"8\" id=\"8\"><\/a><\/p>\n<h2>8. \u0422\u0438\u043f\u043e\u0432\u043e\u0439 Makefile \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Yosys<\/h2>\n<p>\u0414\u043b\u044f \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0445 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c Yosys \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 <strong>Makefile<\/strong> \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430) \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0443\u0442\u0438\u043b\u0438\u0442 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0446\u0438\u0444\u0440\u043e\u0432\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 SystemVerilog \u0432 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c, \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a \u0437\u0430\u043b\u0438\u0432\u043a\u0435 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421. \u0414\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u043e\u0434 \u043f\u043b\u0430\u0442\u0443 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0441 \u041f\u041b\u0418\u0421 Lattice ECP5.  <\/p>\n<p> \u0418\u0442\u0430\u043a, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442: \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438:<\/p>\n<pre><code>NAME = 01_and_or_not_xor_de_morgan  INC = \/home\/rz\/basics-graphics-music\/labs\/common  BOARD = karnix_ecp5_yosys  READ_VERILOG += -p \"read_verilog -sv \/home\/rz\/basics-graphics-music\/labs\/01_and_or_not_xor_de_morgan\/top.sv\"  DEPS += \/home\/rz\/basics-graphics-music\/labs\/01_and_or_not_xor_de_morgan\/top.sv  <\/code><\/pre>\n<p>  \u041e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0442\u0438\u043f \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0438 \u0444\u0430\u0439\u043b \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432:<\/p>\n<pre><code>LPF = board_specific.lpf DEVICE = 25k  PACKAGE = CABGA256 <\/code><\/pre>\n<p> \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438: <strong>yosys<\/strong> \u2014 \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430, <strong>nextpnr-ecp5<\/strong> \u2014 \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438, <strong>ecppack<\/strong> \u2014 \u0434\u043b\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u0432 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c:<\/p>\n<pre><code>all: $(NAME).bin  $(NAME).bin: $(PCF) $(DEPS)          yosys -p \"verilog_defaults -add -I$(INC)\" $(READ_VERILOG) -p \"synth_ecp5 -json $(NAME).json -top board_specific_top\"          nextpnr-ecp5 --package $(PACKAGE) --$(DEVICE) --json $(NAME).json --textcfg $(NAME)_out.config --lpf $(LPF) --lpf-allow-unconstrained          ecppack --compress --freq 38.8 --input $(NAME)_out.config --bit $(NAME).bin<\/code><\/pre>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u0432 \u041f\u041b\u0418\u0421:<\/p>\n<pre><code>upload_openloader:  ifeq (\"$(FLASH_METHOD)\", \"flash\")          openFPGALoader -v --ftdi-channel $(FTDI_CHANNEL) -f --reset $(NAME).bin  else          openFPGALoader -v --ftdi-channel $(FTDI_CHANNEL) $(NAME).bin  endif <\/code><\/pre>\n<p> \u041f\u043e\u043b\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043e\u043a Makefile-\u0430  \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u00abbasics-graphics-music\u00bb \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432:<\/p>\n<p>\u0414\u043b\u044f \u041f\u041b\u0418\u0421 Lattice ECP5: <strong>boards\/karnix_ecp5_yosys\/Makefile<\/strong><\/p>\n<p>\u0414\u043b\u044f \u041f\u041b\u0418\u0421 Lattice iCE40: <strong>boards\/ice40hx8k_evb_yosys\/Makefile<\/strong><\/p>\n<p>\u0414\u043b\u044f \u041f\u041b\u0418\u0421 Gowin GW1N: <strong>boards\/tang_nano_9k_gowin_yosys\/Makefile<\/strong><\/p>\n<p>\u0414\u043b\u044f \u041f\u041b\u0418\u0421 Gowin GW2A: <strong>boards\/tang_primer_20k_dock_gowin_yosys\/Makefile<\/strong><\/p>\n<p><a class=\"anchor\" name=\"9\" id=\"9\"><\/a><\/p>\n<h2> 9. \u0424\u0430\u0439\u043b \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 (LPF, PCF, CST)<\/h2>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0439 \u0442\u0443\u043b \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0432\u044f\u0437\u0435\u0439 \u0438 \u0442\u0438\u043f\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421. \u0422\u0430\u043a, \u0432 Gowin EDA \u0434\u043b\u044f \u041f\u041b\u0418\u0421 GW1N \u0438 GW2A \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b \u0444\u043e\u0440\u043c\u0430\u0442\u0430 .CST, \u0432 Lattice Diamond \u0434\u043b\u044f \u041f\u041b\u0418\u0421 iCE40 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b .PCF, \u0430 \u0434\u043b\u044f \u041f\u041b\u0418\u0421 ECP5 \u044d\u0442\u043e \u0444\u0430\u0439\u043b .LPF.<\/p>\n<p>\u0412 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0435 Yosys \u0444\u0430\u0439\u043b \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0443\u0442\u0438\u043b\u0438\u0442\u0435 \u043f\u043b\u044d\u0439\u0441\u0435\u0440\u0443 \u2014 NextPNR, \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0432\u043e\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u044d\u0442\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u044b: <strong>nextpnr-ice40<\/strong>, <strong>nextpnr-ecp5<\/strong>, <strong>nextpnr-gowin<\/strong> \u0438 \u0442.\u00a0\u0434.  \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b NextPNR \u043d\u0435 \u0441\u0442\u0430\u043b\u0438 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u0432\u043e\u0439 \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u0439\u043b\u0430, \u0430 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0442\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043d\u044f\u0442 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421. \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0445 \u0442\u0443\u043b\u043e\u0432. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439, \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441 \u043e\u0434\u043d\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Yosys \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430\u043d\u043e\u0432\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f. \u041d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u2014 \u0441\u0443\u0434\u0438\u0442\u0435 \u0441\u0430\u043c\u0438, \u043d\u043e \u044f \u0431\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0435\u043b, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442.<\/p>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u0439\u043b\u0430 .LPF \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0432 \u041f\u041b\u0418\u0421 Lattice ECP5:<\/p>\n<p>\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f <strong>LOCATE COMP &#171;xxx&#187; SITE &#171;yyy&#187;;<\/strong> \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>xxx<\/strong> \u043a \u0432\u044b\u0432\u043e\u0434\u0443 <strong>yyy<\/strong> \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code>LOCATE COMP \"CLK\" SITE \"B9\"; \/\/ 25MHz crystal oscillator  \u0438\u043b\u0438 LOCATE COMP \"GPIO[0]\" SITE \"B9\"; \/\/ Connected to IO_6<\/code><\/pre>\n<p> \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f <strong>IOBUF PORT &#171;xxx&#187; IO_TYPE=LVCMOS33;<\/strong> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>xxx<\/strong> \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u0431\u043b\u043e\u043a <strong>IOBUF<\/strong> &#8212; \u0434\u0432\u0443\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0431\u0443\u0444\u0435\u0440 (\u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f). \u0422\u0430\u043a\u0436\u0435 \u044d\u0442\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0443\u0444\u0435\u0440 \u0442\u0438\u043f\u0430 Low-voltage CMOS \u043d\u0430 3.3V. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b: LVCMOS33, LVCMOS25, LVCMOS18, LVCMOS15, LVCMOS12, LVCMOS33D, LVCMOS25D, LVCMOS15D, LVCMOS12D, LVCMOS18D .<\/p>\n<p> \u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code>IOBUF PORT \"CLK\" IO_TYPE=LVCMOS33; <\/code><\/pre>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e <strong>IO_TYPE<\/strong> \u0432 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u0435 \u043f\u043e\u0434\u0442\u044f\u0436\u043a\u0438. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code>PULLMODE=NONE \u0438\u043b\u0438 PULLMODE=UP \u0438\u043b\u0438 PULLMODE=DOWN<\/code><\/pre>\n<p> \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0438\u043b\u0443 \u0442\u043e\u043a\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0430\u0441\u043a\u0430\u0434\u0430 (\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430) \u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0443 <strong>DRIVE<\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u0438\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: 4,6,8,10,12 \u0438 16 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u043e\u043a\u0443 \u0432 \u043c\u0410. \u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code>LOCATE COMP \"io_gpio[0]\" SITE \"L1\";            IOBUF PORT \"io_gpio[0]\" IO_TYPE=LVCMOS33;  IOBUF PORT \"io_gpio[0]\" PULLMODE=NONE DRIVE=16; <\/code><\/pre>\n<p> \u0415\u0449\u0435 \u043e\u0434\u043d\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 <strong>FREQUENCY NET<\/strong> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u043b\u0435\u0434\u043e\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430. \u042d\u0442\u043e \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430 \u043f\u043b\u044d\u0439\u0441\u0435\u0440\u0443, \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0441\u043e\u0431\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 (\u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438) \u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435. \u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code>FREQUENCY NET \"clk\" 25.00000 MHz;<\/code><\/pre>\n<p>\u042d\u0442\u043e \u043f\u043e\u0436\u0430\u043b\u0443\u0439 \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u043d\u0430\u0442\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0435\u043c\u0443 \u043f\u0440\u043e \u0444\u0430\u0439\u043b LPF. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432 \u043c\u043e\u0436\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421.<\/p>\n<p> \u041f\u043e\u043b\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u041f\u041b\u0418\u0421 \u0438 \u043f\u043b\u0430\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u00abbasics-graphics-music\u00bb:<\/p>\n<p>\u0414\u043b\u044f \u041f\u041b\u0418\u0421 Lattice ECP5: <strong>boards\/karnix_ecp5_yosys\/board_specific.lpf<\/strong><\/p>\n<p>\u0414\u043b\u044f \u041f\u041b\u0418\u0421 Lattice iCE40: <strong>boards\/ice40hx8k_evb_yosys\/board_specific.pcf<\/strong><\/p>\n<p>\u0414\u043b\u044f \u041f\u041b\u0418\u0421 Gowin GW1N: <strong>boards\/tang_nano_9k\/board_specific.cst<\/strong><\/p>\n<p>\u0414\u043b\u044f \u041f\u041b\u0418\u0421 Gowin GW2A: <strong>boards\/tang_primer_20k_dock_gowin_yosys\/board_specific.cst<\/strong><\/p>\n<p><a class=\"anchor\" name=\"10\" id=\"10\"><\/a><\/p>\n<h2> 10. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 Yosys<\/h2>\n<p> \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u00abbasics-graphics-music\u00bb \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u043e\u043c Yosys \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0435 \u0432\u0441\u0435 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u044f\u0437\u044b\u043a\u0430 SystemVerilog \u0432\u0435\u0441\u044c\u043c\u0430 \u043e\u0431\u0438\u043b\u0435\u043d \u0438 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0435\u043d \u0438, \u043a\u0430\u043a \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0441 \u043b\u044e\u0431\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u043c\u0438, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0442\u0443\u043b\u0430 \u043a \u0442\u0443\u043b\u0443.<\/p>\n<p> \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0438 \u0441 Yosys. \u0415\u0441\u043b\u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 <strong>02_mux<\/strong>, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>yosys<\/strong> \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435:<\/p>\n<pre><code class=\"bash\">  rz@devbox:~\/basics-graphics-music\/labs\/01_and_or_not_xor_de_morgan$ cd ..\/02_mux\/  rz@devbox:~\/basics-graphics-music\/labs\/02_mux$  rz@devbox:~\/basics-graphics-music\/labs\/02_mux$ bash 03_synthesize_for_fpga.bash  Configuring for Lattice ECP5...  OK  ... Yosys 0.36+58 (git sha1 ea7818d31, gcc 7.5.0-3ubuntu1~18.04 -fPIC -Os)  -- Running command `verilog_defaults -add -I\/home\/rz\/basics-graphics-music\/labs\/common' --  -- Running command `read_verilog -sv \/home\/rz\/basics-graphics-music\/labs\/02_mux\/top.sv' --  1. Executing Verilog-2005 frontend: \/home\/rz\/basics-graphics-music\/labs\/02_mux\/top.sv  Parsing SystemVerilog input from \/home\/rz\/basics-graphics-music\/labs\/02_mux\/top.sv' to AST representation. &lt;\/font> &lt;font size=\"1\" style=\"font-size: 8pt\">\/home\/rz\/basics-graphics-music\/labs\/02_mux\/top.sv:4: &lt;span style=\"font-style: normal\">&lt;b>ERROR: Unimplemented compiler directive or undefined macro error_This_module_requires_support_for_multidimantional_arrays.  Makefile:76: recipe for target '02_mux.bin' failed  make: *** [02_mux.bin] Error 1 <\/code><\/pre>\n<p>\u0417\u0430\u0433\u043b\u044f\u043d\u0443\u0432 \u0432 \u0444\u0430\u0439\u043b <strong>top.sv<\/strong> \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 3-5 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0443 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u0443\u044e \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0443 <strong>ifdef<\/strong>:<\/p>\n<pre><code class=\"vhdl\">`ifdef YOSYS      `error_This_module_requires_support_for_multidimantional_arrays  `endif<\/code><\/pre>\n<p> \u041d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b \u0441 \u0442\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0432 Yosys \u043d\u0435\u0442 \u0438 \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u043a\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b \u044d\u0442\u043e \u0445\u0430\u043a \u2014 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 Yosys \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0438 \u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0435\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c \u0442\u0443\u043b\u043e\u043c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e <strong>Yosys, \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b \u043c\u043d\u043e\u0433\u043e\u043c\u0435\u0440\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b<\/strong>.<\/p>\n<p> \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 (ifdef) \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0431\u044b\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0432 \u043a\u043e\u0434 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043d\u043e\u0439, \u043a\u043e\u0433\u0434\u0430 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 \u0442\u0443\u043b\u0447\u0435\u0439\u043d Yosys. \u0412\u043e\u043e\u0431\u0449\u0435 \u0432 \u043a\u043e\u0434\u0435 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b <strong>02_mux<\/strong> \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043e\u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0432 \u043c\u043d\u043e\u0433\u043e\u043c\u0435\u0440\u043d\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u0445 \u043d\u0435\u0442, \u0438 \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u043c\u0435\u043b\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b (\u0441 \u043d\u0438\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432 Yosys \u043d\u0435\u0442), \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0432\u0435\u0449\u0430\u043d\u0438\u044f \u0441 \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u0438\u0432\u043e\u043c \u044f \u043f\u0440\u0438\u0448\u0435\u043b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043d\u043e\u0433\u043e\u043c\u0435\u0440\u043d\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0432 SystemVerilog.<\/p>\n<p> \u0417\u0430\u043c\u0435\u0447\u0443, \u0447\u0442\u043e <strong>02_mux<\/strong> \u2014 \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f (\u043d\u0435 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f) \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u043e\u043c Yosys, \u043a\u043e\u0434 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d  \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430\u043c\u0438 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0439 \u00ab\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438\u00bb.<\/p>\n<p> \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043c\u043d\u043e\u0433\u043e\u043c\u0435\u0440\u043d\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u2014 \u044d\u0442\u043e \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 Yosys. \u041d\u0438\u0436\u0435 \u044f \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u044f\u0437\u044b\u043a\u0430 SystemVerilog, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p><a class=\"anchor\" name=\"10.1\" id=\"10.1\"><\/a><\/p>\n<h3> 10.1 \u041c\u0430\u043a\u0440\u043e YOSYS<\/h3>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0434\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e Yosys \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043c\u0430\u043a\u0440\u043e YOSYS, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043e\u0431\u044b\u0434\u0435\u043d\u043d\u043e:<\/p>\n<pre><code class=\"vhdl\">`ifdef YOSYS     \/* some Yosys specific code *\/ `else     \/* code for other tools *\/ `endif<\/code><\/pre>\n<p><a class=\"anchor\" name=\"10.2\" id=\"10.2\"><\/a><\/p>\n<h3> 10.2 \u041c\u043d\u043e\u0433\u043e\u043c\u0435\u0440\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432<\/h3>\n<p>\u041c\u043d\u043e\u0433\u043e\u043c\u0435\u0440\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 (multi-dimentional arrays) \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e \u0434\u0432\u0443\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439. \u041f\u0440\u0438\u043c\u0435\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 1024 \u0434\u043b\u044f \u044f\u0447\u0435\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e 32 \u0431\u0438\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d Yosys-\u043e\u043c:<\/p>\n<pre><code class=\"vhdl\">reg [1023:0] mem [31:0];<\/code><\/pre>\n<p>\u0438\u043b\u0438<\/p>\n<pre><code class=\"vhdl\">reg [1023:0][31:0] mem;<\/code><\/pre>\n<p> \u041e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c \u0441 \u0431\u0430\u043d\u043a\u0430\u043c\u0438 \u0443\u0436\u0435 \u043d\u0435 \u0432\u044b\u0439\u0434\u0435\u0442, \u0442.\u0435. \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n<pre><code class=\"vhdl\">reg [3:0][1023:0][31:0] mem;<\/code><\/pre>\n<p><a class=\"anchor\" name=\"10.3\" id=\"10.3\"><\/a><\/p>\n<h3> 10.3 \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u044c ($POW) \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 **  <\/h3>\n<p>\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u044c ($POW) \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 **. \u0414\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n<pre><code class=\"vhdl\">assign x = y ** 2;<\/code><\/pre>\n<p> \u0414\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u044d\u0442\u043e \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"vhdl\">assign x = y * y;<\/code><\/pre>\n<p> \u0414\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0435\u043f\u0435\u043d\u0435\u0439 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043e\u0434.<\/p>\n<p><a class=\"anchor\" name=\"10.4\" id=\"10.4\"><\/a><\/p>\n<h3> 10.4 \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0438\u0433\u043d\u0430\u043b\u0443, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u0437\u0430 \u0435\u0451 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438<\/h3>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f (function) \u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u0435\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043e \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445. \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0441\u043d\u0430\u0440\u0443\u0436\u0438, \u0438\u0437\u043d\u0443\u0442\u0440\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d.  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043b\u0430\u0431\u0435 <strong>13_music_recognition<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0430\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430 \u0441\u0438\u0433\u043d\u0430\u043b <strong>distance<\/strong>, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043c\u043e\u0434\u0443\u043b\u044f <strong>top<\/strong>. \u042d\u0442\u043e \u043a\u043e\u0434 Yosys-\u043e\u043c <strong>\u043d\u0435<\/strong> \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"vhdl\">logic [19:0] distance; \/\/------------------------------------------------------------------------   function [19:0] check_freq_single_range (input [18:0] freq_100);      check_freq_single_range =    distance &amp;gt; low_distance  (freq_100)                                &amp;amp; distance &amp;lt; high_distance (freq_100);  endfunction &lt;\/pre>&lt;p style=\"line-height: 100%\">   \/\/------------------------------------------------------------------------  function [19:0] check_freq (input [18:0] freq_100);      check_freq =   check_freq_single_range (freq_100 * 4)                  | check_freq_single_range (freq_100 * 2)                  | check_freq_single_range (freq_100    );   endfunction &lt;\/pre><\/code><\/pre>\n<p>\u041a\u043e\u0434 \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u0438\u0433\u043d\u0430\u043b <strong>distance<\/strong> \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435:<\/p>\n<pre><code class=\"vhdl\">    \/\/------------------------------------------------------------------------       function [19:0] check_freq_single_range (input [18:0] freq_100, input [19:0] distance);          check_freq_single_range =    distance > low_distance  (freq_100)                                    &amp; distance &lt; high_distance (freq_100);      endfunction       \/\/------------------------------------------------------------------------       function [19:0] check_freq (input [18:0] freq_100, input [19:0] distance);          check_freq =   check_freq_single_range (freq_100 * 4 , distance)                      | check_freq_single_range (freq_100 * 2 , distance)                      | check_freq_single_range (freq_100     , distance);       endfunction <\/code><\/pre>\n<p><a class=\"anchor\" name=\"10.5\" id=\"10.5\"><\/a><\/p>\n<h3> 10.5 \u0421\u0438\u0433\u043d\u0430\u043b\u044b \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0438\u043b\u0438 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438<\/h3>\n<p>\u0422\u0443\u0442 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0438, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435, \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u043d\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b Yosys \u0432\u044b\u0434\u0430\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435. \u041c\u043d\u043e\u0433\u0438\u0435 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c, \u0430 \u0437\u0430\u0447\u0435\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0442\u0430\u043a\u0438\u0435 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b? \u041e\u0442\u0432\u0435\u0442 \u043f\u0440\u043e\u0441\u0442: \u0442\u0430\u043a\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439.<\/p>\n<p>\u0414\u043b\u044f \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0432\u043e\u0437\u044c\u043c\u0435\u043c  \u043c\u043e\u0434\u0443\u043b\u044c <strong>top<\/strong> \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0442\u044b.  \u0412 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f (\u0441\u043c. 7.2) \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0440\u044f\u0434 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u0434\u0430\u043d\u0430 \u0441 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"vhdl\">input        [w_key   - 1:0] key,<\/code><\/pre>\n<p> \u0433\u0434\u0435 <strong>w_key<\/strong> \u2014 \u044d\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u0447\u0438\u0441\u043b\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043a\u043d\u043e\u043f\u043e\u043a, \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u043d \u0441\u044e\u0434\u0430 \u0441\u0432\u0435\u0440\u0445\u0443 \u0438\u0437 <strong>board_specific_top.sv<\/strong>. \u0415\u0441\u043b\u0438 \u043d\u0430 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0438\u0437 \u043f\u043b\u0430\u0442 \u043d\u0435\u0442 \u0441\u0432\u043e\u0438\u0445 \u043a\u043d\u043e\u043f\u043e\u043a, \u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>w_key<\/strong> \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 \u043d\u043e\u043b\u044c \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>input<\/strong> \u0432\u044b\u0440\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0447\u0442\u043e-\u0442\u043e \u0442\u0438\u043f\u0430:<\/p>\n<pre><code class=\"vhdl\">input        [0   - 1:0] key,<\/code><\/pre>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438.  <\/p>\n<p>\u0422\u0430\u043a\u0438\u0435 \u0442\u0443\u043b\u044b \u043a\u0430\u043a Quartus \u0438 Vivado \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u043f\u0440\u043e\u0433\u043b\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441, \u0430 \u0432\u043e\u0442 Yosys \u2014 \u043d\u0435\u0442.<\/p>\n<p><a class=\"anchor\" name=\"10.6\" id=\"10.6\"><\/a><\/p>\n<h3> 10.6 \u0421\u043b\u043e\u0436\u043d\u044b\u0435 \u0431\u0438\u0442\u043e\u0432\u044b\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u043e loopback-\u0430\u0445<\/h3>\n<p>\u0421 \u044d\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u043f\u043e\u043a\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f. \u041d\u0438\u0436\u0435 \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043a\u043e\u0434 \u0438\u0437  \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b <strong>04_priority_encoder<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c:<\/p>\n<pre><code class=\"vhdl\">`ifdef YOSYS     wire [w - 1:0] c;     genvar i;     generate         for (i = 0; i &lt; w; i = i + 1) begin             if (i == 0)                 assign c [0] = 1'b1;             else                 assign c [i] = ~ in [i - 1] &amp; c [i - 1];         end     endgenerate `else     wire [w - 1:0] c = { ~ in [w - 2:0] &amp; c [w - 2:0], 1'b1 }; `endif<\/code><\/pre>\n<p><a class=\"anchor\" name=\"10.7\" id=\"10.7\"><\/a><\/p>\n<h3> 10.7 \u0413\u043b\u043e\u0431\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432<\/h3>\n<p>\u0412 Yosys \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u043c\u043e\u0434\u0443\u043b\u0438 \u0434\u043b\u044f &#171;\u0433\u043b\u043e\u0431\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438&#187; \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u0442.\u00a0\u0435. \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u0430\u0442\u044c \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0443 \u0441\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440\u0443 \u0438 \u043f\u043b\u044d\u0439\u0441\u0435\u0440\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438.<\/p>\n<p><strong>\u0414\u043b\u044f \u041f\u041b\u0418\u0421 iCE40:<\/strong><\/p>\n<pre><code class=\"vhdl\">SB_GB clk_buf (.USER_SIGNAL_TO_GLOBAL_BUFFER(CLK), .GLOBAL_BUFFER_OUTPUT(slow_clk));<\/code><\/pre>\n<p> <strong>\u0414\u043b\u044f \u041f\u041b\u0418\u0421 ECP5:<\/strong><\/p>\n<pre><code class=\"vhdl\">DCCA clk_buf (.CLKI(CLK), .CLKO(slow_clk), .CE(1));<\/code><\/pre>\n<p> <strong>\u0414\u043b\u044f \u041f\u041b\u0418\u0421 Gowin:<\/strong><\/p>\n<pre><code class=\"vhdl\">BUFG clk_buf (.I(CLK), .O(slow_clk));<\/code><\/pre>\n<p>\u0414\u043b\u044f \u041f\u041b\u0418\u0421 Gowin \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043d\u044e\u0430\u043d\u0441. \u0423\u0442\u0438\u043b\u0438\u0442\u0430 \u043f\u043b\u044d\u0439c\u0435\u0440 <strong>nextpnr-gowin<\/strong>, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0430\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0434\u043b\u044f \u041f\u041b\u0418\u0421 Gowin, \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u044d\u0442\u0443 \u0444\u0438\u0447\u0443 \u0438 \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443. \u0422\u043e \u0435\u0441\u0442\u044c \u044d\u0442\u0430\u043f \u043d\u0430 \u0441\u0442\u0430\u0434\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>yosys<\/strong> \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0438 \u043d\u0435\u0442\u043b\u0438\u0441\u0442 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u043d\u043e <strong>nextpnr-gowin<\/strong> \u0434\u0430\u043d\u043d\u0443\u044e \u0444\u0438\u0447\u0443 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 \u0432 \u043b\u043e\u0433\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435:<\/p>\n<pre><code>.\/gowin\/arch.cc: log_info(\"BUFG isn't supported\\n\");<\/code><\/pre>\n<p> \u041e\u0434\u043d\u0430\u043a\u043e, <strong>nextpnr-gowin<\/strong> \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0443\u043b\u0438\u0442\u044c \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c. \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u044f \u0437\u0430\u0432\u0435\u043b \u0441\u0447\u0435\u0442\u0447\u0438\u043a-\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0438 \u0432\u0437\u044f\u043b \u043e\u0434\u0438\u043d \u0438\u0437 \u0435\u0433\u043e \u0431\u0438\u0442\u043e\u0432 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <strong>slow_clk<\/strong>. \u0412\u043e\u0442 \u0447\u0442\u043e \u044f \u0443\u0432\u0438\u0434\u0435\u043b \u0432 \u043b\u043e\u0433\u0435:<\/p>\n<pre><code>Info: Max frequency for clock 'div[22]': 315.86 MHz (PASS at 27.00 MHz)```<\/code><\/pre>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c <strong>nextpnr-gowin<\/strong> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b, \u0447\u0442\u043e \u0441\u0438\u0433\u043d\u0430\u043b <strong>div[22]<\/strong> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u044b\u0432\u0435\u043b \u0435\u0433\u043e \u043d\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u043b\u0438\u043d\u0438\u044e, \u0447\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u043f\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435!<\/p>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u044d\u0442\u043e \u0432\u0441\u0451, \u0447\u0442\u043e \u043c\u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430 Yosys. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0438\u0437 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u2014 \u0431\u0443\u0434\u0443 \u0440\u0430\u0434 \u043e\u0431\u0441\u0443\u0434\u0438\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u0432 \u0442\u0435\u043a\u0441\u0442 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p><a class=\"anchor\" name=\"11\" id=\"11\"><\/a><\/p>\n<h2> 11. \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u0442\u0443\u043b\u043e\u0432<\/h2>\n<p>\u0412 \u0445\u043e\u0434\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>yosys<\/strong> \u0438 <strong>nextpnr<\/strong> \u0432\u044b\u0434\u0430\u044e\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u0440\u043e\u0442\u0435\u043a\u0430\u044e\u0449\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c, \u043f\u043e\u043c\u0438\u043c\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445, \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438  \u0432\u0430\u0448 \u0434\u0438\u0437\u0430\u0439\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a, \u043a\u0430\u043a \u0432\u044b \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0438\/\u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0438. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u0446\u0435\u043f\u0435\u0439 (nets), \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432 (DFFs \u2014 \u00abD flip-flops\u00bb) \u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 (modules). \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0447\u0442\u043e \u0432 \u0432\u0430\u0448\u0435\u043c \u0434\u0438\u0437\u0430\u0439\u043d\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u044c \u00ab\u0432\u0430\u0436\u043d\u044b\u0445\u00bb \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 \u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442 \u0437\u0430 \u043d\u0435\u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b\/\u0442\u0440\u0438\u0433\u0433\u0435\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0440\u0435\u0434\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043d\u0438\u0436\u0435, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0441 \u0435\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u0438\u0435\u043c \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e.<\/p>\n<p><a class=\"anchor\" name=\"11.1\" id=\"11.1\"><\/a><\/p>\n<h3> 11.1 \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b yosys<\/h3>\n<p>\u0412 \u0432\u044b\u0432\u043e\u0434\u0435 \u043e\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>yosys<\/strong> \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.<\/p>\n<p>1. \u041d\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f:<\/p>\n<pre><code>Warning: Yosys has only limited support for tri-state logic at the moment. (\/home\/rz\/basics-graphics-music\/labs\/common\/tm1638_board.sv: 303)<\/code><\/pre>\n<p>\u0414\u0430, <strong>yosys<\/strong> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0438\u043c\u043f\u0435\u0434\u0430\u043d\u0441\u0430 \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 (<strong>tri-state<\/strong> \u0438\u043b\u0438 <strong>z<\/strong>), \u043d\u043e \u044d\u0442\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0438 \u043d\u044e\u0430\u043d\u0441\u044b, \u043e \u0447\u0435\u043c \u043d\u0430\u043c \u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0441\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440.<\/p>\n<p>\u0418\u043b\u0438 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435:<\/p>\n<pre><code>Warning: Resizing cell port board_specific_top.slow_clk_buf.CE from 32 bits to 1 bits.<\/code><\/pre>\n<p> \u0417\u0434\u0435\u0441\u044c \u0441\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043d\u0430\u043c, \u0447\u0442\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>slow_\u0441lk_buf<\/strong> \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e 32 \u0431\u0438\u0442\u0430 \u0431\u044b\u043b \u0443\u0440\u0435\u0437\u0430\u043d \u0434\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0438\u0442\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e\u0433\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.<\/p>\n<p> 2. \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u044f\u0445 \u0438 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u0445:<\/p>\n<pre><code>13.3.5. Analyzing design hierarchy..  Top module:  \\board_specific_top  ... Removing unused module `\\seven_segment_display'.  Removing unused module `\\vga'.  Removing unused module `\\digilent_pmod_mic3_spi_receiver'.  Removing unused module `\\shift_reg'.  Removing unused module `\\slow_clk_gen'.  Removing unused module `\\inmp441_mic_i2s_receiver'.  Removing unused module `\\strobe_gen'.  Removing unused module `\\counter_with_enable'.  Removing unused module `\\i2s_audio_out'.  Removing unused module `\\tm1638_sio'.  Removing unused module `\\tm1638_board_controller'.  Removing unused module `\\top'.  Removed 12 unused modules. <\/code><\/pre>\n<p> \u041b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0436\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u0445, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u044d\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u0443\u0431\u0440\u0430\u043d\u044b.<\/p>\n<p> 3. \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u0445:<\/p>\n<pre><code>13.4.11. Executing PROC_CLEAN pass (remove empty switches from decision trees).  Removing empty process `TRELLIS_FF.$proc$\/usr\/local\/bin\/..\/share\/yosys\/ecp5\/cells_sim.v:0$403'.  Found and cleaned up 2 empty switches in `\\TRELLIS_FF.$proc$\/usr\/local\/bin\/..\/share\/yosys\/ecp5\/cells_sim.v:350$402'.  Removing empty process `TRELLIS_FF.$proc$\/usr\/local\/bin\/..\/share\/yosys\/ecp5\/cells_sim.v:350$402'.  Removing empty process `DPR16X4C.$proc$\/usr\/local\/bin\/..\/share\/yosys\/ecp5\/cells_sim.v:0$377'.  Found and cleaned up 1 empty switch in `\\DPR16X4C.$proc$\/usr\/local\/bin\/..\/share\/yosys\/ecp5\/cells_sim.v:285$354'.  Removing empty process `TRELLIS_DPR16X4.$proc$\/usr\/local\/bin\/..\/share\/yosys\/ecp5\/cells_sim.v:0$320'.  Found and cleaned up 1 empty switch in `\\TRELLIS_DPR16X4.$proc$\/usr\/local\/bin\/..\/share\/yosys\/ecp5\/cells_sim.v:221$296'.  Removing empty process `TRELLIS_DPR16X4.$proc$\/usr\/local\/bin\/..\/share\/yosys\/ecp5\/cells_sim.v:213$295'.  Found and cleaned up 1 empty switch in `$paramod$c57045fef6efabbb852bcb6522a23329a7270ab8\\slow_clk_gen.$proc$\/home\/rz\/basics-graphics-music\/labs\/common\/slow_clk_gen.sv:35$406'.  Removing empty process `$paramod$c57045fef6efabbb852bcb6522a23329a7270ab8\\slow_clk_gen.$proc$\/home\/rz\/basics-graphics-music\/labs\/common\/slow_clk_gen.sv:35$406'.  Cleaned up 5 empty switches. <\/code><\/pre>\n<p> \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u043a\u0440\u043e\u043c\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e, \u043a\u0430\u0441\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0431\u044b\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u0441\u0445\u0435\u043c\u0435 \u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043e\u0434\u043b\u0435\u0436\u0430\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044e.<\/p>\n<p> \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u00ab\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043a\u043b\u043e\u043a\u0443\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043c\u043e\u0434\u0443\u043b\u0435-\u043e\u0431\u0435\u0440\u0442\u043a\u0435, \u043d\u043e \u043d\u0435 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u043e\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d.<\/p>\n<p> 4. \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432:<\/p>\n<pre><code>13.14. Executing WREDUCE pass (reducing word size of cells).  Removed top 2 bits (of 4) from port Y of cell board_specific_top.$not$\/home\/rz\/basics-graphics-music\/boards\/karnix_ecp5_yosys\/board_specific_top.sv:91$4 ($not).  Removed top 2 bits (of 4) from port A of cell board_specific_top.$not$\/home\/rz\/basics-graphics-music\/boards\/karnix_ecp5_yosys\/board_specific_top.sv:91$4 ($not).  Removed top 2 bits (of 4) from wire board_specific_top.top_key.  Removed top 2 bits (of 4) from wire board_specific_top.top_led. <\/code><\/pre>\n<p> \u0421\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0431\u0438\u0442\u044b \u0432 \u043c\u043d\u043e\u0433\u043e\u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u0445 \u0438 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f, \u0442\u043e \u0441\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442 \u0438\u0445 \u043f\u043e\u0434 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u0443\u0440\u0435\u0436\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>5. \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043f\u043e \u0443\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432<\/p>\n<pre><code>13.47. Printing statistics.  === board_specific_top ===  Number of wires:                 33  Number of wire bits:            125  Number of public wires:          33  Number of public wire bits:     125  Number of memories:               0  Number of memory bits:            0  Number of processes:              0  Number of cells:                  1    LUT4                            1 <\/code><\/pre>\n<p> \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0442\u043e\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u0432\u0430\u0436\u043d\u043e\u0435 \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0438\u043b\u0438 \u044f\u0447\u0435\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0435\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0435 \u0438, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0440\u0430\u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e <strong>yosys<\/strong> \u0432\u044b\u0434\u0430\u0435\u0442 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0441\u0438\u043d\u0442\u0435\u0437\u0430, \u044d\u0442\u043e \u044f\u0432\u043d\u044b\u0439 \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438, \u043b\u0438\u0431\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u044f\u0437\u044b\u043a\u0430 Verilog.<\/p>\n<p>\u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438 \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445 \u0434\u043b\u044f \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b <strong>01_and_or_not_xor_de_morgan<\/strong> \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432\u0435\u0441\u044c \u0434\u0438\u0437\u0430\u0439\u043d \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0443\u043b\u043e\u0436\u0438\u043b\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u043c\u0430\u043a\u0440\u043e\u044f\u0447\u0435\u0439\u043a\u0443 (cell) \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e LUT-4, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u0431\u044b\u043b\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0447\u0442\u043e \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043e\u0434\u043d\u043e\u0433\u043e LUT-4.<\/p>\n<p>\u0410 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442: \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0441\u0430\u043c\u044b\u0439 \u043a\u043e\u043d\u0435\u0446 \u043c\u043e\u0434\u0443\u043b\u044f \u044d\u0442\u043e\u0439 \u0436\u0435 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u0434 \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430-\u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 <strong>counter<\/strong> \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e 8 \u0431\u0438\u0442, \u0431\u0443\u0434\u0435\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0436\u0430\u0442\u0430 \u043a\u043b\u0430\u0432\u0438\u0448\u0430 <strong>KEY[2]<\/strong>, \u0430 \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0438\u0442 <strong>counter[7]<\/strong> \u0432\u044b\u0432\u0435\u0434\u0435\u043c \u043d\u0430 <strong>LED[2]<\/strong>, \u0442.\u00a0\u0435. \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"vhdl\">    logic [7:0] counter;       assign led[2] = counter[7];        always_ff @ (posedge clk or posedge rst)              if(rst)                      counter &lt;= 0;              else if(key[2])                      counter &lt;= counter + 8'd1; <\/code><\/pre>\n<p> \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u0438\u043d\u0442\u0435\u0437, \u0434\u043e\u0436\u0434\u0435\u043c\u0441\u044f \u0435\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f (\u0430 \u043e\u043d \u043e\u0431\u044f\u0437\u0430\u043d \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c\u0441\u044f \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043a\u0438), \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0432 \u041f\u041b\u0418\u0421 \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c. \u041a\u0430\u043a \u0431\u044b \u0434\u043e\u043b\u0433\u043e \u043c\u044b \u043d\u0435 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0438 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 KEY[2], \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 LED[2] \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0432\u0435\u0434\u044c \u0441\u0438\u043d\u0442\u0435\u0437 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a! \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u043e \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c, \u0432\u044b\u0434\u0430\u0432\u0430\u0435\u043c\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <strong>yosys<\/strong>, \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code>13.47. Printing statistics.  === board_specific_top ===  Number of wires:                 34  Number of wire bits:            133  Number of public wires:          34  Number of public wire bits:     133  Number of memories:               0  Number of memory bits:            0  Number of processes:              0  Number of cells:                  1    LUT4                            1 <\/code><\/pre>\n<p> \u041c\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043c, \u0447\u0442\u043e \u043d\u0430\u0448 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u0439 \u0434\u0438\u0437\u0430\u0439\u043d \u0432\u0441\u0451 \u0435\u0449\u0435 \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u0438\u043d LUT-4 \u0438 \u0432 \u043d\u0451\u043c \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u043e\u0433\u043e \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e. \u041d\u043e \u043a\u0430\u043a \u0442\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c?! \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0432\u044b\u0432\u043e\u0434 <strong>yosys<\/strong> \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435:<\/p>\n<pre><code>13.9. Executing OPT_CLEAN pass (remove unused cells and wires).  Finding unused cells or wires in module \\board_specific_top..  Warning: Driver-driver conflict for \\i_top.counter [7] between cell $flatten\\i_top.$procdff$454.Q and constant 1'0 in board_specific_to p: Resolved using constant.  Removed 12 unused cells and 35 unused wires. <\/code><\/pre>\n<p> \u0417\u0434\u0435\u0441\u044c <strong>yosys<\/strong> \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043d\u0430\u043c, \u0447\u0442\u043e \u043e\u043d \u0443\u0432\u0438\u0434\u0435\u043b \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c\u0438 \u2014 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c <strong>i_top.counter [7]<\/strong> \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043e\u0439 <strong>1&#8217;0<\/strong> \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c (\u00ab\u0434\u0440\u0430\u0439\u0432\u0438\u0442\u044c\u00bb) \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0441\u0438\u0433\u043d\u0430\u043b \u0438 \u0432 \u044d\u0442\u043e\u043c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0435 <strong>\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u0432\u044b\u0438\u0433\u0440\u0430\u043b\u0430<\/strong>, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0432\u0441\u0451, \u0447\u0442\u043e \u0434\u0430\u043b\u0435\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c <strong>i_top.counter[7]<\/strong> \u0431\u044b\u043b\u043e \u043f\u043e \u0446\u0435\u043f\u043e\u0447\u0435\u043a \u0443\u0434\u0430\u043b\u0435\u043d\u043e \u0437\u0430 \u043d\u0435\u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e!<\/p>\n<p>\u041e\u0442\u043a\u0440\u043e\u0435\u043c \u0444\u0430\u0439\u043b \u0441 \u043a\u043e\u0434\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u044f, \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0433\u043e \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043a\u0443\u0441\u043e\u0447\u0435\u043a \u043a\u043e\u0434\u0430:<\/p>\n<pre><code class=\"vhdl\">    `ifndef VERILATOR       generate          if (w_led > 2)          begin : unused_led              assign led [w_led - 1:2] = '0;          end      endgenerate       `endif <\/code><\/pre>\n<p> \u041d\u043e \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0438 \u0437\u0430\u0447\u0435\u043c \u043e\u043d \u0442\u0443\u0442? \u0415\u0441\u043b\u0438 \u0432\u043a\u0440\u0430\u0442\u0446\u0435, \u0442\u043e \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u00ab\u043f\u0440\u0438\u0437\u0435\u043c\u043b\u044f\u0435\u0442\u00bb \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 <strong>led<\/strong>, \u0435\u0441\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044c \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0430 \u043d\u0435 \u0441\u0438\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0442\u043e\u0447\u043d\u0435\u0435 \u043e\u043d \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c \u0440\u0430\u043d\u0435\u0435 \u0431\u0438\u0442\u0430\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>led<\/strong> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <strong>0.<\/strong> \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0434\u0440\u0443\u0433\u0438\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u0438 \u043c\u044b, \u043d\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0432 \u043d\u0430 \u043d\u0435\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0441\u0432\u043e\u0439 \u043a\u043e\u0434 \u0432 \u043a\u043e\u043d\u0435\u0446 \u043c\u043e\u0434\u0443\u043b\u044f, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043d\u0435\u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a!<\/p>\n<p>\u041d\u0443 \u0447\u0442\u043e \u0436\u0435, \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u2014 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0435 <strong>ifdef<\/strong> \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e\u0442 \u043e\u0431\u043d\u0443\u043b\u044f\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0441\u044f \u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0435\u0440\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c \u0435\u0449\u0435 \u0440\u0430\u0437. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043e\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>yosys<\/strong>:<\/p>\n<pre><code>13.47. Printing statistics.  === board_specific_top === Number of wires:                 49  Number of wire bits:            159  Number of public wires:          49  Number of public wire bits:     159  Number of memories:               0  Number of memory bits:            0  Number of processes:              0  Number of cells:                 15    CCU2C                           4    LUT4                            3    TRELLIS_FF                      8 <\/code><\/pre>\n<p> \u0425\u043e-\u0445\u043e! \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043d\u0430\u0448 \u0434\u0438\u0437\u0430\u0439\u043d \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0432 \u0441\u0445\u0435\u043c\u0443, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u0432\u043e\u0441\u0435\u043c\u044c \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432 (\u0431\u043b\u043e\u043a\u043e\u0432 TRELLIS_FF), \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430\u0448\u0435\u043c\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443-\u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0443, \u0438 \u0447\u0435\u0442\u044b\u0440\u0435 \u0431\u043b\u043e\u043a\u0430 CCU2C, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440. \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0432 \u041f\u041b\u0418\u0421 \u0438 \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 LED2 \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043d\u043e\u043f\u043a\u0438 KEY2.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u0441\u0430\u0434 \u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0435, \u043d\u0430\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0438 \u0432 \u044d\u0442\u043e\u043c \u0434\u0435\u043b\u0435 <strong>yosys<\/strong> \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043c\u043e\u0447\u044c \u0432 \u043c\u0435\u0440\u0443 \u0441\u0432\u043e\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439.<\/p>\n<p><a class=\"anchor\" name=\"11.2\" id=\"11.2\"><\/a><\/p>\n<h3> 11.2 \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b nextpnr<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u0436\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>nextpnr<\/strong>. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>nextpnr<\/strong> (\u0434\u043b\u044f \u041f\u041b\u0418\u0421 ECP5 \u043e\u043d\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>nextpnr-ecp5<\/strong>) \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u043e\u0432, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0441\u0438\u043d\u0442\u0435\u0437\u0430, \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 \u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0446\u0435\u043f\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>nextpnr<\/strong> \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u0440\u044f\u0434 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439 \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043e\u0431\u044a\u0435\u043c\u0430 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 \u043b\u0438\u043d\u0438\u0439 \u0432\u0432\u043e\u0434\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 \u043a \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0432\u044b\u0432\u043e\u0434\u0430\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a (STA), \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 (\u0441\u0430\u043c\u044b\u0435 \u00ab\u0434\u043b\u0438\u043d\u043d\u044b\u0435\u00bb) \u043f\u0443\u0442\u0438 \u0432 \u0441\u0445\u0435\u043c\u0435 \u0438 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u044b, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0431\u043b\u043e\u043a\u043e\u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043c\u044b \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0441 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0432 \u0443\u0442\u0438\u043b\u0438\u0442\u0435  <strong>nextpnr<\/strong>. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0432\u044b\u0434\u0435\u0440\u0436\u043a\u0430 \u0438\u0437 <a href=\"https:\/\/github.com\/YosysHQ\/nextpnr\/blob\/master\/docs\/faq.md\" rel=\"noopener noreferrer nofollow\">NextPnR FAQ<\/a>:<\/p>\n<p>\u0422\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0438\u0437\u0430\u0439\u043d\u0430:<\/p>\n<ul>\n<li>\n<p> <strong>Cell (\u044f\u0447\u0435\u0439\u043a\u0430)<\/strong>: \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u0438\u043b\u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u043b\u043e\u043a \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0442\u043b\u0438\u0441\u0442\u0430. \u0423\u043f\u0430\u043a\u043e\u0432\u0449\u0438\u043a, \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e NextPnR, \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u0443\u0435\u0442 \u0438\u043b\u0438 \u0438\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u044f\u0447\u0435\u0439\u043a\u0438, \u0430 \u043f\u043b\u044d\u0439\u0441\u0435\u0440 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442 \u0438\u0445 \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0411\u0430\u0437\u043e\u0432\u044b\u0445 \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445 (Bels).<\/p>\n<\/li>\n<li>\n<p><strong>Port (\u043f\u043e\u0440\u0442)<\/strong>: \u0412\u0445\u043e\u0434 \u0438\u043b\u0438 \u0432\u044b\u0445\u043e\u0434 \u044f\u0447\u0435\u0439\u043a\u0438 (cell), \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043e\u0434\u043d\u043e\u0439 \u0446\u0435\u043f\u044c\u044e (net).<\/p>\n<\/li>\n<li>\n<p><strong>Net (\u0446\u0435\u043f\u044c)<\/strong>: \u0421\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0440\u0442\u0430\u043c\u0438 \u0432 \u043d\u0435\u0442\u043b\u0438\u0441\u0442\u0435, \u043f\u0440\u044f\u043c\u043e\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0446\u0435\u043f\u0438. \u0426\u0435\u043f\u044c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u0432\u0435\u0434\u0435\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u043e\u0432 (wires) \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b. \u0426\u0435\u043f\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u043c\u0435\u044e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0432 \u043e\u0434\u0438\u043d \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b (\u043e\u0434\u0438\u043d \u0431\u0438\u0442). \u041c\u043d\u043e\u0433\u043e\u0431\u0438\u0442\u043d\u044b\u0435 \u0446\u0435\u043f\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>Source (\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a)<\/strong>: \u0412\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0440\u0442 \u044f\u0447\u0435\u0439\u043a\u0438 (cell), \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0446\u0435\u043f\u044c\u044e (net).<\/p>\n<\/li>\n<li>\n<p><strong>Sink (\u0441\u0442\u043e\u043a)<\/strong>: \u0412\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0440\u0442 \u044f\u0447\u0435\u0439\u043a\u0438 (cell), \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0446\u0435\u043f\u044c\u044e (net).<\/p>\n<\/li>\n<li>\n<p><strong>Arc (\u0434\u0443\u0433\u0430)<\/strong>: \u041f\u0430\u0440\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a-\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a.<\/p>\n<\/li>\n<\/ul>\n<p> \u0422\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<ul>\n<li>\n<p><strong>Bel (\u00ab\u0431\u0430\u0437\u044d\u043b\u00bb)<\/strong>: \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421, \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043a: \u00ab\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u044f\u0447\u0435\u0439\u043a\u0430\u00bb (LC), \u044f\u0447\u0435\u0439\u043a\u0430 \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430 (IO cell), \u0431\u043b\u043e\u0447\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c (block RAM) \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u041f\u041b\u0418\u0421. \u041d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u00ab\u0431\u0430\u0437\u044d\u043b\u00bb \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430 \u044f\u0447\u0435\u0439\u043a\u0430 (cell).<\/p>\n<\/li>\n<li>\n<p><strong>Pin (\u0432\u044b\u0432\u043e\u0434)<\/strong>: \u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u00ab\u043f\u0438\u043d\u00bb \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434 \u00ab\u0431\u0430\u0437\u044d\u043b\u0430\u00bb (Bel), \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u043e\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u041f\u041b\u0418\u0421.<\/p>\n<\/li>\n<li>\n<p><strong>Pip (\u00ab\u041f\u0422\u0421\u00bb)<\/strong>: \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0441\u0432\u044f\u0437\u0438, \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u044e\u0449\u0430\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u043e\u0432 (wires)  \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>Wire (\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a)<\/strong>: \u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421, \u043c\u0435\u0436\u0434\u0443 \u041f\u0422\u0421 \u0438\/\u0438\u043b\u0438 \u0432\u044b\u0432\u043e\u0434\u0430\u043c\u0438 \u00ab\u0431\u0430\u0437\u044d\u043b\u043e\u0432\u00bb.<\/p>\n<\/li>\n<li>\n<p><strong>Alias (\u00ab\u0430\u043b\u0438\u0430\u0441\u00bb)<\/strong>: \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u041f\u0422\u0421, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 (\u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0435) \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>Group (\u0433\u0440\u0443\u043f\u043f\u0430)<\/strong>: \u041c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438: bels, pips, wires \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u044b.  <\/p>\n<\/li>\n<li>\n<p><strong>BelBucket<\/strong>: \u0413\u0440\u0443\u043f\u043f\u0430 \u00ab\u0431\u0430\u0437\u044d\u043b\u043e\u0432\u00bb \u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0449\u0430\u044f \u00ab\u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430\u00bb (\u0441\u043c. \u00ab<a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BE_%D0%BF%D0%BE%D0%BA%D1%80%D1%8B%D1%82%D0%B8%D0%B8_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B0\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u0434\u0430\u0447\u0443 \u043e \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430<\/a>\u00bb).<\/p>\n<\/li>\n<\/ul>\n<p> \u0422\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432:<\/p>\n<ul>\n<li>\n<p><strong>Packing (\u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0430)<\/strong>: \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044f\u0447\u0435\u0435\u043a, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043e\u0442 \u0441\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440\u0430, \u0432 \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u00ab\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u044f\u0447\u0435\u0439\u043a\u0438\u00bb.<\/p>\n<\/li>\n<li>\n<p><strong>Placing (\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435)<\/strong>: \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u044f\u0447\u0435\u0435\u043a \u0432 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b (\u0431\u0430\u0437\u044d\u043b\u044b).<\/p>\n<\/li>\n<li>\n<p><strong>Routing (\u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430)<\/strong>: \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0446\u0435\u043f\u0435\u0439 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u0430\u043c\u0438.<\/p>\n<\/li>\n<\/ul>\n<p> \u0415\u0449\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u044b:<\/p>\n<ul>\n<li>\n<p><strong>Binding (\u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430)<\/strong>: \u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u0446\u0435\u043f\u0435\u0439 \u043a \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u0430\u043c \u0438 \u044f\u0447\u0435\u0435\u043a \u043a \u0431\u0430\u0437\u043e\u0432\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c.<\/p>\n<\/li>\n<li>\n<p><strong>Path (\u043f\u0443\u0442\u044c)<\/strong>: \u0412\u0441\u0435 \u0434\u0443\u0433\u0438, \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u044e\u0449\u0438\u0435 \u0432\u044b\u0432\u043e\u0434 \u043e\u0434\u043d\u043e\u0433\u043e FF \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 (\u00ab\u0444\u043b\u0438\u043f-\u0444\u043b\u043e\u043f\u0430\u00bb) \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0432\u0445\u043e\u0434\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u0433\u043e FF \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430.<\/p>\n<\/li>\n<\/ul>\n<p> \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a\u0443\u044e \u0436\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u044b\u0442\u044c \u0438\u0437 \u0432\u044b\u0432\u043e\u0434\u0430 <strong>nextpnr<\/strong>. \u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438 \u043a\u0430\u043a\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043b\u0430 \u0435\u0439 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043e\u0442 \u0441\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440\u0430:<\/p>\n<pre><code>Info: Logic utilisation before packing:  Info:     Total LUT4s:        11\/24288     0%  Info:         logic LUTs:      3\/24288     0%  Info:         carry LUTs:      8\/24288     0%  Info:           RAM LUTs:      0\/ 3036     0%  Info:          RAMW LUTs:      0\/ 6072     0%  Info:      Total DFFs:         8\/24288     0% <\/code><\/pre>\n<p> \u041f\u0435\u0440\u0432\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0433\u0440\u0430\u0444\u0435 \u2014 \u044d\u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u0438\u0434\u0430. \u0412\u0442\u043e\u0440\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u2014 \u044d\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0434\u043b\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0438 \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421. \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b, \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u041f\u041b\u0418\u0421 ECP5 c <strong>25K<\/strong> \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044f\u0447\u0435\u0435\u043a. \u041e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab25K\u00bb \u044d\u0442\u043e \u0447\u0438\u0441\u0442\u043e \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u0430\u044f \u0443\u043b\u043e\u0432\u043a\u0430, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044f\u0447\u0435\u0435\u043a \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044c\u0448\u0435, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e &#8212; 24288 \u0448\u0442\u0443\u043a. \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c, \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0431\u044f\u0442\u0430 \u0438\u0437 \u042e\u0433\u043e-\u0412\u043e\u0441\u0442\u043e\u0447\u043d\u043e\u0439 \u0410\u0437\u0438\u0438 \u043b\u044e\u0431\u044f\u0442 \u043f\u0440\u0438\u0443\u043a\u0440\u0430\u0441\u0438\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p> \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u043a \u0432\u044b\u0432\u043e\u0434\u0430\u043c (\u00ab\u043d\u043e\u0433\u0430\u043c\u00bb) \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b:<\/p>\n<pre><code>Info: Packing IOs..  Info: pin 'VGA_VS$tr_io' constrained to Bel 'X0\/Y44\/PIOD'.  Info: pin 'VGA_R[3]$tr_io' constrained to Bel 'X72\/Y8\/PIOA'.  ... Info: pin 'UART_TX$tr_io' constrained to Bel 'X58\/Y0\/PIOB'.  Info: pin 'UART_RX$tr_io' constrained to Bel 'X58\/Y0\/PIOA'.  Info: pin 'SW[1]$tr_io' constrained to Bel 'X29\/Y0\/PIOB'.  Info: pin 'SW[0]$tr_io' constrained to Bel 'X29\/Y0\/PIOA'.  Info: pin 'LED[3]$tr_io' constrained to Bel 'X67\/Y0\/PIOA'.  Info: pin 'LED[2]$tr_io' constrained to Bel 'X67\/Y0\/PIOB'.  ... Info: pin 'KEY[3]$tr_io' constrained to Bel 'X62\/Y0\/PIOB'.  Info: pin 'KEY[2]$tr_io' constrained to Bel 'X62\/Y0\/PIOA'.  .. Info: pin 'GPIO[11]$tr_io' constrained to Bel 'X0\/Y32\/PIOD'.  Info: pin 'GPIO[10]$tr_io' constrained to Bel 'X0\/Y32\/PIOC'.  ...<\/code><\/pre>\n<p> \u0418\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435:<\/p>\n<pre><code>Warning: IO 'some_output' is unconstrained in LPF and will be automatically placed<\/code><\/pre>\n<p> \u0422\u0430\u043a\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c <strong>nextpnr<\/strong> \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u0435\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0435, \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 <strong>top<\/strong>, \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>some_output<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043e\u043f\u0438\u0441\u0430\u043d \u0432 LPF, \u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043b\u044d\u0439\u0441\u0435\u0440 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a \u0435\u0433\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u043a \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u0432\u044b\u0432\u043e\u0434\u0443 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b, \u0438 \u044d\u0442\u043e\u0442 \u0441\u0438\u0433\u043d\u0430\u043b \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a \u043f\u0435\u0440\u0432\u043e\u043c\u0443  \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 (\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c\u0443) \u0432\u044b\u0432\u043e\u0434\u0443. \u041d\u0430 \u0442\u0430\u043a\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0438 \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432 \u0441\u0445\u0435\u043c\u0435 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043a \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0432\u044b\u0432\u043e\u0434\u0430\u043c. \u041d\u0435\u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u043c \u0443\u0442\u0435\u0447\u043a\u0430\u043c \u0442\u043e\u043a\u0430 (\u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0430 \u00ab\u0437\u0435\u043c\u043b\u0435\u00bb), \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 &#8212; \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 \u0438 \u0432\u044b\u0445\u043e\u0434 \u0435\u0451 \u0438\u0437 \u0441\u0442\u0440\u043e\u044f!<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438, \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>nextpnr<\/strong> \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0434\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043a \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c \u043b\u0438\u043d\u0438\u044f\u043c:<\/p>\n<pre><code>Info: Promoting globals...  Info:     promoting clock net CLK$TRELLIS_IO_IN to global network<\/code><\/pre>\n<p> \u0417\u0434\u0435\u0441\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b\u0430, \u0447\u0442\u043e \u0441\u0438\u0433\u043d\u0430\u043b <strong>CLK<\/strong> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0446\u0435\u043f\u044c\u044e \u0438 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u043d \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0446\u0435\u043f\u0438. \u041d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 <strong>nextpnr<\/strong> \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0435\u0442 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u0446\u0435\u043f\u0438 \u0438 \u0446\u0435\u043f\u0438 \u0441\u0431\u0440\u043e\u0441\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0442\u0435\u043c, \u043a\u0430\u043a \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0438 \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u2014 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u043f\u043e\u0441\u043e\u0431 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u0441\u043c. \u0433\u043b\u0430\u0432\u0443 \u00ab<em>10.7 \u0413\u043b\u043e\u0431\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432<\/em>\u00bb. \u0418\u043d\u043e\u0433\u0434\u0430 \u0431\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e <strong>nextpnr<\/strong> \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0430\u043f\u0440\u0430\u0441\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u0437 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u043c \u0438 \u0442\u043e\u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u044f\u0445, \u043f\u043e\u043d\u0430\u043f\u0440\u0430\u0441\u043d\u0443 \u0442\u0440\u0430\u0442\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441. \u0421\u043f\u043e\u0441\u043e\u0431\u0430 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u044f \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0448\u0435\u043b, \u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u0432 \u0438\u043c\u0435\u043d\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u00abclk\u00bb \u0438 \u00abCLK\u00bb.<\/p>\n<p> \u0414\u0430\u043b\u0435\u0435 <strong>nextpnr<\/strong> \u0435\u0449\u0435 \u0440\u0430\u0437 \u0432\u044b\u0434\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u043d\u043e \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0432 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435 \u0443\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0441\u0445\u0435\u043c\u044b:<\/p>\n<pre><code>Info: Device utilisation:  Info:             TRELLIS_IO:    39\/  197    19%  Info:                   DCCA:     1\/   56     1%  Info:                 DP16KD:     0\/   56     0%  Info:             MULT18X18D:     0\/   28     0%  Info:                 ALU54B:     0\/   14     0%  Info:                EHXPLLL:     0\/    2     0%  Info:                EXTREFB:     0\/    1     0%  Info:                   DCUA:     0\/    1     0%  Info:              PCSCLKDIV:     0\/    2     0%  Info:                IOLOGIC:     0\/  128     0%  Info:               SIOLOGIC:     0\/   69     0%  Info:                    GSR:     0\/    1     0%  Info:                  JTAGG:     0\/    1     0%  Info:                   OSCG:     0\/    1     0%  Info:                  SEDGA:     0\/    1     0%  Info:                    DTR:     0\/    1     0%  Info:                USRMCLK:     0\/    1     0%  Info:                CLKDIVF:     0\/    4     0%  Info:              ECLKSYNCB:     0\/   10     0%  Info:                DLLDELD:     0\/    8     0%  Info:                 DDRDLL:     0\/    4     0%  Info:                DQSBUFM:     0\/    8     0%  Info:        TRELLIS_ECLKBUF:     0\/    8     0%  Info:           ECLKBRIDGECS:     0\/    2     0%  Info:                   DCSC:     0\/    2     0%  Info:             TRELLIS_FF:     8\/24288     0%  Info:           TRELLIS_COMB:    17\/24288     0%  Info:           TRELLIS_RAMW:     0\/ 3036     0% <\/code><\/pre>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u043c, \u043e\u043d \u043f\u043e\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0445\u043e\u0434 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0438 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u2014 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u00ab\u0443\u0442\u0440\u044f\u0441\u044b\u0432\u0430\u043d\u0438\u044f\u00bb \u0438 \u00ab\u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043e\u0432\u044b\u0432\u0430\u043d\u0438\u044f\u00bb \u0441\u0445\u0435\u043c\u044b, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0438\u0437 \u043d\u0435\u0451 \u043b\u0438\u0448\u043d\u0438\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u0438 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439. \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0442\u043e\u0445\u0430\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439, \u0442.\u00a0\u0435. \u0432 \u043d\u0435\u043c \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p> \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>nextpnr<\/strong> \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0434\u043b\u044f \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u043e \u0447\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c:<\/p>\n<pre><code>Info: Max frequency for clock '$glbnet$CLK$TRELLIS_IO_IN': 457.04 MHz (PASS at 12.00 MHz)<\/code><\/pre>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u043c \u0441\u043e\u043e\u0431\u0449\u0430\u044e\u0442, \u0447\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 457,02 \u041c\u0413\u0446 \u0438 \u043e\u043d\u0430 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 (pass) \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0445 \u043b\u0438\u043c\u0438\u0442 \u0432 12,00 \u041c\u0413\u0446. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0432\u0441\u0435 \u043e\u043a \u0438 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c\u0441\u044f \u043d\u0435 \u043e \u0447\u0435\u043c. \u041d\u043e \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 \u2014 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0438\u0436\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u0438 \u0442\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d \u0438 \u043f\u043e\u043d\u0438\u0436\u0430\u0442\u044c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0447\u0430\u0441\u0442\u043e\u0442\u0430\u043c, \u043b\u0438\u0431\u043e\u2026 \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0442\u043e\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u0435\u0449\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438.  <\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u044b \u00ab\u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0443\u0442\u0438\u00bb \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0432 \u0441\u0445\u0435\u043c\u0435 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0434\u043b\u044f \u043d\u0438\u0445. \u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438, \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u044b\u0434\u0430\u0441\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u043e \u0438\u043c\u0435\u044e\u0449\u0438\u043c\u0441\u044f \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0443\u0442\u044f\u043c:<\/p>\n<pre><code>Info: Max frequency for clock '$glbnet$CLK$TRELLIS_IO_IN': 371.20 MHz (PASS at 12.00 MHz)  Info: Max delay &lt;async>                           -> &lt;async>                          : 2.86 ns  Info: Max delay &lt;async>                           -> posedge CLKInfo: Max delay posedge $glbnet\" class=\"formula inline\">CLK$TRELLIS_IO_IN -> &lt;async>                          : 1.75 ns <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>CLK<\/strong> \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u043b\u0430\u0441\u044c \u0441 457,04 \u041c\u0413\u0446 \u0434\u043e 371,20 \u041c\u0413\u0446, \u043d\u043e \u0432\u0441\u0435 \u0435\u0449\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0432 12,0 \u041c\u0413\u0446. \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0435\u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043b\u0438\u043c\u0438\u0442\u0430 \u043f\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0438 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0442\u043e \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>nextpnr<\/strong> \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439.<\/p>\n<p>\u0423\u0441\u043f\u0435\u0448\u043d\u043e\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>nextnpr<\/strong> \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c:<\/p>\n<pre><code>Info: Program finished normally.<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438, \u043d\u0438\u0436\u0435 \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0432\u044b\u0432\u043e\u0434 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043c\u043e\u0438\u0445 \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0432 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0443\u0442\u044f\u0445 \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 (\u043d\u0438\u0436\u0435 \u043b\u0438\u043c\u0438\u0442\u0430) \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u044f \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0440\u0435\u0448\u0438\u043b.<\/p>\n<p>\u041c\u043e\u0439 \u0434\u0438\u0437\u0430\u0439\u043d <strong>VexRiscvWithHUB12ForKarnix<\/strong> (\u0441\u043c. \u0433\u043b\u0430\u0432\u0443 18) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u044f\u0434\u0440\u043e VexRiscv, \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439 Ethernet \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0438 \u0435\u0449\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u0435\u043e \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043d\u044b\u043c\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u0430\u043c\u0438.  \u0414\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u043d\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 60 \u041c\u0413\u0446. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u044b\u043b \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d \u0431\u043b\u043e\u043a PLL \u043d\u0430 \u0432\u0445\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0434\u0430\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 25 \u041c\u0413\u0446 \u043e\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0440\u0430\u0441\u043f\u0430\u044f\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u043f\u043b\u0430\u0442\u0435, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 60 \u041c\u0413\u0446 \u0438 \u043f\u043e\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u044f\u0434\u0440\u043e.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0434\u0438\u0438 (\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f), \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>nextpnr<\/strong> \u0432\u044b\u0434\u0430\u043b\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0443\u0442\u044f\u043c:<\/p>\n<pre><code>Info: Max frequency for clock '$glbnet$io_lan_rxclk$TRELLIS_IO_IN': 62.89 MHz (PASS at 25.00 MHz)  Info: Max frequency for clock '$glbnet$io_lan_txclk$TRELLIS_IO_IN': 65.24 MHz (PASS at 25.00 MHz)  Info: Max frequency for clock             '$glbnet$core_pll_CLKOP': 38.30 MHz (FAIL at 60.00 MHz)   Info: Max delay &lt;async>                                    -> posedge $glbnet$core_pll_CLKOP            : 9.00 ns  Info: Max delay &lt;async>                                    -> posedge $glbnet$io_lan_rxclk$TRELLIS_IO_IN: 2.88 ns  Info: Max delay posedge $glbnet$core_pll_CLKOP             -> &lt;async>                                   : 18.67 ns  Info: Max delay posedge $glbnet$core_pll_CLKOP             -> posedge $glbnet$io_lan_rxclk$TRELLIS_IO_IN: 5.51 ns  Info: Max delay posedge $glbnet$core_pll_CLKOP             -> posedge $glbnet$io_lan_txclk$TRELLIS_IO_IN: 4.07 ns  Info: Max delay posedge $glbnet$io_lan_rxclk$TRELLIS_IO_IN -> posedge $glbnet$core_pll_CLKOP            : 1.84 ns  Info: Max delay posedge $glbnet$io_lan_txclk$TRELLIS_IO_IN -> &lt;async>                                   : 4.24 ns  Info: Max delay posedge $glbnet$io_lan_txclk$TRELLIS_IO_IN -> posedge $glbnet$core_pll_CLKOP : 1.60 ns <\/code><\/pre>\n<p> \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0440\u0430\u0441\u0447\u0435\u0442 \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>core_clk_CLKOP<\/strong> \u0434\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 38.30 \u041c\u0413\u0446.  <\/p>\n<p>\u0414\u043e\u0436\u0434\u0430\u0432\u0448\u0438\u0441\u044c \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438, \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0443\u0442\u044f\u043c:<\/p>\n<pre><code>Info: Max frequency for clock '$glbnet$io_lan_rxclk$TRELLIS_IO_IN': 88.19 MHz (PASS at 25.00 MHz)  Info: Max frequency for clock '$glbnet$io_lan_txclk$TRELLIS_IO_IN': 74.08 MHz (PASS at 25.00 MHz)  ERROR: Max frequency for clock             '$glbnet$core_pll_CLKOP': 56.58 MHz (FAIL at 60.00 MHz)  \u2026 0 warnings, 1 error<\/code><\/pre>\n<p> \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0438 \u0443\u0436\u0430\u043b \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u0442\u0430\u043a, \u0447\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430  <strong>core_pll_CLKOP<\/strong> \u043f\u043e\u0434\u043d\u044f\u043b\u0430\u0441\u044c \u0430\u0436 \u0434\u043e 56,58 \u041c\u0413\u0446, \u043d\u043e \u0432\u0441\u0451 \u0435\u0449\u0435 \u043d\u0435 \u0434\u043e\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u0434\u043e 60,0 \u041c\u0413\u0446.<\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d \u0431\u044b\u043b\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0438 \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c <strong>&#8212;seed<\/strong> \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>nextpnr-ecp5<\/strong> (\u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0432 Makefile). \u042d\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f. \u042f \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u044f \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043c\u043e\u0436\u043d\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0432\u0430\u0440\u044c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u2014 \u0434\u043b\u044f \u043d\u0438\u0445 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0443\u0442\u044f\u0445. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0433\u0434\u0435-\u0442\u043e \u043d\u0430 15-\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430  <strong>core_pll_CLKOP<\/strong> \u043f\u0435\u0440\u0435\u0432\u0430\u043b\u0438\u043b\u0430 \u0437\u0430 60,0 \u041c\u0413\u0446 \u0438 \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c. \u041d\u0438\u0436\u0435 \u0432\u044b\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u043e\u0442 <strong>nextpnr<\/strong>:<\/p>\n<pre><code>Info: Max frequency for clock '$glbnet$io_lan_rxclk$TRELLIS_IO_IN': 82.36 MHz (PASS at 25.00 MHz)  Info: Max frequency for clock '$glbnet$io_lan_txclk$TRELLIS_IO_IN': 67.20 MHz (PASS at 25.00 MHz)  Info: Max frequency for clock             '$glbnet$core_pll_CLKOP': 61.35 MHz (PASS at 60.00 MHz) <\/code><\/pre>\n<p> \u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u2014 \u044d\u0442\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>&#8212;speed<\/strong> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0434\u0430\u0435\u0442 \u00ab\u0433\u0440\u0435\u0439\u0434\u00bb (\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f) \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421. \u041d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 6-\u0433\u043e \u0433\u0440\u0435\u0439\u0434\u0430, \u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432 <strong>speed<\/strong> \u0434\u043e 7-\u0433\u043e \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d \u0440\u044f\u0434\u043e\u043c \u0442\u0435\u0441\u0442\u043e\u0432. \u0414\u0430, \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0431\u043e\u043b\u0435\u0435 \u043e\u043f\u0430\u0441\u043d\u044b\u0439, \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0432\u0435\u0441\u0442\u0438 \u0432 \u0441\u0430\u043c\u044b\u0439 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u0440\u0438\u0431\u0435\u0433\u0430\u0442\u044c \u043a \u043d\u0435\u043c\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u043e \u043d\u0435 \u0434\u043b\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0438\u0437\u0434\u0435\u043b\u0438\u044f.<\/p>\n<p><a class=\"anchor\" name=\"12\" id=\"12\"><\/a><\/p>\n<h2> 12. \u0421\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u042d\u0412\u041c<\/h2>\n<p> \u0418\u0434\u0435\u044f \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u043f\u0440\u0438\u0448\u043b\u0430 \u043b\u044e\u0434\u044f\u043c \u0432 \u0433\u043e\u043b\u043e\u0432\u044b \u0441\u0440\u0430\u0437\u0443, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0431\u044a\u0435\u043c\u043d\u044b\u0435 \u043f\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0423 \u0438 \u041f\u041b\u0418\u0421.  \u041d\u0430 \u0441\u0430\u0439\u0442\u0435 Wikipedia \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0435 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u043e\u0439 \u041f\u041b\u0418\u0421 \u0435\u0441\u0442\u044c \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u0434\u0435\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u00ab\u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0439\u00bb \u042d\u0412\u041c \u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0430 \u043d\u0435\u043a\u0438\u043c \u0421\u0442\u0438\u0432\u043e\u043c \u041a\u0430\u0441\u0441\u0435\u043b\u044c\u043c\u0430\u043d\u043e\u043c \u0432 1987 \u0433\u043e\u0434\u0443 \u0438, \u043f\u0440\u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0446\u0435\u043d\u0442\u0440\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0412\u041c\u0424 \u0421\u0428\u0410 (Naval Surface Warfare Department), \u0442\u0430\u043a\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0431\u044b\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0438 \u0437\u0430\u043f\u0430\u0442\u0435\u043d\u0442\u043e\u0432\u0430\u043d\u0430 \u0432 1992 \u0433\u043e\u0434\u0443. \u041c\u0430\u0448\u0438\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0430 600 000 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0432\u0435\u043d\u0442\u0438\u043b\u0435\u0439 (\u0442.\u00a0\u0435. \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0435 \u043c\u0430\u043a\u0440\u043e\u044f\u0447\u0435\u0435\u043a \u0438 \u043d\u0435 LUT-\u043e\u0432), \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u0430 \u043c\u0430\u0448\u0438\u043d\u0430 \u0431\u044b\u043b\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u0445 PAL \u0438 PLD. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u044d\u0442\u043e\u043c \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u0438 \u043c\u043d\u0435 \u043d\u0430\u0439\u0442\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c.<\/p>\n<p> \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u044d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0442\u0443\u0442 \u0436\u0435 \u043f\u043e\u0434\u0441\u0442\u0435\u0433\u043d\u0443\u043b\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0435 \u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0445 \u044f\u0434\u0435\u0440 (\u0438\u043b\u0438 \u00absoft-core\u00bb). \u0422\u0430\u043a, \u0432 1990-\u0445 \u0433\u043e\u0434\u0430\u0445 \u0432\u0441\u0435 \u0438\u043c\u0435\u043d\u0438\u0442\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0438 \u041f\u041b\u0418\u0421 \u043e\u0442\u043c\u0435\u0442\u0438\u043b\u0438\u0441\u044c \u0432\u044b\u043f\u0443\u0441\u043a\u043e\u043c \u0441\u0432\u043e\u0438\u0445 8-\u043c\u0438 \u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u044f\u0434\u0435\u0440: PicoBlaze \u043e\u0442 Xilinx, Nios \u043e\u0442 Altera, LatticeMicro8 \u043e\u0442 Lattice Semi. \u0412\u0441\u0435 \u044d\u0442\u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u044f\u0434\u0440\u0430 \u0431\u044b\u043b\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043f\u043e RISC \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 (\u043f\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u043c\u0435\u0440\u043a\u0430\u043c) \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u044f\u0434\u0440\u043e <a href=\"https:\/\/en.wikipedia.org\/wiki\/LatticeMico8\" rel=\"noopener noreferrer nofollow\">LatticeMicro8<\/a> \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e \u0432\u0441\u0435\u0433\u043e <strong>200 LUT-\u043e\u0432<\/strong>. \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 2000-\u0445 \u0433\u043e\u0434\u043e\u0432 \u0432\u0441\u0435 \u043e\u043d\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0430\u043f\u0433\u0440\u0435\u0439\u0434: <a href=\"https:\/\/en.wikipedia.org\/wiki\/MicroBlaze\" rel=\"noopener noreferrer nofollow\">MicroBlaze<\/a> \u2014 32\/64 \u0431\u0438\u0442 RISC, <a href=\"\/H\/---\/Articles\/Nios%20II\" rel=\"noopener noreferrer nofollow\">Nios II<\/a> &#8212;  32 \u0431\u0438\u0442 RISC \u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/LatticeMico32\" rel=\"noopener noreferrer nofollow\">LatticeMicro32<\/a> \u2014 \u0442\u043e\u0436\u0435 32 \u0431\u0438\u0442 RISC.<\/p>\n<p> \u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0435 \u044f\u0434\u0440\u0430 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u043b\u0438\u0441\u044c \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b (IP-\u0431\u043b\u043e\u043a\u0438) \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0444\u0438\u0440\u043c\u0435\u043d\u043d\u043e\u0433\u043e IDE, \u043d\u043e \u043a \u043a\u043e\u043d\u0446\u0443 2000-\u0445 \u0433\u043e\u0434\u043e\u0432 \u0432\u0441\u0435 \u043e\u043d\u0438 \u043b\u0438\u0431\u043e \u0431\u044b\u043b\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u043f\u043e\u0434 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u043c\u0438 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f\u043c\u0438, \u043b\u0438\u0431\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0435 \u043a\u043b\u043e\u043d\u044b \u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438. \u0421\u0440\u0435\u0434\u0438 \u0447\u0438\u0441\u0442\u043e \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0445 \u044f\u0434\u0435\u0440 \u0441\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c <a href=\"https:\/\/en.wikipedia.org\/wiki\/OpenRISC\" rel=\"noopener noreferrer nofollow\">OpenRISC<\/a> (or1k) \u2014 \u043f\u0440\u043e\u0435\u043a\u0442 \u0414\u0430\u043c\u044c\u044f\u043d\u0430 \u041b\u0430\u043c\u043f\u0440\u0435\u0442\u0430 (Damjan Lampret), \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u0434\u0430\u043b\u0435\u043a\u043e\u043c 1999 \u0433\u043e\u0434\u0443, \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0440\u0430\u043d\u043d\u0438\u0445 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a\u043e\u0432 \u0438 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0432 RISC-V. OpenRISC \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0435\u0439 OpenCores, \u043d\u043e \u043f\u0440\u043e\u043f\u043e\u0432\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u00ab<a href=\"https:\/\/en.wikipedia.org\/wiki\/Open-source_hardware\" rel=\"noopener noreferrer nofollow\">open-source hardware<\/a>\u00bb (OSHW) \u0438 \u0438\u043c\u0435\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u0441\u0435\u0439 \u0434\u0435\u043d\u044c, \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0435\u0433\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043a\u0438 \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 RISC-V.<\/p>\n<p> \u0412 \u0442\u0435 \u0436\u0435 2000-\u0435 \u0433\u043e\u0434\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u044f\u0434\u0435\u0440 \u0431\u044b\u043b \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d GNU C Compiler Toolchain, \u0447\u0442\u043e \u0448\u0438\u0440\u043e\u043a\u043e \u0440\u0430\u0441\u043f\u0430\u0445\u043d\u0443\u043b\u043e \u0434\u0432\u0435\u0440\u044c \u0432 \u043c\u0438\u0440 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u043f\u0435\u0440\u0435\u0434 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u0430\u043c\u0438, \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044f\u043c\u0438 \u0438 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c\u0438. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 \u044d\u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u044f\u0434\u0435\u0440 \u0431\u044b\u043b\u0438 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u2014 <a href=\"https:\/\/en.wikipedia.org\/wiki\/FreeRTOS\" rel=\"noopener noreferrer nofollow\">FreeRTOS<\/a>, Linux \u0438 \u0440\u044f\u0434 \u0434\u0440\u0443\u0433\u0438\u0445.<\/p>\n<p> \u0427\u0442\u043e \u0436\u0435 \u0438\u0437 \u0441\u0435\u0431\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440? \u041a\u0430\u043a \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u044d\u0442\u043e \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 HDL, \u0447\u0430\u0449\u0435 \u043d\u0430 Verilog, \u0440\u0435\u0436\u0435 \u043d\u0430 VHDL, \u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0438 \u0442\u0430\u043a\u043e\u0435, \u0447\u0442\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u043c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 \u043c\u043e\u0433\u0443\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u0438 \u0434\u0430\u0436\u0435 \u043d\u0435 \u043d\u0430 Verilog \u0438\u043b\u0438 VHDL, \u0430 \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435.<\/p>\n<p>\u0425\u043e\u0440\u043e\u0448\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c  \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0436\u0438\u0442\u044c <a href=\"https:\/\/github.com\/SpinalHDL\/VexRiscvhttps:\/\/lindemer.github.io\/VEDLIoT\/doc\/vexriscv_intro.html\" rel=\"noopener noreferrer nofollow\">VexRiscv<\/a> \u2014 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u044f\u0434\u0440\u043e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c HDL \u044f\u0437\u044b\u043a\u0435 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <a href=\"https:\/\/github.com\/SpinalHDL\/SpinalHDL\" rel=\"noopener noreferrer nofollow\">SpinalHDL<\/a>. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u0441\u043e\u0444\u0442-\u044f\u0434\u0440\u0430 VexRiscv \u0438 \u044f\u0437\u044b\u043a\u0430 SpinalHDL \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0448\u0432\u0435\u0439\u0446\u0430\u0440\u0435\u0446 \u0428\u0430\u0440\u043b\u044c \u041f\u0430\u043f\u043e\u043d. \u0421\u0432\u043e\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043e\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u043d\u0430 \u043a\u043e\u043d\u043a\u0443\u0440\u0441 <a href=\"https:\/\/riscv.org\/blog\/2018\/12\/risc-v-softcpu-contest-highlights\/\" rel=\"noopener noreferrer nofollow\">RISC-V SoftCPU Contest<\/a> \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c\u043e\u0433\u043e RISC-V Foundation \u0432 2018 \u0433\u043e\u0434\u0443, \u0433\u0434\u0435 \u0437\u0430\u043d\u044f\u043b \u043f\u0435\u0440\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043f\u0440\u0438\u0437 \u0432 $6000 USD \u0437\u0430 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u041f\u041b\u0418\u0421 Lattice \u0438 Microsemi. \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0432 \u0447\u0435\u043c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 VexRiscv \u0438 \u0437\u0430\u0447\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0443 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0444\u0442-\u044f\u0434\u0440\u0430.<\/p>\n<p><a class=\"anchor\" name=\"12.1\" id=\"12.1\"><\/a><\/p>\n<h3> 12.1 \u0421\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u044f\u0434\u0440\u043e VexRiscv<\/h3>\n<p>VexRiscv \u2014 \u044d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e open source \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u044f\u0434\u0440\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b RISC-V. \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0433\u0438\u0431\u043a\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u044f\u0434\u0440\u043e, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0436\u0430\u0442\u044c \u0434\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0447\u0435\u043d\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u0435 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u0434\u043b\u044f \u00ab\u0433\u043e\u043b\u043e\u0433\u043e \u0436\u0435\u043b\u0435\u0437\u0430\u00bb, \u0430 \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c,  \u0432\u043a\u043b\u044e\u0447\u0438\u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 MMU, FPU, \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0438 \u0441\u043e\u043e\u0440\u0443\u0434\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u043c \u043c\u043d\u043e\u0433\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u041e\u0421 Linux \u043f\u0440\u044f\u043c\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u041f\u041b\u0418\u0421. \u0428\u0430\u0440\u043b\u044c \u041f\u0430\u043f\u043e\u043d, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a VexRiscv, \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0431\u044b\u0441\u0442\u0440\u043e\u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u0441\u043e\u0444\u0442\u0432\u0435\u0440\u043d\u043e\u0439 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438, \u043f\u0435\u0440\u0435\u043d\u0435\u0441 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0451 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 \u0438\u0434\u0435\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 (<strong>plugin<\/strong>). \u0412 \u0440\u0430\u043c\u043a\u0430\u0445 VexRiscv \u0432\u0441\u0435 \u0435\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u2014 \u044d\u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043a \u0440\u0430\u0437\u043d\u044b\u043c \u0441\u0442\u0430\u0434\u0438\u044f\u043c \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430. \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442 \u0441\u0432\u043e\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (\u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u043e \u0432\u0441\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430. \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b (<strong>service<\/strong>) \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c. \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c. \u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u0443 \u0430\u0432\u0442\u043e\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0433\u0438\u0431\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u0441\u0451, \u0432\u043f\u043b\u043e\u0442\u044c \u043e\u0442 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u043a\u043e\u043c\u0430\u043d\u0434 (<strong>PC<\/strong>) \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0434\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u00ab\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0435\u0439\u00bb (hazards), \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u043e, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043e \u0438 \u0443\u0433\u043b\u0443\u0431\u043b\u0435\u043d\u043e. \u041d\u043e \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435, \u0447\u0442\u043e \u0432 \u043f\u043e\u0433\u043e\u043d\u0435 \u0437\u0430 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c\u044e \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u0432\u0442\u043e\u0440\u0443 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0437\u0430 \u0447\u0442\u043e \u043e\u043d \u0438 \u0431\u044b \u0443\u0434\u043e\u0441\u0442\u043e\u0435\u043d \u043f\u0440\u0438\u0437\u0430.<\/p>\n<p> \u041d\u0438\u0436\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 VexRiscv, \u0432\u0437\u044f\u0442\u044b\u0435 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b README \u043f\u0440\u043e\u0435\u043a\u0442\u0430: <\/p>\n<ol>\n<li>\n<p>\u042f\u0434\u0440\u043e VexRiscv \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 RISC-V:<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>RV32I \u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>[M] \u2014 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0434\u0435\u043b\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>[A] \u2014 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u044f\u0447\u0435\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p>[F] \u2014 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 (floating-point);<\/p>\n<\/li>\n<li>\n<p>[D] \u2014 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u043f\u043e\u0434\u0432\u0438\u0436\u043d\u043e\u0439 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 (double-precision floating-point);<\/p>\n<\/li>\n<li>\n<p>[C] \u2014 \u0441\u0436\u0430\u0442\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 (compressed instruction set), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n<\/li>\n<\/ul>\n<ol start=\"2\">\n<li>\n<p>\u042f\u0434\u0440\u043e VexRiscv \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043e\u0442 \u0434\u0432\u0443\u0445 \u0434\u043e \u043f\u044f\u0442\u0438 \u0441\u0442\u0443\u043f\u0435\u043d\u0435\u0439: [Fetch], Decode, Execute, [Memory], [WriteBack] \u2014 \u0441\u0442\u0443\u043f\u0435\u043d\u0438, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u0432 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445, \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u044f\u0434\u0440\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043e\u0442 1.44 DMIPS\/MHz \u0434\u043e 1.57 DMIPS\/MHz, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0430\u0431\u043e\u0440\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0444\u0438\u0447.<\/p>\n<\/li>\n<li>\n<p>VexRiscv \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0432 \u041f\u041b\u0418\u0421 \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0438 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u0432\u0435\u043d\u0434\u043e\u0440\u043e\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0433\u043e IP-\u0431\u043b\u043e\u043a\u0430, \u0442.\u00a0\u0435. \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u043c \u0438 \u043b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u044b\u043c.<\/p>\n<\/li>\n<li>\n<p>VexRiscv \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0448\u0438\u043d\u044b AXI, Avalon \u0438 Wishbone, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0430 \u0431\u0430\u0437\u0435 \u044d\u0442\u043e\u0433\u043e \u044f\u0434\u0440\u0430 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043c\u043d\u043e\u0433\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b-\u043d\u0430-\u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a MUL\/DIV.<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a 32-\u0445 \u0438 64-\u0445 \u0431\u0438\u0442\u043d\u043e\u0433\u043e FPU.<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043a\u0435\u0448 \u0434\u0430\u043d\u043d\u044b\u0445 (D$) \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 (I$).<\/p>\n<\/li>\n<li>\n<p> \u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 MMU \u0434\u043b\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<\/li>\n<li>\n<p> \u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 JTAG, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0435\u0441\u0442\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 <strong>OpenOCD<\/strong> \u0438 <strong>GDB<\/strong>.<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/riscv.org\/specifications\/privileged-isa\/\" rel=\"noopener noreferrer nofollow\">RISC-V Privileged ISA Specification v1.10<\/a>.<\/p>\n<\/li>\n<li>\n<p> \u0414\u0432\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0441\u0434\u0432\u0438\u0433\u0430: \u043f\u043e\u043b\u043d\u044b\u0439 \u043e\u0434\u043d\u043e\u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u00abfull barrel shifter\u00bb \u0438 \u043c\u043d\u043e\u0433\u043e\u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u00abshiftNumber\u00bb.<\/p>\n<\/li>\n<\/ol>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0438 \u0437\u0430\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u044f\u0434\u0440\u0430 VexRiscv:<\/p>\n<pre><code>VexRiscv small (RV32I, 0.52 DMIPS\/Mhz, no datapath bypass) ->     Artix 7     -> 240 Mhz 556 LUT 566 FF      Cyclone V   -> 194 Mhz 394 ALMs     Cyclone IV  -> 174 Mhz 831 LUT 555 FF      iCE40       -> 85 Mhz 1292 LC VexRiscv small and productive with I$ (RV32I, 0.70 DMIPS\/Mhz, 4KB-I$)  ->     Artix 7     -> 220 Mhz 730 LUT 570 FF      Cyclone V   -> 142 Mhz 501 ALMs     Cyclone IV  -> 150 Mhz 1,139 LUT 536 FF      iCE40       -> 66 Mhz 1680 LC VexRiscv linux balanced (RV32IMA, 1.21 DMIPS\/Mhz 2.27 Coremark\/Mhz, with cache trashing, 4KB-I$, 4KB-D$, single cycle barrel shifter, catch exceptions, static branch, MMU, Supervisor, Compatible with mainstream linux) ->     Artix 7     -> 180 Mhz 2883 LUT 2130 FF      Cyclone V   -> 131 Mhz 1,764 ALMs     Cyclone IV  -> 121 Mhz 3,608 LUT 2,082 FF <\/code><\/pre>\n<p>\u041e\u0442 \u0441\u0435\u0431\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044e, \u0447\u0442\u043e \u043c\u043d\u0435 \u0443\u0434\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u0433\u043e\u043d\u044f\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u044f\u0434\u0440\u043e VexRiscv \u0432 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u00absmall and productive with I$\u00bb \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0434\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u044b 80 \u041c\u0413\u0446. \u0411\u043e\u043b\u0435\u0435 \u00ab\u0436\u0438\u0440\u043d\u044b\u0435\u00bb \u044f\u0434\u0440\u0430 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 50\u041c\u0413\u0446 \u043d\u0430 \u044d\u0442\u043e\u0439 \u0436\u0435 \u043f\u043b\u0430\u0442\u0435.<\/p>\n<p><a class=\"anchor\" name=\"12.2\" id=\"12.2\"><\/a><\/p>\n<h3> 12.2 \u0421\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b-\u043d\u0430-\u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435 \u043d\u0430 \u0431\u0430\u0437\u0435 VexRiscv<\/h3>\n<p> \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043c\u044b \u0443\u0433\u043b\u0443\u0431\u0438\u043c\u0441\u044f \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u044f\u0434\u0440\u0430 VexRiscv, \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u043e\u0442 \u043e \u0447\u0435\u043c. \u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043b\u0438\u0448\u044c \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043c\u0430\u043b\u043e \u0447\u0435\u0433\u043e \u0434\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e\u0442 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043a\u043e\u0434\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u0435\u0451 \u0440\u0430\u0431\u043e\u0442\u044b, \u0430 \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043c\u043e\u0433\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u0430\u0441\u0442\u0438\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043b\u044e\u0431\u0430\u044f \u042d\u0412\u041c, \u043f\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0435 \u2014 \u044d\u0442\u043e <strong>\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440<\/strong>, \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0439 \u0441 <strong>\u043f\u0430\u043c\u044f\u0442\u044c\u044e<\/strong> \u0438 <strong>\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430<\/strong> \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c <strong>\u0448\u0438\u043d\u044b<\/strong>. \u0412\u0441\u0435 \u044d\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u043e\u0434\u0438\u043d \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u00ab\u0421\u0438\u0441\u0442\u0435\u043c\u043e\u0439-\u043d\u0430-\u041a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435\u00bb \u0438\u043b\u0438 \u0421\u043d\u041a (\u043e\u0442 \u0430\u043d\u0433\u043b. \u00abSystem-on-Chip\u00bb \u0438\u043b\u0438 SoC). \u0422\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0432\u0441\u0435\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0438 \u043c\u0430\u0441\u0442\u0435\u0439. \u041c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0432 \u0447\u0438\u0441\u0442\u043e\u043c \u0432\u0438\u0434\u0435 \u0434\u0430\u0432\u043d\u043e \u043d\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c! \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0438\u0437 \u00ab\u043c\u0430\u0442\u0435\u0440\u0438\u0438\u00bb \u041f\u041b\u0418\u0421 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b-\u043d\u0430-\u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u00ab\u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0421\u043d\u041a\u00bb (synthesizable SoC). SpinalHDL \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u044f\u0434\u0440\u043e\u043c VexRiscv \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0421\u043d\u041a \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u0435 IP-\u0431\u043b\u043e\u043a\u0438 \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u043e\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 SpinalHDL, \u0438 \u0432 \u044d\u0442\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 \u0441\u0432\u044f\u0437\u043a\u0430 SpinalHDL+VexRiscv \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u0445\u043e\u0442\u044f \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 IP-\u0431\u043b\u043e\u043a\u0438, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 Verilog \u0438 VHDL. \u0412\u043e\u043e\u0431\u0449\u0435, \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044f\u0434\u0440\u043e VexRiscv \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u044b\u0445 IP-\u0431\u043b\u043e\u043a\u043e\u0432 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 SpinalHDL.<\/p>\n<p> \u0428\u0430\u0440\u043b\u044c \u041f\u0430\u043f\u043e\u043d \u043d\u0435 \u043f\u043e\u043b\u0435\u043d\u0438\u043b\u0441\u044f \u0438 \u0441\u043d\u0430\u0431\u0434\u0438\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u044f\u0434\u0440\u0430 VexRiscv \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438 \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0430\u043c\u0438 (\u0438\u043b\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438) \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0438\u0445 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0421\u043d\u041a, \u044d\u0442\u043e <strong>Murax SoC<\/strong>, <strong>Briey SoC<\/strong> \u0438 <strong>SaxonSoc<\/strong>. \u041f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0435 \u0421\u043d\u041a \u0432\u0445\u043e\u0434\u044f\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 VexRiscv \u0438 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432. <a href=\"https:\/\/github.com\/SpinalHDL\/SaxonSoc\" rel=\"noopener noreferrer nofollow\">SaxonSoc<\/a> \u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u044f\u044f \u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0421\u043d\u041a, \u043d\u0430\u0446\u0435\u043b\u0435\u043d\u043d\u0430\u044f, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043d\u0430 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u0441 <a href=\"https:\/\/github.com\/SpinalHDL\/SaxonSoc#bmb-spec-wip\" rel=\"noopener noreferrer nofollow\">Banana Memory Bus<\/a> (BMB), \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043d\u0430 \u00ab\u043f\u0440\u043e\u0449\u0443\u043f\u044b\u0432\u0430\u043d\u0438\u0435\u00bb \u043d\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0439 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0421\u043d\u041a \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u00ab\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432\u00bb. \u041f\u0440\u043e BMB \u0445\u043e\u0447\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0428\u0430\u0440\u043b\u044f \u041f\u0430\u043f\u043e\u043d\u0430 \u2014 \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u0435\u0440\u0435\u0434\u043e\u0432\u0430\u044f \u0448\u0438\u043d\u0430, \u043b\u0438\u0448\u0435\u043d\u043d\u0430\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0448\u0438\u043d AXI4 \u043e\u0442 ARM \u0438 Tilelink \u043e\u0442 SiFive, \u043e\u043d\u0430 \u043f\u0440\u043e\u0449\u0435, \u0440\u0435\u0448\u0430\u0435\u0442 \u0442\u0435 \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u00abFPGA friendly\u00bb. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u044d\u0442\u0438\u0445 \u0421\u043d\u041a \u043f\u043e\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0439.<\/p>\n<p> <strong><em><\/em>Murex SoC<\/strong><\/p>\n<p> Murex SoC \u2014 \u0441\u0430\u043c\u0430\u044f \u043c\u0430\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u0430\u044f \u0421\u043d\u041a \u043f\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u043c\u044b\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c \u041f\u041b\u0418\u0421, \u043c\u043e\u0436\u0435\u0442 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<\/p>\n<ul>\n<li>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u044f\u0434\u0440\u0430\u043c\u0438 VexRiscv \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 RV32I[M].<\/p>\n<\/li>\n<li>\n<p>\u0418\u043c\u0435\u0435\u0442 JTAG debugger (Eclipse\/GDB\/OpenOCD ready).<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 On-chip RAM (\u0442.\u00a0\u0435. RAM, \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0432\u043d\u0443\u0442\u0440\u0438 \u041f\u041b\u0418\u0421).<\/p>\n<\/li>\n<li>\n<p>\u041e\u0434\u0438\u043d \u0432\u0445\u043e\u0434 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0431\u0435\u0437 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u0430\u044f \u0448\u0438\u043d\u0430 APB3.<\/p>\n<\/li>\n<li>\n<p>32 \u043f\u0438\u043d\u043e\u0432\u044b\u0439 GPIO \u043f\u043e\u0440\u0442.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0434\u0438\u043d 16-\u0442\u0438 \u0431\u0438\u0442\u043d\u044b\u0439 prescaler, \u0434\u0432\u0430 16-\u0442\u0438 \u0431\u0438\u0442\u043d\u044b\u0445 \u0442\u0430\u0439\u043c\u0435\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>UART \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 FIFO \u0434\u043b\u044f TX \u0438 RX.<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u043d\u041a Murax SoC \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430, \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438, \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0430\u043c\u0438\u0445 \u044f\u0434\u0435\u0440 VexRiscv, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0414\u0430\u043b\u0435\u0435 \u044f \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e \u043e\u0434\u0438\u043d \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u044d\u0442\u0443 \u0421\u043d\u041a \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 IP-\u0431\u043b\u043e\u043a\u0430\u043c\u0438 (\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u0431\u043b\u043e\u043a\u043e\u043c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 FastEthernet).<\/p>\n<p>\u041f\u043e\u043b\u043d\u0430\u044f \u0421\u043d\u041a Murax SoC \u0441 \u044f\u0434\u0440\u043e\u043c VexRiscv \u0441 \u00abbypass\u00bb \u0441\u0442\u0430\u0434\u0438\u044f\u043c\u0438 \u043f\u0440\u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u043b\u044f \u041f\u041b\u0418\u0421 Lattice iCE40 \u0443\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 2800 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044f\u0447\u0435\u0435\u043a \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 66 \u041c\u0413\u0446.<\/p>\n<p><strong><em><\/em>Briey SoC<\/strong><\/p>\n<p> Briey SoC \u2014 \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0432\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u0430\u044f \u0421\u043d\u041a. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443 Briey SoC, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u0443\u044e \u043d\u0430 \u0440\u0438\u0441. 20, \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u0442\u043e\u0439 \u0421\u043d\u041a \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043d\u043d\u0435\u043a\u0442 (\u0448\u0438\u043d\u0430) AXI4, \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u044f\u0434\u0440\u043e VexRiscv (\u0434\u0432\u0443\u043c\u044f \u043f\u043e\u0440\u0442\u0430\u043c\u0438 \u2014 \u0434\u043b\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u043e), \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u0430\u044f \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044f \u0438 \u043c\u043e\u0441\u0442\u044b \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0448\u0438\u043d\u044b. \u041e\u0442\u043b\u0438\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0439 \u0421\u043d\u041a \u043e\u0442 Murax SoC \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043a \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u044f\u0434\u0440\u0443 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u0435\u0448\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0410 \u0435\u0449\u0435 Briey SoC \u0438\u043c\u0435\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (SDRAM).<\/p>\n<p>\u041d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0434\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u043e Briey SoC \u2014 \u044d\u0442\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u0448\u0438\u043d\u0430 AXI4, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u043e\u0439 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u0439 IP-\u0431\u043b\u043e\u043a, \u043a\u0430\u043a \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439, \u0442\u0430\u043a \u0438 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0439. \u0412 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 SpinalHDL, \u043a\u0441\u0442\u0430\u0442\u0438, \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u0433\u0430\u0442\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 (IP-\u0431\u043b\u043e\u043a\u043e\u0432), \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435: FastEthernet (MII), I2C, JTAD, SIO, SPI, UART, USB, VGA, PLIC, \u043c\u043e\u0441\u0442\u044b \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u0448\u0438\u043d\u044b (APB3, AMBA3, AMBA4, Wishbone) \u0438 \u043c\u043d\u043e\u0433\u043e \u0447\u0435\u0433\u043e \u0435\u0449\u0435.<\/p>\n<p>\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Briey SoC \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435:<\/p>\n<p><a href=\"https:\/\/spinalhdl.github.io\/SpinalDoc-RTD\/dev\/SpinalHDL\/miscelenea\/lib\/briey\/hardware_toplevel.html\" rel=\"noopener noreferrer nofollow\">https:\/\/spinalhdl.github.io\/SpinalDoc-RTD\/dev\/SpinalHDL\/miscelenea\/lib\/briey\/hardware_toplevel.html<\/a><\/p>\n<p><a class=\"anchor\" name=\"fig20\" id=\"fig20\"><\/a><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/234\/4c2\/e74\/2344c2e747f425c6cdd9aeaf8e1c4456.png\" alt=\"\u0420\u0438\u0441. 20. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 Briey SoC \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 VexRiscv.\" title=\"\u0420\u0438\u0441. 20. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 Briey SoC \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 VexRiscv.\" width=\"1556\" height=\"1191\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/234\/4c2\/e74\/2344c2e747f425c6cdd9aeaf8e1c4456.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 20. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 Briey SoC \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 VexRiscv.<\/em><\/figcaption><\/div>\n<\/figure>\n<p><em><\/em><\/p>\n<p><strong>SaxonSoc<\/strong><\/p>\n<p>SaxonSoc \u2014 \u043c\u043d\u043e\u0433\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u0430\u044f \u0421\u043d\u041a \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c Linux \u0438, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u044d\u0442\u0438\u043c \u0432\u0441\u0435 \u0441\u043a\u0430\u0437\u0430\u043d\u043e. \u0417\u0430\u043c\u0435\u0447\u0443 \u043b\u0438\u0448\u044c, \u0447\u0442\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 SaxonSoc \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u0441\u0432\u043e\u0439 \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043d\u043d\u0435\u043a\u0442 Banana Memory Bus, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0441\u0442\u044b \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u0448\u0438\u043d\u044b. \u041e\u0434\u0438\u043d \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 SaxonSoc \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0430 \u0440\u0438\u0441. 21. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dd5\/55d\/e5a\/dd555de5a37990f29d51889f901ac823.png\" alt=\"\u0420\u0438\u0441. 21. \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 SaxonSoc.\" title=\"\u0420\u0438\u0441. 21. \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 SaxonSoc.\" width=\"1000\" height=\"600\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dd5\/55d\/e5a\/dd555de5a37990f29d51889f901ac823.png\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. 21. \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 SaxonSoc.<\/figcaption><\/div>\n<\/figure>\n<p>SaxonSoc \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443: <a href=\"https:\/\/github.com\/SpinalHDL\/SaxonSoc\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/SpinalHDL\/SaxonSoc<\/a><\/p>\n<p>\u0412\u0438\u0434\u0435\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b SaxonSoc \u043e\u0442 \u0430\u0432\u0442\u043e\u0440\u0430:<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65f9fe626748d7d46f7bf9a9\" data-style=\"\" id=\"65f9fe626748d7d46f7bf9a9\" width=\"\"><\/div>\n<p> \u0412\u043e\u043e\u0431\u0449\u0435, \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u0421\u043d\u041a \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0432\u044f\u0437\u043a\u0438 SpinalHDL\/VexRiscv \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0437\u043c\u044b\u0442\u043e\u0435. \u041c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0438\u0437 \u044d\u0442\u0438\u0445 \u0442\u0440\u0435\u0445 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0421\u043d\u041a, \u0443\u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u043d\u0435\u0451 \u0432\u0441\u0451 \u043d\u0435\u043d\u0443\u0436\u043d\u043e\u0435, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u043e\u0435 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u042d\u0412\u041c \u043f\u043e\u0434 \u0441\u0432\u043e\u0438 \u0437\u0430\u0434\u0430\u0447. \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u044d\u0442\u0438\u043c \u0438 \u0437\u0430\u0439\u043c\u0435\u043c\u0441\u044f, \u043d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 SpinalHDL \u0438 \u0447\u0435\u043c \u043e\u043d \u0442\u0430\u043a \u0445\u043e\u0440\u043e\u0448.<\/p>\n<p><a class=\"anchor\" name=\"13\" id=\"13\"><\/a><\/p>\n<h2> 13. \u042f\u0437\u044b\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b SpinalHDL<\/h2>\n<p>\u042f\u0437\u044b\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b SpinalHDL \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0432 2014 \u0433\u043e\u0434\u0443. \u042d\u0442\u043e \u044f\u0437\u044b\u043a \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\u044b\u0445 \u043f\u0435\u0440\u0435\u0434\u0430\u0447 (RTL). SpinalHDL \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f <a href=\"https:\/\/en.wikipedia.org\/wiki\/Scala_(programming_language)\" rel=\"noopener noreferrer nofollow\">Scala<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u042f\u041f Java, \u0438\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 SpinalHDL \u2014 \u044d\u0442\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a. \u041d\u043e \u043d\u0435 \u0441\u043f\u0435\u0448\u0438\u0442\u0435 \u0432\u043e\u0440\u043e\u0442\u0438\u0442\u044c \u043d\u043e\u0441. \u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u043e SpinalHDL \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 Scala \u0432\u0430\u043c \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u0442 Scala \u0432 SpinalHDL \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438. SpinalHDL \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u0434\u0435\u043b\u0430\u044f \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043e\u0447\u0435\u043d\u044c \u0431\u043b\u0438\u0437\u043a\u0438\u043c \u043a VHDL, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043c\u0435\u043d\u0435\u0435 \u043c\u043d\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u043d\u044b\u043c \u0438 \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u044b\u043c, \u0442.\u00a0\u0435. \u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043c\u0435\u043d\u044c\u0448\u0435. \u0412\u043e\u0442 \u0447\u0442\u043e \u0441\u0430\u043c \u0430\u0432\u0442\u043e\u0440 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043f\u0440\u043e \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u043d\u044b\u0439 \u0438\u043c \u044f\u0437\u044b\u043a:<\/p>\n<blockquote>\n<p> <em>\u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u044f\u0437\u044b\u043a\u0438 HDL [\u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0443 Verilog \u0438 VHDL] \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u044b\u0431\u043e\u0440 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0434\u043b\u0438\u043d\u043d\u044b\u043c \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u043c\u0441\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u043d\u0430 \u0442\u0430\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0430 \u043e\u0442\u043b\u0430\u0434\u043a\u0430 \u0438 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0447\u0435\u043d\u044c \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0435\u043d\u043e \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432. SpinalHDL \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u0441\u0430\u043c\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b\u2026<\/em><\/p>\n<p><em><\/em>\u2013 \u0428\u0430\u0440\u043b\u044c \u041f\u0430\u043f\u043e\u043d, \u0430\u0432\u0442\u043e\u0440 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c SpinalHDL.<\/p>\n<\/blockquote>\n<p> \u041e\u0442 \u0441\u0435\u0431\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044e, \u0447\u0442\u043e \u0432 \u0441\u0440\u0435\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043d\u0430 SystemVerilog \u0438 VHDL \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0440\u0438\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0446\u0435\u043f\u0435\u0439 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u0431\u0440\u043e\u0441\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 <strong>process\/always <\/strong>\u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0438 \u0442.\u00a0\u0434. \u0412\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u0432 SpinalHDL \u043d\u0435\u0442.<\/p>\n<p>SpinalHDL \u0431\u044b\u043b \u043d\u0435 \u043f\u0435\u0440\u0432\u044b\u043c HDL \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Scala. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 HDL \u044f\u0437\u044b\u043a \u043a\u0430\u043a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Chisel_(programming_language)\" rel=\"noopener noreferrer nofollow\">Chisel<\/a>  <em>\u2014<\/em> \u0431\u0440\u0430\u0442 \u0431\u043b\u0438\u0437\u043d\u0435\u0446, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432 UC Berkeley \u0438 \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432 \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. Chisel \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0431\u044b\u043b \u043f\u043e\u0434\u0445\u0432\u0430\u0447\u0435\u043d \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 SiFive, \u0442\u0435\u043c\u0438 \u0436\u0435 \u043b\u044e\u0434\u044c\u043c\u0438, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 RISC-V, \u0438 \u0441\u0435\u0439\u0447\u0430\u0441  \u0438\u043c\u0435\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0432 \u043a\u0440\u0443\u0433\u0430\u0445 ASIC \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 (\u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u044f\u0434\u0440\u0430 \u043e\u0442 SiFive \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 Chisel). \u0412 \u044d\u0442\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0437\u0430\u0434\u0430\u044e\u0442 \u0430\u0432\u0442\u043e\u0440\u0443 \u044f\u0437\u044b\u043a\u0430 SpinalHDL \u0432\u043e\u043f\u0440\u043e\u0441 <em>\u2014<\/em> \u00ab\u0430 \u043d\u0430\u0444\u0438\u0433\u0430, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c\/\u0431\u044b\u043b Chisel ?\u00bb. \u0418 \u0432\u043e\u0442 \u0435\u0433\u043e \u043e\u0442\u0432\u0435\u0442:<\/p>\n<blockquote>\n<p> <em>\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 SpinalHDL \u044f, \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u0431\u044b\u043b \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d \u044f\u0437\u044b\u043a\u043e\u043c Chisel, \u043d\u043e \u043d\u0435 \u043f\u043e\u0434\u0443\u043c\u0430\u0439\u0442\u0435, \u0447\u0442\u043e SpinalHDL \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u044b\u043c \u0435\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435\u043c [fork-\u043e\u043c]. Chisel \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c (ASIC), \u043e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u043c\u0441\u044f API. SpinalHDL \u0436\u0435 \u043d\u0430\u0446\u0435\u043b\u0435\u043d \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0434\u043b\u044f \u041f\u041b\u0418\u0421 \u0438, \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e, \u0443\u0436\u0435 \u00ab\u0437\u0430\u043c\u043e\u0440\u043e\u0436\u0435\u043d\u00bb [\u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u0440\u043f\u0435\u0432\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439]. \u042f\u0437\u044b\u043a \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u2014 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0438, \u0438\u043d\u043e\u0433\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u0444\u0438\u0447\u0438, \u043d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u044f\u0437\u044b\u043a\u0430 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u043c \u043d\u0430 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0431\u0443\u0434\u0443\u0449\u0435\u0435.<\/em><\/p>\n<p><em><\/em>\u2013 \u0428\u0430\u0440\u043b\u044c \u041f\u0430\u043f\u043e\u043d, \u0430\u0432\u0442\u043e\u0440 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c SpinalHDL.<\/p>\n<\/blockquote>\n<p> SpinalHDL \u2014 \u044d\u0442\u043e \u043c\u0435\u0442\u0430\u044f\u0437\u044b\u043a. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u043e\u0434, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 SpinalHDL, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d, \u0430 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043d \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u043c HDL \u044f\u0437\u044b\u043a\u0435. \u0422\u043e \u0435\u0441\u0442\u044c, \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 SpinalHDL, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0435\u0451 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b (\u0438\u043b\u0438 \u043d\u0430\u0431\u043e\u0440 \u0444\u0430\u0439\u043b\u043e\u0432) \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog \u0438\u043b\u0438 VHDL (\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u0430), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u043b\u0435\u0435 \u043f\u043e\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0432\u0445\u043e\u0434 \u0441\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Yosys.<\/p>\n<p>SpinalHDL \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0438 \u0431\u043e\u0433\u0430\u0442\u043e\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u043e\u0439. \u0412 \u044f\u0437\u044b\u043a\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0438\u0437\u0430\u0439\u043d \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 Verilog \u0438\u043b\u0438 VHDL, \u043e\u0431\u0435\u0440\u043d\u0443\u0432 \u0435\u0433\u043e \u0432 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 IP \u00ab\u0447\u0435\u0440\u043d\u044b\u0439 \u044f\u0449\u0438\u043a\u00bb (\u00abblackbox\u00bb), \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0430\u043b\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043a\u0430\u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 SpinalHDL.<\/p>\n<p>SpinalHDL \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0430. \u0412\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e SpinalHDL \u044d\u0442\u043e Scala \u2014 \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u044b\u0439 \u041e\u041e\u041f. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0435\u0441\u0442\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u0432 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043d\u0435 \u043f\u0440\u0438\u0431\u0435\u0433\u0430\u044f \u043a \u043f\u043e\u043c\u043e\u0449\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432, \u043a\u0430\u043a \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0441\u0440\u0435\u0434\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 HDL \u2014 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 C++, \u043c\u0430\u0441\u0441\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u043d\u0430 Perl, Shell \u0438 Tcl \u0438 \u0443\u0436 \u043f\u043e\u0442\u043e\u043c \u043a\u043e\u0434 \u043d\u0430 Verilog \u0438\u043b\u0438 VHDL.<\/p>\n<p>\u041f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u0436\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 HDL \u044f\u0437\u044b\u043a \u2014 <a href=\"https:\/\/en.wikipedia.org\/wiki\/SystemC\" rel=\"noopener noreferrer nofollow\">SystemC<\/a>. \u042d\u0442\u043e\u0442 HDL, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e SpinalHDL, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043a \u044f\u0437\u044b\u043a\u0443 C++ \u0438 \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u0430\u044f\u0437\u044b\u043a\u043e\u043c \u2014 \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c\u0438. \u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043a\u043e\u0434 \u043d\u0430 SystemC \u2014 \u044d\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u0443\u0436\u0430\u0441\u043d\u043e\u0435: \u043e\u043d \u043d\u0435 \u0447\u0438\u0442\u0430\u0435\u043c, \u0435\u0433\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e, \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043d\u0435\u043b\u043e\u0433\u0438\u0447\u0435\u043d \u0438 \u043f\u0435\u0441\u0442\u0440\u0438\u0442 \u043c\u0430\u043a\u0440\u043e\u0441\u0430\u043c\u0438. \u041f\u0440\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u044d\u0442\u0438\u0445 \u0436\u0435 \u0437\u0430\u0434\u0430\u0447 \u043d\u0430 SpinalHDL \u043a\u043e\u0434 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u043e\u0440\u043e\u0447\u0435, \u043f\u0440\u043e\u0449\u0435 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0440\u0430\u0441\u0438\u0432\u0435\u0435. \u041d\u0430 Habr-\u0435, \u043a\u0441\u0442\u0430\u0442\u0438, \u0435\u0441\u0442\u044c \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u043e SystemC \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <strong>@Daffodil<\/strong>:<\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/274137\/\" rel=\"noopener noreferrer nofollow\">\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u043d\u0430 C++\/SystemC \u0433\u043b\u0430\u0437\u0430\u043c\u0438 SystemVerilog \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430<\/a><\/p>\n<p>\u0412\u0441\u0451 \u044d\u0442\u043e \u0434\u0430\u0435\u0442 \u0442\u043e\u043b\u0447\u043e\u043a \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u044f\u0437\u044b\u043a\u043e\u0432 \u043c\u0435\u0442\u0430-\u043c\u0435\u0442\u0430 \u0443\u0440\u043e\u0432\u043d\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u044f\u0437\u044b\u043a (\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a) <a href=\"https:\/\/github.com\/enjoy-digital\/litex\/wiki\" rel=\"noopener noreferrer nofollow\">LiteX<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0434\u043b\u044f Python, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0431\u043b\u043e\u043a\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043d\u0430  SpinalHDL, \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<p> \u041e\u0431\u0449\u0438\u043c\u0438 \u043c\u0430\u0437\u043a\u0430\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 SpinalHDL \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>1. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 RTL \u0434\u0438\u0437\u0430\u0439\u043d \u043d\u0430 SpinalHDL \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 <strong>.scala<\/strong> \u0444\u0430\u0439\u043b (\u0438\u043b\u0438 \u0444\u0430\u0439\u043b\u044b).<\/p>\n<p>2. \u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 <strong>.scala<\/strong> \u043a\u043e\u0434 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <strong>Scala Build Tools (SBT)<\/strong> \u0432 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 <strong>JVM<\/strong>.<\/p>\n<p>3. \u0418\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Java \u043c\u0430\u0448\u0438\u043d\u044b \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043d\u0430\u0431\u043e\u0440 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u043c Verilog (\u0438\u043b\u0438 VHDL).<\/p>\n<p>4. \u041f\u043e\u0434\u0430\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 Verilog\/VHDL \u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u0432\u0445\u043e\u0434 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u044e\u0449\u0435\u043c\u0443 \u0442\u0443\u043b\u0443 (Yosys, Quartus, Vivado \u0438 \u0442.\u00a0\u0434.), \u043f\u043e\u043b\u0443\u0447\u0430\u044f \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0434\u043b\u044f \u041f\u041b\u0418\u0421.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c90\/610\/421\/c906104219ca425d148427309700340e.png\" alt=\"\u0420\u0438\u0441. 22. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 SpinalHDL \u0432 \u043e\u0431\u0449\u0438\u0445 \u043c\u0430\u0437\u043a\u0430\u0445.\" title=\"\u0420\u0438\u0441. 22. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 SpinalHDL \u0432 \u043e\u0431\u0449\u0438\u0445 \u043c\u0430\u0437\u043a\u0430\u0445.\" width=\"451\" height=\"489\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c90\/610\/421\/c906104219ca425d148427309700340e.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 22. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 SpinalHDL \u0432 \u043e\u0431\u0449\u0438\u0445 \u043c\u0430\u0437\u043a\u0430\u0445.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0410\u0432\u0442\u043e\u0440 \u044f\u0437\u044b\u043a\u0430 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430 SpinalHDL \u043d\u0435 \u0432\u043d\u043e\u0441\u0438\u0442 \u0432 \u043b\u043e\u0433\u0438\u043a\u0443 \u0441\u0445\u0435\u043c\u044b \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 (no logic overhead), \u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 Verilog\/VHDL \u043a\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0438\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0442\u0443\u043b\u0430\u043c\u0438. \u0412 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u043a\u043e\u0434\u0435 \u043d\u0430 SpinalHDL.<\/p>\n<p> \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0435\u0434, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e SpinalHDL \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438 \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u044b\u0439 \u044f\u0437\u044b\u043a, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0434 RTL, \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0445\u0435\u043c\u044b \u0438 \u043a\u043e\u0434\u0430, \u0432\u0437\u044f\u0442\u044b\u0445 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u0441\u0445\u0435\u043c\u0430 (\u0440\u0438\u0441. 23), \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0438 \u0434\u0432\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430-\u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430: \u043e\u0434\u0438\u043d \u0441 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c \u0441\u0431\u0440\u043e\u0441\u043e\u043c, \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0435\u0437 \u0442\u0430\u043a\u043e\u0432\u043e\u0433\u043e.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3a8\/126\/f1a\/3a8126f1aaa69fc1d8d2de8b028d35f0.png\" alt=\"\u0420\u0438\u0441. 23. \u041f\u0440\u0438\u043c\u0435\u0440 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u044b. \u0412\u0437\u044f\u0442\u043e \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430 SpinalHDL.\" title=\"\u0420\u0438\u0441. 23. \u041f\u0440\u0438\u043c\u0435\u0440 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u044b. \u0412\u0437\u044f\u0442\u043e \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430 SpinalHDL.\" width=\"1013\" height=\"201\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3a8\/126\/f1a\/3a8126f1aaa69fc1d8d2de8b028d35f0.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 23. \u041f\u0440\u0438\u043c\u0435\u0440 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u044b. \u0412\u0437\u044f\u0442\u043e \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430 SpinalHDL.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043d\u0430 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 HDL \u044f\u0437\u044b\u043a\u0430\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u00ab\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432\u00bb \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0430 \u00ab\u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438\u00bb (\u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u043f\u043e \u0435\u0433\u043e \u043c\u043d\u0435\u043d\u0438\u044e, \u0431\u0443\u0434\u0443\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435), \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u043b\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0442. \u0422\u0430\u043a \u0436\u0435, \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 (\u0441\u043e \u0441\u0431\u0440\u043e\u0441\u043e\u043c \u0438 \u0431\u0435\u0437). \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0434 \u043d\u0430 VHLD \u0438\u0437 \u0442\u0440\u0435\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432:<\/p>\n<pre><code class=\"vhdl\">signal mySignal : std_logic; signal myRegister : unsigned(3 downto 0); signal myRegisterWithReset : unsigned(3 downto 0);  process(cond) begin     mySignal &lt;= '0';     if cond = '1' then         mySignal &lt;= '1';     end if; end process;  process(clk) begin     if rising_edge(clk) then         if cond = '1' then             myRegister &lt;= myRegister + 1;         end if;     end if; end process;  process(clk,reset) begin     if reset = '1' then         myRegisterWithReset &lt;= 0;     elsif rising_edge(clk) then         if cond = '1' then             myRegisterWithReset &lt;= myRegisterWithReset + 1;         end if;     end if; end process;<\/code><\/pre>\n<p> \u041d\u0430 SpinalHDL \u044d\u0442\u0430 \u0436\u0435 \u0441\u0430\u043c\u0430\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"scala\">val mySignal             = Bool() val myRegister           = Reg(UInt(4 bits)) val myRegisterWithReset  = Reg(UInt(4 bits)) init(0)  mySignal := False when(cond) {     mySignal            := True     myRegister          := myRegister + 1     myRegisterWithReset := myRegisterWithReset + 1 }<\/code><\/pre>\n<p> \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0432 \u043a\u043e\u0434\u0435 \u043d\u0430 SpinalHDL \u043d\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 (\u043e\u043d\u0438 \u0441\u043a\u0440\u044b\u0442\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0438\u043f\u043e\u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445). \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u0431\u043b\u043e\u043a\u0435 \u043f\u043e\u0434 \u043e\u0434\u043d\u0438\u043c \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c when(). \u042f \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0434\u0430\u0432\u043d\u043e \u043f\u0438\u0448\u0443\u0449\u0438\u0445 \u043a\u043e\u0434 \u043d\u0430 Verilog \u0438\/\u0438\u043b\u0438 VHDL, \u0442\u0430\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0448\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u043c. \u041d\u0430 SpinalHDL \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0438\u043b\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u0440\u043c\u043e\u0439, \u0438 \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430, \u0430 \u0441\u0430\u043c \u043a\u043e\u0434 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u0438 \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u043c.<\/p>\n<p><a class=\"anchor\" name=\"13.1\" id=\"13.1\"><\/a><\/p>\n<h3> 13.1 \u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u044f\u0437\u044b\u043a\u0430 SpinalHDL<\/h3>\n<p>\u0414\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 SpinalHDL \u044f \u043d\u0435 \u0431\u0443\u0434\u0443, \u0430 \u043f\u0440\u043e\u0439\u0434\u0443\u0441\u044c \u043f\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043c, \u0447\u0442\u043e\u0431\u044b \u0443 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u043e\u0431\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u044f\u0437\u044b\u043a\u0435. \u0417\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435:<\/p>\n<p> <a href=\"https:\/\/spinalhdl.github.io\/SpinalDoc-RTD\/master\/index.html\" rel=\"noopener noreferrer nofollow\">https:\/\/spinalhdl.github.io\/SpinalDoc-RTD\/master\/index.html<\/a><\/p>\n<p>\u0412 SpinalHDL \u043f\u0440\u0438\u043d\u044f\u0442\u044b \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438, \u043a\u0430\u043a \u0432 Verilog \u0438 VHDL, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<ol>\n<li>\n<p>\u0412\u0441\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f (\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e) \u0432 \u044d\u0442\u043e\u043c \u0436\u0435 \u0442\u0430\u043a\u0442\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0442\u0430\u043a\u0442\u0435 \u0442\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438 \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0438 \u0432 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0441\u0438\u0433\u043d\u0430\u043b \u0438\u043b\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u0432 \u0440\u0430\u0441\u0447\u0435\u0442 \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435 (\u043f\u0440\u0438\u043d\u0446\u0438\u043f \u00ablast assignment wins\u00bb).<\/p>\n<\/li>\n<li>\n<p>\u0421 \u043b\u044e\u0431\u044b\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c \u0438\u043b\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c.<\/p>\n<\/li>\n<\/ol>\n<p> <strong>\u0422\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/strong><\/p>\n<p>SpinalHDL \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u0433\u043e \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043f\u044f\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0438 \u0434\u0432\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u0430. \u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u0438\u043f\u044b \u044d\u0442\u043e: <a href=\"https:\/\/spinalhdl.github.io\/SpinalDoc-RTD\/master\/SpinalHDL\/Data%20types\/bool.html#bool\" rel=\"noopener noreferrer nofollow\"><strong>Bool<\/strong><\/a>, <a href=\"https:\/\/spinalhdl.github.io\/SpinalDoc-RTD\/master\/SpinalHDL\/Data%20types\/bits.html#bits\" rel=\"noopener noreferrer nofollow\"><strong>Bits<\/strong><\/a>, <a href=\"https:\/\/spinalhdl.github.io\/SpinalDoc-RTD\/master\/SpinalHDL\/Data%20types\/Int.html#int\" rel=\"noopener noreferrer nofollow\"><strong>UInt<\/strong><\/a> \u0434\u043b\u044f \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0445, <a href=\"https:\/\/spinalhdl.github.io\/SpinalDoc-RTD\/master\/SpinalHDL\/Data%20types\/Int.html#int\" rel=\"noopener noreferrer nofollow\"><strong>SInt<\/strong><\/a> \u0434\u043b\u044f \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0438 <a href=\"https:\/\/spinalhdl.github.io\/SpinalDoc-RTD\/master\/SpinalHDL\/Data%20types\/bundle.html#bundle\" rel=\"noopener noreferrer nofollow\"><strong>Enum<\/strong><\/a>. \u0414\u0432\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u0430 \u044d\u0442\u043e <a href=\"https:\/\/spinalhdl.github.io\/SpinalDoc-RTD\/master\/SpinalHDL\/Data%20types\/bundle.html#bundle\" rel=\"noopener noreferrer nofollow\"><strong>Bundle<\/strong><\/a> \u2014 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u0438 <a href=\"https:\/\/spinalhdl.github.io\/SpinalDoc-RTD\/master\/SpinalHDL\/Data%20types\/Vec.html#vec\" rel=\"noopener noreferrer nofollow\"><strong>Vec<\/strong><\/a> \u2014 \u043c\u0430\u0441\u0441\u0438\u0432 \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432. \u0414\u043b\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0432 \u0431\u0438\u0442\u0430\u0445.<\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043c\u0435\u0442\u043e\u0434\u044b \u0432\u0438\u0434\u0430 <strong>.asBits()<\/strong>, <strong>.asUInt()<\/strong>, <strong>.asSInt()<\/strong> \u0438 <strong>.asBool()<\/strong>.<\/p>\n<p> <strong>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u044b<\/strong><\/p>\n<p>\u0414\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0432 SpinalHDL \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438:<\/p>\n<p><strong>Reg(type)<\/strong> \u2014 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0442\u0438\u043f\u0430 <strong>type<\/strong>.<\/p>\n<p><strong>RegInit(resetValue)<\/strong> \u2014 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0441 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <strong>resetValue<\/strong>.<\/p>\n<p><strong>RegNext(nextValue)<\/strong> \u2014 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0430\u0436\u0434\u044b\u0439 \u043d\u043e\u0432\u044b\u0439 \u0442\u0430\u043a\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c <strong>nextValue<\/strong>.<\/p>\n<p><strong>RegNextWhen(nextValue, cond)<\/strong> \u2014 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e <strong>RegNext<\/strong>, \u043d\u043e \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <strong>cond<\/strong> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u0442\u0438\u043d\u044b\u043c.<\/p>\n<p> <strong>\u041f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435 :=<\/strong><\/p>\n<p>\u0412 SpinalHDL \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0442\u0438\u043f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f. \u0411\u0443\u0434\u0435\u0442 \u043b\u0438 \u043e\u043d \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u0438\u043b\u0438 \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0438\u043f\u043e\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f: <strong>&lt;><\/strong> &#8212; \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u043e\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 (\u0431\u0430\u043d\u0434\u043b\u044b), \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u0430\u043d\u0434\u043b\u0430.<\/p>\n<p> \u0412 \u0432\u044b\u0448\u0435\u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <strong>mySignal<\/strong> \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0434\u0438\u043d \u0431\u0438\u0442, \u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 <strong>myRegister<\/strong> \u0438 <strong>myRegisterWithReset<\/strong> \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u043e 4 \u0431\u0438\u0442\u0430. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 <strong>init()<\/strong> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0438\u043c\u0435\u0435\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0441\u0431\u0440\u043e\u0441 \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u041f\u041b\u0418\u0421 \u0438 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p> <strong>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 === \u0438 =\/=<\/strong><\/p>\n<p>\u0412 SpinalHDL \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <strong>===<\/strong>. \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0441 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439 \u0438\u043c\u0435\u0435\u0442 \u0432\u0438\u0434 <strong>=\/=<\/strong>. \u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"scala\">io.flag  := (counter === 0) | io.cond1<\/code><\/pre>\n<p> <strong>\u041a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044f ##<\/strong><\/p>\n<pre><code class=\"scala\">io.result := io.high ## io.low<\/code><\/pre>\n<p><strong>\u0410\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/strong><\/p>\n<p>\u041a\u0430\u043a \u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 HDL \u044f\u0437\u044b\u043a\u0430\u0445, \u0432 SpinalHDL \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430\u0434 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438. \u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043d\u0438\u0445:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/62c\/fd1\/c17\/62cfd1c179ad0a433799eae971b50242.png\" width=\"1012\" height=\"649\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/62c\/fd1\/c17\/62cfd1c179ad0a433799eae971b50242.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7de\/6bd\/cd4\/7de6bdcd488a359370180a19fa5ec35d.png\" width=\"820\" height=\"709\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7de\/6bd\/cd4\/7de6bdcd488a359370180a19fa5ec35d.png\"\/><\/figure>\n<p> <strong>\u041c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b in, out, master, slave<\/strong><\/p>\n<p>\u041c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043a \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c (\u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c) \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u0445 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0443 \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <strong>&lt;><\/strong>.<\/p>\n<p> <strong>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b<\/strong><\/p>\n<p>\u0412 SpinalHDL \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u2014 \u044d\u0442\u043e \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u044b\u0439 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u043b\u043e\u043a \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u044b (\u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e <strong>module<\/strong> \u0432 Verilog). \u041b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u043e\u043c-\u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u043e\u043c \u043e\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <strong>Component<\/strong>. \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0447\u043b\u0435\u043d \u043a\u043b\u0430\u0441\u0441\u0430 <strong>io<\/strong> \u0442\u0438\u043f\u0430 <strong>Bundle<\/strong> \u2014 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 (\u043c\u043e\u0434\u0443\u043b\u044c) \u0438\u0437  \u0441\u0445\u0435\u043c\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u0440\u0438\u0441. 24 \u043d\u0430 SpinalHDL \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2fa\/8ff\/9d3\/2fa8ff9d37419a9236b052842aa1a930.png\" alt=\"\u0420\u0438\u0441. 24. \u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u044b \u043a\u0430\u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442.\" title=\"\u0420\u0438\u0441. 24. \u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u044b \u043a\u0430\u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442.\" width=\"354\" height=\"132\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2fa\/8ff\/9d3\/2fa8ff9d37419a9236b052842aa1a930.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 24. \u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u044b \u043a\u0430\u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442.<\/em><\/figcaption><\/div>\n<\/figure>\n<pre><code class=\"scala\">class MyComponent extends Component {   val io = new Bundle {     val a = in Bool     val b = in Bool     val c = in Bool     val result = out Bool   }   val a_and_b = Bool   a_and_b := io.a &amp; io.b      val not_c = ! io.c   io.result := a_and_b | not_c }<\/code><\/pre>\n<p> \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043d\u0430 SpinalHDL \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u0441\u0442 \u043d\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u043d\u0430 VHDL:<\/p>\n<pre><code class=\"vhdl\">entity MyComponent is   port(     io_a : in std_logic;     io_b : in std_logic;     io_c : in std_logic;     io_result : out std_logic   ); end MyComponent; architecture arch of MyComponent is   signal a_and_b : std_logic;   signal not_c : std_logic; begin   io_result &lt;= (a_and_b or not_c);   a_and_b &lt;= (io_a and io_b);   not_c &lt;= (not io_c); end arch;<\/code><\/pre>\n<p> <strong>\u041e\u0431\u043b\u0430\u0441\u0442\u0438<\/strong><\/p>\n<p>\u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0442\u044c \u043d\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <strong>Area {&#8230;}<\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434:<\/p>\n<pre><code class=\"scala\">class TopLevel extends Component {   \/\/\u2026   val logicArea = new Area {     val flag = Bool   }   val fsmArea = new Area {     when(logicArea.flag) {       \/\/\u2026     }   } }<\/code><\/pre>\n<p>  <strong>\u0418\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432<\/strong><\/p>\n<p>\u041e\u0434\u0438\u043d \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d \u0432\u043d\u0443\u0442\u0440\u044c \u0434\u0440\u0443\u0433\u043e\u0433\u043e, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0432\u044f\u0437\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0433\u043e <strong>:= <\/strong>\u0438\u043b\u0438 \u0433\u0440\u0443\u043f\u043f\u043e\u0432\u043e\u0433\u043e  <strong>&lt;> <\/strong>\u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f. \u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"scala\">class SubComponent extends Component{   val io = new Bundle {     val input = in Bool     val result = out Bool   }   ... } class TopLevel extends Component {   val io = new Bundle {     val a = in Bool     val b = in Bool     val result = out Bool   } val sub = new SubComponent   sub.io.input := io.a   io.result := sub.io.result | io.b }<\/code><\/pre>\n<p> <strong>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 when(), elsewhen() \u0438 otherwise()<\/strong><\/p>\n<p>\u0414\u0430\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0438 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432:  <\/p>\n<pre><code class=\"scala\">when(io.conds(0)){   io.result := 2   when(io.conds(1)){     io.result := 1   } } elsewhen(1) {   io.result := 3 } otherwise {   io.result := 0 }<\/code><\/pre>\n<p> <strong>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 switch()<\/strong><\/p>\n<pre><code class=\"scala\">switch(state) {   is(MyEnum.state0) {   ...   }   is(MyEnum.state1) {   ...   }   default{   ...   } }<\/code><\/pre>\n<p> <strong>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 mux()<\/strong><\/p>\n<p>\u0423\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u043e\u0440\u043e\u0432:<\/p>\n<pre><code class=\"scala\">val bitwiseSelect = UInt(2 bits) val bitwiseResult = bitwiseSelect.mux(   0 -> (io.src0 &amp; io.src1),   1 -> (io.src0 | io.src1),   2 -> (io.src0 ^ io.src1),   default -> (io.src0) )<\/code><\/pre>\n<p> <strong>\u041f\u0430\u043c\u044f\u0442\u044c Mem()<\/strong><\/p>\n<p>\u041c\u0430\u0441\u0441\u0438\u0432\u044b \u044f\u0447\u0435\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c <strong>Mem<\/strong>(), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430:<\/p>\n<pre><code class=\"scala\">\/\/Memory of 1024 Bools val syncRam = Mem(Bool, 1024) val asyncRam = Mem(Bool, 1024)  \/\/Write them syncRam(5) := True asyncRam(5) := True  \/\/Read them val syncRam = mem.readSync(6) val asyncRam = mem.readAsync(4)<\/code><\/pre>\n<p> <strong>\u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/strong><\/p>\n<p>\u0412 SpinalHDL \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 (\u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438 \u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445). \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u0438\u0439 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>Color<\/strong>, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0442\u0440\u0435\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442: <strong>r<\/strong>, <strong>g<\/strong> \u0438 <strong>b<\/strong>. \u0422\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u044d\u0442\u0438\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438, \u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <strong>+<\/strong> \u0434\u043b\u044f \u043f\u043e\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u043e\u0432. \u0422\u0430\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435.  <\/p>\n<pre><code class=\"scala\">case class Color(channelWidth: Int) extends Bundle {   val r,g,b = UInt(channelWidth bits)   def +(that: Color): Color = {     val result = Color(channelWidth)     result.r := this.r + that.r     result.g := this.g + that.g     result.b := this.b + that.b     return result   } }<\/code><\/pre>\n<p> \u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c <strong>channelWidth<\/strong> \u043f\u0440\u0438 \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 <strong>Color<\/strong>.<\/p>\n<p><a class=\"anchor\" name=\"13.2\" id=\"13.2\"><\/a><\/p>\n<h3> 13.2 FSM, \u043f\u043e\u0442\u043e\u043a\u0438, \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u044b, \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u0434\u043e\u043c\u0435\u043d\u044b<\/h3>\n<p> <strong>\u041c\u0430\u0448\u0438\u043d\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 (FSM)<\/strong><\/p>\n<p>\u041c\u0430\u0448\u0438\u043d\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0432 SpinalHDL \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043a\u0430\u043a \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <strong>Enum<\/strong> \u0438 <strong>switch<\/strong>, \u0442\u0430\u043a \u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 (\u043a\u043b\u0430\u0441\u0441\u044b <strong>State<\/strong> \u0438 <strong>StateMachine<\/strong>), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u043c\u0438 \u043b\u0435\u0433\u043a\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e-\u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 FSM \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043a\u043e\u0434\u0430. SpinalHDL \u043d\u0435 \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u044f\u0435\u0442 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043a \u0441\u0442\u0438\u043b\u044e \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u0438\u044f FSM, \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u043a, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u044f\u0437\u044b\u043a\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412\u043d\u0443\u0442\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u0442\u0430\u043a \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u0447\u0442\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442\u0438\u0440\u0443\u0435\u0442 \u0441 \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u043c\u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f FSM \u0432 \u043c\u0438\u0440\u0435 Verilog\/VHDL. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0434\u0432\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u0430 <strong>StateMachine<\/strong>.<\/p>\n<pre><code class=\"scala\">\/\/ FSM style A val fsm = new StateMachine{   io.result := False   val counter = Reg(UInt(8 bits)) init (0)   val stateA : State = new State with EntryPoint{     whenIsActive (goto(stateB))   }   val stateB : State = new State{     onEntry(counter := 0)       whenIsActive {       counter := counter + 1       when(counter === 4){       goto(stateC)       }     }     onExit(io.result := True)   }   val stateC : State = new State{     whenIsActive (goto(stateA))   } }<\/code><\/pre>\n<pre><code class=\"scala\">\/\/ FSM style B  val fsm = new StateMachine{   val stateA = new State with EntryPoint   val stateB = new State   val stateC = new State   val counter = Reg(UInt(8 bits)) init (0)   io.result := False      stateA     .whenIsActive (goto(stateB))      stateB     .onEntry(counter := 0)     .whenIsActive {       counter := counter + 1       when(counter === 4){         goto(stateC)       }     }     .onExit(io.result := True)   stateC     .whenIsActive (goto(stateA)) }<\/code><\/pre>\n<p>\u041c\u043d\u0435 \u043b\u0438\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e \u0434\u0443\u0448\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 <strong>\u0410<\/strong> \u0438\u0437-\u0437\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043e\u043a \u2014 \u043e\u043d\u0438 \u0447\u0435\u0442\u043a\u043e \u0434\u0430\u044e\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u0433\u0434\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e. \u0412\u0430\u0440\u0438\u0430\u043d\u0442 <strong>B<\/strong> \u044d\u0442\u043e \u0447\u0438\u0441\u0442\u044b\u0439 \u041e\u041e\u041f \u043f\u043e\u0434\u0445\u043e\u0434 \u0438\u0437 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0442\u043e\u0447\u043a\u0430. \ud83d\ude42<\/p>\n<p> <strong>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u0442\u043e\u043a\u0430 Flow<\/strong><\/p>\n<p>\u041a\u043b\u0430\u0441\u0441 <strong>Flow<\/strong> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 valid\/payload \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e \u0448\u0438\u043d\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0449\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 (master \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e) \u043f\u043e\u0434\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b payload, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044f valid, \u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 (slave \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e) \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 payload \u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0448\u0438\u043d\u044b. \u0412\u043d\u0443\u0442\u0440\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a SpinalHDL \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 Flow \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"scala\">case class Flow[T &lt;: Data](payloadType: T) extends Bundle { val valid = Bool val payload = cloneOf(payloadType) }<\/code><\/pre>\n<p> \u041f\u043e\u0442\u043e\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0442\u044c \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438 <strong>>><\/strong>  \u0438 <strong>&lt;&lt;<\/strong>  \u043e\u0431\u0440\u0430\u0437\u0443\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b, \u043b\u0438\u0431\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438 <strong>&lt;-&lt;<\/strong> \u0438\u043b\u0438 <strong>>-><\/strong>  \u043e\u0431\u0440\u0430\u0437\u0443\u044f \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u044b (\u0442.\u00a0\u0435. \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438).  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u0430 <strong>Flow<\/strong>:<\/p>\n<pre><code class=\"scala\">case class FlowExample() extends Component {   val io = new Bundle {     val request = slave(Flow(Bits(8 bit)))     val answer = master(Flow(Bits(8 bit)))   }   val storage = Reg(Bits(8 bit))    val fsm = new StateMachine {     io.answer.setIdle()      val idle: State = new State with EntryPoint {       whenIsActive {         when(io.request.valid) {           storage := io.request.payload           goto(sendEcho)         }       }     }      val sendEcho: State = new State {       whenIsActive {         io.answer.push(storage)         goto(idle)       }     }   } }<\/code><\/pre>\n<p> \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043b\u0438\u043d\u0438\u0438 <strong>request<\/strong> \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u0445 \u0436\u0435 \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 <strong>answer<\/strong>, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440. \u0422\u0430\u043a \u043a\u0430\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u044b request \u0438 answer \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b \u043a\u0430\u043a \u043f\u043e\u0442\u043e\u043a\u0438, \u0442\u043e \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u043c\u0430\u0448\u0438\u043d\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043c\u0435\u043d\u0435\u043d \u043e\u0434\u043d\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c:  <\/p>\n<pre><code class=\"scala\">io.answer &lt;-&lt; io.request<\/code><\/pre>\n<p> <strong>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u0442\u043e\u043a\u0430 Stream<\/strong><\/p>\n<p>\u041a\u043b\u0430\u0441\u0441 <strong>Stream<\/strong> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0432\u0438\u0434\u0430 valid\/ready\/payload \u0441 \u00ab\u0440\u0443\u043a\u043e\u043f\u043e\u0436\u0430\u0442\u0438\u0435\u043c\u00bb, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 (slave) \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 <strong>payload<\/strong> \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0443 <strong>valid<\/strong>, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u0442\u043e\u043a \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e \u043f\u043e\u0434\u0430\u0447\u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 <strong>ready<\/strong>. \u0412\u043d\u0443\u0442\u0440\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a SpinalHDL \u043f\u043e\u0442\u043e\u043a <strong>Stream<\/strong> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"scala\">case class Stream[T &lt;: Data](payloadType: T) extends Bundle {   val valid = Bool   val ready = Bool   val payload = cloneOf(payloadType) }<\/code><\/pre>\n<p> \u0412 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0435 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 FIFO \u0438\u043b\u0438 \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0435\u0439 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u0430 <strong>Stream<\/strong>:<\/p>\n<pre><code class=\"scala\">class StreamFifo[T &lt;: Data](dataType: T, depth: Int) extends Component {   val io = new Bundle {     val push = slave Stream (dataType)     val pop = master Stream (dataType)   }   ... }<\/code><\/pre>\n<p> \u041a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043f\u043e\u0442\u043e\u043a\u043e\u043c <strong>Flow<\/strong>, \u043f\u043e\u0442\u043e\u043a\u0438 <strong>Stream<\/strong> \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438 &lt;&lt; \u0438 >> \u0438\u043b\u0438 &lt;-&lt;  \u0438 >->, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e \u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e \u0443 \u043f\u043e\u0442\u043e\u043a\u0430 <strong>Stream<\/strong> \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0440\u044f\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0435 (<strong>haltWhen<\/strong>, <strong>throwWhen<\/strong> \u0438 \u0442.\u0434).<\/p>\n<p>\u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430 SpinalHDL \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430:<\/p>\n<pre><code class=\"scala\">case class RGB(channelWidth : Int) extends Bundle {   val red   = UInt(channelWidth bits)   val green = UInt(channelWidth bits)   val blue  = UInt(channelWidth bits)   def isBlack : Bool = red === 0 &amp;&amp; green === 0 &amp;&amp; blue === 0 } val source = Stream(RGB(8)) val sink   = Stream(RGB(8)) sink &lt;-&lt; source.throwWhen(source.payload.isBlack)<\/code><\/pre>\n<p> \u042d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043a \u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0430 \u0440\u0438\u0441. 25 \u043d\u0438\u0436\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/88f\/5b5\/2fb\/88f5b52fb32d202bc543695e26733de1.png\" alt=\"\u0420\u0438\u0441. 25. \u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u0442\u043e\u043a\u0430 Stream.\" title=\"\u0420\u0438\u0441. 25. \u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u0442\u043e\u043a\u0430 Stream.\" width=\"934\" height=\"535\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/88f\/5b5\/2fb\/88f5b52fb32d202bc543695e26733de1.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 25. \u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u0442\u043e\u043a\u0430 Stream.<\/em><\/figcaption><\/div>\n<\/figure>\n<p> <strong>\u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u043e\u0433\u043e \u0431\u0430\u0439\u043f\u0430\u0441\u0430 \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c LatencyAnalysis()<\/strong><\/p>\n<p>\u0427\u0430\u0441\u0442\u043e \u0432 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c\u0430\u0445 \u043f\u0440\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u0431\u0445\u043e\u0434 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0442\u0443\u043f\u0435\u043d\u0435\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430, \u0447\u0438\u0441\u043b\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u0438\u043b\u0438 \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434 \u0441\u0445\u0435\u043c\u043e\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043e \u043d\u0430 \u0440\u0438\u0441. 26.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/379\/19a\/43b\/37919a43b31a7fa376ad21bc07252bc4.png\" alt=\"\u0420\u0438\u0441. 26. \u041a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u0441 \u0431\u0430\u0439\u043f\u0430\u0441\u0441\u043e\u043c \u043d\u0430 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435.\" title=\"\u0420\u0438\u0441. 26. \u041a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u0441 \u0431\u0430\u0439\u043f\u0430\u0441\u0441\u043e\u043c \u043d\u0430 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435.\" width=\"651\" height=\"271\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/379\/19a\/43b\/37919a43b31a7fa376ad21bc07252bc4.png\"\/><\/p>\n<div><figcaption><em>\u0420\u0438\u0441. 26. \u041a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u0441 \u0431\u0430\u0439\u043f\u0430\u0441\u0441\u043e\u043c \u043d\u0430 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435.<\/em><\/figcaption><\/div>\n<\/figure>\n<p> \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043e\u0431\u0445\u043e\u0434 \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430, \u0432 SpinalHDL \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f LatencyAnalysis(), \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0449\u0430\u044f \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0438\u0439 \u043f\u0443\u0442\u044c \u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u0435, \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u044b\u0439 \u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0430\u043a\u0442\u043e\u0432. \u0422\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u043f\u0430\u0441\u0430 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"scala\">val a = UInt(8 bits) val b = UInt(8 bits) val aCalcResult = complicatedLogic(a) val aLatency = LatencyAnalysis(a,aCalcResult) val bDelayed = Delay(b,cycleCount = aLatency) val result = aCalcResult + bDelayed<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c <strong>complicatedLogic<\/strong> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0445\u0435\u043c\u0430 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430: \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c <strong>Component<\/strong>, <strong>Area<\/strong> \u0438\u043b\u0438 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0435\u0449\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <strong>Delay<\/strong>() \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439  <strong>LatencyAnalysis<\/strong>(), \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043d\u0443\u0436\u043d\u043e\u0439 \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0434\u043b\u044f \u043e\u0431\u0445\u043e\u0434\u0430 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430.<\/p>\n<p> <strong>\u0422\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u0434\u043e\u043c\u0435\u043d\u044b \u0438 CDC<\/strong><\/p>\n<p>\u041b\u044e\u0431\u043e\u0439 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0434\u0438\u0437\u0430\u0439\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0432 \u043d\u0451\u043c \u043d\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0443\u0447\u0430\u0441\u0442\u043a\u0438 \u0441\u0445\u0435\u043c\u044b, \u0442\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u043e\u0442 \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430, \u043f\u0440\u0438\u0447\u0435\u043c \u044d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u00ab\u043a\u0430\u043a \u0431\u044b\u00bb \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u044b, \u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0435 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u00ab\u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u043e\u043c\u00bb (fundamental), \u0442\u043e \u0432 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u0445 \u0434\u0432\u0443\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u043e\u0441\u0442\u044c \u0444\u0430\u0437, \u0447\u0442\u043e \u0432\u0435\u0434\u0435\u0442 \u043a \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043c\u0435\u0442\u0430\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u043e\u0442\u0435\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u0430 \u0441\u0445\u0435\u043c\u044b \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u00ab\u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432\u00bb (\u00ab<a href=\"https:\/\/en.wikipedia.org\/wiki\/Clock_domain_crossing\" rel=\"noopener noreferrer nofollow\">Clock Domain Crossing<\/a>\u00bb \u0438\u043b\u0438 CDC). \u0412 \u0440\u044f\u0434\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b CDC \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u0432\u0432\u0435\u0434\u044f \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u0443\u0444\u0435\u0440\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u043d\u043e \u0447\u0430\u0441\u0442\u043e \u043d\u0430 \u0441\u0442\u044b\u043a\u0435 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0442\u0430\u043a\u0438\u043c\u0438 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u2014 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Gray_code\" rel=\"noopener noreferrer nofollow\">FIFO \u0441\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u043c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u0434\u0430 \u0413\u0440\u0435\u044f<\/a>. \u041d\u0435 \u0441\u0442\u0430\u043d\u0443 \u0432\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u041a\u043b\u0438\u0444\u0444\u043e\u0440\u0434\u0430 \u041a\u0430\u043c\u043c\u0438\u043d\u0433\u0441\u0430 \u00ab<a href=\"\/H\/---\/Articles\/Clock%20Domain%20Crossing%20(CDC)%20Design%20&amp;%20VerificationTechniques%20Using%20SystemVerilog\" rel=\"noopener noreferrer nofollow\">Clock Domain Crossing (CDC) Design &amp; VerificationTechniques Using SystemVerilog<\/a>\u00bb, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0430\u0432\u0442\u043e\u0440 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e FIFO.<\/p>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c CDC \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u0435\u0441\u044c\u043c\u0430 \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0438\u043c, \u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0441\u0451 \u0432\u0440\u0435\u043c\u044f \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0437 \u0432\u0438\u0434\u0443 \u0438 \u043d\u0435 \u043d\u0430\u043f\u043e\u0440\u0442\u0430\u0447\u0438\u0442\u044c. \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, \u0447\u0430\u0441\u0442\u043e \u043a\u043e\u0434 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0443\u0431\u0438\u0442\u044c \u043d\u0430 \u043a\u0443\u0441\u043a\u0438 ifdef-\u0430\u043c\u0438 \u2014 \u043d\u0430 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0438 \u0441\u0438\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0439. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043a\u043e\u0434 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u0432\u0435\u0440\u043c\u0438\u0448\u0435\u043b\u044c.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0435\u0440\u043c\u0438\u0448\u0435\u043b\u044c\u044e, SpinalHDL \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u043d\u0443\u0436\u043d\u043e \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u043c \u0434\u043e\u043c\u0435\u043d\u043e\u043c, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e, \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 SpinalHDL \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0435 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0438 \u0441\u0438\u0433\u043d\u0430\u043b \u0441\u0431\u0440\u043e\u0441\u0430 \u0432 \u043d\u0443\u0436\u043d\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 Verilog\/VHDL, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e \u043d\u0435\u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0438\u044e \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 CDC. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439:<\/p>\n<p>\u041a\u043b\u0430\u0441\u0441 <strong>ClockDomain<\/strong> \u2014 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u043e\u0432\u043e\u0433\u043e \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430, \u0435\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0441\u0431\u0440\u043e\u0441\u0430. \u041d\u0430\u0434\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 SpinalHDL \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0441\u0431\u0440\u043e\u0441\u0430 \u0438 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u0430\u043a \u043d\u0435\u0440\u0430\u0437\u043b\u0443\u0447\u043d\u0430\u044f \u043f\u0430\u0440\u0430, \u0432\u0441\u0435\u0433\u0434\u0430 \u0445\u043e\u0434\u044f\u0442 \u0432\u043c\u0435\u0441\u0442\u0435.<\/p>\n<p>\u041a\u043b\u0430\u0441\u0441 <strong>ClockingArea<\/strong> \u2014 \u0432 \u043d\u0435\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432\u0435\u0441\u044c \u043a\u043e\u0434, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0439\u0441\u044f \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u043c\u0443 \u0434\u043e\u043c\u0435\u043d\u0443.<\/p>\n<p> \u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0434\u043e\u043c\u0435\u043d\u0430:<\/p>\n<pre><code class=\"scala\">\/\/ Configure new clock domain   val myClockDomain = ClockDomain(     clock  = io.clk,     reset  = io.resetn,     config = ClockDomainConfig(       clockEdge        = RISING,       resetKind        = ASYNC,       resetActiveLevel = LOW     )   )    \/\/ Define an Area which uses myClockDomain   val myArea = new ClockingArea(myClockDomain) {     val myReg = Reg(UInt(4 bits)) init(7)      myReg := myReg + 1      io.result := myReg      \/\/ ...   }<\/code><\/pre>\n<p> \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 <strong>ClockDomainConfig<\/strong> \u0437\u0430\u0434\u0430\u0435\u0442 \u0440\u044f\u0434 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 SpinalHDL \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430: \u0442\u0438\u043f \u0444\u0440\u043e\u043d\u0442\u0430 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0438 \u0442\u0438\u043f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441\u0431\u0440\u043e\u0441\u0430.<\/p>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043a\u043e\u0434\u0430 \u043a \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u043c \u0434\u043e\u043c\u0435\u043d\u0430\u043c \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430, \u0442\u043e \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u043c\u0443 \u0434\u043e\u043c\u0435\u043d\u0443 <strong>ClockDomain<\/strong> \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>Clock : rising edge<\/p>\n<\/li>\n<li>\n<p>Reset : asynchronous, active high<\/p>\n<\/li>\n<li>\n<p>No clock enable<\/p>\n<\/li>\n<\/ul>\n<p> CDC \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u043c\u0438 \u0434\u043e\u043c\u0435\u043d\u0430\u043c\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u0443\u0444\u0435\u0440\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"scala\">class CrossingExample(clkA : ClockDomain,clkB : ClockDomain) extends Component {   val io = new Bundle {     val dataIn  = in Bool()     val dataOut = out Bool()   }    \/\/ sample dataIn with clkA   val area_clkA = new ClockingArea(clkA) {     val reg = RegNext(io.dataIn) init(False)   }    \/\/ BufferCC to avoid metastability issues   val area_clkB = new ClockingArea(clkB) {     val buf1   = BufferCC(area_clkA.reg, False)   }    io.dataOut := area_clkB.buf1 }<\/code><\/pre>\n<p> \u0424\u0443\u043d\u043a\u0446\u0438\u044f <strong>BufferCC<\/strong>() \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u0434\u0432\u0430 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0431\u0443\u0444\u0435\u0440\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u0442\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043e\u0442 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430, \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432. \u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441 StreamFifoCC, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c CDC \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043b\u044e\u0431\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438. <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"scala\">val clockA = ClockDomain(???) val clockB = ClockDomain(???) val streamA,streamB = Stream(Bits(8 bits)) \/\/... val myFifo = StreamFifoCC(   dataType  = Bits(8 bits),   depth     = 128,   pushClock = clockA,   popClock  = clockB ) myFifo.io.push &lt;&lt; streamA myFifo.io.pop  >> streamB<\/code><\/pre>\n<p> \u041d\u0430 \u044d\u0442\u043e\u043c, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043c \u043d\u0430\u0448 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u044f\u0437\u044b\u043a\u0430 SpinalHDL \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f\u043c.<\/p>\n<p><a class=\"anchor\" name=\"13.3\" id=\"13.3\"><\/a><\/p>\n<h3> 13.3 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 SpinalHDL<\/h3>\n<p>\u0414\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0441\u0440\u0435\u0434\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 UNIX \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u043e\u0433\u043e \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430 Yosys \u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 Verilator. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u0438\u0445 \u0442\u0443\u043b\u043e\u0432 \u043e\u043f\u0438\u0441\u0430\u043d \u0432 \u0433\u043b\u0430\u0432\u0435 \u00ab<em>6. \u041a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430 Yosys<\/em>\u00bb. SpinalHDL \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442  \u043a\u0430\u043a \u043d\u0430 Linux, \u0442\u0430\u043a \u0438 \u0432 BSD \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445.<\/p>\n<p> \u041a\u0430\u043a \u0443\u0436\u0435 \u043e\u0442\u043c\u0435\u0447\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435, SpinalHDL \u044d\u0442\u043e \u043d\u0430\u0431\u043e\u0440 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Scala, \u0430 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Scala Build Tools \u2014 sbt, \u0432\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0430\u0432\u0442\u043e\u0440 SpinalHDL \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u0434\u043b\u044f SBT. \u0414\u043b\u044f Scala, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f Java DK. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Java, Scala \u0438 SBT.<\/p>\n<pre><code>rz@devbox:~$ sudo apt-get update rz@devbox:~$ sudo apt-get install openjdk-8-jdk rz@devbox:~$ sudo apt-get install scala rz@devbox:~$ sudo apt-get install sbt<\/code><\/pre>\n<p> \u0415\u0441\u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435 Linux \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435\u0442 SBT, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u0435\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c. \u0414\u043b\u044f \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 Ubuntu \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a:<\/p>\n<pre><code>rz@devbox:~$ echo \"deb https:\/\/dl.bintray.com\/sbt\/debian \/\" | sudo tee -a \/etc\/apt\/sources.list.d\/sbt.list rz@devbox:~$ sudo apt-key adv --keyserver hkp:\/\/keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823 rz@devbox:~$ sudo apt-get update rz@devbox:~$ sudo apt-get install sbt<\/code><\/pre>\n<p>\u041d\u0430 \u041e\u0421 FreeBSD 13.x \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u0434\u043e\u0431\u0440\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439, \u0442\u0430\u043a \u043a\u0430\u043a Java, Scala \u0438 SBT \u0443\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0441 \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438:<\/p>\n<pre><code>rz@butterfly:~ % sudo pkg install scala sbt<\/code><\/pre>\n<p> \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0435\u043d\u0438\u0439 \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 SBT, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043a \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u00ab<a href=\"https:\/\/habr.com\/ru\/articles\/231971\/\" rel=\"noopener noreferrer nofollow\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 sbt<\/a>\u00bb \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <a class=\"mention\" href=\"\/users\/antaresm\">@antaresm<\/a>.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d SpinalHDL \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0437\u0430\u0439\u0442\u0438 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <strong>SpinalTemplateSbt<\/strong> \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e Verilog \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e (\u0448\u0430\u0431\u043b\u043e\u043d\u043d\u043e\u0433\u043e) \u043f\u0440\u043e\u0435\u043a\u0442\u0430. SBT \u0434\u043e\u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0438\u0445 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<details class=\"spoiler\">\n<summary>\u041a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f SpinalTemplateSbt<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"scala\">rz@devbox:~ $ git clone https:\/\/github.com\/SpinalHDL\/SpinalTemplateSbt.git  Cloning into 'SpinalTemplateSbt'...  ... Resolving deltas: 100% (203\/203), done.   rz@devbox:~\/SpinalTemplateSbt $ sbt \"runMain projectname.MyTopLevelVerilog\"  [info] welcome to sbt 1.6.0 (OpenJDK BSD Porting Team Java 1.8.0_392)  [info] loading settings for project spinaltemplatesbt-build from plugins.sbt ..  [info] loading project definition from \/usr\/home\/rz\/SpinalTemplateSbt\/project  [info] loading settings for project projectname from build.sbt ...  [info] set current project to projectname (in build file:\/usr\/home\/rz\/SpinalTemplateSbt\/)  [info] running (fork) projectname.MyTopLevelVerilog  [info] [Runtime] SpinalHDL v1.10.0    git head : 270018552577f3bb8e5339ee2583c9c22d324215  [info] [Runtime] JVM max memory : 4512.0MiB  [info] [Runtime] Current date : 2024.01.24 03:53:05  [info] [Progress] at 0.000 : Elaborate components  [error] [Thread-2] INFO net.openhft.affinity.Affinity - Using dummy affinity control implementation  [info] [Progress] at 0.190 : Checks and transforms  [info] [Progress] at 0.271 : Generate Verilog  [info] [Done] at 0.323  [success] Total time: 2 s, completed Jan 24, 2024 3:53:06 AM <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p> \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u0432 \u0444\u0430\u0439\u043b\u0435 <strong>.\/hw\/gen\/MyTopLevel.v <\/strong>\u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043a\u043e\u0434 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog:<\/p>\n<details class=\"spoiler\">\n<summary>.\/hw\/gen\/MyTopLevel.v<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"vhdl\">\/\/ Generator : SpinalHDL v1.10.0    git head : 270018552577f3bb8e5339ee2583c9c22d324215  \/\/ Component : MyTopLevel  \/\/ Git hash  : 51249d4c6e34bfcda55c0332356bd15cf5adbc1d   `timescale 1ns\/1ps   module MyTopLevel (    input  wire          io_cond0,    input  wire          io_cond1,    output wire          io_flag,    output wire [7:0]    io_state,    input  wire          clk,    input  wire          reset  );     reg        [7:0]    counter;     assign io_state = counter;    assign io_flag = ((counter == 8'h00) || io_cond1);    always @(posedge clk or posedge reset) begin      if(reset) begin        counter &lt;= 8'h00;      end else begin        if(io_cond0) begin          counter &lt;= (counter + 8'h01);        end      end    end    endmodule<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p> \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u043d\u0430 SpinalHDL \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 <strong>.\/hw\/spinal\/projectname\/MyTopLevel.scala<\/strong><\/p>\n<details class=\"spoiler\">\n<summary>.\/hw\/spinal\/projectname\/MyTopLevel.scala<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"scala\">package projectname   import spinal.core._   \/\/ Hardware definition  case class MyTopLevel() extends Component {    val io = new Bundle {      val cond0 = in  Bool()      val cond1 = in  Bool()      val flag  = out Bool()      val state = out UInt(8 bits)    }     val counter = Reg(UInt(8 bits)) init 0     when(io.cond0) {      counter := counter + 1    }     io.state := counter    io.flag := (counter === 0) | io.cond1  }  object MyTopLevelVerilog extends App {    Config.spinal.generateVerilog(MyTopLevel())  }   object MyTopLevelVhdl extends App {    Config.spinal.generateVhdl(MyTopLevel())  } <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p> \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043a\u043e\u0434\u0430 VHDL:<\/p>\n<pre><code class=\"bash\">rz@devbox:~\/SpinalTemplateSbt $ sbt \"runMain projectname.MyTopLevelVhdl\"   rz@devbox:~\/SpinalTemplateSbt $ ll .\/hw\/gen\/MyTopLevel.v hdl -rw-r--r--  1 rz  rz  14724 Jan 24 03:51 .\/hw\/gen\/MyTopLevel.vhd<\/code><\/pre>\n<p> \u041a\u043e\u0434 \u043d\u0430 VHDL \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439, \u0442\u0430\u043a \u043a\u0430\u043a SpinalHDL \u0432\u043a\u043b\u044e\u0447\u0438\u0442 \u0432 \u043d\u0435\u0433\u043e \u043c\u0430\u0441\u0441\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445 (\u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445) \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u042f \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u044e, \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u0440 \u044f\u0437\u044b\u043a\u0430 SpinalHDL \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e Verilog \u0438 \u0435\u0433\u043e \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 SpinalHDL \u0432\u044b\u0434\u0430\u0435\u0442 \u043a\u043e\u0440\u043e\u0442\u0435\u043d\u044c\u043a\u0438\u0439 Verilog \u0438 \u0441\u0442\u0440\u0430\u0448\u043d\u043e \u0434\u043b\u0438\u043d\u043d\u044b\u0439 VHDL.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u044d\u0442\u043e\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e. \u042f, \u0432 \u0441\u043b\u0435\u0434 \u0437\u0430 \u0430\u0432\u0442\u043e\u0440\u043e\u043c SpinalHDL, \u0442\u043e\u0436\u0435 \u0431\u0443\u0434\u0443 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 Verilog, \u0443\u0436 \u0438\u0437\u0432\u0438\u043d\u0438\u0442\u0435.<\/p>\n<p><a class=\"anchor\" name=\"13.4\" id=\"13.4\"><\/a><\/p>\n<h3> 13.4 \u0420\u0430\u0437\u0431\u043e\u0440 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 SpinalTemplateSbt<\/h3>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0435\u0440\u0435\u0432\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u044d\u0442\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>projectname<\/strong>, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u0430\u044f, \u043d\u043e \u0432 \u043d\u0451\u043c \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0441\u0451, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u0446\u0438\u0444\u0440\u043e\u0432\u0443\u044e \u0441\u0445\u0435\u043c\u0443, \u0432\u0435\u0440\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0441\u0438\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0451.<\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432.<\/p>\n<p>  \u0424\u0430\u0439\u043b <strong>.\/build.sbt<\/strong> \u2014 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0438 \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f SBT, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0430\u0431\u043e\u0440 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044e \u044f\u0437\u044b\u043a\u0430 Scala \u0438 \u0432\u0435\u0440\u0441\u0438\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 SpinalHDL, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0412\u043d\u0443\u0442\u0440\u0438 \u0444\u0430\u0439\u043b\u0430 <strong>build.sbt<\/strong> \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043c\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e <strong>projectname<\/strong> \u043d\u0430 \u0447\u0442\u043e-\u0442\u043e \u0441\u0432\u043e\u0451 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 <strong>myproject<\/strong>), \u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u2014 \u044d\u0442\u043e \u0438\u043c\u044f \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0415\u0441\u043b\u0438 \u0412\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438 \u0438\u043c\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 .<strong>\/hw\/spinal\/myproject\/<\/strong> \u0438 \u0432\u0441\u0435 \u0432\u0430\u0448\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u043d\u0430 SpinalHDL \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0432 \u043d\u0435\u0433\u043e. \u0412\u043e \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c <strong>package myproject<\/strong> \u0432 \u0441\u0430\u043c\u043e\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435.<\/p>\n<p>\u0424\u0430\u0439\u043b <strong>.\/build.sc<\/strong> \u2014 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0431\u043e\u0440\u043a\u0438 <strong>Mill<\/strong>. \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 SBT, \u0442\u043e \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043d\u0430\u043c \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u043b\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c. <\/p>\n<p>\u041a\u0430\u0442\u0430\u043b\u043e\u0433 <strong>.\/hw\/spinal\/projectname\/<\/strong> \u2014 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u043a\u043e\u0434\u0430\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u043d\u0451\u043c \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b:<\/p>\n<pre><code class=\"bash\">rz@devbox:~\/SpinalTemplateSbt $ ll .\/hw\/spinal\/projectname\/  total 16  -rw-r--r--  1 rz  rz  338 Jan 24 03:48 Config.scala  -rw-r--r--  1 rz  rz  580 Jan 24 03:48 MyTopLevel.scala  -rw-r--r--  1 rz  rz  698 Jan 24 03:48 MyTopLevelFormal.scala  -rw-r--r--  1 rz  rz  887 Jan 24 03:48 MyTopLevelSim.scala <\/code><\/pre>\n<p> \u0424\u0430\u0439\u043b <strong>.\/hw\/spinal\/projectname\/Config.scala<\/strong> \u2014 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f Scala \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0415\u0441\u043b\u0438 \u0412\u044b \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043b\u0438 \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 <strong>myproject<\/strong>, \u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0432 \u043d\u043e\u0432\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <strong> <\/strong>\u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432 \u043d\u0435\u043c <strong>package projectname<\/strong> \u043d\u0430 <strong>package myproject.<\/strong><\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435.<\/p>\n<p>\u0424\u0430\u0439\u043b <strong>MyTopLevel.scala<\/strong> \u2014 \u0432 \u043d\u0451\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 (\u043c\u043e\u0434\u0443\u043b\u044f) \u0441\u0430\u043c\u043e\u0433\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u0438 \u0440\u044f\u0434 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430: \u043e\u0431\u044a\u0435\u043a\u0442\u044b <strong>MyTopLevelVerilog<\/strong> \u0438 <strong>MyTopLevelVhdl<\/strong>. \u0418\u043c\u0435\u043d\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 SBT \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"bash\">rz@devbox:~\/SpinalTemplateSbt $ sbt \"runMain projectname.MyTopLevelVerilog\" \u0438\u043b\u0438 rz@devbox:~\/SpinalTemplateSbt $ sbt \"runMain projectname.MyTopLevelVhdl\"<\/code><\/pre>\n<p> \u0424\u0430\u0439\u043b <strong>MyTopLevelFormal.scala<\/strong> \u2014 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u0438 \u0432\u0445\u043e\u0434\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0434\u043b\u044f \u043d\u0435\u0451. \u0414\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043f\u0440\u043e\u0435\u043a\u0442 <strong>SymbiYosys<\/strong> \u0438 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>sby<\/strong>. \u0412\u043e\u043e\u0431\u0449\u0435, \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u2014 \u044d\u0442\u043e \u0442\u0435\u043c\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043b\u0438\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u043e\u043a\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0435\u0451 \u043a\u0430\u0441\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p> \u0417\u0430\u043f\u0443\u0441\u043a \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code class=\"bash\">rz@devbox:~\/SpinalTemplateSbt $ sbt \"runMain projectname.MyTopLevelFormal\"<\/code><\/pre>\n<p>\u0424\u0430\u0439\u043b <strong>MyTopLevelSim.scala<\/strong> \u2014 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u0434 \u0438 \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438. \u0414\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043f\u0430\u043a\u0435\u0442 <strong>Verilator<\/strong>. \u042d\u0442\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e \u0442\u0435\u043c\u0443 \u043c\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0441\u043d\u0435\u043c\u0441\u044f \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 VexRiscv.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code class=\"bash\">rz@devbox:~\/SpinalTemplateSbt $ sbt \"runMain projectname.MyTopLevelSim\"<\/code><\/pre>\n<p> \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0444\u0430\u0439\u043b \u0441 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u043c \u043a\u043e\u0434\u043e\u043c.  \u0412 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0434\u043b\u044f Scala \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0438\u043c\u044f \u043f\u0430\u043a\u0435\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c:<\/p>\n<pre><code class=\"scala\">package projectname <\/code><\/pre>\n<p> \u0438 \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a:<\/p>\n<pre><code class=\"scala\">import spinal.core._ <\/code><\/pre>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 SpinalHDL. \u0414\u0430\u043b\u0435\u0435, \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 VexRiscv, \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u044e\u0434\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441\u043e\u0444\u0442-\u044f\u0434\u0440\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0432\u043e\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b.<\/p>\n<p> \u0414\u0430\u043b\u0435\u0435 \u0438\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d \u043e\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <strong>Component<\/strong> \u0438 \u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430:<\/p>\n<pre><code class=\"scala\">\/\/ Hardware definition  case class MyTopLevel() extends Component {    val io = new Bundle {      val cond0 = in  Bool()      val cond1 = in  Bool()      val flag  = out Bool()      val state = out UInt(8 bits)    } <\/code><\/pre>\n<p> \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0441 \u0434\u0432\u0443\u043c\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0438 \u043e\u0434\u043d\u043e\u0431\u0438\u0442\u043d\u044b\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 <strong>cond0<\/strong> \u0438 <strong>cond1<\/strong>, \u0438 \u0434\u0432\u0443\u043c\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 <strong>flag<\/strong> \u0438 <strong>state<\/strong>. \u0421\u0438\u0433\u043d\u0430\u043b <strong>flag<\/strong> \u043e\u0434\u043d\u043e\u0431\u0438\u0442\u043d\u044b\u0439, \u0430 \u0441\u0438\u0433\u043d\u0430\u043b <strong>state<\/strong> \u0438\u043c\u0435\u0435\u0442 \u0448\u0438\u0440\u0438\u043d\u0443 8 \u0431\u0438\u0442. \u042d\u0442\u043e\u043c\u0443 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e SpinalHDL \u043d\u0435\u044f\u0432\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441\u0438\u0433\u043d\u0430\u043b \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f <strong>clk<\/strong> \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u0431\u0440\u043e\u0441\u0430 <strong>reset<\/strong>:<\/p>\n<pre><code class=\"vhdl\">module MyTopLevel (    input  wire          io_cond0,    input  wire          io_cond1,    output wire          io_flag,    output wire [7:0]    io_state,    input  wire          clk,    input  wire          reset  ); <\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u043d\u043e\u0439 \u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438:<\/p>\n<pre><code class=\"scala\">val counter = Reg(UInt(8 bits)) init 0     when(io.cond0) {      counter := counter + 1    }     io.state := counter    io.flag := (counter === 0) | io.cond1<\/code><\/pre>\n<p> \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f 8-\u0431\u0438\u0442\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440-\u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0441\u043e \u0441\u0431\u0440\u043e\u0441\u043e\u043c <strong>counter<\/strong>, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 1 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0430\u043a\u0442 \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 <strong>cond0<\/strong> \u043b\u043e\u0433 \u00ab1\u00bb. \u0412\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>flag<\/strong> \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043b\u043e\u0433 \u00ab1\u00bb, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u043b\u044e \u0438 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>cond1<\/strong> \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 \u043b\u043e\u0433 \u00ab1\u00bb.   <\/p>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog:<\/p>\n<pre><code class=\"vhdl\">  reg        [7:0]    counter;    assign io_state = counter;    assign io_flag = ((counter == 8'h00) || io_cond1);    always @(posedge clk or posedge reset) begin      if(reset) begin        counter &lt;= 8'h00;      end else begin        if(io_cond0) begin          counter &lt;= (counter + 8'h01);        end      end    end <\/code><\/pre>\n<p>\u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e SpinalHDL, \u0441\u043b\u0435\u0434\u0443\u044f \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u043c \u0432 Verilog \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u044f\u043c, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442 \u043a\u043e\u0434 \u0434\u043b\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438, \u0430 \u0437\u0430\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u043d\u043e\u0439: \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u043d\u0438\u043c \u0444\u0440\u043e\u043d\u0442\u0430\u043c \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>clk<\/strong> \u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441\u0431\u0440\u043e\u0441\u0430 <strong>reset<\/strong>, \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0434 \u0434\u043b\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u0431\u0440\u043e\u0441\u0430. \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u043f\u043e\u043b\u043d\u0435 \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0430\u043b\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u043a\u0430\u043a \u043c\u043e\u0434\u0443\u043b\u044c \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043b\u0438\u0431\u043e \u043f\u043e\u0434\u0430\u043d \u043d\u0430 \u0432\u0445\u043e\u0434 \u0441\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440\u0443 Yosys \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u0434\u043b\u044f \u041f\u041b\u0418\u0421.<\/p>\n<p><a class=\"anchor\" name=\"13.5\" id=\"13.5\"><\/a><\/p>\n<h3> 13.5  \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 Makefile-\u0430 \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0438\u0437 SpinalHDL \u0432 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c<\/h3>\n<p>\u0414\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c\u0441\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u00ab\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439\u00bb \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0438\u0437 \u044f\u0437\u044b\u043a\u0430 SpinalHDL \u0432 \u043a\u043e\u0434 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog. \u0427\u0442\u043e\u0431\u044b \u0438\u0437 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 SpinalHDL \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0434\u043b\u044f \u041f\u041b\u0418\u0421 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:<\/p>\n<ol>\n<li>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0442\u0435\u043a\u0441\u0442\u043e\u0432 Verilog \u0438\u0437 SpinalHDL \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>sbt<\/strong>. \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432 Verilog (\u0444\u0430\u0439\u043b\u044b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c <strong>.v<\/strong>).<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u0438\u043d\u0442\u0435\u0437 \u043d\u0435\u0442\u043b\u0438\u0441\u0442\u0430 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 Verilog \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>yosys<\/strong>. \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u0435\u0442\u043b\u0438\u0441\u0442 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON (\u0444\u0430\u0439\u043b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c <strong>.json<\/strong>).<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e, \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043d\u0435\u0442\u043b\u0438\u0441\u0442\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <strong>nextpnr-ecp5<\/strong>.  \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Trellis (\u0444\u0430\u0439\u043b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c <strong>.config<\/strong>).<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f. \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b (\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 .bit), \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0432 \u041f\u041b\u0418\u0421.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043c\u0438 \u0438\u0437 \u0433\u043b\u0430\u0432\u044b \u00ab<em>8. \u0422\u0438\u043f\u043e\u0432\u043e\u0439 Makefile \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Yosys<\/em>\u00bb, \u0441\u043b\u0435\u0433\u043a\u0430 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043c \u0435\u0433\u043e \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 <strong>Makefile<\/strong>:<\/p>\n<details class=\"spoiler\">\n<summary>Makefile \u0434\u043b\u044f SpinalTemplateSbt<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"python\">NAME = projectname  SPINALHDL = .\/hw\/spinal\/projectname\/MyTopLevel.scala  VERILOG = .\/hw\/gen\/MyTopLevel.v  LPF = karnix_cabga256.lpf  DEVICE = 25k  PACKAGE = CABGA256  FTDI_CHANNEL = 0 ### FT2232 has two channels, select 0 for channel A or 1 for channel B  #  FLASH_METHOD := $(shell cat flash_method 2> \/dev\/null)  UPLOAD_METHOD := $(shell cat upload_method 2> \/dev\/null)   all: $(NAME).bit   $(VERILOG): $(SPINALHDL)          sbt \"runMain projectname.MyTopLevelVerilog\"   $(NAME).bin: $(LPF) $(VERILOG)          yosys -v2 -p \"synth_ecp5 -abc2 -top MyTopLevel -json $(NAME).json\" $(VERILOG)          nextpnr-ecp5 --package $(PACKAGE) --$(DEVICE) --json $(NAME).json --textcfg $(NAME)_out.config --lpf $(LPF) --lpf-allow-unconstrained          ecppack --compress --freq 38.8 --input $(NAME)_out.config --bit $(NAME).bit    upload_openloader:  ifeq (\"$(FLASH_METHOD)\", \"flash\")          openFPGALoader -v --ftdi-channel $(FTDI_CHANNEL) -f --reset $(NAME).bit  else          openFPGALoader -v --ftdi-channel $(FTDI_CHANNEL) $(NAME).bit  endif   clean:          @rm $(NAME).json $(NAME)_out.config $(NAME).bit $(VERILOG)<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p> \u041f\u043e \u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, \u0434\u043b\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c .LPF \u0444\u0430\u0439\u043b \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421, \u0440\u0430\u0441\u043f\u0430\u044f\u043d\u043d\u043e\u0439 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u043c\u044f \u0432 \u0443\u0442\u0438\u043b\u0438\u0442\u0443 <strong>nextpnr-ecp5<\/strong>. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b <strong>karnix_cabga256.lpf<\/strong> \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<ol>\n<li>\n<p>\u041d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 <strong>25.0 \u041c\u0413\u0446<\/strong> \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a \u0432\u044b\u0432\u043e\u0434\u0443 <strong>B9<\/strong> \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u043c \u044d\u0442\u043e\u0442 \u0432\u044b\u0432\u043e\u0434 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>clk<\/strong>.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u0432\u044b\u0432\u043e\u0434 <strong>E13<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u043f\u043e\u0434\u0432\u0435\u0434\u0435\u043d \u043a \u043a\u043d\u043e\u043f\u043a\u0435 <strong>KEY3<\/strong> \u0438 \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u0442 \u043a \u043b\u043e\u0433 \u00ab0\u00bb, \u043a\u0430\u043a \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u0431\u0440\u043e\u0441\u0430 <strong>reset<\/strong>.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u0432\u044b\u0432\u043e\u0434\u044b <strong>B13<\/strong> \u0438 <strong>C13<\/strong>, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a\u043d\u043e\u043f\u043a\u0438 <strong>KEY0<\/strong> \u0438 <strong>KEY1<\/strong>, \u043a\u0430\u043a \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b <strong>io_cond0<\/strong> \u0438 <strong>io_cond1<\/strong> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u0432\u044b\u0432\u043e\u0434 <strong>A13<\/strong>, \u043a \u043d\u0435\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 <strong>LED0<\/strong>, \u043a\u0430\u043a \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>io_flag<\/strong>.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u0432\u044b\u0432\u043e\u0434\u044b <strong>L1<\/strong>, <strong>L2<\/strong>, <strong>M1<\/strong>, <strong>M2<\/strong>, <strong>K4<\/strong>, <strong>K5<\/strong>, <strong>L4<\/strong> \u0438 <strong>L4<\/strong> \u043a\u0430\u043a \u0431\u0438\u0442\u044b \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>io_state[7:0]<\/strong>. \u042d\u0442\u0438 \u0432\u044b\u0432\u043e\u0434\u044b \u0440\u0430\u0441\u043f\u0430\u044f\u043d\u044b \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 <strong>GPIO_00<\/strong> \u2014 <strong>GPIO_07<\/strong>.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0441\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u0438\u043c\u0435\u044e\u0442 \u0443\u0440\u043e\u0432\u043d\u0438 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0439 +3,3\u0412, \u0442.\u00a0\u0435. \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u0438\u043f\u0443 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 <strong>LVCMOS33.<\/strong><\/p>\n<\/li>\n<\/ol>\n<p>\u0422\u043e\u0433\u0434\u0430 \u043d\u0430\u0448 .LPF \u0444\u0430\u0439\u043b \u043f\u0440\u0438\u043c\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434:<\/p>\n<details class=\"spoiler\">\n<summary>karnix_cabga256.lpf<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>FREQUENCY PORT \"clk\" 25.0 MHz;  LOCATE COMP \"clk\" SITE \"B9\";  IOBUF PORT \"clk\" IO_TYPE=LVCMOS33;   LOCATE COMP \"reset\" SITE \"E13\";  IOBUF PORT \"reset\" IO_TYPE=LVCMOS33;   LOCATE COMP \"io_cond0\" SITE \"B13\";             # KEY0  IOBUF PORT \"io_cond0\" IO_TYPE=LVCMOS33;   LOCATE COMP \"io_cond1\" SITE \"C13\";             # KEY1  IOBUF PORT \"io_cond1\" IO_TYPE=LVCMOS33;   LOCATE COMP \"io_flag\" SITE \"A13\";             # LED0  IOBUF PORT \"io_flag\" IO_TYPE=LVCMOS33;   LOCATE COMP \"io_state[0]\" SITE \"L1\";             # GPIO_00  IOBUF PORT \"io_state[0]\" IO_TYPE=LVCMOS33;  IOBUF PORT \"io_state[0]\" PULLMODE=NONE DRIVE=16;  LOCATE COMP \"io_state[1]\" SITE \"L2\";             # GPIO_01  IOBUF PORT \"io_state[1]\" IO_TYPE=LVCMOS33;  IOBUF PORT \"io_state[1]\" PULLMODE=NONE DRIVE=16;  LOCATE COMP \"io_state[2]\" SITE \"M1\";             # GPIO_02  IOBUF PORT \"io_state[2]\" IO_TYPE=LVCMOS33;  IOBUF PORT \"io_state[2]\" PULLMODE=NONE DRIVE=16;  LOCATE COMP \"io_state[3]\" SITE \"M2\";             # GPIO_03  IOBUF PORT \"io_state[3]\" IO_TYPE=LVCMOS33;  IOBUF PORT \"io_state[3]\" PULLMODE=NONE DRIVE=16;  LOCATE COMP \"io_state[4]\" SITE \"K4\";             # GPIO_04  IOBUF PORT \"io_state[4]\" IO_TYPE=LVCMOS33;  IOBUF PORT \"io_state[4]\" PULLMODE=NONE DRIVE=16;  LOCATE COMP \"io_state[5]\" SITE \"K5\";             # GPIO_05  IOBUF PORT \"io_state[5]\" IO_TYPE=LVCMOS33;  IOBUF PORT \"io_state[5]\" PULLMODE=NONE DRIVE=16;  LOCATE COMP \"io_state[6]\" SITE \"L4\";             # GPIO_06  IOBUF PORT \"io_state[6]\" IO_TYPE=LVCMOS33;  IOBUF PORT \"io_state[6]\" PULLMODE=NONE DRIVE=16;  LOCATE COMP \"io_state[7]\" SITE \"L5\";             # GPIO_07  IOBUF PORT \"io_state[7]\" IO_TYPE=LVCMOS33;  IOBUF PORT \"io_state[7]\" PULLMODE=NONE DRIVE=16; <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <strong>make<\/strong> \u0438 \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0441\u0431\u043e\u0440\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c: <\/p>\n<pre><code>Info: Program finished normally.  ecppack --compress --freq 38.8 --input projectname_out.config --bit projectname.bit<\/code><\/pre>\n<p> \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0448\u043b\u043e \u0443\u0434\u0430\u0447\u043d\u043e, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043b\u0430\u0442\u0443 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <strong>make upload<\/strong> \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0443 \u0446\u0438\u0444\u0440\u043e\u0432\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u043d\u0430\u0436\u0438\u043c\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0438 KEY0 \u0438 KEY1 \u2014 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0437\u0430 \u0440\u0435\u0430\u043a\u0446\u0438\u0435\u0439 \u043d\u0430 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0435 LED0, \u0430 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0430\u0445 GPIO \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439 \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 <strong>projectname.bit<\/strong> .<\/p>\n<p> \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0441\u0431\u0440\u043e\u0441\u0430. \u041d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0443\u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab<strong>RESET<\/strong>\u00bb. \u0415\u0451 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u0441\u0431\u0440\u043e\u0441\u0443 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 \u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438\u0437 NOR flash \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e \u0440\u0430\u0432\u043d\u043e\u0441\u0438\u043b\u044c\u043d\u043e \u0441\u0431\u0440\u043e\u0441\u0443 \u043f\u0438\u0442\u0430\u043d\u0438\u044f. \u0421\u0438\u0433\u043d\u0430\u043b \u00ab<strong>reset<\/strong>\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u0432\u044b\u0448\u0435 \u0438 \u043f\u043e\u0434\u0432\u0435\u043b\u0438 \u043d\u0430 \u043a\u043e\u043f\u043a\u0443 KEY3 \u2014 \u044d\u0442\u043e \u0441\u0431\u0440\u043e\u0441 \u0441\u0445\u0435\u043c\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u041f\u041b\u0418\u0421, \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0435\u0451 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u044b.<\/p>\n<p>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435 \u043c\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u0441 \u043a\u043e\u0434\u043e\u043c \u043d\u0430 SpinalHDL \u0438 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445, \u0432\u044b\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c Scala \u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u043a\u043e\u0434\u0430  SpinalHDL. \u0410 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441 Makefile-\u043e\u043c \u0438 .LPF \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u044b \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb:<\/p>\n<p><a href=\"https:\/\/github.com\/Fabmicro-LLC\/SpinalTemplateSbtForKarnix.git\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/Fabmicro-LLC\/SpinalTemplateSbtForKarnix.git<\/a><\/p>\n<p><a class=\"anchor\" name=\"13.6\" id=\"13.6\"><\/a><\/p>\n<h3> 13.6  \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0432\u044b\u0432\u043e\u0434 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 SpinalHDL<\/h3>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0431\u043e\u0440\u043a\u0438, \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0432\u044b\u0432\u043e\u0434 \u043e\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 Scala, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 SpinalHDL:<\/p>\n<pre><code class=\"bash\">rz@devbox:~\/SpinalTemplateSbt$ make   sbt \"runMain projectname.MyTopLevelVerilog\"  [info] welcome to sbt 1.6.0 (Ubuntu Java 11.0.9.1)  [info] loading settings for project spinaltemplatesbt-build from plugins.sbt ...  [info] loading project definition from \/home\/rz\/SpinalTemplateSbt\/project  [info] loading settings for project projectname from build.sbt ...  [info] set current project to projectname (in build file:\/home\/rz\/SpinalTemplateSbt\/)  [info] running (fork) projectname.MyTopLevelVerilog <\/code><\/pre>\n<p> \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0442.\u00a0\u0435. \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f Scala \u043d\u0435 \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043e, \u0442\u043e SBT \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e JVM \u0438 \u043c\u044b \u043d\u0430\u0447\u043d\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442 SpinalHDL \u043e \u0445\u043e\u0434\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438:<\/p>\n<pre><code>[info] [Runtime] SpinalHDL v1.10.0    git head : 270018552577f3bb8e5339ee2583c9c22d324215  [info] [Runtime] JVM max memory : 8294.0MiB  [info] [Runtime] Current date : 2024.01.26 21:22:22  [info] [Progress] at 0.000 : Elaborate components  [info] [Progress] at 0.725 : Checks and transforms  [info] [Progress] at 0.958 : Generate Verilog  [info] [Done] at 1.140  [success] Total time: 5 s, completed Jan 26, 2024, 9:22:23 PM <\/code><\/pre>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u043d\u0435\u0441\u0442\u0438 \u0432 \u043a\u043e\u0434 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u043e\u0448\u0438\u0431\u043a\u0443, \u0441\u043a\u0430\u0436\u0435\u043c, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 (\u0441\u0438\u0433\u043d\u0430\u043b\u0443) \u0442\u0438\u043f\u0430 <strong>UInt<\/strong> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 <strong>Bool<\/strong>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u043a\u043e\u0434 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: <\/p>\n<pre><code class=\"scala\">  val counter = Reg(UInt(8 bits)) init 0     io.state := True \/\/ &lt;-- error here    when(io.cond0) {      counter := counter + 1    } <\/code><\/pre>\n<p> \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u043c\u044b \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 Scala \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0438\u0434\u0430:<\/p>\n<details class=\"spoiler\">\n<summary>Compilation failed<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>rz@devbox:~\/SpinalTemplateSbt$ make   sbt \"runMain projectname.MyTopLevelVerilog\"  [info] welcome to sbt 1.6.0 (Ubuntu Java 11.0.9.1)  [info] loading settings for project spinaltemplatesbt-build from plugins.sbt ...  [info] loading project definition from \/home\/rz\/SpinalTemplateSbt\/project  [info] loading settings for project projectname from build.sbt ...  [info] set current project to projectname (in build file:\/home\/rz\/SpinalTemplateSbtForKarnix\/)  [info] compiling 1 Scala source to \/home\/rz\/SpinalTemplateSbtForKarnix\/target\/scala-2.12\/classes ...  [error] \/home\/rz\/SpinalTemplateSbtForKarnix\/hw\/spinal\/projectname\/MyTopLevel.scala:16:12: overloaded method value := with alternatives:  [error]   (value: String)Unit &lt;and>  [error]   (rangesValue: (Any, Any),_rangesValues: (Any, Any)*)Unit &lt;and>  [error]   (that: spinal.core.UInt)(implicit loc: spinal.idslplugin.Location)Unit  [error]  cannot be applied to (spinal.core.Bool)  [error]   io.state := True  [error]            ^  [error] one error found  [error] (Compile \/ compileIncremental) Compilation failed  [error] Total time: 7 s, completed Jan 26, 2024, 10:50:44 PM  Makefile:15: recipe for target 'hw\/gen\/MyTopLevel.v' failed  make: *** [hw\/gen\/MyTopLevel.v] Error 1 <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0417\u0434\u0435\u0441\u044c Scala \u0432\u044b\u0434\u0430\u0435\u0442 \u0447\u0435\u0442\u043a\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0433\u0434\u0435 \u0438 \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u0435\u043c \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u043e\u0434 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p> \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 SpinalHDL \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442 \u0440\u044f\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043d\u0430\u0448\u0435\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u043d\u0430 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c \u00ab\u0437\u0430\u0449\u0435\u043b\u043a\u0438\u00bb \u0438 \u00ab\u043f\u0435\u0442\u043b\u0438\u00bb \u2014 \u044d\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0445\u043e\u0434 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0446\u0435\u043f\u0438 \u0437\u0430\u0432\u0435\u0440\u043d\u0443\u0442 \u043d\u0430 \u0435\u0451 \u0432\u0445\u043e\u0434. \u0422\u0430\u043a\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c\u0430\u0445 \u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0440\u044f\u0434 \u043f\u0440\u043e\u0431\u043b\u0435\u043c (\u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043e\u0447\u0435\u043d\u044c \u0440\u0435\u0434\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0446\u0435\u043b\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e). \u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c\u0438 \u0438 \u043c\u0430\u043b\u043e\u0437\u0430\u043c\u0435\u0442\u043d\u044b\u043c\u0438, \u0438 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u043e\u0441\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u0432 \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0438\u0437\u0434\u0435\u043b\u0438\u0435, \u0437\u0434\u0435\u0441\u044c SpinalHDL \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u0441\u0442\u0440\u0430\u0436\u0435 \u043d\u0430\u0448\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432.<\/p>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u00ab\u043f\u0435\u0442\u043b\u044e\u00bb \u0432 \u043a\u043e\u0434 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0440\u0435\u0430\u043a\u0446\u0438\u044f SpinalHDL. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u0444\u0430\u0439\u043b <strong>hw\/spinal\/projectname\/MyTopLevel.scala<\/strong> \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0442\u0435\u043b\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"scala\">val counter = Reg(UInt(8 bits)) init 0    val latch = Bool()     latch := ~io.flag     when(io.cond0) {      counter := counter + 1    }     io.state := counter    \/\/io.flag := (counter === 0) | io.cond1    io.flag := (counter === 0) | io.cond1 | latch <\/code><\/pre>\n<p> \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <strong>make<\/strong> \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0434\u043b\u0438\u043d\u043d\u0443\u044e \u043f\u043e\u0440\u0442\u044f\u043d\u043a\u0443 \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0438\u0434\u0430:<\/p>\n<details class=\"spoiler\">\n<summary>COMBINATORIAL LOOP<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>[info] **********************************************************************************************  [info] [Warning] Elaboration failed (2 errors).  [info]           Spinal will restart with scala trace to help you to find the problem.  [info] **********************************************************************************************  [info] [Progress] at 0.902 : Elaborate components  [info] [Progress] at 0.918 : Checks and transforms  [error] Exception in thread \"main\" spinal.core.SpinalExit:  [error]  Error detected in phase PhaseCheckCombinationalLoops  [error] ********************************************************************************  [error] ********************************************************************************  [error] COMBINATORIAL LOOP :  [error]   Partial chain :  [error]     >>> (toplevel\/io_flag : out Bool) at projectname.MyTopLevel$$anon$1.&lt;init>(MyTopLevel.scala:10) >>>  [error]     >>> (toplevel\/latch :  Bool) at projectname.MyTopLevel.&lt;init>(MyTopLevel.scala:15) >>>  [error]     >>> (toplevel\/io_flag : out Bool) at projectname.MyTopLevel$$anon$1.&lt;init>(MyTopLevel.scala:10) >>>  [error]   Full chain :  [error]     (toplevel\/io_flag : out Bool)  [error]     ! Bool  [error]     (toplevel\/latch :  Bool)  [error]     Bool || Bool  [error]     (toplevel\/io_flag : out Bool)  [error] ********************************************************************************<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p> \u0417\u0434\u0435\u0441\u044c SpinalHDL \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u043c \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 (<strong>MyTopLevel.scala:10<\/strong> \u0438 <strong>MyTopLevel.scala:15<\/strong>) \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u00ab\u043f\u0435\u0442\u043b\u0438\u00bb.<\/p>\n<p>\u041a \u0441\u043b\u043e\u0432\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0441\u0438\u043d\u0442\u0435\u0437\u0430 <strong>yosys<\/strong> \u0442\u043e\u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u00ab\u043f\u0435\u0442\u043b\u0438\u00bb, \u043e \u0447\u0435\u043c \u0432\u044b\u0434\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e <strong>yosys<\/strong> \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442, \u043d\u043e SpinalHDL \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0435\u043f\u043e\u043b\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>io_flag<\/strong>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"scala\">val counter = Reg(UInt(8 bits)) init 0     when(io.cond0) {      counter := counter + 1    }     io.state := counter    \/\/io.flag := (counter === 0) | io.cond1    when(counter === 0 | io.cond1) {      io.flag := True    } <\/code><\/pre>\n<p>\u0416\u0438\u0440\u043d\u044b\u043c \u0448\u0440\u0438\u0444\u0442\u043e\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u0442 SpinalHDL \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435:<\/p>\n<details class=\"spoiler\">\n<summary>LATCH DETECTED from the combinatorial signal<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>[info] **********************************************************************************************  [info] [Warning] Elaboration failed (2 errors).  [info]           Spinal will restart with scala trace to help you to find the problem.  [info] **********************************************************************************************  [info] [Progress] at 0.948 : Elaborate components  [info] [Progress] at 0.968 : Checks and transforms  [error] Exception in thread \"main\" spinal.core.SpinalExit:  [error]  Error detected in phase PhaseCheck_noLatchNoOverride  [error] ********************************************************************************  [error] ********************************************************************************  [error] LATCH DETECTED from the combinatorial signal (toplevel\/io_flag : out Bool), defined at  [error]     projectname.MyTopLevel$$anon$1.&lt;init>(MyTopLevel.scala:10)  [error]     projectname.MyTopLevel.&lt;init>(MyTopLevel.scala:7)  [error]     projectname.MyTopLevelVerilog$.$anonfun$new$3(MyTopLevel.scala:28)  [error]     spinal.sim.JvmThread.run(SimManager.scala:51)  [error] ******************************************************************************** <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0440\u0430\u0437, SpinalHDL \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043d\u0430\u043c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u0441\u043e\u0437\u0434\u0430\u044e\u0449\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u0430 \u0434\u0430\u043b\u0435\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a \u0431\u043b\u043e\u043a\u043e\u0432 \u043a\u043e\u0434\u0430, \u0433\u0434\u0435 \u044d\u0442\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 SpinalHDL \u043d\u0435 \u0434\u0430\u0441\u0442 \u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043d\u0430 \u043d\u043e\u043c\u0435\u0440 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0434\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u2014 \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439, \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u0430.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0433\u043b\u0443\u043f\u044b\u043c, \u043d\u043e \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c:<\/p>\n<pre><code class=\"scala\">  io.state := counter    \/\/io.flag := (counter === 0) | io.cond1    when(counter === 0 | io.cond1) {      io.flag := True    } otherwise {      io.flag := False    } <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0436\u0438\u0440\u043d\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e:<\/p>\n<details class=\"spoiler\">\n<summary>SUCCESS<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>rz@devbox:~\/SpinalTemplateSbt$ make  sbt \"runMain projectname.MyTopLevelVerilog\"  [info] welcome to sbt 1.6.0 (Ubuntu Java 11.0.9.1) [info] compiling 1 Scala source to \/home\/rz\/SpinalTemplateSbt\/target\/scala-2.12\/classes ...  [info] running (fork) projectname.MyTopLevelVerilog  [info] [Runtime] SpinalHDL v1.10.0    git head : 270018552577f3bb8e5339ee2583c9c22d324215  [info] [Runtime] JVM max memory : 8294.0MiB  [info] [Runtime] Current date : 2024.01.26 22:40:43  [info] [Progress] at 0.000 : Elaborate components  [info] [Progress] at 0.692 : Checks and transforms  [info] [Progress] at 0.900 : Generate Verilog  [info] [Done] at 1.036  [success] Total time: 13 s, completed Jan 26, 2024, 10:40:44 PM<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>SpinalHDL \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0435\u0449\u0435 \u0440\u044f\u0434 \u043e\u0448\u0438\u0431\u043e\u043a, \u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u0434\u0432\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u044b\u043c\u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u043c\u0438, \u0438 \u0441 \u043d\u0438\u043c\u0438 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u044e\u0431\u043e\u0439 \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0436\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043c\u043e\u0439 \u0431\u0435\u0433\u043b\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439, \u0438 \u043e\u043d \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432 \u0441\u0432\u043e\u0451\u043c \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c SpinalHDL. <\/p>\n<p><a class=\"anchor\" name=\"13.7\" id=\"13.7\"><\/a><\/p>\n<h3> 13.7  \u0421\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044f \u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432 SpinalHDL<\/h3>\n<p>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0432 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044f \u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432 SpinalHDL. \u0422\u0430\u043a \u043a\u0430\u043a SpinalHDL \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 Verilog \u043a\u043e\u0434, \u0442\u043e \u043a \u0435\u0433\u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b \u0432\u0441\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430. \u041e\u0434\u043d\u0430\u043a\u043e, \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0440 \u0432 SpinalHDL \u0431\u044b\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d API, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0441\u043f\u044b\u0442\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0435\u043d\u0434\u044b (testbenches) \u043f\u0440\u044f\u043c\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u0441\u044e \u043c\u043e\u0449\u044c \u044f\u0437\u044b\u043a\u0430 Scala. \u0414\u0430\u043d\u043d\u044b\u0439 API \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c\/\u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u00ab\u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e\u00bb \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430, \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u0442\u044c \u0438, \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438, \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438\u0441\u043f\u044b\u0442\u0443\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0438 \u0442.\u00a0\u0434.<\/p>\n<p>\u0414\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 SpinalHDL \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a Verilator \u0438 Icarus Verilog, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u044d\u0442\u0438\u0445 \u0442\u0443\u043b\u043e\u0432 \u043c\u044b \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438 \u0440\u0430\u043d\u0435\u0435. \u041d\u0438\u0436\u0435 \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0431\u0435\u043d\u0447\u0430 \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430 SpinalHDL.<\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u00ab\u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u043a\u0440\u043e\u043b\u0438\u043a\u0430\u00bb \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <strong>Indentity<\/strong> \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0441\u0432\u043e\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0432 \u0431\u0438\u0442\u0430\u0445. \u042d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438\u043c\u0435\u0435\u0442 \u043e\u0434\u0438\u043d \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>a<\/strong> \u0438 \u043e\u0434\u0438\u043d \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b <strong>z<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b. \u041a\u043e\u0434 \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"scala\">import spinal.core._  \/\/ Identity takes n bits in a and gives them back in z class Identity(n: Int) extends Component {   val io = new Bundle {     val a = in Bits(n bits)     val z = out Bits(n bits)   }    io.z := io.a }<\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u044b\u0442\u0430\u0442\u044c (\u0432\u0435\u0440\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c) \u0440\u0430\u0431\u043e\u0442\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 <strong>Identity<\/strong> \u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u044f, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0440\u0438 \u0431\u0438\u0442\u0430. \u0422\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u044b\u0442\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0435\u043d\u0434 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"scala\">import spinal.core.sim._  object TestIdentity extends App {   \/\/ Use the component with n = 3 bits as \"dut\" (device under test)   SimConfig.withWave.compile(new Identity(3)).doSim{ dut =>     \/\/ For each number from 3'b000 to 3'b111 included     for (a &lt;- 0 to 7) {       \/\/ Apply input       dut.io.a #= a       \/\/ Wait for a simulation time unit       sleep(1)       \/\/ Read output       val z = dut.io.z.toInt       \/\/ Check result       assert(z == a, s\"FAIL: Got $z, expected $a\")     }     println(s\"SUCCESS!\")   } }<\/code><\/pre>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u0441\u0442\u0431\u0435\u043d\u0447 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u044b\u0442\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <strong>dut<\/strong> \u0442\u0438\u043f\u0430 <strong>Identity(3)<\/strong> \u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u043f\u0443\u0442\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u0432\u0441\u0435\u0445 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0445 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 <strong>dut.a<\/strong> \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 <strong>dut.z<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c. \u0415\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043e \u043d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435, \u0442\u043e \u0432 \u043b\u043e\u0433 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 (assert) \u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u0432\u0441\u0435\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0432 \u043b\u043e\u0433\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u00abSUCCESS!\u00bb.<\/p>\n<p> \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <strong>hw\/spinal\/projectname\/TestIdentity.scala<\/strong> \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<details class=\"spoiler\">\n<summary>sbt &#171;runMain projectname.TestIdentity&#187;<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>rz@devbox:~\/SpinalTemplateSbt $ sbt \"runMain projectname.TestIdentity\"   [info] welcome to sbt 1.6.0 (OpenJDK BSD Porting Team Java 1.8.0_392)  [info] loading settings for project spinaltemplatesbt-build from plugins.sbt ...  [info] loading project definition from \/usr\/home\/rz\/SpinalTemplateSbt\/project  [info] loading settings for project projectname from build.sbt ...  [info] set current project to projectname (in build file:\/usr\/home\/rz\/SpinalTemplateSbt\/)  [info] running (fork) projectname.TestIdentity  [info] [Runtime] SpinalHDL v1.10.1    git head : 2527c7c6b0fb0f95e5e1a5722a0be732b364ce43  [info] [Runtime] JVM max memory : 4512.0MiB  [info] [Runtime] Current date : 2024.03.15 03:33:52  [info] [Progress] at 0.000 : Elaborate components  [info] [Progress] at 0.176 : Checks and transforms  [info] [Progress] at 0.259 : Generate Verilog  [info] [Done] at 0.304  [info] [Progress] Simulation workspace in \/usr\/home\/rz\/SpinalTemplateSbt\/.\/simWorkspace\/Identity  [info] [Progress] Verilator compilation started  [info] [info] Found cached verilator binaries  [info] [Progress] Verilator compilation done in 311.979 ms  [info] [Progress] Start Identity test simulation with seed 1948229477  [info] SUCCESS!  [info] [Done] Simulation done in 7.414 ms  [success] Total time: 3 s, completed Mar 15, 2024 3:33:53 AM <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u043a\u0430\u043a SBT \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u0430\u043c \u043a\u043e\u0434 \u0434\u043b\u044f Verilator-\u0430 (\u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u043a\u043e\u0434 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438, \u043e\u043d \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <strong>.\/simWorkspace\/<\/strong>), \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0435\u0433\u043e \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435. \u0423\u0441\u043f\u0435\u0448\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0432 \u0432\u0438\u0434\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f:<\/p>\n<pre><code>[info] SUCCESS! <\/code><\/pre>\n<p>\u041d\u043e \u044d\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0451. \u0412 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <strong>.\/simWorkspace\/Identity\/test\/<\/strong> \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0444\u0430\u0439\u043b \u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u043d<strong>\u043e<\/strong>\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u043e\u0439 \u0432\u0441\u0435\u0445 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u043c\u044b\u0445 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438\u043b\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439:<\/p>\n<pre><code class=\"bash\">rz@devbox:~\/SpinalTemplateSbtForKarnix $ ll simWorkspace\/Identity\/test\/  total 4  -rw-r--r--  1 rz  rz  548 Mar 15 03:33 wave.vcd <\/code><\/pre>\n<p>\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0432\u0438\u0434\u0435) \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043c\u043e\u0436\u043d\u043e \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <strong>GTKWave<\/strong>:<\/p>\n<pre><code class=\"bash\">rz@devbox:~\/SpinalTemplateSbt $ gtkwave simWorkspace\/Identity\/test\/wave.vcd<\/code><\/pre>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0438\u0441\u043f\u044b\u0442\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <strong>Identity<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443, \u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u2014 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u0432\u043e\u0440\u043e\u0442\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0414\u0430\u043b\u0435\u0435, \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u044f\u0434\u0440\u043e\u043c VexRiscv, \u044f \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e \u043a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u0442\u0430\u043a\u0442\u043e\u0432\u0443\u044e \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044e \u044f\u0434\u0440\u0430 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0438 \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p><a class=\"anchor\" name=\"14\" id=\"14\"><\/a><\/p>\n<h2> 14.  \u0421\u0438\u043d\u0442\u0435\u0437 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 VexRiscv<\/h2>\n<h3> 14.1 \u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u043c VexRiscv<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u043e\u0438\u043b\u0438\u0441\u044c \u0441 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c \u044f\u0437\u044b\u043a\u0430 SpinalHDL, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u0441\u0440\u0435\u0434\u0443, \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0438\u043f\u043e\u0432\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044e \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u042d\u0412\u041c \u043d\u0430 \u0431\u0430\u0437\u0435 \u044f\u0434\u0440\u0430 VexRiscv.<\/p>\n<p> \u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 \u043a\u043e\u0434\u043e\u043c VexRiscv \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443: <a href=\"https:\/\/github.com\/SpinalHDL\/VexRiscv\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/SpinalHDL\/VexRiscv<\/a><\/p>\n<p>\u041a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0442\u0430\u043c \u0432\u043d\u0443\u0442\u0440\u0438:<\/p>\n<details class=\"spoiler\">\n<summary>Cloning into &#8216;VexRiscv&#8217;&#8230; <\/summary>\n<div class=\"spoiler__content\">\n<pre><code>rz@devbox:~$ git clone https:\/\/github.com\/SpinalHDL\/VexRiscv  Cloning into 'VexRiscv'...  ... Resolving deltas: 100% (9730\/9730), done.  rz@devbox:~$ cd  VexRiscv rz@devbox:~\/VexRiscv$ tree -d -L 5  .  \u251c\u2500\u2500 assets  \u251c\u2500\u2500 doc  \u2502\u00a0\u00a0 \u251c\u2500\u2500 gcdPeripheral  \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 img  \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 src  \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2514\u2500\u2500 main  \u2502\u00a0\u00a0 \u2502\u00a0\u00a0         \u251c\u2500\u2500 c  \u2502\u00a0\u00a0 \u2502\u00a0\u00a0         \u2514\u2500\u2500 scala  \u2502\u00a0\u00a0 \u251c\u2500\u2500 nativeJtag  \u2502\u00a0\u00a0 \u251c\u2500\u2500 smp  \u2502\u00a0\u00a0 \u2514\u2500\u2500 vjtag  \u251c\u2500\u2500 project  \u251c\u2500\u2500 scripts  \u2502\u00a0\u00a0 \u251c\u2500\u2500 Murax  \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 arty_a7  \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 iCE40-hx8k_breakout_board  \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 img  \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 iCE40-hx8k_breakout_board_xip  \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 img  \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 iCE40HX8K-EVB  \u2502\u00a0\u00a0 \u2514\u2500\u2500 regression  \u2514\u2500\u2500 src      \u251c\u2500\u2500 main      \u2502\u00a0\u00a0 \u251c\u2500\u2500 c      \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 common      \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 emulator      \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 build      \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 src      \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 murax      \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u251c\u2500\u2500 hello_world      \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2514\u2500\u2500 xipBootloader      \u2502\u00a0\u00a0 \u251c\u2500\u2500 ressource      \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 hex      \u2502\u00a0\u00a0 \u2514\u2500\u2500 scala      \u2502\u00a0\u00a0     \u251c\u2500\u2500 spinal      \u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2514\u2500\u2500 lib      \u2502\u00a0\u00a0     \u2514\u2500\u2500 vexriscv      \u2502\u00a0\u00a0         \u251c\u2500\u2500 demo      \u2502\u00a0\u00a0         \u251c\u2500\u2500 ip      \u2502\u00a0\u00a0         \u251c\u2500\u2500 plugin      \u2502\u00a0\u00a0         \u2514\u2500\u2500 test      \u2514\u2500\u2500 test <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p> \u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u043d\u0430\u0441 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0445 \u043f\u043e\u0440\u0430\u0445 \u0431\u0443\u0434\u0443\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 <strong>.\/scripts\/Murax<\/strong>, <strong>.\/<\/strong>src\/main\/scala \u0438 <strong>.\/src\/main\/c<\/strong>.<\/p>\n<p>\u041f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433 <strong>.\/scripts\/Murax<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u044f\u0434 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0421\u043d\u041a Murax \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043b\u0430\u0442 \u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u043c\u0438 \u041f\u041b\u0418\u0421.<\/p>\n<p>\u041f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433 <strong>.\/src\/main\/scala<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u0434 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 SpinalHDL, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u044f\u0434\u0440\u0430 VexRiscv, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0421\u043d\u041a \u043d\u0430 \u0435\u0433\u043e \u0431\u0430\u0437\u0435 \u0438 \u043a\u043e\u0434 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432 \u044d\u0442\u0438\u0445 \u0421\u043d\u041a.<\/p>\n<p>\u041f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433 <strong>.\/src\/main\/c<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u043c \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043c\u044b \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0441\u0431\u043e\u0440\u043a\u0435 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.<\/p>\n<p><a class=\"anchor\" name=\"14.2\" id=\"14.2\"><\/a><\/p>\n<h3> 14.2 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b RISC-V<\/h3>\n<p>\u0421\u0431\u043e\u0440\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 VexRiscv \u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0430 \u0442\u0435\u043c \u0444\u0430\u043a\u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u043c\u0438\u043c\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u043d\u0430\u043c \u0435\u0449\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438, \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0421\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b RISC-V \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u00abGNU C Toolchain for RISC-V\u00bb. \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c RISC-V GCC toolchain.<\/p>\n<p> \u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u044d\u0442\u043e \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 <a href=\"https:\/\/github.com\/riscv\/riscv-gnu-toolchain\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/riscv\/riscv-gnu-toolchain<\/a> \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u044f\u0434 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0440\u044f\u0434 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438. \u0414\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u041e\u0421 Linux \u0438 *BSD \u044d\u0442\u043e \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439. \u041f\u0440\u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 <strong>&#8212;prefix=\/opt\/<\/strong>. \u0420\u0435\u0446\u0435\u043f\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code>git clone --recursive https:\/\/github.com\/riscv\/riscv-gnu-toolchain riscv-gnu-toolchain  cd riscv-gnu-toolchain   ARCH=rv32im  rmdir -rf $ARCH  mkdir $ARCH; cd $ARCH  ..\/configure  --prefix=\/opt\/$ARCH --with-arch=$ARCH --with-abi=ilp32  sudo make -j100500<\/code><\/pre>\n<p>\u0418 \u0436\u0434\u0430\u0442\u044c \u0434\u0432\u0430 \u0434\u043d\u044f.<\/p>\n<p> \u0412\u0442\u043e\u0440\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u044d\u0442\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 (pre-built) \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0441 \u0441\u0430\u0439\u0442\u0430 SiFive, \u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0439\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b. \u0414\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435:<\/p>\n<p><a href=\"https:\/\/www.sifive.com\/software\/\" rel=\"noopener noreferrer nofollow\">https:\/\/www.sifive.com\/software\/<\/a>  => SiFive Freedom SDK for Metal => Download<\/p>\n<p>\u0421\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <strong>\/opt\/<\/strong>, \u043b\u0438\u0431\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443.<\/p>\n<p>\u041d\u0443 \u0438 \u0442\u0440\u0435\u0442\u0438\u0439, \u0441\u0430\u043c\u044b\u0439 \u0431\u044b\u0441\u0442\u0440\u044b\u0439, \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 GCC \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 \u0432\u0430\u0448\u0435\u0439 \u041e\u0421, \u0442\u0430\u043a \u043a\u0430\u043a \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0440 \u043e\u043d \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432\u043e \u0432\u0441\u0435\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 \u041e\u0421 Linux \u0438 *BSD. \u0427\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f: <\/p>\n<p> \u0414\u043b\u044f \u041e\u0421 FreeBSD:<\/p>\n<pre><code class=\"bash\">$ sudo pkg install riscv64-none-elf-gcc<\/code><\/pre>\n<p>\u0414\u043b\u044f \u041e\u0421 Linux:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get install gcc-riscv64-linux-gnu<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0441\u0431\u043e\u0440\u043a\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u00ab<strong>hello_world<\/strong>\u00bb \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f VexRiscv:<\/p>\n<pre><code class=\"bash\">rz@devbox:~$ cd VexRiscv\/src\/main\/c\/murax\/hello_world  rz@devbox:~\/VexRiscv\/src\/main\/c\/murax\/hello_world$ make  mkdir -p build\/src\/  \/opt\/riscv\/\/bin\/riscv64-unknown-elf-gcc -c -march=rv32i  -mabi=ilp32 -DNDEBUG -g -Os -MD -fstrict-volatile-bitfields -fno-strict-aliasing   -o build\/src\/main.o src\/main.c  \/opt\/riscv\/\/bin\/riscv64-unknown-elf-gcc -S -march=rv32i  -mabi=ilp32 -DNDEBUG -g -Os -MD -fstrict-volatile-bitfields -fno-strict-aliasing   -o build\/src\/main.o.disasm src\/main.c  mkdir -p build\/src\/  \/opt\/riscv\/\/bin\/riscv64-unknown-elf-gcc -c -march=rv32i  -mabi=ilp32 -DNDEBUG -g -Os -MD -fstrict-volatile-bitfields -fno-strict-aliasing -o build\/src\/crt.o src\/crt.S -D__ASSEMBLY__=1  \/opt\/riscv\/\/bin\/riscv64-unknown-elf-gcc -march=rv32i  -mabi=ilp32 -DNDEBUG -g -Os -MD -fstrict-volatile-bitfields -fno-strict-aliasing -o build\/hello_world.elf build\/src\/main.o build\/src\/crt.o -march=rv32i  -mabi=ilp32 -nostdlib -lgcc -mcmodel=medany -nostartfiles -ffreestanding -Wl,-Bstatic,-T,.\/src\/linker.ld,-Map,build\/hello_world.map,--print-memory-usage -Lbuild  Memory region         Used Size  Region Size  %age Used               RAM:         896 B         2 KB     43.75%  \/opt\/riscv\/\/bin\/riscv64-unknown-elf-objcopy -O ihex build\/hello_world.elf build\/hello_world.hex  \/opt\/riscv\/\/bin\/riscv64-unknown-elf-objdump -S -d build\/hello_world.elf > build\/hello_world.asm  \/opt\/riscv\/\/bin\/riscv64-unknown-elf-objcopy -O verilog build\/hello_world.elf build\/hello_world.v <\/code><\/pre>\n<p> \u0415\u0441\u043b\u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u043f\u0443\u0442\u044c \u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <strong>which<\/strong>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code>rz@butterfly:~\/VexRiscv\/src\/main\/c\/murax\/hello_world % which riscv64-none-elf-gcc  \/usr\/local\/bin\/riscv64-none-elf-gcc<\/code><\/pre>\n<p> \u0438 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c <strong>.\/makefile<\/strong>, \u0437\u0430\u043c\u0435\u043d\u0438\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 <strong>RISCV_NAME<\/strong> \u0438 <strong>RISCV_PATH<\/strong> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438\u044f\u043c \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>which<\/strong>:<\/p>\n<pre><code>RISCV_NAME ?= riscv64-none-elf  RISCV_PATH ?= \/usr\/local\/ <\/code><\/pre>\n<p> \u0417\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 FreeBSD:  <\/p>\n<p>\u0412 *BSD \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0441\u0431\u043e\u0440\u043a\u0443 \u043d\u0443\u0436\u043d\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <strong>gmake<\/strong> (GNU make), \u0430 \u043d\u0435 <strong>make<\/strong> (BSD make), \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0432\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b. \u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u043e SpinalHDL \u044f \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043c\u043b\u0438\u043d\u043a \u0434\u043b\u044f <strong>gmake<\/strong> \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 <strong>~\/bin\/make<\/strong> \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u0435\u0440\u0432\u044b\u043c \u0432 \u043f\u043e\u0438\u0441\u043a\u0435, \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a:<\/p>\n<pre><code>rz@butterfly:~ % ln -s \/usr\/local\/bin\/gmake ~\/bin\/make rz@butterfly:~ % setenv PATH ~\/bin:$PATH  rz@butterfly:~ % echo $PATH  \/home\/rz\/bin:\/sbin:\/bin:\/usr\/sbin:\/usr\/bin:\/usr\/local\/sbin:\/usr\/local\/bin:\/home\/rz\/bin<\/code><\/pre>\n<p> \u0422\u0430\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0434\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442 \u0436\u0438\u0437\u043d\u044c, \u0442\u0430\u043a \u043a\u0430\u043a SpinalHDL \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <strong>GNU\u0442\u044b\u0439 make<\/strong>. \u041f\u043e\u0441\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0441\u0435\u0430\u043d\u0441 (\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b), \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <strong>PATH<\/strong> \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438 \u0441\u0442\u0430\u0440\u044b\u0439 <strong>BSD make<\/strong> \u0432\u0435\u0440\u043d\u0435\u0442\u0441\u044f.<\/p>\n<p><a class=\"anchor\" name=\"14.3\" id=\"14.3\"><\/a><\/p>\n<h3> 14.3 \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c Makefile, LPF \u0438 toplevel.v<\/h3>\n<p>\u0427\u0438\u0442\u0430\u0442\u0435\u043b\u044c, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0443\u0436\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u043b \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0432 \u0434\u0435\u0440\u0435\u0432\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0442 \u043d\u0430 \u0431\u0430\u0437\u0435 \u041f\u041b\u0418\u0421 Xilinx Artix-7 \u0438 Lattice iCE40, \u043d\u0430\u0441 \u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0441\u0431\u043e\u0440\u043a\u0430 \u0434\u043b\u044f Lattice ECP5 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u043f\u043b\u0430\u0442\u044b \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb (\u043d\u0443 \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0449\u0435 \u0440\u044f\u0434 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439: \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433 <strong>Karnix<\/strong> \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u044b \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c <strong>Makefile<\/strong> \u0434\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0441\u0431\u043e\u0440\u043a\u0438 (\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f, \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f, \u0441\u0438\u043d\u0442\u0435\u0437, \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430), <strong>LPF<\/strong> \u0444\u0430\u0439\u043b \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0444\u0430\u0439\u043b \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c-\u043e\u0431\u0435\u0440\u0442\u043a\u043e\u0439 toplevel.v \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0441\u043e\u0444\u0442-\u044f\u0434\u0440\u0430 VexRiscv \u0441 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 \u043d\u0430 \u043d\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u044b.<\/p>\n<p> 1. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433:<\/p>\n<pre><code>rz@devbox:~\/VexRiscv$ mkdir scripts\/Murax\/Karnix rz@devbox:~\/VexRiscv$ cd scripts\/Murax\/Karnix \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u043d\u0435\u0433\u043e: rz@devbox:~\/VexRiscv\/scripts\/Murax\/Karnix$<\/code><\/pre>\n<p> 2. \u041f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u0443\u0435\u043c <strong>Makefile<\/strong> \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f <strong>SpinalTemplateSbtForKarnix<\/strong> \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043d\u0435\u0433\u043e \u0432\u044b\u0437\u043e\u0432 \u0441\u0431\u043e\u0440\u043a\u0438 C\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u00abhello_world\u00bb. \u0413\u043e\u0442\u043e\u0432\u044b\u0439 <strong>Makefile<\/strong> \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<details class=\"spoiler\">\n<summary>Makefile \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 VexRiscv \u043f\u043e\u0434 \u043f\u043b\u0430\u0442\u0443 &#171;\u041a\u0430\u0440\u043d\u043e&#187;<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>rz@devbox:~\/VexRiscv\/scripts\/Murax\/Karnix$ cat Makefile  NAME = murax_hello_world  VEXRISCV = ..\/..\/..\/src\/main\/scala\/vexriscv\/demo\/Murax.scala  VERILOG = ..\/..\/..\/Murax.v  BIN = ..\/..\/..\/Murax.v*.bin  HEX = ..\/..\/..\/src\/main\/c\/murax\/hello_world\/build\/hello_world.hex  CSRC = ..\/..\/..\/src\/main\/c\/murax\/hello_world\/src\/*.[ch]  LPF = karnix_cabga256.lpf  DEVICE = 25k  PACKAGE = CABGA256  FTDI_CHANNEL = 0 ### FT2232 has two channels, select 0 for channel A or 1 for channel B  #  FLASH_METHOD := $(shell cat flash_method 2> \/dev\/null)  UPLOAD_METHOD := $(shell cat upload_method 2> \/dev\/null)   all: $(NAME).bit   compile: $(HEX)   $(HEX): $(CSRC)          (cd ..\/..\/..\/src\/main\/c\/murax\/hello_world\/; make)   generate: $(VERILOG) $(BIN)   $(VERILOG) $(BIN): $(HEX) $(VEXRISCV)          (cd ..\/..\/..; sbt \"runMain vexriscv.demo.Murax_karnix\")   $(NAME).bit: $(LPF) $(VERILOG) toplevel.v          yosys -v2 -p \"synth_ecp5 -abc2 -top toplevel -json $(NAME).json\" $(VERILOG) toplevel.v          nextpnr-ecp5 --package $(PACKAGE) --$(DEVICE) --json $(NAME).json --textcfg $(NAME)_out.config --lpf $(LPF) --lpf-allow-unconstrained          ecppack --compress --freq 38.8 --input $(NAME)_out.config --bit $(NAME).bit    upload:  ifeq (\"$(FLASH_METHOD)\", \"flash\")          openFPGALoader -v --ftdi-channel $(FTDI_CHANNEL) -f --reset $(NAME).bit  else          openFPGALoader -v --ftdi-channel $(FTDI_CHANNEL) $(NAME).bit  endif   clean:          -rm *.json *.config *.bit $(VERILOG) $(BIN) $(HEX)<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p> 3. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u0443\u0435\u043c \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f <strong>SpinalTemplateSbtForKarnix<\/strong> \u0444\u0430\u0439\u043b \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 <strong>karnix_cabga256.lpf<\/strong> \u0438 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043c \u0435\u0433\u043e \u0432 \u044d\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435. \u0417\u0434\u0435\u0441\u044c \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0433\u043e UART, \u0434\u043b\u044f \u043a\u043d\u043e\u043f\u043e\u043a KEY \u0438 \u0434\u043b\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432 LED. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 LPF \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<details class=\"spoiler\">\n<summary>karnix_cabga256.lpf<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>FREQUENCY PORT \"io_clk25\" 25.0 MHz;  LOCATE COMP \"io_clk25\" SITE \"B9\";  IOBUF PORT \"io_clk25\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_key[0]\" SITE \"B13\";  IOBUF PORT \"io_key[0]\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_key[1]\" SITE \"C13\";  IOBUF PORT \"io_key[1]\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_key[2]\" SITE \"D13\";  IOBUF PORT \"io_key[2]\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_key[3]\" SITE \"E13\";  IOBUF PORT \"io_key[3]\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_led[0]\" SITE \"A13\";             # LED0  IOBUF PORT \"io_led[0]\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_led[1]\" SITE \"A14\";             # LED1 - WORK  IOBUF PORT \"io_led[1]\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_led[2]\" SITE \"A15\";             # LED2 - TEST  IOBUF PORT \"io_led[2]\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_led[3]\" SITE \"B14\";             # LED3  IOBUF PORT \"io_led[3]\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_uart_debug_txd\" SITE \"E12\";             # UART_DEBUG_TXD  IOBUF PORT \"io_uart_debug_txd\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_uart_debug_rxd\" SITE \"D12\";             # UART_DEBUG_RXD  IOBUF PORT \"io_uart_debug_rxd\" IO_TYPE=LVCMOS33;  LOCATE COMP \"io_rst_n\" SITE \"R8\";               # FPGA_RESET  IOBUF PORT \"io_rst_n\" IO_TYPE=LVCMOS33 DRIVE=4;<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p><a class=\"anchor\" name=\"14.4\" id=\"14.4\"><\/a><\/p>\n<h3> 14.4 \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0421\u043d\u041a Murax \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u044b \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb<\/h3>\n<p>\u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0439\u043b <strong>.\/src\/main\/scala\/vexriscv\/demo\/Murax.scala<\/strong>, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443-\u043d\u0430-\u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435 Murax, \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043d\u0435\u0433\u043e \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u043f\u043e\u0434 \u043f\u043b\u0430\u0442\u0443 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0441\u0430\u043c\u044b\u0439 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 SpinalHDL:<\/p>\n<pre><code class=\"scala\">object Murax_karnix{    def main(args: Array[String]) {      val hex = \"src\/main\/c\/murax\/hello_world\/build\/hello_world.hex\"      SpinalVerilog(Murax(MuraxConfig.default(false).copy(coreFrequency = 25 MHz, onChipRamSize = 96 kB, onChipRamHexFile = hex)))    }  }<\/code><\/pre>\n<p> \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u00ab\u043e\u0431\u0435\u0440\u0442\u043e\u0447\u043d\u044b\u0439\u00bb \u043e\u0431\u044a\u0435\u043a\u0442 <strong>Murax_karnix<\/strong> \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430 <strong>main<\/strong>(<strong>)<\/strong> \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u0434\u0430 Verilog. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <strong>Murax()<\/strong> \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 (25 \u041c\u0413\u0446), \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043c \u041e\u0417\u0423 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <strong>96 \u041a\u0411<\/strong>) \u0438 \u043f\u0443\u0442\u044c \u043a HEX \u0444\u0430\u0439\u043b\u0443, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043e \u0432 \u044d\u0442\u043e \u041e\u0417\u0423 \u043f\u0440\u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421.  <\/p>\n<p>\u041c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 Lattice ECP5 25K \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u041e\u0417\u0423 \u043e\u0431\u044a\u0435\u043c\u043e\u043c \u0434\u043e 112 \u041a\u0411 \u0438\u0437 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 BRAM, \u043d\u043e \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u044d\u0442\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0430 \u043f\u043e\u0434 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0433\u043e.<\/p>\n<p><a class=\"anchor\" name=\"14.5\" id=\"14.5\"><\/a><\/p>\n<h3> 14.5 \u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u00abhello_world\u00bb<\/h3>\n<p>\u041a\u043e\u0434 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u00abhello_world\u00bb \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <strong>.\/src\/main\/c\/murax\/hello_world\/src\/<\/strong>, \u0437\u0430\u0439\u0434\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u0438 \u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c\u0441\u044f.<\/p>\n<pre><code>rz@devbox:~\/VexRiscv\/scripts\/Murax\/Karnix$ cd ..\/..\/..\/src\/main\/c\/murax\/hello_world\/src  rz@devbox:~\/VexRiscv\/src\/main\/c\/murax\/hello_world\/src$ ls -l   -rw-rw-r-- 1 rz rz 1642 Feb  3 19:46 crt.S  -rw-rw-r-- 1 rz rz  178 Feb  3 19:46 gpio.h  -rw-rw-r-- 1 rz rz  303 Feb  3 19:46 interrupt.h  -rw-rw-r-- 1 rz rz 2163 Feb  3 19:49 linker.ld  -rw-rw-r-- 1 rz rz 1182 Feb  3 21:55 main.c  -rw-rw-r-- 1 rz rz  483 Feb  3 21:38 murax.h  -rw-rw-r-- 1 rz rz  217 Feb  3 19:46 prescaler.h  -rw-rw-r-- 1 rz rz  296 Feb  3 19:46 timer.h  -rw-rw-r-- 1 rz rz 1263 Feb  3 21:40 uart.h <\/code><\/pre>\n<p> \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0440\u044f\u0434\u0430 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 (<strong>.h<\/strong>), \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 <strong>main.c<\/strong> \u0441 \u043a\u043e\u0434\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0444\u0430\u0439\u043b\u0430 <strong>crt.S<\/strong> \u0441 \u043a\u043e\u0434\u043e\u043c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u00abC run-time\u00bb, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u0438 \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439 (\u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0430) \u2014 <strong>linker.ld<\/strong>.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0430 \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u044a\u0435\u043c\u043e\u043c \u041e\u0417\u0423 \u043c\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c \u0438 \u043a\u0430\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441\u0442\u0435\u043a \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041e\u0442\u043a\u0440\u043e\u0435\u043c \u0444\u0430\u0439\u043b <strong>linker.ld<\/strong>, \u043d\u0430\u0439\u0434\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0432\u043d\u0435\u0441\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0436\u0438\u0440\u043d\u044b\u043c \u0448\u0440\u0438\u0444\u0442\u043e\u043c:<\/p>\n<pre><code>MEMORY {    RAM      (rwx): ORIGIN = 0x80000000, LENGTH = 96k  }  _stack_size = DEFINED(_stack_size) ? _stack_size : 2048;  _heap_size = DEFINED(_heap_size) ? _heap_size : 0; <\/code><\/pre>\n<p> \u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 UART \u0432 \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u041f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0430\u0432\u0442\u043e\u0440 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u00abhello_world\u00bb \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b, \u0432\u0438\u0434\u0438\u043c\u043e \u043f\u043e\u043d\u0430\u0434\u0435\u044f\u0432\u0448\u0438\u0441\u044c \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u044b Artix, \u043d\u043e \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u044b Karnix \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0430 \u043d\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440. \u041e\u0442\u043a\u0440\u043e\u0435\u043c \u0444\u0430\u0439\u043b <strong>main.c<\/strong> \u0438 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0442\u0435\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>main()<\/strong>  \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u043f\u0440\u0438\u043d\u044f\u043b\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434:<\/p>\n<details class=\"spoiler\">\n<summary>main()<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">void main() {          Uart_Config uart_config;           uart_config.dataLength = UART_DATA_8;          uart_config.parity = UART_PARITY_NONE;          uart_config.stop = UART_STOP_ONE;           uint32_t rxSamplePerBit = UART_PRE_SAMPLING_SIZE + UART_SAMPLING_SIZE + UART_POST_SAMPLING_SIZE;           uart_config.clockDivider = SYSTEM_CLOCK_HZ \/ UART_BAUD_RATE \/ rxSamplePerBit - 1;          uart_applyConfig(UART, &amp;uart_config);            GPIO_A->OUTPUT_ENABLE = 0x0000000F;          GPIO_A->OUTPUT = 0x00000001;          const int nleds = 4;          const int nloops = 1000000;          while(1){                  println(\"Hello world, this is VexRiscv!\");                  for(unsigned int i=0;i&lt;nleds-1;i++){                          GPIO_A->OUTPUT = 1&lt;&lt;i;                          delay(nloops);                  }                  for(unsigned int i=0;i&lt;nleds-1;i++){                          GPIO_A->OUTPUT = (1&lt;&lt;(nleds-1))>>i;                          delay(nloops);                  }          }  } <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0418\u0437 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0448\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u00abhello_world\u00bb \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0436\u0438\u0433\u0430\u0435\u0442 \u0438 \u0433\u0430\u0441\u0438\u0442 \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 \u0438 \u0432\u044b\u0434\u0430\u0435\u0442 \u0432 \u043f\u043e\u0440\u0442 UART \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u00abHello world, this is VexRiscv\u00bb \u2014 \u0432\u0441\u0451 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0438\u043c\u0441\u044f \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u044f\u043c.<\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0432 \u0444\u0430\u0439\u043b <strong>uart.h:<\/strong><\/p>\n<details class=\"spoiler\">\n<summary>uart.h<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#define UART_PRE_SAMPLING_SIZE  1  #define UART_SAMPLING_SIZE      3  #define UART_POST_SAMPLING_SIZE 1  #define UART_BAUD_RATE115200  #define UART_PARITY_NONE        0  #define UART_PARITY_EVEN        1  #define UART_PARITY_ODD         2   #define UART_STOP_ONE           0  #define UART_STOP_TWO           1   #define UART_DATA_5             4  #define UART_DATA_6             5  #define UART_DATA_7             6  #define UART_DATA_8             7  #define UART_DATA_9             8 <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0418 \u0432 \u0444\u0430\u0439\u043b <strong>murax.h<\/strong>:<\/p>\n<pre><code class=\"cpp\">#define SYSTEM_CLOCK_HZ 25000000 \/\/ system clock on Karnix board in Hz<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u00abhello_world\u00bb:<\/p>\n<details class=\"spoiler\">\n<summary>cd .. &amp;&amp; make clean &amp;&amp; make<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>rz@devbox:~\/VexRiscv\/src\/main\/c\/murax\/hello_world\/src$ cd ..  rz@devbox:~\/VexRiscv\/src\/main\/c\/murax\/hello_world$ make clean  rm -rf build\/src  rm -f build\/hello_world.elf  rm -f build\/hello_world.hex  rm -f build\/hello_world.map  rm -f build\/hello_world.v  rm -f build\/hello_world.asm  find build -type f -name '.o' -print0 | xargs -0 -r rm  find build -type f -name '.d' -print0 | xargs -0 -r rm  rz@devbox:~\/VexRiscv\/src\/main\/c\/murax\/hello_world$ make  mkdir -p build\/src\/  \/opt\/riscv\/\/bin\/riscv64-unknown-elf-gcc -c -march=rv32i  -mabi=ilp32 -DNDEBUG -g -Os -MD -fstrict-volatile-bitfields -fno-strict-aliasing   -o build\/src\/main.o src\/main.c  \/opt\/riscv\/\/bin\/riscv64-unknown-elf-gcc -S -march=rv32i  -mabi=ilp32 -DNDEBUG -g -Os -MD -fstrict-volatile-bitfields -fno-strict-aliasing   -o build\/src\/main.o.disasm src\/main.c  mkdir -p build\/src\/  \/opt\/riscv\/\/bin\/riscv64-unknown-elf-gcc -c -march=rv32i  -mabi=ilp32 -DNDEBUG -g -Os -MD -fstrict-volatile-bitfields -fno-strict-aliasing -o build\/src\/crt.o src\/crt.S -D__ASSEMBLY__=1  \/opt\/riscv\/\/bin\/riscv64-unknown-elf-gcc -march=rv32i  -mabi=ilp32 -DNDEBUG -g -Os -MD -fstrict-volatile-bitfields -fno-strict-aliasing -o build\/hello_world.elf build\/src\/main.o build\/src\/crt.o -march=rv32i  -mabi=ilp32 -nostdlib -lgcc -mcmodel=medany -nostartfiles -ffreestanding -Wl,-Bstatic,-T,.\/src\/linker.ld,-Map,build\/hello_world.map,--print-memory-usage -Lbuild  Memory region         Used Size  Region Size  %age Used               RAM:        2756 B        96 KB      2.80%  \/opt\/riscv\/\/bin\/riscv64-unknown-elf-objcopy -O ihex build\/hello_world.elf build\/hello_world.hex  \/opt\/riscv\/\/bin\/riscv64-unknown-elf-objdump -S -d build\/hello_world.elf > build\/hello_world.asm  \/opt\/riscv\/\/bin\/riscv64-unknown-elf-objcopy -O verilog build\/hello_world.elf build\/hello_world.v <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u043b \u0444\u0430\u0439\u043b <strong>build\/hello_world.hex<\/strong> \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u043b  <strong>96\u041a\u0411<\/strong> \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0432 \u0421\u043d\u041a.<\/p>\n<p>\u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0445\u043e\u0447\u0435\u0442 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043a\u043b\u043e\u043d \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f VexRiscv \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0433\u043e \u0432\u0435\u0442\u043a\u0443 \u0441 \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u043b\u0430\u0442\u044b \u041f\u0418\u0420 \u0421\u0426\u0425-254 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb: <a href=\"https:\/\/github.com\/Fabmicro-LLC\/VexRiscvWithKarnix\/tree\/karnix\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/Fabmicro-LLC\/VexRiscvWithKarnix\/tree\/karnix<\/a><\/p>\n<p><a class=\"anchor\" name=\"14.6\" id=\"14.6\"><\/a><\/p>\n<h3> 14.6 \u0421\u0431\u043e\u0440\u043a\u0430 \u0421\u043d\u041a Murax \u0438 \u044f\u0434\u0440\u0430 VexRiscv<\/h3>\n<p>\u041d\u0443 \u0447\u0442\u043e \u0436\u0435, \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0443 \u043d\u0430\u0441 \u0432\u0441\u0451 \u0433\u043e\u0442\u043e\u0432\u043e \u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443 \u0421\u043d\u041a \u043d\u0430 \u0431\u0430\u0437\u0435 \u044f\u0434\u0440\u0430 VerRiscv. \u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u044b \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c <strong>make<\/strong>:<\/p>\n<pre><code class=\"bash\">rz@devbox:~\/VexRiscv\/src\/main\/c\/murax\/hello_world$ cd ..\/..\/..\/..\/..\/scripts\/Murax\/Karnix  rz@devbox:~\/VexRiscv\/scripts\/Murax\/Karnix$ make<\/code><\/pre>\n<p> \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u043a\u0430\u043a SBT \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Scala \u0438 SpinalHDL:<\/p>\n<pre><code>(cd ..\/..\/..; sbt \"runMain vexriscv.demo.Murax_karnix\")  [info] welcome to sbt 1.6.0 (Ubuntu Java 11.0.9.1)  [info] loading settings for project vexriscv-build from plugins.sbt ...  [info] loading project definition from \/home\/rz\/VexRiscv\/project  [info] loading settings for project root from build.sbt ...  [info] set current project to VexRiscv (in build file:\/home\/rz\/VexRiscv\/)  [info] running (fork) vexriscv.demo.Murax_karnix<\/code><\/pre>\n<p> \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 Scala \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 SBT \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0430 Java \u043c\u0430\u0448\u0438\u043d\u0435:<\/p>\n<pre><code>[info] [Runtime] SpinalHDL v1.10.1    git head : 2527c7c6b0fb0f95e5e1a5722a0be732b364ce43  [info] [Runtime] JVM max memory : 8294.0MiB  [info] [Runtime] Current date : 2024.02.04 00:37:10  [info] [Progress] at 0.000 : Elaborate components  ... [info] [Progress] at 2.469 : Checks and transforms  [info] [Progress] at 3.398 : Generate Verilog  [info] [Warning] 157 signals were pruned. You can call printPruned on the backend report to get more informations.  [info] [Done] at 4.832  [success] Total time: 11 s, completed Feb 4, 2024, 12:37:15 AM <\/code><\/pre>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u0430\u0431\u043e\u0440 Verilog \u0444\u0430\u0439\u043b\u043e\u0432. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u0444\u0430\u0439\u043b\u044b:<\/p>\n<pre><code>^C rz@devbox:~\/VexRiscv\/scripts\/Murax\/Karnix$ ls -l ..\/..\/..\/  total 1316  -rw-rw-r-- 1 rz rz   1079 Feb  3 19:46 LICENSE  -rw-rw-r-- 1 rz rz 351198 Feb  4 11:50 Murax.v  -rw-rw-r-- 1 rz rz 221184 Feb  4 11:50 Murax.v_toplevel_system_ram_ram_symbol0.bin  -rw-rw-r-- 1 rz rz 221184 Feb  4 11:50 Murax.v_toplevel_system_ram_ram_symbol1.bin  -rw-rw-r-- 1 rz rz 221184 Feb  4 11:50 Murax.v_toplevel_system_ram_ram_symbol2.bin  -rw-rw-r-- 1 rz rz 221184 Feb  4 11:50 Murax.v_toplevel_system_ram_ram_symbol3.bin  -rw-rw-r-- 1 rz rz  63826 Feb  3 22:13 README.md  drwxrwxr-x 2 rz rz   4096 Feb  3 19:46 assets  -rw-rw-r-- 1 rz rz    621 Feb  3 19:46 build.sbt  -rw-rw-r-- 1 rz rz    998 Feb  3 19:46 build.sc <\/code><\/pre>\n<p> \u0424\u0430\u0439\u043b  <strong>Murax.v<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u0434 \u043d\u0430\u0448\u0435\u0433\u043e \u0421\u043d\u041a \u0438 \u0432\u0441\u0435\u0445 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u044f\u0434\u0440\u043e VexRiscv, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0432 \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Verilog. \u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u044c \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c <strong>Murax<\/strong> \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0435\u0433\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432:<\/p>\n<pre><code class=\"vhdl\">module Murax (    input  wire          io_asyncReset,    input  wire          io_mainClk,    input  wire          io_jtag_tms,    input  wire          io_jtag_tdi,    output wire          io_jtag_tdo,    input  wire          io_jtag_tck,    input  wire [31:0]   io_gpioA_read,    output wire [31:0]   io_gpioA_write,    output wire [31:0]   io_gpioA_writeEnable,    output wire          io_uart_txd,    input  wire          io_uart_rxd  );<\/code><\/pre>\n<p>\u0424\u0430\u0439\u043b\u044b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c <strong>.bin<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u041e\u0417\u0423 (RAM) \u0438, \u043f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u043d\u0430\u0448\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u00abhello_world\u00bb \u0432 \u0432\u0438\u0434\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 8-\u043c\u0438 \u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u043b\u043e\u0432 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0432\u0438\u0434\u0435. \u0424\u0430\u0439\u043b\u044b <strong>.bin<\/strong> \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0430\u0439\u043b\u0430 <strong>Murex.v<\/strong> \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u043a\u043e\u0434\u0430:<\/p>\n<pre><code class=\"vhdl\">  initial begin      $readmemb(\"Murax.v_toplevel_system_ram_ram_symbol0.bin\",ram_symbol0);      $readmemb(\"Murax.v_toplevel_system_ram_ram_symbol1.bin\",ram_symbol1);      $readmemb(\"Murax.v_toplevel_system_ram_ram_symbol2.bin\",ram_symbol2);      $readmemb(\"Murax.v_toplevel_system_ram_ram_symbol3.bin\",ram_symbol3);    end <\/code><\/pre>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442 \u0444\u0430\u0439\u043b\u043e\u0432, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043e\u0431\u0435\u0440\u0442\u043e\u0447\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c <strong>toplevel.v<\/strong>, \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0443\u0442\u0438\u043b\u0438\u0442\u0443 <strong>yosys<\/strong> \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430. \u0415\u0449\u0435 \u0440\u0430\u0437 \u0432\u0432\u0435\u0434\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <strong>make<\/strong> \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0441\u0431\u043e\u0440\u043a\u0443:<\/p>\n<pre><code>rz@devbox:~\/VexRiscv\/scripts\/Murax\/Karnix$ make yosys -v2 -p \"synth_ecp5 -abc2 -top toplevel -json murax_hello_world.json\" ..\/..\/..\/Murax.v toplevel.v  1. Executing Verilog-2005 frontend: ..\/..\/..\/Murax.v  2. Executing Verilog-2005 frontend: toplevel.v  \u2026<\/code><\/pre>\n<p> \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u043a\u0430\u043a \u043d\u0430 \u0432\u0445\u043e\u0434 \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>yosys<\/strong> \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430: <strong>..\/..\/..\/Murax.v<\/strong> \u0438  <strong>toplevel.v<\/strong>, \u0438 \u043e\u043d\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0438\u0445 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0432\u043e\u0439 Verilog-2005 \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u0438\u043d\u0442\u0435\u0437\u0430, \u0443\u0442\u0438\u043b\u0438\u0442\u0430 yosys \u0432\u044b\u0434\u0430\u0441\u0442 \u043d\u0430\u043c \u0440\u044f\u0434 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u0431\u0438\u0442\u044b \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 gpio_read \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c (\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430\u043c):<\/p>\n<pre><code>3.10. Executing OPT_CLEAN pass (remove unused cells and wires).  3.11. Executing CHECK pass (checking for obvious problems).  Warning: Wire toplevel.\\murax.system_gpioACtrl.io_gpio_read_buffercc.io_dataIn [31] is used but has no driver.  Warning: Wire toplevel.\\murax.system_gpioACtrl.io_gpio_read_buffercc.io_dataIn [30] is used but has no driver.  Warning: Wire toplevel.\\murax.system_gpioACtrl.io_gpio_read_buffercc.io_dataIn [29] is used but has no driver.  ... Warning: Wire toplevel.\\murax.system_gpioACtrl.io_gpio_read_buffercc.io_dataIn [5] is used but has no driver.  Warning: Wire toplevel.\\murax.system_gpioACtrl.io_gpio_read_buffercc.io_dataIn [4] is used but has no driver. <\/code><\/pre>\n<p> \u042d\u0442\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u043c\u044b \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0432\u0441\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u044b\u0445 \u0447\u0435\u0442\u044b\u0440\u0435 \u0431\u0438\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 <strong>gpioA<\/strong> \u0438\u0437 32-\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 (\u0441\u043c \u0444\u0430\u0439\u043b <strong>toplevel.v<\/strong>), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u043e\u0434\u0432\u044f\u0437\u0430\u043b\u0438 \u043a \u043b\u0438\u043d\u0438\u044f\u043c \u043a\u043d\u043e\u043f\u043e\u043a <strong>io_key[0]<\/strong>&#8212;<strong>io_key[3]<\/strong>. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0435 \u043f\u043e\u0434\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0431\u0438\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u0442\u044b \u043a \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u00ab0\u00bb.<\/p>\n<p>\u0423\u0442\u0438\u043b\u0438\u0442\u0430 <strong>yosys<\/strong> \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u0432\u044b\u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u043a\u043e\u0435-\u043a\u0430\u043a\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043e \u0441\u0432\u043e\u0435\u0439 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438:<\/p>\n<pre><code>3.50. Executing CHECK pass (checking for obvious problems).  3.51. Executing JSON backend.  Warnings: 28 unique messages, 28 total  End of script. Logfile hash: 697ada3929, CPU: user 29.56s system 0.80s, MEM: 151.63 MB peak  Yosys 0.36+58 (git sha1 ea7818d31, gcc 7.5.0-3ubuntu1~18.04 -fPIC -Os)  Time spent: 21% 32x opt_clean (7 sec), 21% 11x techmap (6 sec), ... <\/code><\/pre>\n<p> \u0412\u0441\u043b\u0435\u0434 \u0437\u0430 <strong>yosys<\/strong> \u0432 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>nextpnr-ecp5<\/strong>. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043e\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0444\u0430\u0439\u043b \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043d\u0435\u0442\u043b\u0438\u0441\u0442\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON, \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <strong>yosys<\/strong> \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439, \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c \u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421.<\/p>\n<pre><code>nextpnr-ecp5 --package CABGA256 --25k --json murax_hello_world.json --textcfg murax_hello_world_out.config --lpf karnix_cabga256.lpf --lpf-allow-unconstrained  Info: constraining clock net 'io_clk25' to 25.00 MHz <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>nextpnr-ecp5<\/strong> \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043d\u0430\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0430 \u0441\u0438\u0433\u043d\u0430\u043b <strong>io_clk25<\/strong>, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u043d\u0435 \u043d\u0438\u0436\u0435 <strong>25.00 \u041c\u0413\u0446.<\/strong> \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043b\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 STA \u043a\u0430\u043a \u0446\u0435\u043b\u0435\u0432\u043e\u0435.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>nextpnr-ecp5<\/strong> \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043d\u0430\u043c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043e \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0445\u0435\u043c\u043e\u0439 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 \u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u0442.\u00a0\u0435. \u0432 \u0442\u043e\u043c \u0432\u0438\u0434\u0435 \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043b\u043e \u043e\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>yosys<\/strong>:<\/p>\n<pre><code>Info: Logic utilisation before packing:  Info:     Total LUT4s:      2272\/24288     9%  Info:         logic LUTs:   1818\/24288     7%  Info:         carry LUTs:    238\/24288     0%  Info:           RAM LUTs:    144\/ 3036     4%  Info:          RAMW LUTs:     72\/ 6072     1%  Info:      Total DFFs:      1379\/24288     5%<\/code><\/pre>\n<p> \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432\u0435\u0441\u044c \u0421\u043d\u041a \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u044f\u0434\u0440\u043e\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0441\u0435\u0433\u043e <strong>1379<\/strong> D-\u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432 \u0438 <strong>2272<\/strong> \u044f\u0447\u0435\u0435\u043a LUT-4.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>nextpnr-ecp5<\/strong> \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0436\u0435\u0441\u0442\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0432 LPF \u0444\u0430\u0439\u043b\u0435:<\/p>\n<pre><code>Info: Packing IOs..  Info: pin 'io_uart_debug_txd$tr_io' constrained to Bel 'X58\/Y0\/PIOB'.  Info: pin 'io_uart_debug_rxd$tr_io' constrained to Bel 'X58\/Y0\/PIOA'.  Info: pin 'io_led[3]$tr_io' constrained to Bel 'X67\/Y0\/PIOA'.  Info: pin 'io_led[2]$tr_io' constrained to Bel 'X67\/Y0\/PIOB'.  Info: pin 'io_led[1]$tr_io' constrained to Bel 'X65\/Y0\/PIOB'.  Info: pin 'io_led[0]$tr_io' constrained to Bel 'X65\/Y0\/PIOA'.  Info: pin 'io_key[3]$tr_io' constrained to Bel 'X62\/Y0\/PIOB'.  Info: pin 'io_key[2]$tr_io' constrained to Bel 'X62\/Y0\/PIOA'.  Info: pin 'io_key[1]$tr_io' constrained to Bel 'X60\/Y0\/PIOB'.  Info: pin 'io_key[0]$tr_io' constrained to Bel 'X60\/Y0\/PIOA'.  Info: pin 'io_core_jtag_tms$tr_io' constrained to Bel 'X0\/Y23\/PIOB'.  Info: pin 'io_core_jtag_tdo$tr_io' constrained to Bel 'X0\/Y23\/PIOD'.  Info: pin 'io_core_jtag_tdi$tr_io' constrained to Bel 'X0\/Y23\/PIOC'.  Info: pin 'io_core_jtag_tck$tr_io' constrained to Bel 'X0\/Y23\/PIOA'.  Info: pin 'io_clk25$tr_io' constrained to Bel 'X38\/Y0\/PIOA'. <\/code><\/pre>\n<p> \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0443 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0441\u0445\u0435\u043c\u044b:<\/p>\n<pre><code>Info: Packing constants..  Info: Packing carries...  Info: Packing LUTs...  Info: Packing LUT5-7s...  Info: Packing FFs...  Info:     542 FFs paired with LUTs.  Info: Generating derived timing constraints... <\/code><\/pre>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>nextpnr-ecp5<\/strong> \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u044f\u0445:<\/p>\n<pre><code>Info: Promoting globals...  Info:     promoting clock net io_clk25$TRELLIS_IO_IN to global network  Info:     promoting clock net io_core_jtag_tck$TRELLIS_IO_IN to global network <\/code><\/pre>\n<p> \u041f\u043e\u0441\u043b\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>nextpnr-ecp5<\/strong> \u0435\u0449\u0435 \u0440\u0430\u0437 \u0432\u044b\u0434\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421, \u043d\u043e \u0443\u0436\u0435 \u0432 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0438\u0434\u0435:<\/p>\n<pre><code>Info: Device utilisation:  Info:             TRELLIS_IO:    15\/  197     7%  Info:                   DCCA:     2\/   56     3%  Info:                 DP16KD:    48\/   56    85%  Info:             MULT18X18D:     0\/   28     0%  Info:                 ALU54B:     0\/   14     0%  Info:                EHXPLLL:     0\/    2     0%  Info:                EXTREFB:     0\/    1     0%  Info:                   DCUA:     0\/    1     0%  Info:              PCSCLKDIV:     0\/    2     0%  Info:                IOLOGIC:     0\/  128     0%  Info:               SIOLOGIC:     0\/   69     0%  Info:                    GSR:     0\/    1     0%  Info:                  JTAGG:     0\/    1     0%  Info:                   OSCG:     0\/    1     0%  Info:                  SEDGA:     0\/    1     0%  Info:                    DTR:     0\/    1     0%  Info:                USRMCLK:     0\/    1     0%  Info:                CLKDIVF:     0\/    4     0%  Info:              ECLKSYNCB:     0\/   10     0%  Info:                DLLDELD:     0\/    8     0%  Info:                 DDRDLL:     0\/    4     0%  Info:                DQSBUFM:     0\/    8     0%  Info:        TRELLIS_ECLKBUF:     0\/    8     0% Info:           ECLKBRIDGECS:     0\/    2     0%  Info:                   DCSC:     0\/    2     0%  Info:             TRELLIS_FF:  1379\/24288     5%  Info:           TRELLIS_COMB:  2346\/24288     9%  Info:           TRELLIS_RAMW:    36\/ 3036     1%<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c <strong>DCCA<\/strong> \u2014 \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u0434\u043b\u044f \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, <strong>DP16KD<\/strong> \u2014 \u0447\u0438\u0441\u043b\u043e \u0431\u043b\u043e\u043a\u043e\u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (\u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e 16\u041a\u0431\u0438\u0442), <strong>TRELLIS_FF<\/strong> \u2014 \u0447\u0438\u0441\u043b\u043e D-\u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432, \u0430 <strong>TRELLIS_COMB<\/strong> \u2014 \u0447\u0438\u0441\u043b\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 (\u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445) \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 LUT-4. \u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 Lattice ECP5, \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u043e\u0432 \u0438 \u0438\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u044b\u043c.<\/p>\n<p>\u0423\u0442\u0438\u043b\u0438\u0442\u0430 <strong>nextpnr-ecp5<\/strong> \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u0440\u0430\u0441\u0447\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a \u0434\u043b\u044f \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438 \u0432\u044b\u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e:<\/p>\n<pre><code>Info: Max frequency for clock         '$glbnet$io_clk25$TRELLIS_IO_IN': 49.99 MHz (PASS at 25.00 MHz)  Info: Max frequency for clock '$glbnet$io_core_jtag_tck$TRELLIS_IO_IN': 142.92 MHz (PASS at 12.00 MHz) <\/code><\/pre>\n<p> \u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043d \u043a \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0431\u043e\u0440\u043a\u0430.<\/p>\n<pre><code>Info: Routing globals...  ... Info: Critical path report for clock '$glbnet$io_clk25$TRELLIS_IO_IN' (posedge -> posedge): <\/code><\/pre>\n<p> \u041f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>nextpnr-ecp5<\/strong> \u0435\u0449\u0435 \u0440\u0430\u0437 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0438 \u0432\u044b\u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e:<\/p>\n<pre><code>Info: Max frequency for clock         '$glbnet$io_clk25$TRELLIS_IO_IN': 69.80 MHz (PASS at 25.00 MHz)  Info: Max frequency for clock '$glbnet$io_core_jtag_tck$TRELLIS_IO_IN': 149.30 MHz (PASS at 12.00 MHz) <\/code><\/pre>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>nextpnr-ecp5<\/strong> \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c \u0432\u0438\u0434\u0430:<\/p>\n<pre><code>2 warnings, 0 errors  Info: Program finished normally.<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u043b\u044d\u0439\u0441\u0435\u0440\u0430 <strong>nextpnr-ecp5<\/strong> \u043f\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 ecppack, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u043d\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421 Lattice ECP5:<\/p>\n<pre><code>ecppack --compress --freq 38.8 --input murax_hello_world_out.config --bit murax_hello_world.bit<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0431\u043e\u0440\u043a\u0438 \u043e\u043a\u043e\u043d\u0447\u0435\u043d, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 <strong>murax_hello_world.bit<\/strong> \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435:<\/p>\n<pre><code>rz@devbox:~\/VexRiscv\/scripts\/Murax\/Karnix$ ls -l  total 8120  -rw-rw-r-- 1 rz rz    1345 Feb  3 22:08 Makefile  -rw-rw-r-- 1 rz rz   11486 Feb  3 19:47 karnix_cabga256.lpf  -rw-rw-r-- 1 rz rz  257823 Feb  4 13:05 murax_hello_world.bit  -rw-rw-r-- 1 rz rz 6246585 Feb  4 13:05 murax_hello_world.json  -rw-rw-r-- 1 rz rz 1785563 Feb  4 13:05 murax_hello_world_out.config  -rw-rw-r-- 1 rz rz    1158 Feb  3 21:51 toplevel.v <\/code><\/pre>\n<p><a class=\"anchor\" name=\"14.7\" id=\"14.7\"><\/a><\/p>\n<h3> 14.7 \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0421\u043d\u041a Murax \u043d\u0430 \u041f\u041b\u0418\u0421 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u00abhello_world\u00bb<\/h3>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043f\u043b\u0430\u0442\u0443 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u043d\u0443 \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u2014 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0437\u0430 \u0442\u0435\u043c, \u043a\u0430\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 UART. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u00abhello_world\u00bb \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0432 \u044d\u0442\u043e\u0442 \u043f\u043e\u0440\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0443 <strong>minicom<\/strong>. \u041e\u043d\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e \u0432\u0441\u0435\u0445 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 \u041e\u0421 Linux \u0438 FreeBSD, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0451 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e:<\/p>\n<p>\u0414\u043b\u044f FreeBSD:<\/p>\n<pre><code class=\"bash\">rz@butterfly:~ % sudo pkg install minicom<\/code><\/pre>\n<p> \u0414\u043b\u044f \u041e\u0421 Linux:<\/p>\n<pre><code class=\"bash\">rz@devbox:~$ sudo apt-get install minicom<\/code><\/pre>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0432\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0440\u0442\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 USB. \u041f\u043e\u0440\u0442 0 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 JTAG \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 NOR flash \u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u041f\u041b\u0418\u0421. \u041f\u043e\u0440\u0442 1 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u043c \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u00abhello_world\u00bb \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u0442 \u043f\u043e\u0440\u0442 \u0441\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e <strong>115200<\/strong> \u0431\u043e\u0434 \u0431\u0435\u0437 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f (RTS\/CTS Flow Control OFF) \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0440\u0435\u0439\u043c\u0430 <strong>8N1<\/strong>.<\/p>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043f\u043b\u0430\u0442\u0443 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u043a \u0440\u0430\u0431\u043e\u0447\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443, \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u043d\u0430 \u043d\u0435\u043c \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u043e\u043a\u043d\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0432 \u043d\u0435\u043c \u0443\u0442\u0438\u043b\u0438\u0442\u0443 <strong>minicom<\/strong>:<\/p>\n<p> \u0414\u043b\u044f FreeBSD:<\/p>\n<pre><code>rz@butterfly:~ % sudo minicom -b 115200 -D \/dev\/ttyU1<\/code><\/pre>\n<p>\u0414\u043b\u044f \u041e\u0421 Linux:<\/p>\n<pre><code>rz@devbox:~$ sudo minicom -b 115200 -D \/dev\/ttyUSB1<\/code><\/pre>\n<p>\u0417\u0430\u0439\u0434\u0435\u043c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430\u0436\u0430\u0432 <strong>Ctrl-A+O<\/strong>, \u0437\u0430\u0439\u0434\u0435\u043c \u0432 \u043c\u0435\u043d\u044e \u00abSerial port setup\u00bb \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043c RTS\/CTS \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u00ab<strong>F<\/strong>\u00bb:  <\/p>\n<p> <code>F - Hardware Flow Control : No<\/code><\/p>\n<p>\u0427\u0435\u0440\u0435\u0437 \u043c\u0435\u043d\u044e \u00ab<strong>Save setup as dfl<\/strong>\u00bb \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u0432 \u041f\u041b\u0418\u0421 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <strong>make upload<\/strong>. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>openFPGALoader<\/strong> \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0430\u0442\u044c \u043e \u0445\u043e\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f:<\/p>\n<pre><code>rz@devbox:~\/VexRiscv\/scripts\/Murax\/Karnix$ make upload  Jtag frequency : requested 6.00MHz   -> real 6.00MHz    Open file DONE  Parse file DONE  Enable configuration: DONE  SRAM erase: DONE  Detail:  Jedec ID          : ef  memory type       : 70  memory capacity   : 18  flash chip unknown: use basic protection detection  Erasing: [==================================================] 100.00%  Done  Writing: [===================================================] 100.00%  Done  Refresh: DONE <\/code><\/pre>\n<p>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 DONE \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430:<\/p>\n<pre><code>write to flash  No cable or board specified: using direct ft2232 interface  unable to open ftdi device: -3 (device not found) <\/code><\/pre>\n<p>\u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>openFPGALoader<\/strong> \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e USB \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0443. \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u0442\u0430\u043a\u043e\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u0430 \u2014 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u0431\u0435\u043b\u044f \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <strong>root<\/strong>.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0442\u043e \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb \u043c\u044b \u0441\u0440\u0430\u0437\u0443 \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c, \u043a\u0430\u043a \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u0437\u0430\u0436\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u0438 \u0433\u0430\u0441\u043d\u0443\u0442 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u044b, \u0430 \u0432 \u043e\u043a\u043d\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 <strong>minicom<\/strong> \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f:<\/p>\n<pre><code>Welcome to minicom 2.8  OPTIONS: I18n  Compiled on Jan 29 2024, 16:10:11.  Port \/dev\/ttyU1, 03:09:59  Press CTRL-A Z for help on special keys                                                                                                                             Hello world, this is VexRiscv!                                               Hello world, this is VexRiscv!                                               Hello world, this is VexRiscv!  Hello world, this is VexRiscv!<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0438 \u0432 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 <strong>minicom<\/strong> \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c: <strong>Ctrl-A<\/strong>, <strong>X<\/strong>, <strong>Enter<\/strong>.<\/p>\n<p>= = = \u041f\u0420\u041e\u0414\u041e\u041b\u0416\u0415\u041d\u0418\u0415 \u0421\u041b\u0415\u0414\u0423\u0415\u0422 = = =<\/p>\n<p>PS: \u0421\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 PDF \u0432\u044b\u043b\u043e\u0436\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/801191\/\"> https:\/\/habr.com\/ru\/articles\/801191\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p> \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u041f\u041b\u0418\u0421, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0435\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438: \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0430 \u043a\u043e\u0434\u0430 \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b (HDL); \u043a\u043e\u0434 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 (IP-\u0431\u043b\u043e\u043a\u043e\u0432), \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0435\u0433\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445; \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0431\u0448\u0438\u0440\u043d\u044b\u043c \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u0438\u0432\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439, \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 (Git); \u0438, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438, \u043d\u0438\u0447\u0442\u043e\u0436\u043d\u043e \u043d\u0438\u0437\u043a\u0430\u044f \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0435\u0441\u0435\u0442 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0442\u0440\u0430\u0442\u044b \u043d\u0430 \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0438\u0437\u0434\u0435\u043b\u0438\u044f,  \u0438 \u043b\u044e\u0431\u0430\u044f \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0430 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u0435\u0447\u0430\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u2014 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u044b\u0445\u043e\u0434 \u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0443\u044e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e \u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0435\u043d\u044c\u0433\u0438, \u0442\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u041f\u041b\u0418\u0421 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0438\u0447\u0442\u043e\u0436\u043d\u044b \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u043b\u0435\u0433\u043a\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u043c\u044b. \u0418 \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432 \u0441\u0435\u0440\u0438\u0439\u043d\u043e\u043c \u0438\u0437\u0434\u0435\u043b\u0438\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u0442\u043e \u0435\u0451 \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u044b\u043c \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u043e\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u00ab\u0432 \u043f\u043e\u043b\u0435\u00bb \u0431\u0435\u0437 \u0437\u0430\u043c\u0435\u043d\u044b \u0438\u0437\u0434\u0435\u043b\u0438\u044f. \u041a\u043e\u0440\u043e\u0447\u0435, \u0441 \u043f\u0440\u0438\u0445\u043e\u0434\u043e\u043c \u041f\u041b\u0418\u0421 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0430 \u044d\u0442\u043e, \u043f\u043e\u043c\u0438\u043c\u043e \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0447\u0435\u0433\u043e, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u043d\u0438\u0436\u0430\u0435\u0442 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u043c\u0443, \u0438 \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u00ab\u0436\u0435\u043b\u0435\u0437\u0430\u00bb. \u0410 \u043d\u043e\u0432\u044b\u0435 \u043b\u044e\u0434\u0438, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043f\u0440\u0438\u043d\u043e\u0441\u044f\u0442 \u0441 \u0441\u043e\u0431\u043e\u0439 \u0432 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u044e \u043d\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u00ab\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421 \u0438 \u0442\u0435\u043c, \u043a\u0430\u043a \u044f \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u043b\u0441\u044f \u0432 \u0442\u0435\u043c\u0443 \u041f\u041b\u0418\u0421\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0437\u0430\u043c\u0435\u0442\u043a\u0443 \u043f\u0440\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0443\u043b\u0447\u0435\u0439\u043d \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 Yosys. \u041f\u043e\u0442\u043e\u043c \u2014 \u043f\u0440\u043e \u044f\u0437\u044b\u043a SpinalHDL \u0438 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u044f\u0434\u0440\u043e VexRiscv, \u043d\u0430 \u043d\u0451\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435. \u041f\u043e\u0442\u043e\u043c \u2014 \u043f\u0440\u043e \u0437\u0430\u043c\u0435\u043d\u0443 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u043c\u0438 \u041f\u041b\u0418\u0421 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u043e\u0435\u0439 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb. \u041d\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u044f \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u043b\u0441\u044f \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f Hardware Description Languages (HDL), \u0438 \u043a\u043e\u0433\u0434\u0430 \u044f \u043d\u0430\u0447\u0430\u043b \u043f\u0438\u0441\u0430\u0442\u044c, \u041e\u0441\u0442\u0430\u043f\u0430, \u043a\u0430\u043a \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442, \u043f\u043e\u043d\u0435\u0441\u043b\u043e&#8230; \u0412 \u043e\u0431\u0449\u0435\u043c, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c.  <\/p>\n<p> \u0410 \u0435\u0449\u0435 \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0435 \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0432 \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043e\u0442 \u043d\u0430 \u044d\u0442\u043e\u043c \u043d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0435\u043c \u0432\u0438\u0434\u0435\u043e.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65f8e4052331bb9d71af36fe\" data-style=\"\" id=\"65f8e4052331bb9d71af36fe\" width=\"\"><\/div>\n<p> <strong>\u0421\u041e\u0414\u0415\u0420\u0416\u0410\u041d\u0418\u0415<\/strong><\/p>\n<p><a href=\"#1\" rel=\"noopener noreferrer nofollow\">1. \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u044d\u043a\u0441\u043a\u0443\u0440\u0441 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e<\/a><\/p>\n<p><a href=\"#2\" rel=\"noopener noreferrer nofollow\">2. \u041f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/a><\/p>\n<p><a href=\"#3\" rel=\"noopener noreferrer nofollow\">3. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u041f\u041b\u0418\u0421<\/a><\/p>\n<p><a href=\"#4\" rel=\"noopener noreferrer nofollow\">4. \u0421\u0438\u043d\u0442\u0435\u0437 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c \u0434\u043b\u044f \u041f\u041b\u0418\u0421<\/a><\/p>\n<p><a href=\"#5\" rel=\"noopener noreferrer nofollow\">5. Yosys Open SYnthesis Suite<\/a><\/p>\n<p><a href=\"#6\" rel=\"noopener noreferrer nofollow\">6. \u041a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430 Yosys<\/a><\/p>\n<p><a href=\"#7\" rel=\"noopener noreferrer nofollow\">7. \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430 Yosys<\/a><\/p>\n<p> <a href=\"#7.1\" rel=\"noopener noreferrer nofollow\">7.1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u00abbasics-graphics-music\u00bb<\/a><\/p>\n<p> <a href=\"#7.2\" rel=\"noopener noreferrer nofollow\">7.2 \u041b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u00ab01_and_or_not_xor_de_morgan\u00bb<\/a><\/p>\n<p> <a href=\"#7.3\" rel=\"noopener noreferrer nofollow\">7.3 \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c\u0430 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421<\/a><\/p>\n<p><a href=\"#8\" rel=\"noopener noreferrer nofollow\">8. \u0422\u0438\u043f\u043e\u0432\u043e\u0439 Makefile \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Yosys<\/a><\/p>\n<p><a href=\"#9\" rel=\"noopener noreferrer nofollow\">9. \u0424\u0430\u0439\u043b \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 (LPF, PCF, CST)<\/a><\/p>\n<p><a href=\"#10\" rel=\"noopener noreferrer nofollow\">10. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 Yosys<\/a><\/p>\n<p> <a href=\"#10.1\" rel=\"noopener noreferrer nofollow\">10.1 \u041c\u0430\u043a\u0440\u043e YOSYS<\/a><\/p>\n<p> <a href=\"#10.2\" rel=\"noopener noreferrer nofollow\">10.2 \u041c\u043d\u043e\u0433\u043e\u043c\u0435\u0440\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432<\/a><\/p>\n<p> <a href=\"#10.3\" rel=\"noopener noreferrer nofollow\">10.3 \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u044c ($POW) \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 **<\/a><\/p>\n<p> <a href=\"#10.4\" rel=\"noopener noreferrer nofollow\">10.4 \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0438\u0433\u043d\u0430\u043b\u0443, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u0437\u0430 \u0435\u0451 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438<\/a><\/p>\n<p> <a href=\"#10.5\" rel=\"noopener noreferrer nofollow\">10.5 \u0421\u0438\u0433\u043d\u0430\u043b\u044b \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0438\u043b\u0438 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438<\/a><\/p>\n<p> <a href=\"#10.6\" rel=\"noopener noreferrer nofollow\">10.6 \u0421\u043b\u043e\u0436\u043d\u044b\u0435 \u0431\u0438\u0442\u043e\u0432\u044b\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u043e loopback-\u0430\u0445<\/a><\/p>\n<p> <a href=\"#10.7\" rel=\"noopener noreferrer nofollow\">10.7 \u0413\u043b\u043e\u0431\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432<\/a><\/p>\n<p><a href=\"#11\" rel=\"noopener noreferrer nofollow\">11. \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u0442\u0443\u043b\u043e\u0432<\/a><\/p>\n<p> <a href=\"#11.1\" rel=\"noopener noreferrer nofollow\">11.1 \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b yosys<\/a><\/p>\n<p> <a href=\"#11.2\" rel=\"noopener noreferrer nofollow\">11.2 \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b nextpnr<\/a><\/p>\n<p><a href=\"#12\" rel=\"noopener noreferrer nofollow\">12. \u0421\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u042d\u0412\u041c<\/a><\/p>\n<p> <a href=\"#12.1\" rel=\"noopener noreferrer nofollow\">12.1 \u0421\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u044f\u0434\u0440\u043e VexRiscv<\/a><\/p>\n<p> <a href=\"#12.2\" rel=\"noopener noreferrer nofollow\">12.2 \u0421\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b-\u043d\u0430-\u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435 \u043d\u0430 \u0431\u0430\u0437\u0435 VexRiscv<\/a><\/p>\n<p><a href=\"#13\" rel=\"noopener noreferrer nofollow\">13. \u042f\u0437\u044b\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b SpinalHDL<\/a><\/p>\n<p> <a href=\"#13.1\" rel=\"noopener noreferrer nofollow\">13.1 \u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u044f\u0437\u044b\u043a\u0430 SpinalHDL<\/a><\/p>\n<p> <a href=\"#13.2\" rel=\"noopener noreferrer nofollow\">13.2 FSM, \u043f\u043e\u0442\u043e\u043a\u0438, \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u044b, \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u0434\u043e\u043c\u0435\u043d\u044b<\/a><\/p>\n<p> <a href=\"#13.3\" rel=\"noopener noreferrer nofollow\">13.3 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 SpinalHDL<\/a><\/p>\n<p> <a href=\"#13.4\" rel=\"noopener noreferrer nofollow\">13.4 \u0420\u0430\u0437\u0431\u043e\u0440 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 SpinalTemplateSbt<\/a><\/p>\n<p> <a href=\"#13.5\" rel=\"noopener noreferrer nofollow\">13.5 \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 Makefile-\u0430 \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0438\u0437 SpinalHDL \u0432 \u0431\u0438\u0442\u0441\u0442\u0440\u0438\u043c<\/a><\/p>\n<p> <a href=\"#13.6\" rel=\"noopener noreferrer nofollow\">13.6 \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0432\u044b\u0432\u043e\u0434 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 SpinalHDL<\/a><\/p>\n<p> <a href=\"#13.7\" rel=\"noopener noreferrer nofollow\">13.7 \u0421\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044f \u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432 SpinalHDL<\/a><\/p>\n<p><a href=\"#14\" rel=\"noopener noreferrer nofollow\">14. \u0421\u0438\u043d\u0442\u0435\u0437 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 VexRiscv<\/a><\/p>\n<p> <a href=\"#14\" rel=\"noopener noreferrer nofollow\">14.1 \u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u043c VexRiscv<\/a><\/p>\n<p> <a href=\"#14.2\" rel=\"noopener noreferrer nofollow\">14.2 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b RISC-V<\/a><\/p>\n<p> <a href=\"#14.3\" rel=\"noopener noreferrer nofollow\">14.3 \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c Makefile, LPF \u0438 toplevel.v<\/a><\/p>\n<p> <a href=\"#14.4\" rel=\"noopener noreferrer nofollow\">14.4 \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0421\u043d\u041a Murax \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u044b \u00ab\u041a\u0430\u0440\u043d\u043e\u00bb<\/a><\/p>\n<p> <a href=\"#14.5\" rel=\"noopener noreferrer nofollow\">14.5 \u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u00abhello_world\u00bb<\/a><\/p>\n<p> <a href=\"#14.6\" rel=\"noopener noreferrer nofollow\">14.6 \u0421\u0431\u043e\u0440\u043a\u0430 \u0421\u043d\u041a Murax \u0438 \u044f\u0434\u0440\u0430 VexRiscv<\/a><\/p>\n<p> <a href=\"#14.7\" rel=\"noopener noreferrer nofollow\">14.7 \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0421\u043d\u041a Murax \u043d\u0430 \u041f\u041b\u0418\u0421 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u00abhello_world\u00bb<\/a><\/p>\n<p>15. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0421\u043d\u041a Murax \u0438 \u044f\u0434\u0440\u0430 VexRiscv<\/p>\n<p> 15.1 \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0421\u043d\u041a Murax<\/p>\n<p> 15.2 \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 VexRiscv<\/p>\n<p> 15.3 \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 VexRiscv<\/p>\n<p>16. \u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u0441 \u044f\u0434\u0440\u043e\u043c VexRiscv \u0438 \u0421\u043d\u041a Murax<\/p>\n<p> 16.1 \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 RegFilePlugin<\/p>\n<p> 16.2 \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0442\u0430\u043a\u0442\u043e\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u044f\u0434\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 PLL<\/p>\n<p> 16.3 \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0441\u0434\u0432\u0438\u0433\u0430<\/p>\n<p>17. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0432\u043e\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 (IP-\u0431\u043b\u043e\u043a\u0438)<\/p>\n<p> 17.1 \u041c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u043d\u044b\u0439 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u0442\u0430\u0439\u043c\u0435\u0440 MTIME<\/p>\n<p> 17.2 \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 SRAM<\/p>\n<p>17.2.1 \u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 SRAM<\/p>\n<p>17.2.2 \u0422\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 SRAM<\/p>\n<p>17.2.3 \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c SRAM \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 malloc<\/p>\n<p>17.2.4 \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0431\u043b\u043e\u043a\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u0435\u0439 Div \u0438 Mul<\/p>\n<p>17.2.5 \u0417\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e printf<\/p>\n<p> 17.3 \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 PLIC<\/p>\n<p>17.3.1 \u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 MicroPLIC<\/p>\n<p>17.3.2 \u0417\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 MicroPLIC \u0438\u0437 \u0421\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/p>\n<p> 17.4 \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 FastEthernet (MAC)<\/p>\n<p>17.4.1 \u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Ethernet<\/p>\n<p>17.4.2 \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 MacEth<\/p>\n<p>17.4.3 \u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 MacEth<\/p>\n<p>17.4.4 \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 DHCP \u0441\u0435\u0440\u0432\u0435\u0440<\/p>\n<p>18. \u041f\u043e\u0442\u0430\u043a\u0442\u043e\u0432\u0430\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044f \u0421\u043d\u041a Murax<\/p>\n<p>19. \u0411\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: RiscvWithHUB12ForKarnix<\/p>\n<p>20. \u042d\u043f\u0438\u043b\u043e\u0433<\/p>\n<p>\u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/p>\n<p><a class=\"anchor\" name=\"1\" id=\"1\"><\/a><\/p>\n<h2>1. \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u044d\u043a\u0441\u043a\u0443\u0440\u0441 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e<\/h2>\n<p>\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0432 1960 \u0433\u043e\u0434\u0443, \u043a\u043e\u0433\u0434\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Invention_of_the_integrated_circuit\" rel=\"noopener noreferrer nofollow\">\u0433\u0440\u0443\u043f\u043f\u0430 \u0414\u0436\u0435\u044f \u041b\u0430\u0441\u0442\u0430 \u0438\u0437 Fairchild Semi\u0441onductors \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u043e\u0432\u044b\u0439 \u043f\u0440\u0438\u0431\u043e\u0440, \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e \u043f\u043b\u0430\u043d\u0430\u0440\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438<\/a>. \u041f\u0440\u0438\u0431\u043e\u0440 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u00ab\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u0421\u0445\u0435\u043c\u0430\u00bb (\u0438\u043b\u0438 IC \u043e\u0442 \u00abIntegrated Circuit\u00bb), \u0430 \u0432 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043b\u043e\u0432\u043e \u00ab\u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430\u00bb, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0435\u0451 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0432\u0435\u0441\u044c\u043c\u0430 \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u0430\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e\u043c\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u044e \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u0441\u0435\u0440\u0438\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0439 \u0438 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u0439, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043b\u044e\u0434\u044c\u043c\u0438 \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0438 \u0441\u0442\u0440\u0430\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u043b\u0435\u0434 \u0437\u0430 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u0435\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438 \u043f\u0430\u0442\u0435\u043d\u0442\u043d\u044b\u0435 \u0432\u043e\u0439\u043d\u044b \u2014 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043e\u0442\u043a\u0443\u0441\u0438\u0442\u044c \u043e\u0442 \u043f\u0438\u0440\u043e\u0433\u0430 \u043a\u0443\u0441\u043e\u043a \u043f\u043e\u0431\u043e\u043b\u0435\u0435. \u041f\u0435\u0440\u0432\u0430\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u0432 \u0421\u0421\u0421\u0420 \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0432 1961 \u0433\u043e\u0434\u0443 \u0432 \u0422\u0430\u0433\u0430\u043d\u0440\u043e\u0433\u0441\u043a\u043e\u043c \u0440\u0430\u0434\u0438\u043e\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0438\u043d\u0441\u0442\u0438\u0442\u0443\u0442\u0435. \u0412 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 10 \u043b\u0435\u0442 \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0440\u0430\u0434\u0438\u043e\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u044b\u043b\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u0438 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c, \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043e\u043d\u0438 \u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0438\u0441\u044c \u043d\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Planar_process\" rel=\"noopener noreferrer nofollow\">\u043f\u043b\u0430\u043d\u0430\u0440\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434<\/a> \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u043d\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432 \u043d\u0430 \u043a\u0440\u0435\u043c\u043d\u0438\u0435\u0432\u043e\u0439, \u0433\u0435\u0440\u043c\u0430\u043d\u0438\u0435\u0432\u043e\u0439 \u0438\u043b\u0438 \u0441\u0430\u043f\u0444\u0438\u0440\u043e\u0432\u043e\u0439 \u043f\u043b\u0430\u0441\u0442\u0438\u043d\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0444\u043e\u0442\u043e\u043b\u0438\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u2014 \u0438\u0442\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0444\u043e\u0442\u043e\u0440\u0435\u0437\u0438\u0441\u0442\u0430, \u0437\u0430\u0441\u0432\u0435\u0442\u043a\u0438, \u043f\u0440\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f, \u0442\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u043f\u0440\u043e\u043c\u044b\u0432\u043a\u0438, \u0438\u043e\u043d\u043d\u043e\u0439 \u0438\u043c\u043f\u043b\u0430\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u043b\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0430 \u0441\u0445\u0435\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043e\u043a.<\/p>\n<p> \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0434\u043e \u0441\u0440\u0435\u0434\u0438\u043d\u044b 1980-\u0445 \u0433\u043e\u0434\u043e\u0432, \u0430 \u044d\u0442\u043e \u043f\u043e\u0447\u0442\u0438 25 \u043b\u0435\u0442, \u0432\u0441\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0435 \u0438 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432, \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0443\u0442\u0435\u043c \u0447\u0435\u0440\u0447\u0435\u043d\u0438\u044f \u0441\u0445\u0435\u043c, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430 \u0431\u0443\u043c\u0430\u0433\u0435, \u043f\u043e\u0437\u0436\u0435 \u2014 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0421\u0410\u041f\u0420, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e \u0442\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c \u0431\u044b\u043b\u0438 \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b. \u041d\u043e \u0432 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0441\u0445\u0435\u043c\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u0430\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043b\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a. \u041a\u043e\u0433\u0434\u0430 \u0441\u0445\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0433\u043e\u0442\u043e\u0432\u0430, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043b\u0438 \u043a \u0435\u0451 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0435 \u2014 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 (\u0442\u0440\u0430\u043d\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432, \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432 \u0438 \u043a\u043e\u043d\u0434\u0435\u043d\u0441\u0430\u0442\u043e\u0440\u043e\u0432) \u043d\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0430, \u043f\u043e \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043d\u0430\u0431\u043e\u0440 \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043e\u043a. \u0412 \u044d\u0442\u043e\u043c \u0438\u043c \u0447\u0430\u0441\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u043b\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043b\u0435\u0439\u043a\u0430\u044f \u043b\u0435\u043d\u0442\u0430-\u0441\u043a\u043e\u0442\u0447 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Rubylith\" rel=\"noopener noreferrer nofollow\">\u0420\u0443\u0431\u0438\u043b\u0438\u0442<\/a>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0442\u043e\u043d\u043a\u0438\u043c\u0438 \u043f\u043e\u043b\u043e\u0441\u043a\u0430\u043c\u0438 \u043d\u0430\u043a\u043b\u0435\u0438\u0432\u0430\u043b\u0438 \u043d\u0430 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0443\u044e \u043c\u0430\u0439\u043b\u0430\u0440\u043e\u0432\u0443\u044e \u043f\u043b\u0435\u043d\u043a\u0443 (\u0438\u043b\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 \u2014 \u0443\u0434\u0430\u043b\u044f\u043b\u0438 \u043b\u0438\u0448\u043d\u0435\u0435), \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044f \u0443\u0437\u043e\u0440 \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0432 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u042d\u0442\u043e\u0442 \u0443\u0437\u043e\u0440 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0438 \u0441 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435\u043c \u0432 100 \u0440\u0430\u0437 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043b\u0441\u044f \u043d\u0430 \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0430\u043b\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0432 \u043f\u043b\u0430\u043d\u0430\u0440\u043d\u043e\u043c \u0444\u043e\u0442\u043e\u043b\u0438\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435.<\/p>\n<figure class=\"full-width\">\n<div><figcaption><em>\u0420\u0438\u0441. 1. Rubylith operators, 1970, Courtesy of the Intel Corporation.<\/em><\/figcaption><\/div>\n<\/figure>\n<p> \u041c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u043e\u0441\u043b\u0438 \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u2014 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0438 \u0447\u0438\u0441\u043b\u0430 \u0442\u0440\u0430\u043d\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432 \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0438 \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043d\u0430 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435 \u043a\u0440\u0435\u043c\u043d\u0438\u044f, \u0447\u0442\u043e \u0432 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u0442\u044f\u043d\u0443\u043b\u043e \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043e\u043a \u0438 \u0438\u0445 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u043d\u0435 \u043c\u043e\u0433 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u043e\u0439 \u0434\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u0447\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u043c\u043e\u0433\u043b\u043e \u043d\u0435 \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u0438. \u0418\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043e\u043a \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0442\u0440\u0430\u0442 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0442\u0440\u0430\u0442\u044b \u0438 \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u044b \u043d\u0430 \u0432\u0441\u0435\u0445 \u044d\u0442\u0430\u043f\u0430\u0445. \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0430 \u0442\u0430\u043a\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0435\u0451 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0441\u0442\u0430\u043b\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441\u0442\u0430\u043b\u043e \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u0432. \u0410 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e, \u0447\u0442\u043e \u0432\u0435\u0441\u044c \u0434\u0438\u0437\u0430\u0439\u043d, \u043e\u0442 \u0441\u0445\u0435\u043c\u044b \u0434\u043e \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043e\u043a, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0431\u044b\u0442\u044c \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0442.\u00a0\u0435. \u0432 \u0432\u0438\u0434\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0444\u0430\u0439\u043b\u0430\u0445: \u0441\u0445\u0435\u043c\u044b \u0432 \u0432\u0438\u0434\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 (\u043d\u0435\u0442\u043b\u0438\u0441\u0442\u0430), \u0430 \u0444\u043e\u0442\u043e\u043c\u0430\u0441\u043a\u0438 \u2014 \u0432 \u0432\u0438\u0434\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043c\u0430\u0448\u0438\u043d <a href=\"https:\/\/en.wikipedia.org\/wiki\/Photoplotter\" rel=\"noopener noreferrer nofollow\">\u0444\u043e\u0442\u043e\u043f\u043b\u043e\u0442\u0442\u0435\u0440\u043e\u0432<\/a> (Gerber). \u0422\u0430\u043a, \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0445\u0435\u043c\u044b \u0432 \u0432\u0438\u0434\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0435\u0451 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u044f\u0437\u044b\u043a\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b \u2014 HDL \u043e\u0442 \u00abHardware Description Language\u00bb, \u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0442\u0430\u043b\u0438 \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u00abVLSI design\u00bb \u043e\u0442 \u00abVery Large Scale Integration\u00bb (\u0432 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u2014 \u0421\u0411\u0418\u0421 \u043e\u0442 \u00ab\u0421\u0432\u0435\u0440\u0445 \u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0418\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u0421\u0445\u0435\u043c\u0430\u00bb).<\/p>\n<p> \u042f\u0437\u044b\u043a\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b (HDL) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u0446\u0438\u0444\u0440\u043e\u0432\u0443\u044e \u0441\u0445\u0435\u043c\u0443 (\u0445\u043e\u0442\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0435\u0441\u0442\u044c <a href=\"https:\/\/en.wikipedia.org\/wiki\/Verilog-AMS\" rel=\"noopener noreferrer nofollow\">\u044f\u0437\u044b\u043a\u0438 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c<\/a>) \u0432 \u0432\u0438\u0434\u0435 \u0442\u0435\u043a\u0441\u0442\u0430, \u043f\u043e\u0434\u043e\u0431\u043d\u043e \u044f\u0437\u044b\u043a\u0430\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441\u0445\u0435\u043c\u044b, \u043f\u043e\u0442\u043e\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0435\u0451 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441 \u0442\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Hardware_description_language#History\" rel=\"noopener noreferrer nofollow\">\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f HDL<\/a> \u043d\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0445\u0435\u043c, \u043d\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0445\u0435\u043c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\u044b\u0445 \u043f\u0435\u0440\u0435\u0434\u0430\u0447 (RTL \u043e\u0442 \u00abRegister Transfer Level\u00bb) \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0413\u043e\u0440\u0434\u043e\u043d\u043e\u043c \u0411\u0435\u043b\u043b\u043e\u043c \u0432 1971 \u0433\u043e\u0434\u0443 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0445\u0435\u043c. \u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 RTL \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u044f\u0437\u044b\u043a\u0435 ISP  (ISPL \u0438 ISPS) \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u042d\u0412\u041c DEC PDP-8. \u0421 \u0442\u0435\u0445 \u043f\u043e\u0440 RTL \u043c\u0435\u0442\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 HDL \u044f\u0437\u044b\u043a\u0430\u0445 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 VLSI \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u0432.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441 2\u0430. \u0423\u0440\u043e\u0432\u043d\u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u0432 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0435.<\/figcaption><\/div>\n<\/figure>\n<p> \u0427\u0442\u043e \u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 RTL,<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-371172","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/371172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=371172"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/371172\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=371172"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=371172"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=371172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}